Пример программирования
Сразу замечу – использование режимов 1 и 2 подразумевает относительно «разумную» реакцию внешних устройств на сигналы ППА, что сопряжено с усложненной схемотехникой последних. В большинстве же случаев можно обойтись режимом 0 простого ввода/вывода.
В составе одноплатного компьютера «Радио-86РК», описанного в журнале «Радио», используются два ППА. Первый обслуживает клавиатуры, индикацию раскладок клавиатуры и ввод/вывод данных с магнитофона. Второй используется для сопряжения с различными устройствами и его программирование должен осуществлять сам пользователь или программист-разработчик драйвера под конкретное внешнее устройство.
Рассмотрим программирование первого ППА.
Основная матрица клавиатуры размером 8×8 подключена к каналам A и B, причем канал A должен работать на вывод, а канал B на ввод информации. К выводам C5, C6, C7 канала C подключены дополнительные клавиши управления регистрами. Вывод C4 используется для ввода данных с магнитной ленты. Следовательно, старшая тетрада канала C должна быть запрограммирована на ввод. В младшей тетраде канала C используются только два бита: C0 – вывод данных на магнитную ленту и C3 – индикация раскладки клавиатуры «Рус/Лат». Следовательно, младшая тетрада канала C должна быть запрограммирована на вывод.
Программирование производится засылкой одного байта в управляющий регистр.
Таблица 6. Программирование ППА для обслуживания клавиатуры
Адрес | Данные | ||||||||
---|---|---|---|---|---|---|---|---|---|
A1 | A0 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
1 | 1 | 1 | 1 | 1 | |||||
Регистр управления | Режим программирования | Канал A режим 0 | Канал A вывод | Старшая тетрада канала C ввод | Канал B режим 0 | Канал B ввод | Младшая тетрада канала C вывод |
Как видно из этого примера, все каналы ППА запрограммированы в режим 0 простого ввода-вывода, т. е. разработчики упомянутого компьютера решили пойти по пути упрощения схемотехники и переложить большую часть обработки клавиатуры и периферийных устройств на процессор.
С помощью второго ППА я в свое время эмулировал LPT-порт и подключал к нему матричный принтер. Обходился я опять же программированием всех каналов только в режим 0 и всю обработку обмена с принтером писал на ассемблере.
В заключение отмечу, что описанная микросхема оказалась очень удачной для создания компактных устройств ввода/вывода. В своей практике я ее не раз использовал для увеличения количества внешних линий однокристальных микро-ЭВМ или построения плат ввода/вывода для шин стандарта ISA IBM-совместимых компьютеров.
Литература:
- Kramer M., Wurtenberger S. Datenbuch Mikrorechner Schalkreise. 1. Auflage. Berlin: Militarverlag der DDR (VEB), 1989.
- Микропроцессоры. Справочное пособие для разработчиков судовой РЭА. Под ред. Ю. А. Овечкина. Л., «Судостроение», 1988.
- Зеленко Г., Панов В., Попов С. Модуль программатора ППЗУ. Радио, 1983, № 6, с. 42–46.
Статья опубликована 23.01.2003 г.
Описание структуры и функционирование
Структурная схема программируемого периферийного адаптера представлена на рис. 1.
Структурная схема программируемого периферийного адаптера КР580ВВ55
ППА структурно разбит на две группы (A и B). Группа A включает в себя канал A и старшую тетраду канала C. Группа B состоит из канала B и младшей тетрады канала C. Доступ к каналам ввода/вывода и регистру управления осуществляется с помощью логики чтения-записи в соответствии с табл. 1.
Таблица 1. Доступ к каналам ввода/вывода и регистру управляющего слова
A1 | A0 | /RD | /WR | /CS | |
---|---|---|---|---|---|
1 | Шина данных <- канал A | ||||
1 | 1 | Шина данных <- канал B | |||
1 | 1 | Шина данных <- канал C | |||
1 | 1 | 1 | Данные не определены | ||
1 | Шина данных -> канал A | ||||
1 | 1 | Шина данных -> канал B | |||
1 | 1 | Шина данных -> канал C | |||
1 | 1 | 1 | Шина данных -> регистр управления | ||
X | Х | Х | Х | 1 | Шина данных в высокоомном состоянии |
Назначение этих и остальных выводов микросхемы приведено в табл. 2.
Таблица 2. Назначение выводов
D0…D7 | Двунаправленная шина данных. Предназначена для передачи и приема данных процессором, а также передачи управляющих команд и слова состояния |
/CS | Chip Select. Выбор микросхемы. Низкий уровень инициирует обмен между процессором и ППА |
/RD | Read. Чтение. Низкий уровень на этом входе позволяет ППА передать данные или слово состояния процессору |
/WR | Write. Запись. Низкий уровень на этом входе позволяет ППА принять данные или управляющую команду |
RESET | Reset. Сброс. Высокий уровень на этом входе сбрасывает все внутренние регистры, включая регистры управления, переключает все каналы (A, B, C) в режим 0, одновременно переводя их в режим ввода (только при /RD = 0 и /WR = 0) |
A0, A1 | Адресные входы. Выбор канала. Позволяют выбрать один из каналов (A, B, C) или регистры управляющего слова и состояния (в зависимости от сигналов на входах /RD и /WR, см. табл. 2) |
PA0…PA7 | Канал A |
PB0…PB7 | Канал B |
PC0…PC7 | Канал C |
Первоначальное включение или подача сигнала высокого уровня на вход сброс RESET микросхемы переключает все каналы (A, B, C) в режим 0, одновременно переводя их в режим ввода. Сброс выполняется только при условии /RD = 0 и /WR = 0.
Режим работы и направление передачи для каждого канала задается с помощью записи управляющего слова в регистр управления в соответствии с табл. 3 или 4. Отметим возможность комбинирования режимов работы для разных каналов. К примеру, канал B может быть запрограммирован на вывод в режим 0 для управления различными выключателями и реле, в то время как канал A может быть запрограммирован в режим 1 для ввода с клавиатуры или перфоленты.
Таблица 3. Формат управляющего слова для выбора режима работы
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|
Флаг управления 1 = выбор режима |
Группа A | Группа В | |||||
Выбор режима: 00 = режим 001 = режим 11х = режим 2 |
Канал A: 1 = ввод0 = вывод |
Старшая тетрада канала C: 1 = ввод0 = вывод |
Выбор режима: 0 = режим 01 = режим 1 |
Канал B: 1 = ввод0 = вывод |
Младшая тетрада канала C: 1 = ввод0 = вывод |
Таблица 4. Формат управляющего слова для двунаправленного режима.
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
Флаг управления 1 = выбор режима |
Выбор режима: 1 = режим 2 |
Произвольное состояние | Выбор режима для канала B: 0 = режим 01 = режим 1 |
Канал B: 1 = ввод0 = вывод |
Биты 0..2 канала C: 1 = ввод0 = вывод |
Каждый из восьми битов канала C может быть независимо от других установлен или сброшен с помощью специальной команды вывода, посылаемой в регистр управления. Это свойство канала C облегчает программирование в случае, когда биты канала C используется для управления передачей данных по каналам A или B. Формат команды приведен в табл. 5.
Работа микросхемы в режиме 1 или 2 характеризуется наличием управляющих сигналов, которые могут вызывать прерывание работы процессора КР580ВМ80.
Команда установки или сброса соответствующего бита канала C позволяет запретить или разрешить выдачу требуемого прерывания.
Таблица 5. Оперирование битами
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
Флаг управления 0 = оперирование битами |
Произвольное состояние | Выбор бита: 0 0 0 = 0 бит0 0 1 = 1 бит0 1 0 = 2 бит0 1 1 = 3 бит1 0 0 = 4 бит1 0 1 = 5 бит1 1 0 = 6 бит1 1 1 = 7 бит |
1 = установить бит 0 = снять бит |