Программируемый периферийный адаптер КР580ВВ55
(отечественный аналог INTEL 8255; старое наименование – К580ИК55)
Вадим Кудрявцев
Любое устройство должно быть тем или иным образом связано с внешним миром. В микропроцессорной технике эту роль выполняют периферийные адаптеры. С их помощью центральный процессор получает данные, требующие той или иной обработки, управляет различными устройствами.
Программируемый периферийный адаптер (ППА) КР580ВВ55 представляет собой три канала ввода/вывода A, B и C по 8 бит каждый. Существует три режима работы микросхемы. В режиме 0 три упомянутых канала могут быть независимо друг от друга запрограммированы на ввод или вывод информации. Режим 1 позволяет передавать информацию по каналам A и B, используя отдельные биты канала C для управления обменом данными. В режиме 2 канал A приобретает свойство двунаправленной шины, управляемой опять же отдельными битами канала C. Кроме того, возможны установка и сброс отдельных битов канала C. Микросхема выпускается в 40-выводном DIP-корпусе.
Основные особенности микросхемы:
- 3 канала ввода/вывода, 8 бит каждый;
- 3 режима работы (1 – статический ввод/вывод, 2 – тактируемый ввод/вывод, 3 – двунаправленный ввод/вывод);
- раздельное программирование каждого канала на ввод или вывод.
Описание структуры и функционирование
Структурная схема программируемого периферийного адаптера представлена на рис. 1.
Структурная схема программируемого периферийного адаптера КР580ВВ55
ППА структурно разбит на две группы (A и B). Группа A включает в себя канал A и старшую тетраду канала C. Группа B состоит из канала B и младшей тетрады канала C. Доступ к каналам ввода/вывода и регистру управления осуществляется с помощью логики чтения-записи в соответствии с табл. 1.
Таблица 1. Доступ к каналам ввода/вывода и регистру управляющего слова
A1 | A0 | /RD | /WR | /CS | |
---|---|---|---|---|---|
0 | 0 | 0 | 1 | 0 | Шина данных <- канал A |
0 | 1 | 0 | 1 | 0 | Шина данных <- канал B |
1 | 0 | 0 | 1 | 0 | Шина данных <- канал C |
1 | 1 | 0 | 1 | 0 | Данные не определены |
0 | 0 | 1 | 0 | 0 | Шина данных -> канал A |
0 | 1 | 1 | 0 | 0 | Шина данных -> канал B |
1 | 0 | 1 | 0 | 0 | Шина данных -> канал C |
1 | 1 | 1 | 0 | 0 | Шина данных -> регистр управления |
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 = режим 0 01 = режим 1 1х = режим 2 |
Канал A: 1 = ввод 0 = вывод |
Старшая тетрада канала C: 1 = ввод 0 = вывод |
Выбор режима: 0 = режим 0 1 = режим 1 |
Канал B: 1 = ввод 0 = вывод |
Младшая тетрада канала C: 1 = ввод 0 = вывод |
Таблица 4. Формат управляющего слова для двунаправленного режима.
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
Флаг управления 1 = выбор режима |
Выбор режима: 1 = режим 2 |
Произвольное состояние | Выбор режима для канала B: 0 = режим 0 1 = режим 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 = снять бит |
Описание режимов работы
Режим 0 (простой ввод/вывод)
Работа в этом режиме позволяет организовать простой ввод или вывод для каждого из трех каналов. Данные просто записываются или считываются из выбранного канала. Таким образом, основные особенности функционирования микросхемы в режиме 0 следующие:
- два 8-битовых канала (каналы A и B) и два 4-битовых канала (старшая и младшая половинки канала C);
- каждый канал может быть независимо от других запрограммирован на ввод или вывод; таким образом, всего может быть 16 различных комбинаций ввода/вывода;
- выходы имеют память, входы работают без буферной памяти.
Режим 1 (тактируемый ввод/вывод)
Этот режим служит для однонаправленного обмена данными по выбранному каналу с периферийным устройством. Для управления передачей или приемом по каналу A используется младшая тетрада канала C, канал B управляется старшей тетрадой канала C.
Основные особенности работы в данном режиме:
- два канала (каналы A и B);
- каждый канал может быть запрограммирован на вход или выход;
- одна тетрада канала C используется для управления одного канала передачи данных.
Описание сигналов для управления операцией ввода
/STB (STROBE)
По низкому уровню на этом входе входные данные записываются в буферную память.
/IBF (INPUT BUFFER FULL)
Высокий уровень на этом выходе показывает, что данные загружены в буферную память. Задний фронт сигнала /STB устанавливает этот выход в уровень лог. 1, передний фронт сигнала на входе /RD сбрасывает его в лог. 0.
INTR (INTERRUPT)
Высокий уровень на этом выходе может быть использован для прерывания выполнения основной программы процессора, чтобы обслужить устройство ввода. Сигнал INTR устанавливается в лог. 1 по переднему фронту сигнала /STB (если установлен сигнал INTE разрешения прерывания) и сбрасывается по заднему фронту сигнала на входе /RD микросхемы. Этот процесс обеспечивает ввод данных в микропроцессор со стороны устройства ввода простым стробированием своих данных.
INTE A
Разрешение прерывания для канала A. Управляется установкой/сбросом бита 4 канала С.
INTE B
Разрешение прерывания для канала B. Управляется установкой/сбросом бита 2 канала С.
Взаимодействие описанных сигналов показано на рис. 2.
Работа ППА в режиме 1 (тактируемый ввод)
Описание сигналов для управления операцией вывода
/OBF (OUTPUT BUFFER FULL)
Сигнал высокого уровня на этом выходе показывает устройству вывода, что микропроцессор записал данные в канал. Сигнал устанавливается в лог. 1 по переднему фронту на входе /WR микросхемы и сбрасывается по заднему фронту сигнала /ACK.
/ACK (ACKNOWLEDGEMENT)
Низкий уровень на этом выходе показывает микропроцессору, что периферийное устройство приняло данные.
INTR (INTERRUPT)
Высокий уровень на этом выходе может быть использован для прерывания выполнения основной программы процессора в момент принятия данных периферийным устройством. Сигнал INTR устанавливается в лог. 1 по переднему фронту сигнала /ACK (если одновременно сигналы /OBF и INTE установлены в лог. 1) и сбрасывается по заднему фронту сигнала на входе /WR микросхемы.
INTE A
Разрешение прерывания для канала A. Управляется установкой/сбросом бита 6 канала С.
INTE B
Разрешение прерывания для канала B. Управляется установкой/сбросом бита 2 канала С.
Взаимодействие описанных сигналов показано на рис. 3.
Работа ППА в режиме 1 (тактируемый вывод)
Режим 2 (двунаправленный тактируемый ввод/вывод)
В этом режиме возможен обмен данными по 8-битовой двунаправленной шине данных. Управление обменом данными, а также направление передачи задается с помощью управляющих сигналов аналогичным режиму 1 способом. Возможно также генерирование сигналов прерываний и запрета разрешения.
Основные особенности работы в данном режиме:
- возможно использование только канала A;
- управление обменом обеспечивается 5 битами канала C;
- входы и выходы обладают буферной памятью.
Описание управляющих сигналов для двунаправленного ввода/вывода
INTR (INTERRUPT)
Высокий уровень на этом выходе может быть использован для прерывания выполнения основной программы процессора.
Режим вывода
/OBF (OUTPUT BUFFER FULL)
Сигнал высокого уровня на этом выходе показывает устройству вывода, что микропроцессор записал данные в канал A.
/ACK (ACKNOWLEDGEMENT)
Низкий уровень на этом выходе выводит выходной буфер канала A из третьего состояния для вывода данных в периферийное устройство. В остальных случаях выходной буфер остается в третьем состоянии.
INTE 1 (INTE плюс /OBF)
Разрешение прерывания для канала A при работе на вывод. Управляется установкой/сбросом бита 6 канала С.
Режим ввода
/STB (STROBE)
Низкий уровень на этом входе загружает данные из периферийного устройства в буферную память канала A.
/IBF (INPUT BUFFER FULL)
Высокий уровень на этом выходе показывает, что данные загружены в буферную память.
INTE 2 (INTE плюс /IBF)
Разрешение прерывания для канала A при работе на вывод. Управляется установкой/сбросом бита 4 канала С.
Работа ППА в режиме 2 показана на рис. 4.
Работа ППА в режиме 2
Таблица 5. Управляющие сигналы для различных режимов работы
C7 | C6 | C5 | C4 | C3 | C2 | C1 | C0 | |
---|---|---|---|---|---|---|---|---|
Канал A | Канал B | Режим 1 Ввод |
||||||
I/O | I/O | /IBF | /STB | INTR | /STB | /IBF | INTR | |
Канал A | Канал B | Режим 1 Вывод |
||||||
/OBF | /ACK | I/O | I/O | INTR | /ACK | /OBF | INTR | |
Канал A | Режим 2 | |||||||
/OBF | /ACK | /IBF | /STB | INTR | I/O | I/O | I/O |
Примечание: I/O – обычный ввод/вывод.
Пример программирования
Сразу замечу – использование режимов 1 и 2 подразумевает относительно "разумную" реакцию внешних устройств на сигналы ППА, что сопряжено с усложненной схемотехникой последних. В большинстве же случаев можно обойтись режимом 0 простого ввода/вывода.
В составе одноплатного компьютера "Радио-86РК", описанного в журнале "Радио", используются два ППА. Первый обслуживает клавиатуры, индикацию раскладок клавиатуры и ввод/вывод данных с магнитофона. Второй используется для сопряжения с различными устройствами и его программирование должен осуществлять сам пользователь или программист-разработчик драйвера под конкретное внешнее устройство.
Рассмотрим программирование первого ППА.
Основная матрица клавиатуры размером 8x8 подключена к каналам 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 | 0 | 0 | 0 | 1 | 0 | 0 | 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 г.