КОМПЬЮТЕРНОЕ ЖЕЛЕЗО
HARDWARE FOR PC

Архитектурные компоненты IBM PC-совместимого компьютера



466
Глава 12. Архитектурные компоненты IBM PC-совместимого компьютера
Таблица 12.4. Регистры контроллера DMA 8237A 8237#1

Программирование контроллера для каждого канала определяет начальный адрес, направление его модификации (инкремент/декремент), количество пересылаемых байт (слов), режим работы канала. Регистры адреса контроллеров 8237 А — 16-раз¬рядные, и для расширения разрядности адреса для каждого канала имеются специ¬альные регистры страниц (DMA page register), внешние по отношению к контролле¬рам 8237А. В отличие от адресных регистров контроллера 8237А регистры страниц при выполнении циклов DMA не модифицируются — в них по команде процессора до начала обмена по каналу загружается требуемое значение. В PC/AT регистры страниц хранят биты А[23:16] для 8-битных каналов и А[23:17] — для 16-битных. В PC/XT регистры страниц хранили только 4 бита А[19:16]. Контроллер 16-битных каналов подключен к шине адреса со смещением на 1 бит, так что линией АО он не

12.4. Прямой доступ к памяти — DMA
467
управляет. При передаче по 16-битным каналам всегда А0=0 (передачи слов по четным адресам). Счетчики циклов каналов — 16-разрядные, что позволяет переда¬вать блоки до 64 К байт (для 8-битных каналов) или слов (для 16-битных каналов). При инициализации в счетчик загружается число, на единицу меньшее требуемого числа циклов, так что FFFF соответствует 65 534 передачам (216). В последнем цикле передачи (когда счетчик отсчитает требуемое количество циклов) контроллер выра¬батывает сигнал завершения ТС, общий для всех каналов. Этот сигнал устройство может использовать для выработки сигнала прерывания, а программа может опреде¬лить, какой канал «отстрелялся», прочитав регистр состояния каналов в контролле¬ре DMA. В зависимости от выбранного режима по окончании счета контроллер либо остановит работу данного канала, либо выполнит автоматическую реинициа-лизацию (автозагрузку) — восстановит прежде записанные значения регистра адре¬са и счетчика циклов и будет снова готов к пересылке такого же блока данных.

Hosted by uCoz