Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Адаптеры и контроллеры ЭВМ.docx
Скачиваний:
18
Добавлен:
01.04.2025
Размер:
844 Кб
Скачать
☆

10.2.7.8. Регистр состояний (stat - 008, 0d0)

Содержимое регистра состояния может быть прочитано микропроцессором. Регистр содержит

информацию о состоянии каналов в данный момент времени. Эта информация показывает, какие каналы

достигли заполнения счетчика (т.е. сгенерировали TC) и какие каналы имеют неудовлетворенные запросы

(рис. 12). Разряды 0-3 регистра устанавливаются каждый раз, как появляется TC для соответствующего

канала или внешний -EOP. Эти разряды сбрасываются по RESET и при каждом чтении регистра состояния. 10.2.7.9. Временный регистр (TR - 00D, 0DA)

Регистр используется для хранения данных в течение передачи ПАМЯТЬ-ПАМЯТЬ. После окончания

передач последнее слово может быть считано микропроцессором.

Регистр всегда содержит последний байт, переданный в предыдущей операции ПАМЯТЬ-ПАМЯТЬ,

если не сброшен по RESET.

10.2.8. Программирование контроллера

Контроллер DMA может программироваться процессором, когда HLDA не активен; это утверждение

истинно, даже если активен HRQ. Ответственность процессора заключается в гарантии, что

программирование контроллера и активный HLDA взаимоисключающие.

Если -CS и HLDA в низком состоянии, контроллер DMA входит в режим программирования. Выбор

регистров при программировании осуществляется с помощью адресной шины A0-A3, работающей на вход, а

выбор режима записи или считывания - с помощью сигналов -IOW или -IOR. При записи/считывании 16-

разрядных регистров адреса или счетчика соответствующего канала необходим дополнительный разряд

адреса, в качестве которого используется внутренний триггер FF. По FF=0 происходит обращение к

младшему байту, а по FF=1 - к старшему байту регистра адреса или счетчика.

Кроме того, для контроллера существуют дополнительные специальные команды, которые могут быть

выполнены в режиме программирования и не зависят от набора разрядов на шине данных. К ним относятся

следующие команды:

1) сброс триггера FF (Clear First/Last Flip-Flop; 00C, 0D8).

Эта команда выполняется перед записью или чтением информации из регистров адреса или счетчика

слов контроллера DMA. Триггер FF устанавливается таким образом, чтобы микропроцессор адресовал

старший и младший байты в нужной последовательности;

2) очистка (Master Clear; 00D, 0DA).

По этой программной команде в контроллере DMA выполняются такие же действия, как и по

аппаратному RESET: Очищаются регистры команд, состояния, запросов и триггер FF, а регистр маски

устанавливается. После этого контроллер DMA переходит в холостой цикл;

3) сброс регистра маски (Clear Mask Register; 00E, 0DC).

По этой команде очищаются разряды масок для всех 4 каналов, что разрешает им принимать запросы

DMA.

После включения питания предполагается, что все внутренние ячейки, особенно регистр MOD, будут

загружены некоторым действительным значением. Это необходимо сделать, даже если некоторые каналы не

используются. Пример программирования подсистемы DMA

PC AT использует канал 2 контроллера DMA для обмена с гибким диском. Чтобы получить доступ к

верному адресу памяти, необходимо загрузить соответствующий регистр страниц. В данном случае для

канала 2 это адрес порта 81h.

В приводимом примере ограничимся рассмотрением установки канала 2 для чтения одного сектора

(512 байт) гибкого диска, начиная со смещения внутри страницы, содержащегося в BX. Программа имеет

следующий вид:

mov al,46h ;Канал 2, передача одного байта, чтение с диска

(4Аh для записи на диск)

out dma+0B,al ;Установить байтный режим

out dma+0C,al ;Сбросить триггер FF

mov al,bl ;Загрузить смещение адресов в текущий регистр

страниц DMA

out dma+4,al

mov al,bh

out dma+4,al

mov al,0 ;Загрузить счетчик=512

out dma+5,al

mov al,2

out dma+5,al

105

out dma+0A,al ;Размаскировать канал 2 и читать сектор

Примечание: dma - это базовый адрес, равный, в данном случае, 00h (ведомый контроллер DMA).

4. Вопрос: Охарактеризуйте правила программирования подсистемы аппаратных прерываний ПК.

Ответ:

Аппаратные прерывания:

· Int 02h — немаскируемое прерывание;

· Int 08h — таймер 8253/8254;

· Int 09h — клавиатура;

· Int 0Ah — IRQ 2/9;

· Int 0Bh — IRQ 3;

· Int 0Ch — IRQ 4;

· Int 0Dh — IRQ 5;

· Int 0Eh — IRQ 6 — контроллер гибких дисков;

· Int 0Fh — IRQ 7;

· Int 70h — CMOS-таймер;

· Int 71h — IRQ 9 (перенаправлено на Int 0Ah);

· Int 72h — IRQ 10;

· Int 73h — IRQ 11;

· Int 74h — IRQ 12 (контроллер мыши PS/2);

· Int 75h — IRQ 13 — исключение сопроцессора;

· Int 76h — IRQ 14 — контроллер жестких дисков;

· Int 77h — IRQ 15

Кроме функций дискового сервиса (INT 13h), с дисковыми устройствами связаны еще и векторы,

обслуживающие аппаратные прерывания от контроллера НГМД — INT0Eh (линия IRQ 6) и от

контроллера жестких дисков — INT76h (линия IRQ 14). При наличии двухканального порта АТА второй

канал обычно использует линию-IRQ 15 (вектор 77h). В XT контроллер жестких дисков использовал

линию IRQ 5 (вектор 0Dh). Дополнительные контроллеры дисков могут использовать и другие

прерывания. Аппаратные прерывания вырабатываются контроллерами по завершении внутренних

операций (нормальном и аварийном). На эти прерывания BIOS не реагирует, а при инициализации их

векторы направляются на программную заглушку (инструкцию IRET). При работе с СОМ-портом задействуются соответствующие аппаратные прерывания — их используют

при подключении модема, мыши и других устройств ввода. Неработоспособность этих устройств может

быть вызвана некорректной настройкой запроса прерывания. Здесь возможны как конфликты с другими

устройствами, так и несоответствие номера прерывания адресу порта. Устройства ввода/вывода данных с помощью запросов прерываний сообщают центральному процессору

о поступлении новой информации от объектов внешнего мира или о готовности получить очередной квант

данных от процессора. Прерывания от клавиатуры, мыши PS/2-типа и других периферийных устройств

прежде, чем поступить в процессор, проходят через контроллер прерываний, где подвергаются

предварительной обработке. Контроллер позволяет управлять приоритетами, прохождением запросов и

адресами векторов прерываний.

Контроллер прерываний IBM PC/AT состоял из двух микросхем Intel 8259A, включенных каскадно

(рис. 1.). Первая микросхема была ведущей, а вторая — ведомой (ведомый контроллер подключен к входу