Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка пргр МП.docx
Скачиваний:
11
Добавлен:
01.07.2025
Размер:
15.82 Mб
Скачать

2.4.1 Общие принципы организации пдп

Центральный процессор программирует контроллер DMA, устанавливая его регистры. Затем процессор дает команду устройству (например, АЦП) прочитать данные во внутренний буфер. DMA-контроллер начинает работу, посылая устройству запрос чтения (при этом устройство даже не знает, пришѐл ли запрос от процессора или от контроллера DMA). Адрес памяти уже находится на адресной шине, так что устройство знает, куда следует переслать следующее слово из своего внутреннего буфера. Когда запись закончена, устройство посылает сигнал подтверждения контроллеру DMA. Затем контроллер увеличивает используемый адрес памяти и уменьшает значение своего счѐтчика байтов. После чего запрос чтения повторяется, пока значение счѐтчика не станет равно нулю. По завершении цикла копирования устройство инициирует прерывание процессора, означающее завершение переноса данных. Контроллер может быть многоканальным, способным параллельно выполнять несколько операций.

Для осуществления режима ПДП контроллер должен выполнить ряд последовательных операций для передачи данных в этом режиме, называемых также циклами ПДП:

  1. Принять запрос на ПДП от ПУ (DMA Request, DREQ);

  2. Сформировать запрос процессору для перехода в режим ПДП (Hold Request, HRQ).

  3. Принять сигнал (Hold Acknowledge, HLDA), подтверждающий переход процессора в режим ПДП (ШД, ША, ШУ в z-состояние), т. е. переход в режим ПДП.

  4. Сформировать сигнал (DMA Acknowledge, DACK), сообщающий ПУ о начале выполнения циклов ПДП.

  5. Сформировать на ША адрес ячейки памяти, предназначенной для обмена.

  6. Выработать сигналы чтения из памяти, записи в ПУ (MEMR1, IOW) и чтение из ПУ, запись в память (IOR, MEMW), обеспечивающие управление обменом.

  7. По окончании ПДП либо повторить цикл ПДП, изменив адрес, либо прекратить ПДП, сняв запросы ПДП.

На рисунке показана структурная схема микропроцессорной системы с контроллером ПДП. На рисунке сигнал MEMR назван MR, а сигнал MEMW – MW.

Рис. 26. Структурная схема МПС с контроллером ПДП

Циклы ПДП выполняются с последовательно расположенными ячейками памяти, поэтому КПДП должен иметь счетчик адреса ОЗУ. Число циклов ПДП определяется специальным счетчиком. Управление обменом осуществляется специальной логической схемой, формирующей в зависимости от типа обмена пары управляющих сигналов: MEMR, IOW (циклы чтения) и IOR, MEMW (циклы записи).

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

2.4.2 DMA-контроллеры персонального компьютера

В оригинальной архитектуре IBM PC реализация режима ПДП была возможна при наличии аппаратного DMA-контроллера – микросхемы Intel 8237. Эта микросхема могла управлять четырьмя "каналами", каждый из которых связан со своим набором регистров DMA. Таким образом, четыре устройства могли сохранять свою DMA информацию в контроллере одновременно. Более поздние PC содержали эквивалент двух DMA-контроллеров: второй контроллер (master) подключен к системному процессору, а первый (slave) подсоединен к каналу 0 второго контроллера. Сейчас эти чипы являются частью чипсета, на котором строится материнская плата, но еще несколько лет назад это были два раздельных чипа 8237. Оригинальная архитектура PC имела только один DMA контроллер. Второй был добавлен в архитектуру PC на платформах i286. Однако второй контроллер был установлен как master, так как он управлял 16битовой передачей, в то время как первый контроллер управлял 8-ью битами передачи и был оставлен для обратной совместимости.

Интерфейс КПДП 8237:

HLDA (Hold Acknowledge) – входной сигнал подтверждения процессором освобождения системной шины (ШД, ША, ШУ в zсостояние), т. е. переход в режим ПДП.

DREQ (DMA Request) – запрос на ПДП от ПУ.

IOR (I/O Read) – входной сигнал управления, который используется процессором для чтения регистров управления контроллера ПДП, когда КПДП находится в режиме ожидания (Idle). В режиме ПДП этот сигнал является выходным и используется КПДП для чтения данных из ПУ. IOW (I/O Write) – входной сигнал управления, который используется процессором для конфигурирования регистров управления контроллера ПДП, когда КПДП находится в режиме ожидания (Idle). В режиме ПДП этот сигнал является выходным и используется КПДП для записи данных в ПУ.

HRQ (Hold Request) – запрос от КПДП процессору на переход в режим ПДП, т. е. на освобождение системной шины.

DACK (DMA Acknowledge) – сигнал подтверждения КПДП перехода в режим ПДП для определенного ПУ (которое прежде послало DREQ).

MEMR (Memory Read) – сигнал чтения данных из памяти в режиме ПДП.

MEMW (Memory Write) – сигнал записи данных в память в режиме ПДП.

A0-A3 – младшие разряды шины адреса. В режиме ожидания эти разряды (входной сигнал) используются для адресации к регистрам управления КПДП. В режиме ПДП (выходной сигнал) служат 4 младшими разрядами адреса обращения к памяти.

A4-A7 – старшие разряды шины адреса. Используются только в режиме ПДП (выходной сигнал) в качестве 4 старших разрядов адреса обращения к памяти.

D0-D7 – шина данных. В режиме ожидания используется для конфигурирования регистров КПДП. В режиме ПДП – для передачи данных между ОП и ПУ.

Рис. 27. Системный интерфейс контроллера ПДП 8237

Каналы пронумерованы от 0 до 7. Канал номер 4 не доступен периферии ISA, потому что он используется для внутренних целей каскадирования slaveконтроллера к master-контроллеру. Доступные каналы имеют номера 0..3 на slave-контроллере для 8-ми битовой передачи, и номера 5..7 на masterконтроллере для 16-битовой передачи. Обратите внимание, что 4-ый канал общей нумерации соответствует 0-му каналу master-контроллера. Размер DMAпередачи сохраняется в контроллере как 16-ти битовое число, и представляет собой число циклов шины необходимое для завершения передачи требуемого количества данных. Таким образом, максимальный размер передачи для slaveконтроллера равен 64Кб, и 128Кб для master-контроллера.

Стандартные каналы КПДП 8237 (архитектура ISA):

Канал 2 – контроллер НГМД,

Канал 3 – контроллер НЖМД,

Канал 4 – каскадирование и др.

Рис. 28. Каскадирование контроллеров ПДП 8237

В архитектура IBM PC с шиной PCI как такового централизованного КПДП (микросхема 8237) нет, а есть режим прямого управления шиной (bus mastering) и КВУ со встроенными КПДП и возможностью работы в соответствующем режиме. В режиме bus mastering любому устройству возможно заявить о возникновении потребности к захвату шины, каковая потребность удовлетворяется так называемым арбитром при первой возможности. Устройство, успешно осуществившее захват шины, самостоятельно выставляет на шину сигналы адреса и управления, и исполняет в течение какого-то времени ту же ведущую роль на шине, что и ЦП. Доступ ЦП к шине при этом кратковременно блокируется.