2. Контроллер выставляет адрес ячейки памяти и формирует в одном цикле шины сигналы IOR#
DACKx#
и MEMW#
. Адрес на всех линиях, включая LA[23:17]
, действителен во время всего цикла (защелкивание не требуется), BALE
=H в течение всего цикла. Сигнал DACKx#
указывает на то, что операция выполняется для канала x, a IOR#
— на направление в канале (для пересылки из памяти в канал использовался бы сигнал IOW#
). Чтобы по сигналу IOR#
не было ложного чтения (по IOW#
— ложной записи) порта, адрес которого совпадает с адресом памяти, присутствующим в цикле DMA, контроллер высоким уровнем сигнала AEN
запрещает портам дешифрацию адреса. Байт, считанный из ПУ, в том же цикле шины записывается в ячейку памяти.3. Контроллер модифицирует счетчик адреса и повторяет шаги 1–2 для каждого следующего сигнала DRQx
TC
(Terminate Count), который может быть использован устройством для формирования сигнала аппаратного прерывания.Рис. 6.3
. Цикл обмена DMAДиаграмма обратной пересылки (из памяти в ПУ) отличается только тем, что на месте сигнала IOR#
MEMR#
, а на месте MEMW#
— сигнал IOW#
. Направление обмена и параметры режима задаются программированием контроллера DMA.Цикл DMA, и так довольно длинный, может быть растянут устройством с помощью сигнала IOCHRDY
0WS#
невозможно). Запрашивать удлинение цикла может только адресованная память — подразумевается, что когда ПУ выставляет запрос DRQx
, оно уже должно быть готово к обмену.На 16-битной шине ISA доступно 7 каналов DMA: четыре 8-битных (номера 0–3) и три 16-битных (5–7), подключенные к первичному и вторичному контроллерам соответственно. Канал 4 используется для каскадирования (соединения контроллеров). На 8-битном слоте доступны только четыре 8-битных канала (в XT только 3 — канал 0 требовался для регенерации памяти).
Кроме приведенного на рисунке режима одиночной передачи возможны и иные, описанные в п. 12.4.
Напомним, что по 8-битным каналам DMA за один сеанс настройки контроллера можно передавать не более 64К
6.1.3. Прямое управление шиной
В случае
DRQx
(x=5…7), по которому контроллер DMA запрашивает управление шиной у центрального процессора. Получив подтверждение от процессора, контроллер устанавливает сигнал AEN
(для блокировки дешифрации адреса портов) и формирует сигнал DACKx
. Получив этот сигнал, устройство устанавливает низкий уровень на линии MASTER#
, по которому контроллер шины DMA снимает сигнал AEN
и освобождает линии командных сигналов. Таким образом, управление шиной переходит к данному устройству до тех пор, пока оно не снимет запрос DRQx
. В режиме прямого управления шиной ISA устройство становится полновластным и бесконтрольным хозяином как самой шины, так и системы в целом (через мост шины). Если шина захватывается более чем на 15 мкс, контроллер устройства должен заботиться о регенерации памяти (см. ниже). Устройства (и память), к которым обращается задатчик шины, могут потребовать введения тактов ожидания сигналом IOCHRDY
, и это требование должно удовлетворяться.6.1.4. Регенерация памяти