Регистр состояний (STAT - 008, 0D0)



Содержимое регистра состояния может быть прочитано микропроцессором. Регистр содержит информацию о состоянии каналов в данный момент времени. Эта информация показывает, какие каналы достигли заполнения счетчика (т.е. сгенерировали TC) и какие каналы имеют неудовлетворенные запросы Разряды 0-3 регистра устанавливаются каждый раз, как появляется TC для соответствующего канала или внешний -EOP. Эти разряды сбрасываются по RESET и при каждом чтении регистра состояния.

Разряды 4-7 устанавливаются всякий раз, когда соответствующий канал запрашивает обслуживание.

Временный регистр (TR - 00D, 0DA)

Регистр используется для хранения данных в течение передачи ПАМЯТЬ-ПАМЯТЬ. После окончания передач последнее слово может быть считано микропроцессором.
Регистр всегда содержит последний байт, переданный в предыдущей операции ПАМЯТЬ-ПАМЯТЬ, если не сброшен по RESET.

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

Контроллер DMA может программироваться процессором, когда HLDA не активен; это утверждение истинно, даже если активен HRQ. Ответственность процессора заключается в гарантии, что программирование контроллера и активный HLDA взаимоисключающие.
Если -CS и HLDA в низком состоянии, контроллер DMA входит в режим программирования. Выбор регистров при программировании осуществляется с помощью адресной шины A0-A3, работающей на вход, а выбор режима записи или считывания - с помощью сигналов -IOW или -IOR. При записи/считывании 16- разрядных регистров адреса или счетчика соответствующего канала необходим дополнительный разряд адреса, в качестве которого используется внутренний триггер FF. По FF=0 происходит обращение к младшему байту, а по FF=1 - к старшему байту регистра адреса или счетчика.
Кроме того, для контроллера существуют дополнительные специальные команды, которые могут быть выполнены в режиме программирования и не зависят от набора разрядов на шине данных. К ним относятся следующие команды:

· сброс триггера FF (Clear First/Last Flip-Flop; 00C, 0D8).
Эта команда выполняется перед записью или чтением информации из регистров адреса или счетчика слов контроллера DMA. Триггер FF устанавливается таким образом, чтобы микропроцессор адресовал старший и младший байты в нужной последовательности;

· очистка (Master Clear; 00D, 0DA).
По этой программной команде в контроллере DMA выполняются такие же действия, как и по аппаратному RESET. Очищаются регистры команд, состояния, запросов и триггер FF, а регистр маски устанавливается. После этого контроллер DMA переходит в холостой цикл;

· cброс регистра маски (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

out dma+0A,al ;Размаскировать канал 2 и читать сектор Примечание: dma - это базовый адрес, равный 00h.

Регенерация.

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

Осуществляется регенерация не сразу всей микросхемы памяти, а отдельных строк через некоторые промежутки времени. При этом время, через которое выполняется регенерация одной и той же строки, должно строго соблюдаться.
Для осуществления регенерации необходимо иметь два счетчика: первый - счетчик временных интервалов между запросами на регенерацию строк микросхем памяти, второй - счетчик перебора строк (счетчик адреса регенерируемой строки).

Первый счетчик является каналом 1 системного таймера (порт 41). Обычно этот канал настраивается на выдачу коротких импульсов с периодом 15 мкс, хотя в машинах последних моделей эта величина может быть больше.
Запрос на регенерацию фиксируется на триггере по отрицательному фронту DMACLK в отличие от запросов на обслуживание циклов DMA, которые фиксируются по положительному фронту (см. параграф "Режим прямого доступа к памяти"). Тем самым разнесены во времени моменты возникновения запросов от DMA и запросов на регенерацию. Первым будет обслуживаться тот запрос, который пришел раньше. По своему приоритету запросы являются равноправными. Запрос, который зафиксирован на триггере раньше, будет блокировать прохождение другого запроса (имеется в виду не два запроса на регенерацию, а один запрос от подсистемы DMA и один запрос на регенерацию). Если запрос на регенерацию пришел раньше запроса от подсистемы DMA, то его появление вызовет активизацию сигнала CPU HRQ, который является запросом микропроцессору на захват управления шиной.

С ростом тактовой частоты микропроцессора длительность цикла регенерации памяти на некоторых комплектах БИС может сокращаться. Это может привести к сбоям в работе некоторых адаптеров, которые имеют элементы памяти, рассчитанные на длинный цикл регенерации. Точно так же, как и цикл шины, выполняемый под управлением микропроцессора или контроллера DMA, цикл регенерации может быть растянут путем выдачи сигнала IOCHRDY низкого уровня.


Дата добавления: 2020-04-25; просмотров: 215; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!