Аппаратное обеспечение персонального компьютера© Александр Фролов, Григорий ФроловТом 33, М.: Диалог-МИФИ, 1997, 304 стр. Контроллер прямого доступа IBM PC/XTКонтроллер прямого доступа IBM PC/XT реализован на базе микросхемы Intel 8237A и содержит четыре канала. Эти каналы используются следующим образом:
Регистры каналов DMAКаждый канал DMA содержит следующие 16-разрядные регистры: · регистр текущего адреса CAR, содержит текущий адрес ячейки памяти при выполнении операции обмена данными с использованием DMA; · регистр циклов прямого доступа к памяти CWR, содержит число слов, предназначенных для передачи минус единица. При выполнении обмена данными регистр работает в режиме вычитания; · регистр хранения базового адреса BAR, используется для хранения базового адреса памяти, используемого при передачи данных. В процессе работы канала DMA содержимое этого регистра не изменяется; · регистр хранения базового числа циклов прямого доступа к памяти WCR. Этот регистр хранит число циклов DMA и его содержимое также не изменяестя; · регистр режима MR, определяющий режим работы канала. Приведем адреса регистров и их форматы для компьютеров IBM PC/XT. Порты 00h - 07hЭти регистры содержат базовые адреса и счетчики передаваемых данных каналов 0 - 3. Их назначение приводится в следующей таблице:
Порт 08hЭтот порт используется при записи в качестве управляющего регистра и при чтении как регистр состояния. Формат управляющего регистра:
Обычно управляющий регистр инициализируется BIOS в процессе тестирования системы. Впоследствии изменять режим работы контроллера DMA не требуется. Ошибки при инициализации этого порта могут привести к нарушению нормальной работы операционной системы. При чтении из порта 08h программа получает слово состояния контроллера DMA:
Порт 09hРегистр запроса. Предназначен для организации программного (а не аппаратного) запроса на DMA. Для использования программного запроса канал должен быть запрограммирован в режиме передачи блоков данных. Формат регистра:
Порт 0AhРегистр маски. Применяется для маскирования запросов на прямой доступ для отдельных каналов:
Порт 0BhРегистр режима. Служит для определения режимов работы каналов контроллера DMA:
Порт 0ChСброс триггера байтов. Для загрузки внутренних 16-разрядных регистров контроллера используется последовательный вывод младшего, затем старшего байтов слова. После сброса триггера байтов можно начинать загрузку 16-разрядных регистров. Порт 0DhЗапись в этот порт вызывает сброс контроллера. Для дальнейшего использования контроллер должен быть заново проинициализирован. Порт 0EhСброс регистра маски. После записи в этот регистр любого значения разрешается работа всех четырех каналов прямого доступа. Порт 0FhМаскирование или размаскирование каналов. С помощью этого порта можно выполнить одновременное маскирование или размаскирование нескольких каналов:
Порты 81h-8FhЭто порты регистров страниц. Для работы с памятью контроллер прямого доступа IBM PC/XT использует 20-разрядные физические адреса. Шестнадцать младших битов адреса необходимо записать в регистр базового адреса канала. Четыре старших бита (биты 16-19) должны быть записаны в соответствующие порты регистров страниц. При инициализации регистров базового адреса и регистра страниц необходимо следить за тем, чтобы в процессе передачи данных не происходил переход за границу 64 Кбайт. Для адресации регистров страниц можно использовать следующие порты:
Инициализация канала DMAДля инициализации канала программа должна выполнить следующие шаги: · сбросить триггер байтов командой записи в регистр 0Ch; · задать режим работы канала, выполнив запись по адресу 0Bh в регистр режима MR; · записать младшие 16 бит 20-битового адреса области памяти, которая будет использована для передачи данных, в регистр базового адреса. Адрес порта зависит от номера канала: канал 0 использует адрес 00h, канал 1 - 02h, канал 2 - 04h, канал 3 - 06h; · записать номер страницы (старшие 4 бита 20-битового адреса) в регистр страниц 81h; · загрузить регистр циклов прямого доступа к памяти CWR значением, на 1 меньшим требуемого количества передаваемых байт. Адреса соответствующих портов для каналов 0-3, равны, соответственно, 01h, 03h, 05h и 07h; · разрешить работу канала, выполнив запись в регистр маски каналов по адресу 0Ah. Сразу после разрешения канал начинает передачу данных. После окончания передачи устройство обычно вырабатывает прерывание, которое служит признаком окончания операции ввода или вывода данных. |