Программируемый периферийный адаптер КР580ВВ55

Оригинал статьи.

(отечественный аналог INTEL 8255; старое наименование – К580ИК55)

Вадим Кудрявцев

Любое устройство должно быть тем или иным образом связано с внешним миром. В микропроцессорной технике эту роль выполняют периферийные адаптеры. С их помощью центральный процессор получает данные, требующие той или иной обработки, управляет различными устройствами.

Программируемый периферийный адаптер (ППА) КР580ВВ55 представляет собой три канала ввода/вывода A, B и C по 8 бит каждый. Существует три режима работы микросхемы. В режиме 0 три упомянутых канала могут быть независимо друг от друга запрограммированы на ввод или вывод информации. Режим 1 позволяет передавать информацию по каналам A и B, используя отдельные биты канала C для управления обменом данными. В режиме 2 канал A приобретает свойство двунаправленной шины, управляемой опять же отдельными битами канала C. Кроме того, возможны установка и сброс отдельных битов канала C. Микросхема выпускается в 40-выводном DIP-корпусе.

Основные особенности микросхемы:

Описание структуры и функционирование

Структурная схема программируемого периферийного адаптера представлена на рис. 1.

Структурная схема программируемого периферийного адаптера КР580ВВ55

Структурная схема программируемого периферийного адаптера КР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 следующие:

Режим 1 (тактируемый ввод/вывод)

Этот режим служит для однонаправленного обмена данными по выбранному каналу с периферийным устройством. Для управления передачей или приемом по каналу A используется младшая тетрада канала C, канал 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 (тактируемый ввод)

Работа ППА в режиме 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 (тактируемый вывод)

Работа ППА в режиме 1 (тактируемый вывод)

Режим 2 (двунаправленный тактируемый ввод/вывод)

В этом режиме возможен обмен данными по 8-битовой двунаправленной шине данных. Управление обменом данными, а также направление передачи задается с помощью управляющих сигналов аналогичным режиму 1 способом. Возможно также генерирование сигналов прерываний и запрета разрешения.

Основные особенности работы в данном режиме:

Описание управляющих сигналов для двунаправленного ввода/вывода

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

Работа ППА в режиме 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-совместимых компьютеров.

Литература:

  1. Kramer M., Wurtenberger S. Datenbuch Mikrorechner Schalkreise. 1. Auflage. Berlin: Militarverlag der DDR (VEB), 1989.
  2. Микропроцессоры. Справочное пособие для разработчиков судовой РЭА. Под ред. Ю. А. Овечкина. Л., "Судостроение", 1988.
  3. Зеленко Г., Панов В., Попов С. Модуль программатора ППЗУ. Радио, 1983, № 6, с. 42–46.

Статья опубликована 23.01.2003 г.