Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Микропроцессоры и микроЭВМ. Периферийные устройства

.pdf
Скачиваний:
6
Добавлен:
12.11.2023
Размер:
2.66 Mб
Скачать

8. Прямой доступ в память

Прямой доступ к памяти (ПДП) —создание прямого тракта передач дан­ ных от внешних устройств к памяти или от памяти к внешним устройствам. В английской терминологии это 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.Программируемый интервальный таймер

Вустройствах и системах автоматики часто требуется формирование про­ граммно-управляемых временных задержек и реализация времязадающих

функций: генерирование сигналов изменяемой частоты; подсчет числа внешних событий; формирование сигналов, задержанных во времени, на программируе­ мое значение и т. п. Все эти операции можно реализовать программным путем, загружая МП рутинной работой по подсчету числа некоторых событий. Приме­

Соседние файлы в папке книги