книги / Микропроцессоры и микроЭВМ. Периферийные устройства
.pdf8. Прямой доступ в память
Прямой доступ к памяти (ПДП) —создание прямого тракта передач дан ных от внешних устройств к памяти или от памяти к внешним устройствам. В английской терминологии это DMA - Direct Memory Access. При обычном обмене передачи между ВУ и памятью требуют вначале принять данные от ис точника в процессор, а затем выдать их из процессора приемнику, т.е. реализу ются за два командных цикла. При ПДП данные не проходят через процессор,
ипередача байта производится за один цикл. ПДП особенно удобен при пере дачах блоков данных в высоком темпе, например при обмене данными между внешней памятью и ОЗУ. В режиме ПДП процессор отключается от системных шин и передает управление ими контроллеру прямого доступа к памяти (КПДП).
Для реализации ПДП разработаны специальные аппаратные средства, выпускаются БИС КПДП, способные благодаря программированию обслужи вать ПДП с учетом конкретных требований различных систем.
При осуществлении ПДП микропроцессор отключен, а контроллер выра батывает сигналы управления обменом для ВУ и ОЗУ. Тракт передачи данных связывает ВУ с ОЗУ непосредственно. Возможны два вида ПДП - с блочными или одиночными передачами. В первом работа процессора останавливается на все время передачи блока данных, во втором передачи слов в режиме ПДП пе ремежаются с выполнением программы, и для передач ПДП выделяются от дельные такты машинных циклов, в которых процессор не использует систем ные шины. Каждый командный цикл начинается с машинного цикла Ml - вы борки команды. В этом машинном цикле есть такт декодирования принятой процессором команды, в котором системные шины не используются. На это время системные шины можно отдать для ПДП и передать одно слово. Произ водительность системы может возрасти из-за параллелизма процессов обмена
иобработки данных, благодаря тому, что ПДП. будет для процессора «невиди мым». Сам обмен с ПДП будет небыстрым, теми обмена нерегулярен, т.к. дли тельности циклов различных команд различны, и, кроме того, ПДП может и за медлить выполнение программы, если цикл ПДП не уложится в интервал, соот ветствующий такту процессора.
При непрерывной передаче массива данных скорость обмена ограничива ется длительностью циклов ЗУ, быстродействием самого контроллера и скоро стью выдачи/приема данных внешним устройством.
Вотличие от процессов прерывания при ПДП обмен выполняется без участия программы, поэтому содержимое рабочих регистров МП не нарушает ся, и на вхождение в режим ПДП не требуется затрат времени (нет передачи
встек на хранение содержимого рабочих регистров МП). ПДП предоставляется
по завершении текущего машинного цикла.
Схема контроллера прямого доступа к памяти (КПДП) ИК57 (рис. 8.1) реализует функции аппаратно-управляемого (внепроцессорного) обмена дан ными между основной памятью и внешними устройствами (чаще всего с внеш ней памятью на магнитном носителе). Контроллер может управлять в режиме
ЦДЛ передачей информации побайтно, пословно и блоками данных. С этой це лью КПДП формирует и модифицирует адреса участвующих в передачах ячеек ОЗУ, задает размер блока данных, который подлежит передаче, ведет подсчет байтов, передаваемых в ОЗУ или из ОЗУ, и определяет момент завершения пе редачи. генерирует управляющие сигналы для МП, ОЗУ и внешней памяти, обеспечивая их согласованную работу в режиме ПДП. Как и все интерфейсные БИС, контроллер настраивается на тот или иной режим работы с использовани
ем УС.
Контроллер ПДП имеет четыре независимых канала ПДП, в состав каж дого из которых входят: 16-разрядный регистр адреса, 14-разрядный счетчик длины блока данных и 2-разрядный регистр режима канала. Каждый канал П Д П имеет один входной сигнал запроса прямого доступа ЗПДП и один вы ходной сигнал подтверждения прямого доступа ППДП. Буфер ШД обеспечива ет информационную связь КПДП с системной шиной. На этапе инициализации МП загружает через него в КПДП начальные адреса областей ОЗУ, размер бло ков данных и коды режимов, а в процессе работы может считывать содержимое любого регистра и счетчика, кроме регистра режима. Кроме перечисленных функций, через буфер IIЩ контроллер, получая из МП разрешение на управле ние системной шиной, выдает н ШД старший байт адреса А] 5 из регистра ад реса инициированного канала ПДП. При этом на одной из линий управления генерируется сигнал строба адреса (СТБА). По стробу выданный байт адреса загружается во внешний буферный регистр. Выходы этого регистра подсоеди няются к линиям. Аи-я шины адреса. Устройство управления КПДП и схема управления вводом/выводом в зависимости от комбинации управляющих сиг налов переводят КПДП в одно из двух возможных состояний: на этапе инициа лизации КПДП. а также при считывании содержимого регистров по инициативе МП контроллер является ведомым, а в режиме ПДП - ведущим. Ниже приво дится перечень имен управляющих и адресных сигналов и соответствующих им линий, а также описываются действия, выполняемые КПДП под их воздействи ем или при их генерации.
ЧТВ—чтение ввода/вывода. В зависимости от того, является КПДП ведо мым или ведущим, данная липия может быть входной или выходной. По сигна лу ЧТВ =0 ведомого КПДП на ШД передается содержимое внутреннего регист ра, адресуемого по линиям А3._о. Ведущий КПДП формирует в этой линии управляющий сигнал, который используется для передачи байта данных из внешней памяти на ШД.
ЗПВ— запись ввода/вывода. Сигнал на этой линии также может быть вход ным или выходным. У ведомого КПДП входной сигнал 0 на линии ЗПВ управ ляет загрузкой байта из ШД во внутренний регистр, адресуемый по лини ям А 3_о. Ведущий КПДП выходным сигналом ЗПВ записывает байт с ШД в буферный регистр выбранного внешнего устройства.
С2 - входная линия, на которую подаются сигналы второй фазы синхро низации системы.
D(7-0) <$
чтв |
*+ |
зпв |
|
С 2 |
— |
СВР |
— |
А (3-0) |
<£ |
"вк |
— |
А (7-4) |
< J |
ГТ
3XB
ПЗХВ
ЧТП -6
ЗИП ■о
РА
>»
СТБА
КБ
МАРК
JS |
л |
V |
|
V |
|
■N
V л-
ST
ЛJSJ
V VI
и.
Чг
J4
V
а
Схема управления приоритетами
Рис. 8.1. Схема контроллера ПДП
Канал О
Регистр
адреса
Регистр
режима
Счетчик
Канал 1
Регистр
адреса
Регистр
режима
Счетчик
Канал 2
Регистр
адреса
Регистр
режима
Счетчик
Канал 3
Регистр
адреса
Регистр
режима
Счетчик
ЗПДПо
ППДП0
о ------ ►
зпдгн
ППДЩ
От-----►
ЗПДП2
ппдп2
6 ------►
ЗПДП з
ППДПз
Q----—►
СБР - сигнал сброса, по которому сбрасывается в куль содержимое реги стра режима КПДП, что приводит к дезактивации контроллера: КПДП яе реа гирует на сигналы запроса ПДП до тех пор, пока не будет завершена программ ная инициализация.
Аз_о - младший полубайт адреса. Для ведомого КПДП эта шина является входной и используется для адресации одного из регистров контроллера при инициализации или считывании. Ведущий КПДП выдает в шину младший по лубайт адреса ОЗУ из регистра адреса работающего канала ПДП.
ВК - выбор кристалла. Сигнал на этот вход контроллера подается с одно го из выходов адресного дешифратора. Сигнал В К = 0 задает контроллеру со стояние ведомого и является разрешающим для входных сигналов ЧТВ и ЗПВ.
Когда КПДП является ведущим, то вход ВКблокируется с тем, чтобы при адресации ОЗУ контроллер не мог сам себя выбрать.
А7^4 - четыре выходные адресные линии, которые подсоединяются к со ответствующим линиям ША и на которые КПДП выдает второй полубайт адре са памяти.
IT - готовность - входной сигнал, обеспечивающий временное согласо вание контроллера с медленно действующей памятью. По сигналу ГТ = 0 уст ройство управления КПДП переходит в состояние ожидания S0* и обеспечивает асинхронный режим обмена с памятью (см. ниже).
ЗХВ - захват - выходной сигнал КПДП, который, поступая на вход ЗПДП микропроцессора, отключает его от системной шины после такта ТЗ текущего машинного цикла.
ПЗХВ - подтверждение захвата - входной сигнал с одноименного выхода МП, свидетельствующий о том, что КПДП становится ведущим, а режим пря мого доступа разрешен.
ЧТП—чтение памяти - выходной сигнал 0 используется для управления чтением из ОЗУ в режиме ПДП. Во всех остальных случаях на выходе линии ЧТП - высокоимпедансное состояние.
ЗГ7Пзапись в память - выходной сигнал 0 управляет записью в ОЗУ при передачах с прямым доезупом. Так же, как и линия ЧТП, она является трехста бильной.
РА - разрешение адреса - выходной сигнал, который применяется для перевода ША и ШД и некоторых линий ШУ других модулей системы в высо коимпедансное состояние. Липия сигнала РА заводится на входы разрешения выдачи РБ или выбора корпуса ВК шинных драйверов, через которые все мо дули системы (кроме ОЗУ) соединены с системной шиной.
СТБА - строб адреса - выходной сигнал, который сопровождает выдачу контроллером в ШД старшего байта адреса ОЗУ и используется для загрузки этого байта в МБР для последующей трансляции в ША.
КБ - конец блока - выходной сигнал, генерируемый контроллером в по следнем цикле ПДП текущего блока данных. Поскольку сигнал КБ формирует ся при переходе вычитающего счетчика байтов через нуль, то на этапе инициа лизации для задания длины блока байт в счетчик необходимо загрузить двоич ный код N - 1. Так как разрядность канальных счетчиков 14 бит, то максималь ный размер блока данных равен 16 Кбайт.
МАРК - маркер - выходной сигнал, генерируемый КПДП для сопровож дения каждого 128-го байта от начала передачи блока данных в режиме ПДП. В основе схемы генерации сигнала МАРК лежит 7-разрядный счетчик по mod 128. Как правило, размерность блока данных N кратна 128.
Схема управления приоритетами КПДП реализует заданный режим рас пределения приоритетов между четырьмя каналами ПДП. Программным путем на этане инициализации каналам присваиваются фиксированные приоритеты (Ко - высший, Кэ - низший), а кроме того, может быть задан режим цикличе ского приоритета, при котором после реализации передачи по некоторому ка налу Г1Д11 ему присваивается низший приоритет, а приоритеты остальных ка налов изменяются по замкнутому кругу: К0—►Ki—►К2—>Кз—►Ко- При эгом при
оритеты всех четырех внешних устройств, работающих через данный КПДП,
оказываются равными.
Программирование КПДП. С точки зрения программиста, КПДП представляет собой массив из 18 специализированных регистров с форматами, пока занными на рис. 8.2. Все регистры программно-доступны, но в регистр режима КПДП можно только записать, а из регистра состояния КПДП можно только считать байт данных.
15
Р ы и п р
ОРЛИМв 13
15
регистр I 13
режимы 1
15
Регистр режима 13
15
Регистр I реж име I
Р а зр я д ы |
|
2 1 |
I й |
Р е ги с тр а д р е с а |
0 |
С ч е гч и к бай» |
О |
Р е ги с тр а д р е с а |
О |
С ч е тч и к б а й т |
0 |
Р е ги с тр а д р е с а |
0 |
С ч е тч и к б а й ! |
О |
Р е ги с тр а д р е с а |
С |
С ч е тч и к б а й т |
0 |
Р е ги с тр р е ж и м е |
к п д г |
Р е ги с тр с о с то я н и я |
кп д г |
Р и с . 8.2. Массив регистров КПДП
Канальные регистры могут работать в режимах записи и считывания. Инициализация КПДП осуществляется загрузкой УС и исходных данных в ад ресуемые регистры по командам OUT или командам MOV в зависимости от способа организации адресной шины в МПС. При этом линии ША после де шифрирования формируют сигнал ВК контроллера, а линии АЗЧ1адресуют один из внутренних регистров КПДП.
Назначение линий А30шины адреса следующее: А3селектирует обраще ние к регис грам каналов (А3= 0) или к регистрам КПДП (А3= 1).
, а = n t ' ! “ i ! Pa' T ? л Т “3 четь‘Рех каналов ПДП, а А0 задает регистр адреса (Ао 0) или счетчик (Ао - 1) в выбранном канале.
команд OUT на этяп>,М”3 ' (*'Разрядных регистров канала осуществляется парой команд OUT на этапе загрузки и парой команд IN при считывании
Сцелью идентификации младшего и старшего байтов передаваемых слов
вКПДП имеется программно-недоступный триггер М/С, который устанавлива ется в исходное нулевое состояние или по сигналу СБР, или при загр узк е реги-
стра режима КГ1ДГ1, а затем при каждой очередной операции загрузки (соответ ственно при чтении) изменяет свое состояние на противоположное. Поэтому
команды обращения к регистрам каналов КПДП |
должны следовать парой, |
п первая из них оперирует с младшим, а вторая - |
со старшим байтами слова. |
Для правильного срабатывания триггера М/С в системе необходимо преду смотреть меры, исключающие появление на входе Вк контроллера сигнала 0 во время действия сигналов ЧТН или 3IIB.
На рис. 8.3 показаны форматы и назначение полей регистров режима и состояния КПДП. Регистр режима устанавливается в нулевое состояние по сигналу СБР, запрещая тем самым работу всех каналов ПДП. Затем произ водится загрузка регистров адреса и счетчиков всех каналов, и только после этого выполняется загрузка УС в регистр режима ПДП. Такая последовательность инициализации КПДП позволяет избежать искажений содержимого ОЗУ от запросов ПДП, возникающих в период инициализации.
Управляю щ ее сл ово реж има работы
|
|
|
Сл о в о состоян ия |
|
|
|
|
07 |
э е |
05 |
D4 |
03 |
02 |
D1 |
оо |
|
1 О |
|
ПМ |
1 |
КЬ2 |
Кб1 |
КБО |
О |
0 |
j КБЭ |
|||||
|
I |
|
I |
|
1 |
Г |
п |
|
|
|
|
призмах модификации
Конец блоха данным
Рис. 8.3. Формат УС режима и слова состояния КПДП
Младшие гюлбайта регистра режима КПДП используются для маскиро вания сигналов ЗПДП. Нели разряд разрешения канала РК; = 0, то КПДП удов летворяет запрос ПДП i-ro канала.
Разряд ЦП определяет порядок работы схемы управления приоритетами: при ЦП = 0 распределение приоритетов между каналами ПДП фиксировано, и при ЦП = 1реализуется режим циклической смены приоритетов.
Если в УС, загружаемом в регистр режима КПДП, разряд «длинной» за писи ДЗ = 1, то контроллер генерирует сигналы ЗПВ и ЗПП с удвоенной дли тельностью, что во многих применениях позволяет обеспечить временное со-
гласование с памятью без использования сигнала готовности ГТ и перевода КПДГТ в состояние ожидания.
Сигнал 1 в разряде запрета по концу блока (3КБ) позволяет каждому ка налу ПДП осуществить передачу только одного блока данных, т.к. по сигналу КБ сбрасывается в нуль разряд разрешения работы РК соответствующего кана ла. Эту маску можно снять только путем загрузки нового УС в регистр режима КПДП. При ЗКБ=0 реализуются многоблочные передачи данных по каналам ПДП.
В некоторых применениях МПС необходимо обеспечить повторную пере дачу блока данных или передачу двух «связанных» блоков данных. С целью исключения необходимости программной перенастройки КПДП между переда чами блоков вводится специальный режим автозагрузки, который инициирует
с б р |
ся старшим битом А3 регистра режима |
|
|
|
КПДП. |
|
Повторная передача блока данных воз |
|
можна только через канал 2. Если А3=1, то |
|
при загрузке исходных значений регистра |
|
адреса и счетчика канала 2 они автоматиче |
|
ски переписываются в соответствующие ре |
|
гистры канала 3. После окончания передачи |
|
первого блока данных через канал 2 и гене |
|
рации сигнала КБ исходные параметры бло |
|
ка данных из регистров канала 3 в цикле мо |
|
дификации переписываются в регистры ка |
|
нала 2, инициируя таким образом повторную |
|
передачу блока данных. В регистре состоя |
|
ния КПДП в младших разрядах КБ3_о фик |
|
сируют сигналы окончания передачи блока |
|
данных в соответствующих каналах. Содер |
|
жимое разрядов КБ3_о автоматически об- |
Рис. 8.4. Схема алгоритма |
нуляется при считывании микропроцессором |
работы устройства управления |
содержимого регистра состояния. |
КПДП |
Признак модификации ПМ приобретает |
|
значение 1 в режиме автозагрузки (А3= 1) на |
период передачи параметров из регистров канала 3 в соответствующие регист ры канала 2, т.е. после окончания передачи первого блока данных. По оконча нии модификации регистров канала 2 признак модификации ПМ регистра со стояния обнуляется. Пока ПМ = 1, инициализация КПДП на передачу новых блоков данных должна быть запрещена. При считывании регистра состояния признак ПМ сохраняет свое значение. Сброс ПМ осуществляется загрузкой но вого УС режима КПДП, в котором разряд автозагрузки А3= 0.
Работа контроллера ПДП. Контроллер ПДП после инициализации мо жет работать в трех режимах: считывание (передача из ОЗУ во внешнее уст ройство), запись (передача из внешнего устройства в ОЗУ) и проверка канала П Д П (считывание содержимого канальных регистров для анализа). Управление
контроллером в этих режимах работы осуществляется устройством управления КПДП, основу которого составляет первичный управляющий автомат.
Автомат управления КПДП может находиться в одном из семи возмож ных состояний (рис. 8.4). В исходное состояние автомат переходит под воздей ствием сигнала системного сброса (СВР), т.к. по сигналу СВР обнуляется со держимое регистров режима и состояния КПДП, контроллер блокирует кана лы прямого доступа. В этом состоянии осуществляется инициализация КПДП. Последним управляющим словом загружается регистр режима КПДП, разрешая работу незамаскированных каналов ПДП.
При возникновении сигнала ЗПДП разрешенного канала контроллер транслирует этот сигнал на выход ЗХВ и его автомат управления переходит в состояние S0, в котором и будет находиться до момента получения из МП сигнала подтверждения режима ПЗХВ. При этом устройство управления про должает выполнять анализ сигналов ЗПДП с взвешиванием их приоритетов и при получении сигнала ПЗХВ отдаст системную шину каналу прямого досту па с наивысшим приоритетом. Автомат управления переходит в состояние Sb и КПДП транслирует полученный сигнал ПЗХВ на выход, ППДП внешнего ус тройства, имеющего высший приоритет.
При побайтной передаче данных сигнал ЗПДП должен удерживаться внешним устройством в состоянии 1 до получения подтверждающего сигнала, ППДП, а при передаче блоков данных - до момента окончания передачи блока.
Управляющий автомат КПДП отрабатывает цикл передачи байта по кана лу прямого доступа за четыре внутренних состояния S1-4, выгружая адрес ОЗУ, модифицируя счетчик байт и формируя управляющие сигналы ЗАПИСЬ/ ЧТЕ НИЕ.
Если КПДП управляет записью в ОЗУ из внешнего устройства, то он фор мирует сигнал ЧТВ в состоянии S2, а сигнал ЗПП - в состоянии S3. Если КПДП управляет передачей данных из ОЗУ во внешнее устройство, то в состоянии S2 он генерирует сигнал ЧТП, а в состоянии S3сигнал ЗПВ. Сигналы «длинной» записи ЗПВ и ЗПП формируются в состоянии S2.
В том случае, если быстродействие ОЗУ или внешнего устройства недос таточно для обмена с частотой, определяемой сигналами С2 системной синхро низации, то, используя механизм асинхронной передачи (ГОТОВНОСТЬ - ОЖИДАНИЕ), управляющий автомат КПДП может из состояния S3 перейти в состояние Ъож, выход из которого осуществляется по сигналу готовности ГТ. При передаче блоков данных по каналу ПДП автомат из состояния S4 перехо дит в состояние Sj и реализует цикл ПДП сначала. При побайтной передаче или по сигналу конца блока КБ = 1 внешнее устройство снимает сигнал ЗПДП, контроллер формирует сигнал ЗХВ = 0, режим ПДП заканчивается переходом управляющего автомата в состояние SHCx> в котором и будет находиться до по ступления очередного сигнала ЗПДП.
В заключение следует отметить, что режим прямого доступа к памяти це лесообразно использовать в МПС, в состав которых входят устройства внешней памяти, дисплей и т.п., обмен информацией с которыми осуществляется боль-
шими блоками (128-2048 байт за сеанс связи). Так, например, в устройствах памяти на гибких магнитных дисках с одинарной плотностью записи скорость передачи после локализации данных составляет 31,25 Кбод (интервал между байтами равен 32 мкс), а при записи с двойной плотностью - 62,5 Кбод (интер вал равен 16 мкс). При таких параметрах внешнего устройства обмен с ним следует организовать в режиме ПДП, т.к. производительности МП ИК80 не хватит для организации передач блоков данных в режиме прерывания. В са мом деле, если МП в режиме прерывания реализует передачу байта или двух байтного слова, то подпрограмма обслуживания прерывания по вводу/выводу имеет длительность около 50 мкс, т.е. больше, чем интервал времени между байтами при обмене с памятью на ГМД. В то же время, если в МПС внешние устройства медленно действующие (скорость передачи не превышает 250 бод), то на операции ввода/вывода по прерываниям затрачивается не более 1% вре мени МП последовательно, в таких системах использование КПДП нецелесооб разно.
Инициализация КПДПИК57
Пример. Запрограммировать режим работы со следующими параметрами:
-обмен блоком данных размером 16 байт;
-передача по каналу 2 с последующим отключением;
-фиксированный тип приоритетов;
-генерация сигналов по обычной схеме;
-автозагрузки нет;
-начальный адрес зоны ОЗУ - 0900Н;
-режим работы канала - «запись в ОЗУ»;
-примем адрес РА канала 0 = 50Н;
1.Составим слово инициализации РА канала 2:
- младший байт: |
|
|
|
|
|
||
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
старший байт: |
|
|
|
|
|
|
|
D15 |
D14 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 |
0 |
0 |
0 |
0 |
1 |
|
0 |
1 |
1 °
2.Составим слово инициализации регистра счета канала 2: - младший байт:
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
старший байт: |
|
|
|
|
|
|
|
D15 |
D14 |
D13 |
D12 |
D11 |
D10 |
D9 |
D8 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
_____
Составим управляющее слово регистра режима Kai
УСРР:
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
DO |
|
0 |
1 |
0 |
0 |
|
0 |
1 |
0 |
0 |
|
|
|
|
|
|
1 |
|
|
4. Напишем программу инициализации: |
|
|
||||||
|
LOAD: |
DI |
|
|
; запретить прерывание |
|||
|
|
MVI А, ООН; занести МБ нач. адреса в регистр А |
||||||
|
|
OUT 54Н |
|
; МБ из per. А в РА КПДП |
||||
|
|
MVI А, 09Н; занести СБ нач. адреса в регистр А |
||||||
|
|
OUT 54Н |
|
; СБ из per. А в РА КПДП |
||||
|
|
MVI A, 0FH ; МБ числа (N - |
1) в регистр счета |
|||||
|
|
OUT 55Н |
|
; МБ из per. А в РСч. КПДП |
||||
|
|
MVI А, 40Н ; СБ числа (N - |
1) в регистр А |
|||||
|
|
OUT 55Н |
; СБ из per. А в РСч. КПДП |
|||||
|
|
MVI А, 44Н; |
УСРР в регистр Л |
|||||
|
|
OUT 58Н |
|
; УСРР из per. А в РР КПДП |
||||
|
|
EI |
|
|
; разрешить прерывание |
9.Программируемый интервальный таймер
Вустройствах и системах автоматики часто требуется формирование про граммно-управляемых временных задержек и реализация времязадающих
функций: генерирование сигналов изменяемой частоты; подсчет числа внешних событий; формирование сигналов, задержанных во времени, на программируе мое значение и т. п. Все эти операции можно реализовать программным путем, загружая МП рутинной работой по подсчету числа некоторых событий. Приме