Федеральное Агентство образования Российской Федерации
Пензенский государственный университет
Кафедра "Информационная безопасность систем и технологий"
РЕФЕРАТ
по теме:
«Контроллер прямого доступа к памяти»
Выполнил: Качайкин Е.И.
Руководитель работы:
Иванов А.П.
Пенза 2006
Содержание
Организация прямого доступа к памяти
Контроллер прямого доступа к памяти КР580ИК57 (КР580ВТ57)
Последовательность программирования контроллера
Пример программирования
Организация прямого доступа к памяти
Одним из способов обмена данными с ВУ является обмен в режиме прямого доступа к памяти (ПДП). В этом режиме обмен данными между ВУ и основной памятью микроЭВМ происходит без участия процессора. Обменом в режиме ПДП управляет не программа, выполняемая процессором, а электронные схемы, внешние по отношению к процессору. Обычно схемы, управляющие обменом в режиме ПДП, размещаются в специальном контроллере, который называется контроллером прямого доступа к памяти.
Обмен данными в режиме ПДП позволяет использовать в микроЭВМ быстродействующие внешние запоминающие устройства, такие, например, как накопители на жестких магнитных дисках, поскольку ПДП может обеспечить время обмена одним байтом данных между памятью и ВЗУ, равное циклу обращения к памяти.
Для реализации режима прямого доступа к памяти необходимо обеспечить непосредственную связь контроллера ПДП и памяти микроЭВМ. Для этой цели можно было бы использовать специально выделенные шины адреса и данных, связывающие контроллер ПДП с основной памятью. Но такое решение нельзя признать оптимальным, так как это приведет к значительному усложнению микроЭВМ в целом, особенно при подключении нескольких ВЗУ. В целях сокращения количества линий в шинах микроЭВМ контроллер ПДП подключается к памяти посредством шин адреса и данных системного интерфейса. При этом возникает проблема совместного использования шин системного интерфейса процессором и контроллером ПДП. Можно выделить два основных способа ее решения: реализация обмена в режиме ПДП с "захватом цикла" и в режиме ПДП с блокировкой процессора.
Существуют две разновидности прямого доступа к памяти с "захватом цикла". Наиболее простой способ организации ПДП состоит в том, что для обмена используются те машинные циклы процессора, в которых он не обменивается данными с памятью. В такие циклы контроллер ПДП может обмениваться данными с памятью, не мешая работе процессора. Однако возникает необходимость выделения таких циклов, чтобы не произошло временного перекрытия обмена ПДП с операциями обмена, инициируемыми процессором. В некоторых процессорах формируется специальный управляющий сигнал, указывающий циклы, в которых процессор не обращается к системному интерфейсу. При использовании других процессоров для выделения таких циклов необходимо применение в контроллерах ПДП специальных селектирующих схем, что усложняет их конструкцию. Применение рассмотренного способа организации ПДП не снижает производительности микроЭВМ, но при этом обмен в режиме ПДП возможен только в случайные моменты времени одиночными байтами или словами.
Более распространенным является ПДП с "захватом цикла" и принудительным отключением процессора от шин системного интерфейса. Для реализации такого режима ПДП системный интерфейс микроЭВМ дополняется двумя линиями для передачи управляющих сигналов "Требование прямого доступа к памяти" (ТПДП) и "Предоставление прямого доступа к памяти" (ППДП).
Управляющий сигнал ТПДП формируется контроллером прямого доступа к памяти. Процессор, получив этот сигнал, приостанавливает выполнение очередной команды, не дожидаясь ее завершения, выдает на системный интерфейс управляющий сигнал ППДП и отключается от шин системного интерфейса. С этого момента все шины системного интерфейса управляются контроллером ПДП. Контроллер ПДП, используя шины системного интерфейса, осуществляет обмен одним байтом или словом данных с памятью микроЭВМ и затем, сняв сигнал ТПДП, возвращает управление системным интерфейсом процессору. Как только контроллер ПДП будет готов к обмену следующим байтом, он вновь "захватывает" цикл процессора и т.д. В промежутках между сигналами ТПДП процессор продолжает выполнять команды программы. Тем самым выполнение программы замедляется, но в меньшей степени, чем при обмене в режиме прерываний.
Применение в микроЭВМ обмена данными с ВУ в режиме ПДП всегда требует предварительной подготовки, а именно: для каждого ВУ необходимо выделить область памяти, используемую при обмене, и указать ее размер, т.е. количество записываемых в память или читаемых из памяти байт (слов) информации. Следовательно, контроллер ПДП должен обязательно иметь в своем составе регистр адреса и счетчик байт (слов). Перед началом обмена с ВУ в режиме ПДП процессор должен выполнить программу загрузки. Эта программа обеспечивает запись в указанные регистры контроллера ПДП начального адреса выделенной ВУ памяти и ее размера в байтах или словах в зависимости от того, какими порциями информации ведется обмен. Сказанное не относится к начальной загрузке программ в память в режиме ПДП. В этом случае содержимое регистра адреса и счетчика байт слов устанавливается переключателями или перемычками непосредственно на плате контроллера.
Блок-схема простого контроллера ПДП, обеспечивающего ввод данных в память микроЭВМ по инициативе ВУ в режиме ПДП "Захват цикла", приведена на рис. 1.
Рис. 1. Контроллер ПДП для ввода данных из ВУ в режиме "Захват цикла" и отключением процессора от шин системного интерфейса
Перед началом очередного сеанса ввода данных из ВУ процессор загружает в регистры его контроллера следующую информацию: в счетчик байт - количество принимаемых байт данных, а в регистр адреса - начальный адрес области памяти для вводимых данных. Тем самым контроллер подготавливается к выполнению операции ввода данных из ВУ в память микроЭВМ в режиме ПДП.
Байты данных из ВУ поступают в регистр данных контроллера в постоянном темпе. При этом каждый байт сопровождается управляющим сигналом из ВУ "Ввод данных", который обеспечивает запись байта данных в регистр данных контроллера. По этому же сигналу и при ненулевом состоянии счетчика байт контроллер формирует сигнал ТПДП. По ответному сигналу процессора ППДП контроллер выставляет на шины адреса и данных системного интерфейса содержимое своих регистров адреса и данных соответственно. Формируя управляющий сигнал "Вывод", контроллер ПДП обеспечивает запись байта данных из своего регистра данных в память микроЭВМ. Сигнал ППДП используется в контроллере и для модификации счетчика байт и регистра адреса. По каждому сигналу ППДП из содержимого счетчика байт вычитается единица, и как только содержимое счетчика станет равно нулю, контроллер прекратит формирование сигналов "Требование прямого доступа к памяти".
На примере простого контроллера ПДП мы рассмотрели только процесс подготовки контроллера и непосредственно передачу данных в режиме ПДП. На практике любой сеанс обмена данными с ВУ в режиме ПДП всегда инициируется программой, выполняемой процессором, и включает два следующих этапа.
1. На этапе подготовки ВУ к очередному сеансу обмена процессор в режиме программно-управляемого обмена опрашивает состояние ВУ (проверяет его готовность к обмену) и посылает в ВУ команды, обеспечивающие подготовку ВУ к обмену. Такая подготовка может сводиться, например, к перемещению головок на требуемую дорожку в накопителе на жестком диске. Затем выполняется загрузка регистров контроллера ПДП. На этом подготовка к обмену в режиме ПДП завершается и процессор переключается на выполнение другой программы.
2. Обмен данными в режиме ПДП начинается после завершения подготовительных операций в ВУ по инициативе либо ВУ, как это было рассмотрено выше, либо процессора. В этом случае контроллер ПДП необходимо дополнить регистром состояния и управления, содержимое которого будет определять режим работы контроллера ПДП. Один из разрядов этого регистра будет инициировать обмен данными с ВУ. Загрузка информации в регистр состояния и управления контроллера ПДП производится программным путем.
Наиболее распространенным является обмен в режиме прямого доступ к памяти с блокировкой процессора. Он отличается от ПДП с "захватом цикла" тем, что управление системным интерфейсом передается контроллеру ПДП не на время обмена одним байтом, а на время обмена блоком данных. Такой режим ПДП используется в тех случаях, когда время обмена одним байтом с ВУ сопоставимо с циклом системной шины.
В микроЭВМ можно использовать несколько ВУ, работающих в режиме ПДП. Предоставление таким ВУ шин системного интерфейса для обмена данными производится на приоритетной основе. Приоритеты ВУ реализуются так же, как и при обмене, данными в режиме прерывания, но вместо управляющих сигналов "Требование прерывания" и "Предоставление прерывания" используются сигналы "Требование прямого доступа" и "Предоставление прямого доступа", соответственно.
Контроллер прямого доступа к памяти КР580ИК57 (КР580ВТ57)
Обменом данными в компьютере при классическом его построении заведует процессор. Однако такую задачу, как обмен данными с периферийными устройствами (т. е. при осуществлении связи с внешним миром), стараются по возможности выполнить при помощи специализированных устройств обмена информацией. Это позволяет, с одной стороны, освободить процессор (а заодно и программиста) от выполнения данной задачи, с другой - произвести требуемый обмен данными с большей скоростью, чем это мог бы сделать процессор. Ведь периферийные устройства способны работать со скоростью, сравнимой с быстродействием процессора. К таким устройствам относятся, к примеру, контроллер дисплея или накопители на гибком или жестком магнитных дисках. Все они требуют наличия в системе так называемого контроллера прямого доступа к памяти, позволяющего заменить процессор и организовать более быстрый и прямой обмен данными между памятью и заданным периферийным устройством.
В серии К580 выпускался контроллер алфавитно-цифрового дисплея КР580ИК57. Микросхема представляет собой БИС четырехканального программируемого контроллера прямого доступа к памяти (ПДП). Каждый из четырех каналов адресует область внешней памяти путем инкрементирования выбранного адреса. ПДП имеет приоритетную логику, реализующую запросы от четырех периферийных устройств и производит счет циклов прямого доступа к памяти каждого канала.
Использование БИС ПДП позволяет существенно сократить аппаратные затраты при реализации прямого доступа к памяти.
На рис. 2 приведена структурная схема КР580ИК57, в табл. 1 - назначение выводов.
Рис. 2. Структура микросхемы КР580ИК57
Таблица 1. Назначение выводов
Номер
вывода
|
Обозначение
|
Тип
|
Описание
|
1
|
Чт В/В(I/O R
|
Вход/выход
|
Вход/выход Чтение ввода-вывода. Сигнал Чт В/В разрешает (во входном режиме) чтение 8-разрядного регистра состояния или записанных в ЗУ ПДП начального адреса и числа циклов ПД любого из каналов, в выходном режиме сигнал Чт В/В разрешает выдачу информации из внешнего устройства ввода-вывода
|
2
|
Зп В/В
(I/O W)
|
Вход/выход
|
Запись ввода-вывода. Сигнал Зп В/В разрешает (во входном режиме) загрузку регистров установки режимов, начального адреса значения количества циклов для любого канала ПДП. В выходном режиме сигнал Зп В/В разрешает запись информации во внешнее устройство ввода-вывода
|
3
|
Чт П
(MEMR)
|
Выход
|
Чтение памяти. Выходной сигнал ЧтП предназначен для внешнего ЗУ
|
4
|
Зп П
(MEMW)
|
Выход
|
Запись в память. Выходной сигнал ЗпП предназначен для внешнего ЗУ
|
5
|
М128
(MARK)
|
Выход
|
Модуль 128. Выходной сигнал М128 появляется в каждом 128-м цикле от конца массива, а также во время действия сигнала КС
|
6
|
Гт
(Ready)
|
Вход
|
Готовность. Входной сигнал Гт предназначен для обеспечения совместной работы ПДП и медленных внешних устройств. Сигнал может поступать асинхронно. Он отражает готовность внешнего устройства к ведению обмена
|
7
|
ПЗхв
(HLDA)
|
Вход
|
Подтверждение захвата. Входной сигнал ПЗхв является ответом МП на сигнал ЗЗхв. При появлении ПЗхв системные шины (линии) свободны
|
8
|
СтрА
(ADSTB)
|
Выход
|
Строб адреса. Выходной сигнал СтрА указывает, что на шине данных выдан старший байт адреса внешнего ЗУ
|
9
|
РА
(AEN)
|
Выход
|
Разрешение адреса. Выходной сигнал РА используется для блокировки адресных шин в невыбранных устройствах
|
10
|
ЗЗхв
(HRQ)
|
Выход
|
Запрос захвата. Выходной сигнал ЗЗхв запрашивает у МП разрешение на управление системными шинами (линиями)
|
11
|
ВМ
(CS)
|
Вход
|
Выбор микросхемы. Входной сигнал ВМ позволяет активизировать данную БИС
|
12
|
ТИ
(CLK)
|
Вход
|
Тактовый импульс. Входной сигнал ТИ обеспечивает функционирование микросхемы. Обычно этим сигналом является сигнал Ф2 микропроцессора КР580ИК80А
|
13
|
Уст
(RESET)
|
Вход
|
Установка. Входной сигнал Уст предназначен для установки схемы в исходное состояние
|
14
|
ППД2
(DACK2)
|
Выход
|
Подтверждение прямого доступа. Выходные сигналы подтверждения прямого доступа ППД2, ППД3 являются ответными по отношению к ЗПД2, ЗПД3. Они вырабатываются микросхемой в соответствии с приоритетами внешних устройств
|
15
|
ППД3
(DACK3)
|
Выход
|
|
16
|
ЗПД3
(DRQ3)
|
Вход
|
Запрос прямого доступа. Входные сигналы ЗПД0...ЗПД3 поступают асинхронно из внешних устройств и воспринимаются микросхемой как запросы на обмен с ЗУ
|
17
|
ЗПД2 (DRQ2)
|
Вход
|
|
18
|
ЗПД1 (DRQ1)
|
Вход
|
|
19
|
ЗПД0 (DRQ0)
|
Вход
|
|
20
|
Общий (GND)
|
|
|
21
|
D7
|
Вход/выход
|
Шина данных
|
22
|
D6
|
|
|
23
|
D5
|
|
|
24
|
ППД1
(DACK1)
|
Выход
|
Подтверждение прямого доступа. Выходные сигналы подтверждения прямого доступа ППД0, ППД1 являются ответными по отношению к ЗПД0, ЗПД1. Они вырабатываются микросхемой в соответствии с приоритетами внешних устройств
|
25
|
ППД0 (DACK0)
|
Выход
|
|
26
|
D4
|
Вход/выход
|
Шина данных
|
27
|
D3
|
|
|
28
|
D2
|
|
|
29
|
D1
|
|
|
30
|
D0
|
|
|
31
|
Пит (+U)
|
|
БИС ПДП имеет один номинал напряжения питания +5 В
|
32
|
A0
|
Вход/выход
|
Шина адреса
|
33
|
A1
|
|
|
34
|
A2
|
|
|
35
|
A3
|
|
|
36
|
КС
(TC)
|
Выход
|
Конец счета. Выходной сигнал КС вырабатывается при установке в нуль 14-разрядного регистра количества циклов и указывает периферийным устройствам, что данный цикл ПД последний
|
37
|
A4
|
Выход
|
Шина адреса
|
38
|
A5
|
|
|
39
|
A6
|
|
|
40
|
A7
|
|
|
Схема приема запросов СПЗ предназначена для приема и привязки несинхронных сигналов запросов на организацию прямого доступа к памяти от четырех устройств, а также выдачи ответных сигналов подтверждения. Каждый из четырех каналов связан с БИС ПДП отдельными линиями запросов и подтверждения прямого доступа. Выдача ответного сигнала подтверждения для соответствующего канала происходит в зависимости от его приоритета.
Внутреннее запоминающее устройство микросхемы ВЗУ предназначено для хранения начального адреса и числа циклов ПД для каждого канала в 16-разрядных регистрах адреса РгА и циклов РгЦ соответственно. РгА загружается адресом первой ячейки памяти, к которой должно быть обращение. Младшие 14 разрядов РгЦ указывают число циклов ПД (минус один) до конца счета (до появления сигнала КС}. Разряды 14-й и 15-й РгЦ указывают на вид обмена данными при ПД (табл. 2).
В блоке ВЗУ происходит формирование массива адресов инкрементированием текущего адреса. Младший байт адреса А7...А0 помещается в буфер адреса БА, старший байт (А15...А8} - на буфер данных БД. Старший байт адреса должен быть защелкнут во внешнем регистре по сигналу СтрА.
Буфер данных БД представляет собой 8-разрядное устройство, обеспечивающее двунаправленный обмен информацией между БИС и системной шиной данных. Информация, поступающая на БД с системной шины данных, передается в регистр установки режимов либо в ЗУ. С внутренней шины данных на ШД, поступает информация о регистрах адреса, количества циклов, состояния БИС. В течение циклов ПД выдаются старшие восемь разрядов адреса памяти.
Буфер адреса БА предназначен для приема и выдачи адреса памяти либо одного из внутренних регистров схемы. БА разделен на две части. Адресные линии А0...А3 в состоянии программирования указывают номер регистра, инициализированного для обмена. При обслуживании циклов ПД эти линии являются входными и по ним передаются четыре младших разряда адреса памяти.
Адресные линии А4...А7 - всегда выходные. Информация на них соответствует разрядам генерируемого адреса памяти.
Последовательностью операций в течение циклов ПД управляет устройство управления УУ.
Схема выработки сигналов Запись-Чтение СВС осуществляет прием, формирование и выдачу сигналов, обеспечивающих обмен информации между процессором и микросхемой - с одной стороны, и памятью и периферийными устройствами - с другой.
Регистр установки режимов РгР хранит информацию о режимах работы БИС, к которым относятся "Автозагрузка", "Конец счета-стоп", "Удлиненная запись", "Обычная запись", "Циклический сдвиг приоритета" и "Фиксированный приоритет".
РгР обычно загружается после установки РгА и РгЦ и сбрасывается подачей сигнала Уст.
Разряды 0...3 РгР разрешают работу соответствующего канала. Разряды 4...7 обеспечивают соответствующий режим работы БИС. Так, при записи "1" в разряд 4 РгР приоритет каждого канала изменяется.
Обслуженный канал будет иметь самый низкий приоритет. Порядок обслуживания каналов установливается в соответствии с их номерами 0>>1>2>3>0. Если разряд 4 РгР установлен в "0", то каждый канал будет иметь фиксированный приоритет. Так, канал 0 имеет наивысший приоритет, а канал 3 - самый низкий. При записи "1" в разряд 5 РгР устанавливается режим "Удлиненная запись". В этом режиме продолжительность сигналов ЗпП и Зп В/В увеличивается при отсутствии сигнала готовности внешнего устройства. При этом БИС входит в состояние ожидания.
При записи "1" в разряд 6 РгР устанавливается режим "Конец счета - стоп". В этом случае после появления сигнала КС обслуженный канал окажется запрещенным. Если необходимо продолжить обслуживание данного канала, перепрограммируют его разряд разрешения. При "0" в разряде РгР появление сигнала КС не запрещает повторное обслуживание канала.
При "1" в разряде 7 РгР устанавливается режим "Автозагрузка", позволяющий каналу 2 повторно пропустить массив данных или связать ряд массивов без программного вмешательства.
Регистры канала 3 хранят информацию для переустановки регистров канала 2. После передачи первого массива и появления сигнала К.С содержимое регистров канала 3 передается в соответствующие регистры канала 2. Каждый раз, когда в регистрах канала 2 происходит "подмена" данных информацией регистров канала 3, устанавливается разряд "Флаг обновления данных" в регистре состояния каналов.
Регистр состояния каналов РгС указывает номер канала, который достиг конца счета. Кроме того, в РгС входит разряд "Флаг обновления данных", описанный выше.
В процессе функционирования в составе микропроцессорной системы микросхема может находиться в одном из следующих состояний: исходном, программирования, ожидания, обслуживания.
В исходное состояние микросхему переводит внешний сигнал Уст. В этом состоянии маскируются все запросы каналов ПД, а буферы А0...А3 переводятся в состояние приема информации. В состоянии программирования МП имеет доступ к внутренним регистрам выбранного канала в соответствии с табл. 2 и 3.
В состоянии ожидания микросхема находится либо от момента окончания программирования до выдачи сигнала ППД, либо в промежутках между циклами ПД.
После получения от МП сигнала ПЗхв при наличии сигнала запроса микросхема вырабатывает сигнал ППД и переходит в состояние обслуживания, в котором системные шины находятся под управлением БИС ПДП.
Таблица 2. Адресация регистров
A3 A2 A1 A0 Операция Регистр
0 0 0 0 Зп Канал 0, начальный адрес
0 0 0 1 Зп Канал 0, количество циклов
0 0 1 0 Зп Канал 1, начальный адрес
0 0 1 1 Зп Канал 1, количество циклов
0 1 0 0 Чт Канал 2, начальный адрес
0 1 0 1 Зп Канал 2, количество циклов
0 1 1 0 Чт Канал 3, начальный адрес
0 1 1 1 Зп Канал 3, количество циклов
1 0 0 0 Чт Чтение РгС
1 0 0 0 Зп Запись в РгР
Последовательность программирования контроллера
Для начала следует запрограммировать РгА и РгЦ выбранного канала (или выбранных каналов).
Таблица 3. Последовательность записи регистров адреса и циклов
A3
|
A2
|
A1
|
A0
|
Операция
|
Регистр
|
0
|
Номер канала
|
0
|
Зп
|
Запись младшего байта начального адреса (A0...A7)
|
0
|
|
0
|
Зп
|
Запись старшего байта начального адреса (A8...A15)
|
0
|
|
1
|
Зп
|
Запись младшего байта количества циклов (C0...C7)
|
0
|
|
1
|
Зп
|
Запись старших шести бит количества циклов (C8...C13) плюс два бита вида обмена данными (C14, C15)
|
Запись в каждый регистр проводится в два этапа - младший, затем старший байт адреса.
Таблица 4. Вид обмена данными
C14 C15 Вид обмена
0 0 Цикл проверки ПД
0 1 Цикл записи ПД
1 0 Цикл чтения ПД
1 1 Запрещенная комбинация
Разрешить работу контроллера ПДП теперь можно, установив в РгР соответствующий бит разрешения каналов вместе с атрибутами режима работы контроллера.
Таблица 5. Формат регистра режимов
Ст. б.
|
|
Мл.б.
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
Установка автозагрузки
|
Установка КС-Стоп
|
Установка удлиненной записи
|
Установка циклического сдвига приоритета
|
Разрешение ПД
|
|
|
|
|
Для канала 3
|
Для канала 2
|
Для канала 1
|
Для канала 0
|
В процессе работы можно контролировать выполнение процесса прямого доступа к памяти посредством периодического чтения РгС.
Таблица 6. Формат регистра статуса
Ст.б.
|
|
Мл.б.
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
0
|
0
|
0
|
Флаг обновления данных
|
КС-стоп
|
|
|
|
|
Для канала 3
|
Для канала 2
|
Для канала 1
|
Для канала 0
|
Пример программирования
В одноплатном компьютере "Радио-86РК", описанном в журнале "Радио", контроллер ПДП используется для передачи кодов отображаемых символов из экранной области памяти в контроллер дисплея. Данная задача требует программирования контроллера ПДП с автозагрузкой (табл. 7).
Таблица 7. Пример программирования контроллера ПДП
A3
|
A2
|
A1
|
A0
|
Операция
|
Данные
|
Комментарий
|
1
|
0
|
0
|
0
|
Зп
|
10000000 (80H)
|
В РгР установили флаг автозагрузки, чтобы начальный адрес записался в регистр адреса третьего канала
|
0
|
1
|
0
|
0
|
Зп
|
11010000 (D0H)
|
Младший байт адреса
|
0
|
1
|
0
|
0
|
Зп
|
01110110 (76H)
|
Старший байт адреса
|
0
|
1
|
0
|
1
|
Зп
|
00100011 (23H)
|
Младший байт количества циклов
|
0
|
1
|
0
|
1
|
Зп
|
01001001 (49H)
|
Старший байт количества циклов (09H) и вид обмена - чтение
|
1
|
0
|
0
|
0
|
Зп
|
10100100 (A4H)
|
В РгР установили флаги: автозагрузка, удлиненная запись, разрешение работы канала 2
|
Все. Теперь контроллер ПДП циклически пересылает область памяти 76D0H-7FF3H в контроллер дисплея, приостанавливая на это время работу процессора.
Отметим, что в таком варианте использования контроллера ПДП не требуется проводить операций чтения. Это использовали разработчики компьютера "Радио-86РК", совместив в адресном пространстве контроллер ПДП (только запись) и ПЗУ (только чтение).
1
http://www.computer-museum.ru
2 http://dfe3300.karelia.ru
|