Echo #07
31 октября 2000
  Железо  

DMA Sound Card - Программируемый таймер 8253 (Продолжение темы DMA SC в ECHO 6).

<b>DMA Sound Card</b> - Программируемый таймер 8253 (Продолжение темы DMA SC в ECHO 6).
╔════════════════════════════════════════╗
║      Программируемый таймер 8253       ║
║   (Продолжение темы DMA SC в ECHO 6)   ║
╚════════════════════════════════════════╝

   Для задания временных интервалов и фор-
мирования сигналов с различными временными
параметрами   применяется  программируемый
таймер    8253    (отечественный    аналог
КР580ВИ53)  или 8254. С точки зрения прог-
раммиста  они  идентичны. В состав таймера
входят:  буфер шины данных, схема управле-
ния вводом-выводом и три независимых кана-
ла, каждый из которых содержит регистр ре-
жима,  схему  управления  каналом, буфер и
16-разрядный счетчик.
   Программирование  канала осуществляется
путем  вывода  управляющих  слов в регистр
режима каналов и начального значения в его
счетчики.  Каждый  канал имеет управляющий
вход  GATE  и выход OUT и может работать в
одном из следующих шести режимов:
   - Режим   0  (прерывание  терминального
счета). После записи управляющего слова  в
регистр  режима канала на выходе OUT уста-
навливается   напряжение  низкого  уровня;
загрузка  счетчика не изменяет это состоя-
ние.  Затем  начинается декремент счетчика
(последовательное вычитание из него едини-
цы). В момент, когда счетчик обнулится, на
выходе  OUT установливается напряжение вы-
сокого  уровня  и  сохраняется до загрузки
счетчика  новым  значением.  Счет возможен
только при наличие сигнала высокого уровня
на входе GATE. Низкий уровень этого сигна-
ла или ниспадающий фронт запрещают счет.

Перезагрузка  счетчика во время счета при-
водит к следующему: загрузка младшего бай-
та  останавливает  текущий  счет, загрузка
старшего байта запускает новый цикл счета.
Минимально  допустимое  значение  счетчика
равно 2.
   - Режим  1  (ждущий мультивибратор). На
выходе  OUT  формируется отрицательный им-
пульс  длительностью  t=n*T,  где n-число,
загруженное  в  счетчик, T-период тактовых
импульсов.  Низкий  уровень  на выходе OUT
устанавливается  со следующего такта после
подачи на вход GATE сигнала высокого уров-
ня.
   Загрузка  в  счетчик  нового  числа  не
влияет  на длительность текущего импульса,
а учитывается при следующем запуске. Пере-
запуск  счетчика  производится нарастающим
фронтом входа GATE (без перезагрузки счет-
чика). Минимальное допустимое n=1.
   - Режим  2(генератор  частоты).  Каждый
раз  после  достижения  счетчиком  нуля на
выходе  OUT  появляется  отрицательный им-
пульс  с длительностью один такт. Перезаг-
рузка  счетчика  сказывается  только после
перезапуска   счетчика.  При  исчезновении
сигнала  высокого  уровня  на  входе  GATE
прекращается  счет и на выход OUT подается
напряжение   высокого  уровня.  Перезапуск
счетчика  происходит  при наличии на входе
GATE сигнала высокого уровня.
   - Режим  3(генератор меандра). Аналоги-
чен режиму 2, но положительный уровень вы-
ходного  сигнала  занимает  первый  полупе
риод,  а  отрицательный-второй полупериод.
Точнее, если n (начальное значение счетчи-
ка)  четно, то длительность положительного
и отрицательного полупериодов равна n*T/2;
если  же n нечетно - то (n+1) *T/2 и (n-1)
*Т/2  соотвественно. Низкй уровень сигнала
на  входе  GATE  запрещает счет, на выходе
OUT  устанавливается сигнал высокого уров-
ня. Высокий уровень GATE разрешает счет, а
нарастание его запускает счетчик начально-
го  состояния. Отметим, что n=3 в этом ре-
жиме недопустимо.
   - Режим  4(счетчик событий). По оконча-
нии отсчета числа, загруженного в счетчик,
на  выходе  OUT  формируется отрицательный
импульс  длительностью один такт. Запись в
счетчик  во  время счета младшего байта не
влияет  на текущий счет, а запись старшего
байта  перезапускает  счетчик. Низкий уро-
вень входа GATE запрещает счет, высокий  -
разрешает. Минимальное допустимое значение
счетчика равно 1. 
   - Режим 5(счетчик событий с автозагруз-
кой).  Отличие  от режима 4 состоит в том,
что  каждое  нарастание  сигнала  на входе
GATE  перезапускает  счетчик.  Перезагрука
счетчика не влияет на текущий цикл, однако
следующий цикл определяется вновь занесен-
ным числом. 

   Временные диаграммы режимов таймера
   приведены на следущем рисунке:

        │┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐
   CLK  ├┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└
   __   ├┐n=5 ┌────────────────┐n=4 ┌──────────────────
   WR   │└────┘                └────┘
        │       ┌─────────────────────────┐   ┌────────
   GATE ├───────┘                         └───┘
        ├─────┐           ┌─────────┐               ┌──
   OUT  │     └───────────┘         └───────────────┘
   n    │      5 4 3 2 1 0           4 3 2     2 1 0
        └────────────────────────────────────────────────
   Режим 0

        │┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐
   CLK  ├┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└
   __   ├┐n=4 ┌──────┐n=5 ┌────────────────────────────
   WR   │└────┘      └────┘
        │         ┌──────────┐    ┌─┐    ┌─────────────
   GATE ├─────────┘          └────┘ └────┘
        ├───────────┐       ┌───────┐               ┌──
   OUT  │           └───────┘       └───────────────┘
   n    │          4 3 2 1 0       5 4 3  5 4 3 2 1 0
        └─────────────────────────────────────────────────
   Режим 1

        │┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐
   CLK  ├┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└
   __   ├┐n=4 ┌──┐n=3 ┌────────────────────────────────
   WR   │└────┘  └────┘
        │      ┌────────────────────────┐    ┌─────────
   GATE ├──────┘                        └────┘
        ├─────────────┐ ┌────┐ ┌─────┐ ┌──────────┐ ┌──
   OUT  │             └─┘    └─┘     └─┘          └─┘
   n    │      4 3 2 1 0 3 2 1 0 3 2 1 0      3 2 1 0
        └─────────────────────────────────────────────────
   Режим 2

        │┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐
   CLK  ├┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└
   __   ├┐n=4 ┌────────────────┐n=5 ┌──────────────────
   WR   │└────┘                └────┘
        │     ┌────────────────────────────────┐   ┌───
   GATE ├─────┘                                └───┘
        ├──────────┐    ┌─────┐    ┌─────┐    ┌────────
   OUT  │          └────┘     └────┘     └────┘
   n    │      4 3 2 1 0  4 3 2 1 0  4 3 2 1 0  5   5 4
        └─────────────────────────────────────────────────
   Режим 3

        │┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐
   CLK  ├┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└
   __   ├┐n=4 ┌────────────────┐n=5 ┌─────────────────────
   WR   │└────┘                └────┘
        ├──────────────────────────────┐   ┌──────────────
   GATE │                              └───┘
        ├──────────────┐ ┌────────────────────────────┐ ┌─
   OUT  │              └─┘                            └─┘
   n    │      4 3 2 1 0             5      5 4 3 2 1 0
        └─────────────────────────────────────────────────
   Режим 4

        │┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐┌┐
   CLK  ├┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└┘└
   __   ├┐n=4 ┌────────────────────────────────────────
   WR   │└────┘
        │         ┌────────┐   ┌─┐   ┌─────────────────
   GATE ├─────────┘        └───┘ └───┘
        ├─────────────────┐ ┌─────────────────┐ ┌──────
   OUT  │                 └─┘                 └─┘
   n    │         4 3 2 1 0    4 3    4 3 2 1 0
        └─────────────────────────────────────────────────
   Режим 5

   В  звуковой  карте имеются два таймера,
адреса которых приведены в таблице:

   Первый Таймер:
   ┌────────┬────────────┬──────────────────────────────┐
    │ Адрес  │  Операция  │     Назначение               │
    ├────────┼────────────┼──────────────────────────────┤
    │  #3D   │   запись   │   Загрузка счетчика канала 0 │
    │        │   чтение   │   Чтение счетчика канала 0   │
    │  #7D   │   запись   │   Загрузка счетчика канала 1 │
    │        │   чтение   │   Чтение счетчика канала 1   │
    │  #BD   │   запись   │   Загрузка счетчика канала 2 │
    │        │   чтение   │   Чтение счетчика канала 2   │
    │  #FD   │   запись   │   Запись управляющего слова  │
    │        │            │   в регистр режима канала    │
    └────────┴────────────┴──────────────────────────────┘

   Второй Таймер:
   ┌────────┬────────────┬──────────────────────────────┐
    │ Адрес  │  Операция  │     Назначение               │
    ├────────┼────────────┼──────────────────────────────┤
    │  #3E   │   запись   │   Загрузка счетчика канала 0 │
    │        │   чтение   │   Чтение счетчика канала 0   │
    │  #7E   │   запись   │   Загрузка счетчика канала 1 │
    │        │   чтение   │   Чтение счетчика канала 1   │
    │  #BE   │   запись   │   Загрузка счетчика канала 2 │
    │        │   чтение   │   Чтение счетчика канала 2   │
    │  #FE   │   запись   │   Запись управляющего слова  │
    │        │            │   в регистр режима           │
    └────────┴────────────┴──────────────────────────────┘

   Управляющее  слово имеет следующий фор-
мат:

   7 6 5 4 3 2 1 0
 ╔═╤═╤═╤═╤═╤═╤═╤═╗
 ║ │ │ │ │ │ │ │ ║      Раскладка битов                Маска
 ╚╤╧╤╧╤╧╤╧╤╧╤╧╤╧╤╝      ───────────────                ─────
  │ │ │ │ │ │ │ └> 0: 0 = двоичный код,                а & 1
  │ │ │ │ │ │ │       1 = двоично-десятичный код
  │ │ │ │ └─┴─┴──> 1-3: режим работы канала:          а & 0Eh
  │ │ │ │                 000 - режим 0
  │ │ │ │                 001 - режим 1
  │ │ │ │                 X10 - режим 2
  │ │ │ │                 X11 - режим 3
  │ │ │ │                 100 - режим 4
  │ │ │ │                 101 - режим 5
  │ │ └─┴────────> 4-5: вид загрузки счетчика:        а & 30h
  │ │                     00 - "защелкивание"
  │ │                          (биты 0-3 безразличны)
  │ │                     01 - только младший байт
  │ │                     10 - только старший байт
  │ │                     00 - младший байт, затем старший
  └─┴────────────> 6-7: номер канала:                 a & C0h
   00 - канал 0
   01 - канал 1
   10 - канал 2
   11 - запрещенная комбинация

   Существует  два способа чтения текущего
значения счетчика канала:

   1.  Чтение  с  остановом  счетчика. Для
обеспечения стабильных показаний необходи-
мо  приостановить работу канала либо пода-
чей   сигнала   низкого   уровня  на  вход
GATE (кроме режима  1), либо блокированием
тактовых импульсов.
   2.  Чтение  "на  лету".  Для считывания
счетчика без остановки процесса счета  ис-
пользуется посылка в порт 43h управляющего
слова  в режиме "защелкивания" (см. выше).
Это  управляющее  слово  фиксирует текущее
значение  счетчика и Вы можете считать его
младший   байт,   а  затем  старший  байт.


   В  звуковой  карте каналы таймера имеют
следующее назначение.

   Первый Таймер:
┌────────┬─────────────────────────────┬───────────────────────┐
│ Канал  │         Назначение          │         Режим         │
├────────┼─────────────────────────────┼───────────────────────┤
│   0    │   запрос для канала 0 ПДП   │    2, CLK=3.5 МГц     │
│   1    │   запрос для канала 1 ПДП   │    2, CLK=3.5 МГц     │
│   2    │   запрос прерываний         │    2, CLK=1.75Мгц     │
│        │    (бит вектора D6)         │                       │
└────────┴─────────────────────────────┴───────────────────────┘

    Второй Таймер:
┌────────┬─────────────────────────────┬───────────────────────┐
│ Канал  │         Назначение          │         Режим         │
├────────┼─────────────────────────────┼───────────────────────┤
│   0    │   запрос для канала 2 ПДП   │    2, CLK=3.5 МГц     │
│   1    │   запрос для канала 3 ПДП   │    2, CLK=3.5 МГц     │
│   2    │   запрос прерываний         │    2, CLK=1.75Мгц     │
│        │    (бит вектора D5)         │                       │
└────────┴─────────────────────────────┴───────────────────────┘

   Входы  GATE  всех  каналов всегда имеют
высокий  уровень,  поэтому счет на каналах
разрешен всегда.
   Внимание!  Контроллеры ПДП и прерываний
нормально работают только, если соответст-
вующий  им  канал  таймера работает во 2-м
режиме.  Поэтому, сначала нужно запрограм-
мировать таймер, а потом разрешать переда-
чу ПДП или прерывания от таймера.



Другие статьи номера:

Вступление - пара слов о новом номере газеты.

Новости - Черный Ворон 2,MythOS и Awaken закрыты, новые коммандеры Real Commander 2.0 и Turbo Commander, новая печатная газета Абзац, готовится к выпуску Demoniada.

Обзор Warez'а - Converter Utility v2.1, Hrust RiP arhivator v0.99, Tornado Screen Packer v1.00, Real Commander v1.96, Quick Commander v2.6, ZX-Amp v1.0, DFC v4.00, ANSI v0.1, HorrorWord v1.00, The Pusher Crack Music System v6.02, Burial gfx Editor v2.40c, File Extractor, Brujeria.

Обзор игр - логической игра Numerical и адвентюрная игры "И наступила тьма".

TOP 100 - Лучшая двадцатка игр отечественных производителей, Пятьдесят лучших игр зарубежных призводителей, Тридцать наиболее популярных системных программ.

Разборочка с геймочкой - разбор игры "Земля заклинателей" (Magicians Land).

Galaxy Plus - описания игр жанра РВЕМ (Play by E-Mail) и конкретно Galaxy Plus.

NeOS - Операционная Система нового поколения для ZX Spectrum совместимых компьютеров NeOS.

Турбирование "Байта" - Контроллер альтернативной памяти для ПК "БАЙТ".

DMA Sound Card - Программируемый таймер 8253 (Продолжение темы DMA SC в ECHO 6).

Подключение модема - схема и описание подключения Hayes-Модема к Спектруму.

Авторы - авторы и их адреса.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Программирование - курс изучения ассемблера от Wlodek Black, продолжение. Организация памяти.
Разберемся - Описание миссий игры LASER SQUAD.
Обзор - О новых игры: MONTAIN BIKE RACER , PI*R^2 , PSST , CAPTAIN DYNAMO , BEYOND THE ICE PALACE.
Hackers - О программировании ВГ93.
Обратная связь - контакты редакции.

В этот день...   21 ноября