Контроллер прямого доступа к памяти КР580ИК57 (КР580ВТ57)
(Отечественный аналог Intel i8257)
Вадим Кудрявцев
Обменом данными в компьютере при классическом его построении заведует процессор. Однако такую задачу, как обмен данными с периферийными устройствами (т. е. при осуществлении связи с внешним миром), стараются по возможности выполнить при помощи специализированных устройств обмена информацией. Это позволяет, с одной стороны, освободить процессор (а заодно и программиста) от выполнения данной задачи, с другой - произвести требуемый обмен данными с большей скоростью, чем это мог бы сделать процессор. Ведь периферийные устройства способны работать со скоростью, сравнимой с быстродействием процессора. К таким устройствам относятся, к примеру, контроллер дисплея или накопители на гибком или жестком магнитных дисках. Все они требуют наличия в системе так называемого контроллера прямого доступа к памяти, позволяющего заменить процессор и организовать более быстрый и прямой обмен данными между памятью и заданным периферийным устройством.
В серии К580 выпускался контроллер алфавитно-цифрового дисплея КР580ИК57. Микросхема представляет собой БИС четырехканального программируемого контроллера прямого доступа к памяти (ПДП). Каждый из четырех каналов адресует область внешней памяти путем инкрементирования выбранного адреса. ПДП имеет приоритетную логику, реализующую запросы от четырех периферийных устройств и производит счет циклов прямого доступа к памяти каждого канала.
Использование БИС ПДП позволяет существенно сократить аппаратные затраты при реализации прямого доступа к памяти.
На рис. 1 приведена структурная схема КР580ИК57, в табл. 1 - назначение выводов.
Рис. 1. Структура микросхемы КР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РК", совместив в адресном пространстве контроллер ПДП (только запись) и ПЗУ (только чтение).