В качестве примера реализации принципов прямого доступа к памяти (ПДП) рассмотрим микросхему КР580ВТ57. Программируемый контроллер ПДП предназначен для высокоскоростного обмена данными между памятью системы и четырьмя внешними устройствами (ВУ).
Контроллер осуществляет двунаправленный обмен данными между памятью и ВУ (по требованию ВУ), при этом в адресном канале микропроцессорной системы формируются параметры заданного массива адресов ячеек памяти (начальный адрес и число циклов) и управляющие сигналы. Каждый из четырех каналов контроллера обеспечивает адресацию (путем инкрементирования выработанного адреса) внешней памяти массивами объемом до 16К байт с возможностью задания любого из 64К начальных адресов.
Состав контроллера ПДП
В контроллере можно выделить следующие блоки (рис. 3.11.1): блок обработки запросов, формирователь адреса, блок логики чтения–записи, блок управления, буфер данных и два регистра — регистр установки режима и регистр состояния каналов. Рассмотрим их особенности.
Блок обработки запросов предназначен:
? для приема сигналов запроса ЗПДП0–ЗПДП3 на прямой доступ к памяти от ВУ;
? для маскирования входов каналов К0–К3;
? для выдачи сигналов подтверждения запроса ?ППДП0 – ?ППДП3 прямого доступа к памяти, информирующих ВУ о готовности контроллера к обмену данными по каналу ПДП.
Формирователь адреса содержит 16–разрядные регистры начального адреса (РНА0…РНА3) и числа циклов (РЧЦ0…РЧЦ3), схему инкремента–декремента, триггер. В процессе выполнения программы начальной установки в РНА записывается начальный адрес ячейки памяти, к которой будет обращаться ВУ по каналу ПДП. В 14 младших разрядов регистра числа циклов РЧЦ заносится число N – 1, где N — число циклов. Два старших разряда этого регистра используются для управления обменом по каналу ПДП.
В каждом цикле из РНА считывается два байта адреса. Триггер обеспечивает порядок считывания: старший байт выводится через буфер данных на ШД, а младший байт адреса — по шинам А0…А3, А4…А7. По завершении цикла схема инкремента–декремента содержимое РНА увеличивает, а содержимое РЧЦ уменьшает на единицу. Следует отметить, что выводы контроллера А4…А7 всегда используются как выходы для разрядов А4…А7 кода адреса, а выводы А0…А3 используются:
- как выходы для передачи младших разрядов кода адреса при работе канала ПДП;
- как входы для выбора регистра, с которым будет происходить обмен информацией. Такая необходимость возникает при записи программы начальной установки в контроллер ПДП, а также при чтении содержимого адресного регистра, регистра числа циклов или регистра состояния.
Блок логики чтения–записи
осуществляет прием, формирование и выдачу сигналов, обеспечивающих обмен информацией между процессором и контроллером ПДП, памятью и ВУ. Блок логики чтения–записи имеет следующие выводы:
? ?Зп — двунаправленный управляющий трехстабильный вход/выход, используемый:
• как вход для получения сигнала из процессора на запись данных во внутренние регистры контроллера ПДП при его начальной установке;
• как выход,на котором формируется сигнал, разрешающий внешнему устройству запись данных из памяти;
? ?Чт — двунаправленный трехстабильный управляющий вход/выход, используемый:
• как вход для получения из процессора сигнала, разрешающего чтение (вывод) содержимого внутренних регистров контроллера;
• как выход длявыдачи сигнала на разрешение считывания данных из ВУ в память;
? ?ЧтП, ?ЗпП — выходы для управления чтением из памяти и записью в память;
? ?ВК — вход (выбор кристалла), на который подается нулевой сигнал выбора микросхемы после того, как установлены сигналы записи или чтения. Сигнал ?ВК инициирует обмен данными между процессором и внутренними регистрами контроллера ПДП при программировании; автоматически блокируется в режиме прямого доступа. Вход ?ВК подключается к ША микропроцессорной системы непосредственно или через дешифратор.
Выводы ?Зп, ?Чт подключаются к процессору как входы и к ВУ как выходы, а выходы ?ЗпП, ?ЧтП — к памяти микропроцессорной системы.
На этапе начальной установки в формирователе адреса дешифрируются младшие разряды А3…А0 кода адреса и после поступления от процессора сигналов ?Зп, ?Чт организуется запись или чтение программно доступных регистров устройства ПДП. При работе в цикле ПДП логические цепи блока чтения–записи формируют пары сигналов ?Чт, ?ЗпП и ?Зп, ?ЧтП на выходах устройства, обеспечивающих тактирование процесса обмена данными между ВУ и памятью.
Блок управления
регламентирует последовательность операций в течение всех циклов ПДП с помощью управляющих сигналов, а также осуществляет переход контроллера из состояния ожидания в состояние обслуживания по сигналу подтверждения захвата (ПЗх). Блок управления имеет следующие выводы:
- ЗЗх (Н RQ ) — выход, с которого снимается сигнал запроса захвата для микропроцессора;
- ПЗх ( HLDA) — вход, на который поступает сигнал подтверждения захвата от микропроцессора;
- Гт (RDY )— управляющий вход готовности. Сигнал Гт = 1 от ВУ активизирует работу контроллера ПДП; сигнал Гт = 0 переводит контроллер в состояние ожидания;
- М128 — выход маркер 128–го цикла: М128 = 1 свидетельствует о том, что текущий цикл ПДП является по счету 128–м циклом от конца массива данных;
- КС (ТС) — выход конец счета: КС = 1 указывает ВУ, что текущий цикл обмена по каналу ПДП является последним при передаче массива данных. Если разряд «КС–стоп» в регистре установки режимов установлен в 1, то канал будет запрещен. Выход КС активизируется (КС = 1), когда содержимое 14–разрядного регистра числа циклов в данном канале устанавливается в 0;
- РА (АЕ) — выход разрешения адреса: РА = 1 указывает системе, что происходят циклы прямого доступа. При этом все шины отключаются от микропроцессора. Сигнал может быть использован для блокировки адресной шины в устройствах, не участвующих в прямом доступе, а также для записи старших восьми разрядов кода адреса в буферный регистр адреса и отключения схемы выборки устройства. В режиме ПДП выборка устройства осуществляется сигналами ?ППДП0 – ?ППДП3;
- СтА ( STBA ) — выходстроб адреса,сигнал которого стробирует старший байт адреса памяти, передаваемый через ШД в дополнительный буфер данных. Через этот буфер старший байт адреса поступает на адресную шину микропроцессорной системы;
- ТИ — вход для тактовых импульсов;
- Сброс —вход начальной установки устройства. Подача единичного сигнала на этот вход обнуляет содержимое всех программно доступных регистров, что приводит к отключению каналов К0 – К3.
Буфер данных представляет собой 8–разрядную двунаправленную шину с тремя состояниями, соединяющую контроллер ПДП с системной шиной данных ШД.
Через буфер данных:
- при программировании в режиме записи восемь бит данных D 7… D 0 из микропроцессора передаются в контроллер ПДП для записи в регистр начального адреса, регистр числа циклов или регистр установки режима; при чтении процессором из устройства ПДП выводится содержимое регистра начального адреса, регистра числа циклов и регистра состояния каналов;
- приработе канала ПДП в начале каждого цикла старшие восемь разрядов адреса передаются из адресного регистра соответствующего канала в память. Затем ШД освобождается для непосредственного обмена данными между памятью и ВУ в течение оставшейся части цикла. Эти данные через устройство ПДП не проходят.
Регистр установки
режимов хранит информацию о запрограммированных режимах автозагрузки, удлиненной и обычной записи, фиксированного приоритета и циклического сдвига приоритетов, КС–стоп и др. В него при программировании контроллера ПДП записывается 8–разрядное управляющее слово. Регистр установки режима обычно загружается после того, как установлены регистр адреса (РгА) и регистр циклов (РгЦ). Назначение разрядов регистра установки режимов приведено в табл. 3.11.1.
Регистр состояния каналов
указывает, в каком из четырех каналов окончился процесс передачи массива. Для этого в младшие разряды РС0–РС3 (флаги завершения обслуживания) записывается значение сигнала КС = 1 конца счета, появляющегося на выходе КС и указывающего на конец массива по соответствующему каналу. Назначение разрядов регистра установки режимов приведено в табл. 3.11.2.
Основные состояния и режимы работы устройства.
Основными состояниями являются исходное состояние, программирование, ожидание и обслуживание.
Исходное состояние.
При поступлении на вход Сброс единичного сигнала устройство переходит в исходное состояние. В этом состоянии маскируются запросы всех каналов ПДП (Р0 = Р1 = Р2 = Р3 = 0), буферные схемы шины А0…А3 переводятся в состояние приема информации.
Программирование.
В состоянии программирования устройства микропроцессор по шине данных (ШД — D 0… D 7) осуществляет запись начального адреса, числа циклов и других данных в соответствующие регистры, адрес которых задается кодом А3А2А1А0на шинах А0–А3 (табл. 3.11.3). Старший разряд А3 кода позволяет различать при А3 = 0 —регистры каналовК0…К3; при А3 = 1 —регистр установки режимов(работает только на запись) ирегистр состояния каналов(работает только на чтение). Младший разряд А0 выбирает регистры начального адреса (А0 = 0) и числа циклов (А0 = 1). Два средних разряда А2А1указывают номера регистров (или каналов) в двоичном коде. Например, код 0101 соответствует РЧЦ2 — регистру числа циклов канала 2. Регистры контроллера ПДП загружаются или из них считывается информация, если микропроцессор выполняет команду записи или чтения путем обращения к устройству и его регистрам. Для этого микропроцессору необходимо выдать соответствующие сигналы записи ?Зп или чтения ?Чт и на системные адресные шины ША выставить адрес регистра в виде кода А3А2А1А0. В это время на шину данных ШД подается необходимая информация D 7… D 0 для записи в регистры или через шину данных ШД читается информация из котроллера ПДП. Для установки состояния программирования необходимо также подать сигнал выборки устройства ?ВК = 0. В связи с тем, что регистры каналов являются 16–разрядными, для их загрузки или чтения требуется два программных командных цикла. Вформирователе адресаконтроллера имеется триггер, который автоматически переключает цепи во время операции чтения или записи. Этот триггер определяет доступ к старшему или младшему байтам регистра. Сбрасывается триггер подачей единичного сигнала на входСброса,а также всякий раз при загрузке регистра установки режима.
Для обеспечения соответствующей синхронизации при обращениях к регистрам канала все команды должны поступать от микропроцессора парами, не должно быть разрывов между ними.
Ожидание.
В состоянииожиданияконтроллер принимает от ВУ сигнал запроса на получение цикла ПДП (ЗПДП0–ЗПДП3) и вырабатывает для микропроцессора сигнал запроса захвата (ЗЗх). В этом состоянии системные шины находятся под управлением микропроцессора.
Обслуживание.
После поступления от микропроцессора сигнала подтверждения захвата (ПЗх) при наличии сигнала запроса (ЗПДП0 – ЗПДП3) от ВУ контроллер вырабатывает сигнал подтверждения запроса (?ППДП0 – ?ППДП3) для одного из ВУ и переходит всостояние обслуживания. Вэтом состоянии системные шины находятся под управлением контроллера, и реализуется один из запрограммированных режимов ПДП:
- младшие 8 разрядов адреса памяти поступают на шины А0–А3, А4–А7, старшие 8 разрядов — на шину данных ШД;
- формируются соответствующие сигналы управления ?ЧтП и ?ЗпП, ?Зп и ?Чт, которые позволяют ВУ получить из ячейки памяти или передать в ячейку памяти за один цикл байт данных.
В первом цикле работы устройство ПДП передает начальный адрес ячейки памяти. В последующих циклах адрес увеличивается, а число циклов уменьшается на единицу, до тех пор, пока содержимое регистра числа циклов (вернее его 14 разрядов) не станет равным нулю. После этого формируется сигналконца счетаКС и возможны следующие режимы работы:
- дальнейшее наращивание адреса прибавлением единицы после очередного цикла;
- блокировка канала ПДП (режим «КС–стоп»);
- повторение ранее выбранного массива адресов (режим автозагрузки).
В процессе выполнения циклов ПДП возможны три режима работы:
- режим чтения, обеспечивающий передачу данных из памяти во ВУ;
- режим записи, обеспечивающий передачу данных из ВУ в память;
- режим проверки. Вэтом режиме контроллер ПДП не генерирует сигналы ?ЧтП, ?ЗпП, ?Чт и ?Зп, что предотвращает обмен данными между памятью и ВУ. Однако в каждом цикле контроллер ПДП осуществляет управление системной шиной и подтверждает запросы ВУ. Внешние устройства могут использовать сигналы подтверждения для разрешения внутреннего доступа к каждому байту в массиве данных, чтобы выполнить некоторые операции проверки. Массив циклов проверки может следовать за массивом циклов чтения, чтобы разрешить ВУ проверить вновь поступившие данные.