ДРАЙВЕР ОБМЕНА ПО ИРПР
ИРПР предназначен для радиального подключения ввода-вывода с параллельной передачей информации. По этому интерфейсу обмен данными производится побайтно, в асинхронном режиме, с использованием минимального количества сигналов состояния и управления.
Передача данных осуществляется между одним источником и одним приемником, для организации дуплексного обмена (одновременного обмена в противоположных направлениях) требуются два сопряжения. Большинство серийно выпускаемых дисплеев и печатающих устройств имеет выход на этот интерфейс (например, дисплеи ВТА 2000-30, «Электроника 15ИЭ», печатающие устройства DZM-180 и DARO-1156). ИРПР ограничивает по стандарту расстояние между источником и приемником величиной 15 м.Физически интерфейс образуют восемь линий ДАННЫЕ и четыре линии управления (рис. 6.1):
Рис. 6.1. Структура ИРПР
1) готовность источника (ГИ) —активное состояние (например, единичное) линии указывает, что источник физически существует и работоспособен (подключен к источнику питания);
2) готовность приемника (ГП) — линия предназначена для указания работоспособности приемника;
3) строб источника (СТР)—линия устанавливается источником в активное состояние в том случае, когда на линиях ДАННЫЕ появляется очередной байт;
4) запрос приемника (ЗПР) — активное состояние линии указывает на готовность приемника к приему очередного байта.
Обмен информацией регламентируется следующим алгоритмом. Работа по интерфейсу может осуществляться только при наличии сигналов ГИ и ГП, с помощью которых источник и приемник оповещают друг друга о работоспособности. Как только у источника появляется необходимость передать данные, он анализирует состояние линии ЗПР и в случае ее активности выдает байт на линии ДАННЫЕ. После этого источник устанавливает сигнал СТР, который записывает данные в приемник.
Сигнал СТР снимается после перехода сигнала ЗПР приемника
Рис. 6.2. Структуры сопряжения микросхемы ППА с источником и приемником данных
в пассивное (например, нулевое) состояние. В свою очередь приемник для получения байта должен установить сигнал ЗПР, дождаться активного состояния линии СТР и принять байт с линии ДАННЫЕ. На время обработки приемником полученного байта сигнал ЗПР снимается. Скорость обмена может задаваться как приемником, так и источником.
Любое ВУ подключается к МП системе с помощью специального устройства сопряжения (УС), которое преобразует физические сигналы интерфейса в логические, доступные программам. В МП системах, выполненных на базе БИС серии КР580, в устройствах сопряжения типа ИРПР чаще всего применяется микросхема периферийного параллельного адаптера (ППА) КР580ВВ55 (см. прил. 4) [2, 4, 12, 19, 31, 41]. На рис. 6.2 приведены структурные схемы устройства сопряжения типа ИРПР на базе ППА, работающего в режиме 0 (й) и в режиме 1 (б).
Рассмотрим работу драйвера ИРПР при использо- ваии ППА в режиме 0. Драйвер обеспечивает выполнение функций инициализации, ввода и вывода символа:
Драйвер состоит из четырех подпрограмм. Программа ИНРПРО производит инициализацию микросхемы и установку сигналов ГИ и ГП со стороны УС путем занесения информации в регистр управляющего слова (РУС). При инициализации устанавливается режим 0 для всех каналов, канал В (КВ) и младшая половина канала С (КСМ) программируются на ввод, а канал А (КА) и старшая половина канала С (КСС) — на вывод. Установка сигналов ГП и ГИ выполняется командами битовой установки. В конце программы ИНРПРО проверяется наличие сигналов ГП и ГИ со стороны ВУ. При их отсутствии в выходном параметре устанавливается признак неудачной инициализации Z=0.
Программа ВЫРПРО осуществляет вывод символа из МП системы через УС в приемник ВУ (выводимый символ предварительно размещается в регистре (С)). В начале программы в цикле ожидания контролируется появление единицы во втором разряде КС. Эта единица интерпретируется как символ ЗПР от ВУ. Далее выводится символ и устанавливается сигнал СТР, после чего в цикле ожидания контролируется снятие сигнала ЗПР со стороны ВУ и, наконец, снимается сигнал СТР со стороны УС.Программа СТРПРО выполняет проверку готовности источника ВУ к передаче символа в МП через УС. Говорят, что если ВУ готово к передаче, то оно имеет положительный статус ввода, а если не готово,— отрицательный. В программе СТРПРО статус ввода фиксируется в выходном параметре, передаваемом через аккумулятор МП. В начале программы устанавливается сигнал ЗПР со стороны УС и проверяется наличие ответного сигнала СТР со стороны ВУ. Если этот сигнал установлен, то в выходной параметр записывается положительный статус ввода (код 0FFH), в противном случае — отрицательный (код 00). Программа ВВРПРО осуществляет ввод символа в МП через УС от источника ВУ. В начале программы вызывается в цикле подпрограмма СТРПРО до тех пор, пока она не передаст в выходном параметре положительный статус ввода. Затем из КВ вводится символ и снимается сигнал ЗПР со стороны УС. Возврат из этой программы выполняется только после снятия сигнала СТР со стороны ВУ.
Драйвер ИРПР при использовании ППА в режиме 1 имеет аналогичную структуру:
При инициализации, которую выполняет подпрограмма ИНРПР1, микросхема программируется в режим 1. КА настраивается на режим вывода, а КВ — ввода. Кроме того, при выполнении программы размаскируются сигналы ЗПР по КВ и КА путем установки единиц в 6-м и 2-м разрядах КС. При выводе символа (подпрограмма ВЫРПР1) циклически проверяется состояние 3-го разряда КС. Как только в этом разряде устанавливается единица, что свидетельствует о готовности ППА выводить символ, символ выводится в КА. Готовность ППА к вводу определяется подпрограммой СТРПР1, которая возвращает в качестве выходного параметра значение статуса ввода, исходя из текущего состояния 0-го разряда. КС — сигнала ЗПР (В). Подпрограмма ВВРПР1 выполняет ввод символа. Перед чтением символа из КВ выполняется в цикле вызов подпрограммы СТРПР1 до тех пор, пока не будет получен положительный статус ввода.
При использовании ППА в режиме 1 драйвер управления вводом-выводом получается более компактным, так как все манипуляции сигналами управления выполняет сама микросхема. Заметим, что драйвер режима 0 можно использовать для УС, выполненных без применения ППА. Этот драйвер требует наличия только трех 8-разрядных программно-доступных регистров.
6.3.