Средства последовательного ввода-вывода
Интерфейс радиальный последовательный. Параллельные каналы обычно используются при расстоянии до 10—15 м. При больших расстояниях стоимость многопроводного кабеля достаточно высока. В этих случаях применяются каналы с последовательной (поразрядной) передачей данных, что позволяет снизить стоимость линий, однако уменьшается пропускная способность канала. Функция стыка МС с последовательными каналами возлагается на связные адаптеры (СА).
К числу простейших интерфейсов последовательной передачи принадлежит интерфейс радиальный последовательный (ИРПС) или асинхронный старт-стоповый. Интерфейс предусматривает одностороннюю последовательную передачу данных словами по 5—8 бит со скоростями 1200, 2400, 4800, 9600 и 19200 бит в секунду. Передаваемое слово обрамляется рамкой (рис. 3.28), состоящей из стартового бита, необязательного бита контроля четности и одного-двух стоповых битов. Полученная посылка носит название кадра. Размещение данных в кадре начинается с младших разрядов. Логические состояния линии кодируются значением либо напряжения, либо тока (табл 3.2). Вход приемника и выход передатчика обозначаются соответственно SID и SOD.
Рис. 3.28. Временные диаграммы протокола ИРПС
Таблица 3.2
Логическое состояние | Линейный выход RS-232-C | Стык C2 | Токовая петля | |
20 мА | 40 мА | |||
³ 3 В | +5 ¸ +15 В | 0—3 мА | 0—10 мА | |
< 3 В | –5 ¸ –15 В | 15—25 мА | 30—50 мА |
В некоторых случаях возможно расширение числа физических линий интерфейса введением сигналов управления и состояния, которыми обмениваются контроллер и ПУ, например готовности приема, запроса передачи. Питание линий осуществляется от сети передатчика (активный режим) или приемника (пассивный режим).
Программируемый связной адаптер ВВ51/ВВ51А. В простейшем случае функцию стыка последовательного канала с МС выполняют программируемые связные адаптеры (ПСА), в более сложных случаях—программируемые связные контроллеры и сопроцессоры. К числу однокристальных ПСА относятся БИС:
КР580ВВ51, 8251 Универсальный синхронно-асинхронный приемопередатчик (базовый вариант)
КР580ВВ51А, 8251А, Универсальный синхронно-асинхронный приемопередатчик (улучшенный вариант)
S2657
МС6850 Асинхронный последовательный интерфейс
К1801ВП1-035 Универсальный асинхронный приемопередатчик для МС с Q-шиной
Программируемый связной адаптер КР580ВВ51 (ВВ51) или универсальный синхронно-асинхронный приемопередатчик (УСАПП, USART—Universal Synchronous/Asynchronous Reciver/Transmitter) представляет собой однокристальное программируемое устройство, реализующее интерфейс МС с синхронно-асинхронными каналами последовательной связи. Он является аналогом прибора 8251 фирмы Intel.
В состав ПСА (рис. 3.29) входят передатчик, приемник, буфер шины данных и ряд схем управляющего типа. Основу передатчика составляет 13-разрядный сдвиговый регистр, хранящий очередное выходное слово. Разряды 12, 11 регистра используются для формирования стоп-битов, 10—для записи контрольного бита, разряды 9—2 предназначены для хранения данных, 1—для формирования старт-битов, последний применяется как выходной буфер для последовательного выталкивания слова на линию Т´D (Transmitter Data). Управление работой передатчика осуществляется специальной схемой, которая отслеживает прием новых данных, при необходимости добавляет к ним контрольный бит, обрамляет старт-стоповыми битами и синхронизирует вывод из сдвигающего регистра.
Рис. 3.29. Схема программируемого связного адаптера ВВ51:
а—структурная схема; б—условное графическое обозначение
Приемник содержит два 9-разрядных сдвиговых регистра. Информация со входа R´D (Resiver Data) последовательно поступает на один из входов (0—3) первого регистра в зависимости от длины передаваемого слова и затем на один из входов (0—3) второго регистра. Управление записью входной информации осуществляется схемой управления приемника, содержащей логику формирования синхроимпульсов приема, счетчик числа принятых битов, схему контроля четности, триггер ошибки четности РЕ (Parity Error), триггер ошибки кадра FE (Framming Error) и триггер ошибки переполнения ОЕ (Overrun Error).
Буфер шины данных представляет собой 8-разрядное трехстабильное двунаправленное устройство для связи ПСА с МП, которое состоит из входного и выходного регистра данных, а также доступного для чтения регистра слова состояния SW.
Логика чтения-записи включает регистр режима, регистр команд и два регистра синхроимпульсов. Восьмиразрядный регистр режима предназначен для хранения слова выбора режима МС, тогда как регистр команд—для приема команды CI. Два 8-разрядных регистра синхроимпульсов хранят один или два символа синхронизации SYNC. Встроенный в логику чтения-записи компаратор реализует сравнение слов, хранящихся в регистрах синхроимпульсов и в регистрах приемника. Результат сравнения используется для управления работой БИС.
Схема управления модемом служит для обмена с ПУ управляющими сигналами:
(Data Set Ready) Готовность приемника модема. Проверяется программно
(Data Terminal Ready) Запрос готовности приемника модема. Управляется программно
(Request To Send) Запрос готовности передатчика модема. Управляется программно
(Clear To Send) Готовность передатчика модема. Разрешает ПСА передачу данных
Входные сигналы и определяют направление потока информации, передаваемой по шине данных из ЦП в ПСА и обратно. По стробу ЦП через буфер шины данных записывает в ПСА данные или управляющую информацию. Строб обеспечивает чтение данных или информации о состоянии ПСА. При отсутствии сигналов на входах и обмена информацией с ПСА не производится. Одновременная подача обоих сигналов запрещена. Логический уровень на входе определяет вид информации при обмене, которая может быть либо словом управления/состояния ( = 1) либо байтом данных ( = 0). Все операции по обмену информацией (табл. 3.3) возможны только при низком уровне напряжения на линии выбора кристалла ( = 0).
Таблица 3.3
Операция | ||||
X X | X | X | DПриемник ПередатчикD DSW CWD Нет операции Нет операции |
Таблица 3.4
Данные D7—D0 | Управляющие сигналы | ||||
RESET | |||||
Произвольно Mode Instruction Синхросимвол 1 Синхросимвол 2 Command Instruction Данные, Status Word Command Instruction Данные, Status Word | X | X X X | X X X | ||
П р и м е ч а н и е. Синхросимволы 1 и 2 могут отсутствовать. |
Перед началом работы ПСА должен быть установлен в исходное состояние либо с помощью сигнала сброса, генерируемого МС и подаваемого на вход RESET микросхемы, либо программным способом с помощью команды CI.IR = 1. Для надежного сброса ПСА длительность сигнала RESET должна быть больше шести периодов тактовой частоты CLK.
Дальнейшее управление работой ПСА осуществляется двумя управляющими словами: MI (Mode Instruction) и CI (Command Instruction) в соответствии с табл. 3.4. Слово MI определяет основной режим работы ПСА, оно должно быть передано после операции сброса первым. Различают два формата MI (рис. 3.30), кодируемых двумя младшими разрядами слова: асинхронного (MI.0 ¹ 0 или MI.1 ¹ 0) и синхронного (МI.0 = 0 и МI.1 = 0) режимов. В обоих случаях имеется возможность программировать длину слова данных DW (поле L2—L1) и тип контроля (разряды ЕР и PEN). В асинхронном режиме программируется также число стоп-битов (поле S2—S1) и скорость передачи (поле В2—В1), в синхронном режиме можно задать число синхросимволов (SCS) и тип синхронизации (ESD). В синхронном режиме следом за MI должны быть загружены один или два синхросимвола SYNC. После их загрузки или загрузки MI асинхронного режима может быть подано управляющее слово CI.
Рис. 3.30. Формат слова выбора программируемого связного адаптера:
а—асинхронный режим; б—синхронный режим
Слово CI (рис. 3.31) используется для оперативного управления работой ПСА: разрешения (запрещения) приема (передачи), перехода в режим ожидания синхронизации, а также для программной установки ПСА в исходное состояние с целью его переинициализации (CI.IR = 1).
Рис. 3.31. Формат команды программируемого связного адаптера | Рис. 3.32. Формат слова состояния программируемого связного адаптера |
Для организации программно-управляемого обмена по условию в составе ПСА предусмотрено слово состояния SW (рис. 3.32), в состав которого входят флажки готовности передатчика T´RDY и приемника R´RDY. После выдачи слова данных флажок Т´RDY устанавливается в 0 и снова в 1 после передачи DW в буфер передатчика. Аналогично работает флажок R´RDY при заполнении и считывании буфера принятых данных.
Кроме флажков готовности в состав слова состояния входят три признака ошибок. Наличие ошибки не прерывает работу ПСА. Триггеры ошибок устанавливаются в исходное состояние командой сброса ошибки (IC.ER = 1). Чтение SW возможно в любой момент времени, что позволяет МС управлять процессом передачи данных программными средствами.
Режим работы ПСА определяется программными средствами. После записи CI адаптер может быть переведен в один из основных режимов работы или в их допустимую комбинацию. К ним относятся: асинхронная передача, асинхронный прием, синхронная передача, синхронный прием с внутренней синхронизацией, синхронный прием с внешней синхронизацией.
При MI.0 ¹ 0 MI.1 ¹ 0 адаптер переходит в асинхронный старт-стоповый режим работы. Следующая за MI команда разрешения передачи (CI.T´EN = 1) при = 0 запускает передатчик. Установка флажка готовности T´RDY в 1 сигнализирует МП о готовности передатчика принять данные (рис. 3.33, а). После выдачи данных флажок готовности Т´RDY устанавливается в 0 и снова в 1 после передачи байта данных в выходной буфер передатчика. Если буфер еще занят выводом предыдущего байта данных, адаптер будет ждать его освобождения.
Рис. 3.33. Временные диаграммы передачи (а) и приема (б) в асинхронном режиме
Записанные в буфер передатчика данные обрамляются старт-стоповыми битами и при необходимости битом контроля четности. Информация подается на выход T´D в последовательной форме согласно протоколу ИРПС (см. рис. 3.28) с частотой, кратной 1/1, 1/16 или 1/64 частоты на входе в зависимости от значения поля В2—В1 в MI. Смена данных на выходе T´D происходит по срезу .
Если ПСА не имеет информации для передачи, то на выходе T´D устанавливается напряжение высокого уровня (сигнал маркирования). При выдаче сигнала маркирования на линии Т´EMPTY также устанавливается напряжение высокого уровня, что используется для переключения направления передачи линии, работающей в полудуплексном режиме, на обратное направление. При подаче команды запрета передачи (CI.T´EN = 0) на выходе T´D устанавливается напряжение низкого уровня (сигнал вклинивания), как и при подаче команды обрыва (CI.SBRK = 1).
По команде разрешения приема (CI.R´EN = 1) в асинхронном режиме приемник отслеживает срез сигнала на входе R´D, появление которого воспринимается как приход старт-бита (рис. 3.33, б). Истинность этого события проверяется вторично опросом состояния R´D в середине такта. Если старт-бит не подтверждается (R´D = 1), то приемник возвращается в исходное состояние. При подтверждении старт-бита прием кадра разрешается. Считывание очередного бита выполняется в середине такта его передачи. Если при приеме будет обнаружена ошибка четности, то установится в 1 флажок РЕ. Если при приеме первого такта стоп-бита на линии R´D окажется напряжение низкого уровня, то зафиксируется ошибка формата FE. Прием стоп-бита сигнализирует об окончании текущего кадра. Принятые данные (5—8 бит) передаются в выходной регистр и устанавливается в 1 флажок готовности R´RDY. Если при этом предыдущий символ из регистра еще не был считан, то он теряется, что соответствует установке в 1 флажка переполнения ОЕ. Флажок R´RDY устанавливается в 0 при считывании данных из буфера. Наличие ошибок не приостанавливает работу ПСА, а только информирует об их появлении. Линия SYNDET не используется.
Область применения асинхронного режима ограничена скоростью передачи данных 19,2 кБод. Для работы с высокоскоростными линиями вплоть до 56 (64 для ВВ51А) кБод применяется синхронный режим передачи.
В синхронный режим ПСА переводится при MI.0 = 0, MI.1 = 0. После записи MI должны быть переданы один (MI.SCS = 1) или два (MI.SCS = 0) синхросимвола. Передача разрешается по команде CI.T´EN = 1 при = 0. Логика установки флажка Т´RDY аналогична его установке в асинхронном режиме. После передачи в ПСА слова данных и при = 0 передатчик начнет выталкивать биты данных со скоростью следования . Смена последовательных данных на выходе T´D определяется срезом .
Если новые данные от МП еще не пришли, а буфер передатчика уже пуст для предотвращения потери синхронизации в поток данных автоматически вставляются синхросимволы. При этом на выходе Т´EMPTY формируется последовательность импульсов (по импульсу на синхросимвол), указывающих на передачу последнего бита каждого синхросимвола (рис. 3.34). Когда в передатчик ПСА поступают новые данные, на Т´EMPTY устанавливается напряжение низкого уровня.
Рис. 3.34. Временные диаграммы передачи в синхронном режиме
При синхронном приеме возможны два режима: с внутренней (MI.ESD = 0) и внешней (MI.ESD = 1) синхронизацией. В обоих случаях работа начинается по команде IC.R´EN = 1. При этом в режиме внутренней синхронизации ПСА входит в состояние поиска синхросимволов (режим активного ожидания). Принимаемая по фронту информация R´D непрерывно сравнивается сначала с первым, а затем при необходимости и со вторым синхросимволом. При обнаружении синхросимволов во время приема последнего бита ПСА устанавливает на выходной линии SYNDET напряжение высокого уровня, что означает вхождение в синхронизацию. При сбросе и чтении SW на линии SYNDET устанавливается напряжение низкого уровня. При внешней синхронизации SYNDET работает на вход. Синхросимволы обнаруживаются внешними средствами, устанавливающими на линии SYNDET напряжение высокого уровня, что выводит ПСА из режима ожидания синхронизации и разрешает прием данных по каждому фронту . Длительность сигнала SYNDET должна быть больше или равняться периоду . Данные могут приниматься по частям при высоком уровне напряжения на линии SYNDET. Асинхронность SYNDET и может вызвать задержку данных на один период следования частоты . При синхронном приеме данных ошибки четности и переполнения проверяются, как и в асинхронном.
В состав CI входят флажки, управляющие выходами и . Аналогично SW содержит ряд флажков, отражающих текущее состояние физических линий , SYNDET, Т´EMPTY, R´RDY, Т´RDY. Такое дублирование позволяет реализовать обмен данными с ПУ как по методу программного опроса, так и по прерываниям. Максимальная задержка обновления информации в SW составляет 16 периодов CLK.
Отличие состояний выхода Т´RDY и флажка Т´RDY заключается в том, что состояние последнего не зависит от состояний линии и флажка CI.Т´EN, тогда как состояние выхода T´RDY определяется произведением
Т´RDY = SW.T´RDY&CI.T´EN&
Устройство КР580ВВ51А (ВВ51А) и его аналоги 8251A, S2657 представляют собой усовершенствованный вариант стандартного ПСА типа ВВ51. Новый ПСА ориентирован на работу с такими высокопроизводительными микропроцессорами, как ВМ85А.
Микросхема ВВ51А обладает всеми свойствами ВВ51 и имеет следующие расширения:
введена двойная буферация данных с раздельными регистрами ВВ для управления, состояния, данных;
в асинхронном режиме приемник ПСА автоматически определяет и обрабатывает состояние вклинивания (R´D = 0), при обнаружении которого флажок SYNDET устанавливается в 1, а уровень напряжения на выходной линии SYNDET становится высоким; при сбросе ПСА или обнаружении фронта R´D флажок SYNDET устанавливается в 0, а линия SYNDET возвращается в исходное состояние;
усовершенствована схема инициализации приемника, устраняющая его срабатывание в состоянии вклинивания;
по окончании передачи линия Т´D возвращается в состояние маркирования до тех пор, пока не будет подана команда SBRK;
усовершенствована логика запрета передачи, отодвигающая запрет к моменту, когда все ранее записанные данные не будут переданы;
в синхронном режиме с внешней синхронизацией после вхождения в синхронизм (появление фронта на входной линии SYNDET) сигнал SYNDET может быть снят;
минимизирована возможность детектирования ложного сигнала синхронизации за счет использования двойного символа синхронизации, а также предварительной установки всех разрядов буферного регистра приемника в состояние 1 по команде ENTER HUNT MODE;
стробы и не влияют на внутренние устройства до прихода сигнала ;
улучшены временные параметры ПСА.
Адаптер ИРПС на базе ВВ51. С помощью ПСА ВВ51 достаточно просто реализуется ИРПС-адаптер (рис. 3.35), удовлетворяющий требованиям шины Microbus. В его состав еще входят две буферные схемы и генератор скорости передачи.
Рис. 3.35. Схема адаптера ИРПС на базе ВВ51/ВВ51А
Существуют различные варианты построения буферных схем, в которых может быть предусмотрена также оптронная развязка линии. На рис. 3.35 приведено два наиболее простых варианта. Буферная логика обеспечивает передачу логического 0 высоким уровнем напряжения +12 В (Rоuт = 1,3 кОм) и логической 1 низким уровнем—12 В (Rout = 300 Ом), что удовлетворяет требованиям на стык С2 (стандарт RS = 232 = C). В схемах предусмотрена возможность устранения существующей инверсии во входных и выходных каналах последовательной связи, что может быть полезно при организации межмашинной связи магистрального типа. В этом случае для управления локальной сетью применяется магистраль с последовательным протоколом передачи. Доступ к магистрали регулируется с помощью специального маркера доступа, который передается от одного абонента сети к другому.
Для инициализации адаптера используется процедура SAINI, которая программирует ПСА для работы в асинхронном режиме с 7-битовым полем данных, контролем четности и двумя стоп-битами. Фактор скорости устанавливается равным 1:16. Процедура записывается следующим образом:
SAINI: PUSH PSW
XRA А ;Перевод ПСА
OUT PCI + 1 ;в состояние реагирования
OUT PCI + 1 ;на команду RESET
OUT PCI + 1
MVI A, 40H ;Сброс
OUT PCI + 1
MVI A, OFAH ;MI
OUT PCI + 1
MVI A, 5 ;BB разрешен
OUT PCI + 1
CALL SAI ;Условный ввод
POP PSW
RET
Перед выдачей командного слова выбора режима MI микросхема приводится в исходное состояние. Для этого в управляющий порт PCI + 1 выдается три нулевых байта и команда сброса. Предварительная выдача трех нулей обеспечивает перевод БИС ВВ51 независимо от ее текущего состояния в рабочий режим, в котором она сможет правильно отреагировать на команду программного сброса (код 40Н). Команда с кодом 5 разрешает одновременную работу приемника и передатчика. После разрешения работы следует выполнить холостой цикл ввода по готовности, уничтожающий ложный символ, который может возникнуть в приемнике адаптера во время процедуры инициализации.
Процедуры условного ввода SAI и условного вывода SAO можно построить аналогично процедурам PAI и РАО, обеспечив единый механизм обращения к ним со стороны ПО.
Процедура условного ввода:
SAI: IN PCI + 1 ;Ввод SW
ANI 2 ;Выделение флажка R´RDY
RZ ;Возврат, если не готов
IN PCI ;Иначе—ввод данных
RET
Процедура условного вывода:
SAO: PUSH В
MOVВ, А ;Сохранить данные вывода
IN PCI + 1 ;Ввод SW
ANI 1 ;Выделение флажка Т´RDY
MOVА, В ;Восстановление данных
POP В
RZ ;Возврат, если не готов
OUT PCI ;Иначе—вывод данных
RET
Процедуры SAI и SAO предполагают передачу символа через аккумулятор. Признаком выполнения ввода или вывода очередного символа служит сброшенный флажок нуля Z в слове состояния программы PSW микропроцессора.
Три вышеприведенных программы служат примером простейшего драйвера ВВ через ИРПС-адаптер. На его основе можно построить более сложные процедуры ВВ, такие, как ввод символа с занятием цикла и эхо-ответом или вывод байта в шестнадцатеричном формате HEX и т. д.
Скорость передачи определяется частотой тактовых импульсов, формируемых генератором скорости передачи. При этом не следует забывать о дополнительном делении частоты на 16 внутренними средствами ПСА. Реализация генератора будет рассмотрена в § 3.7.
Система прерываний
Понятие прерывания центрального процессора. В тех случаях, когда в МС существует дефицит времени ЦП, а периферийные устройства работают медленно, используется их обслуживание по прерываниям. Например, алфавитно-цифровое печатающее устройство (АЦПУ) обеспечивает печать символа с номинальной скоростью 100 знаков в секунду или 1 знак за 10 мс. Если предположить, что цикл обращения к памяти составляет 2 мкс, то для вывода одного знака ЦП потребуется около 0,1 мс (см. процедуру РАО ИРПР-адаптера). Следовательно, из 10 мс (интервал вывода одного знака) 9,9 мс ЦП простаивает, ожидая готовности АЦПУ к приему нового знака.
Эффективность МС может быть существенно повышена, если отказаться от малопроизводительного ожидания готовности на программном уровне и передать функцию специальным аппаратным средствам. В это время ЦП может выполнять некоторую полезную работу, связанную с обработкой данных или обслуживанием других ПУ.
При готовности приступить к очередной операции ВВ устройство посылает в ЦП запрос на прерывание, по получении которого он временно приостанавливает выполнение текущей программы и переходит на обслуживание ПУ. После этого ЦП возвращается к прерванной программе, продолжая ее с момента приостанова. Обслуживание прерываний осуществляется в незаметном для основной программы режиме, поэтому их наличие прямо не влияет на работу последней, за исключением времени ее исполнения. Следует отметить, что обслуживание прерываний приводит к изменению общего состояния МС, что в дальнейшем может сказаться и на поведении основной программы, однако такое воздействие прерываний не будет прямым.
Обслуживание ВВ по прерываниям (рис. 3.36) является альтернативой программно-управляемому обмену (см. рис. 3.4). Если при чисто программном управлении как начало процедуры, так и непосредственное ее исполнение находятся под управлением программы, то обслуживание по прерываниям инициируется аппаратными средствами. Совокупность этих средств, команд и программ их обслуживания называется системой прерываний. Прежде чем обслуживание ПУ по прерываниям будет начато, система прерываний должна быть настроена на это. Функция запуска МС возлагается на специальную процедуру инициализации обслуживания. После окончания работы с ПУ также может потребоваться специальная процедура, которая завершит эту работу.
Рис. 3.36. Обслуживание ввода-вывода по прерываниям
Для того чтобы прерванная программа могла быть продолжена после обслуживания очередного запроса на прерывание с того места, на котором она была приостановлена, состояние ЦП должно быть восстановлено. Сохранность состояний сигналов управления в аппаратуре обеспечивается тем, что переход к обработке прерывания и возврат к прерванной программе осуществляется в строго определенные моменты времени, когда состояния этих сигналов однозначны и известны, т. е. в конце очередного командного цикла перед фазой выборки последующего. Состояние программно-доступных регистров может быть сохранено в памяти МС, а затем восстановлено непосредственно перед возвратом в прерванную программу. Этот процесс называется контекстным переключением и выполняется как программными, так и аппаратными средствами.
Организация радиальной системы прерываний. Физический интерфейс наиболее простой системы прерываний может быть представлен единственной линией IRQ (Interrupt Request), высокий уровень напряжения на которой воспринимается как запрос на прерывание. Для программиста такая система прерываний представляется в виде отдельной точки входа в процедуру обслуживания. Всякий раз, когда ЦП воспринимает запрос на прерывание, он активизирует процедуру обслуживания, передавая ее стартовый адрес в PC. Чтобы не потерялось старое содержимое PC, которое является адресом возврата в прерванную программу, оно должно быть автоматически где-то сохранено. Лучше всего для этой цели использовать системный стек, тогда возврат к прерванной программе будет заключаться в передаче управления по адресу на вершине стека. В этом же стеке может храниться и текущий контекст ЦП. При этом контекстные переключения выполняются с помощью обычных команд типа PUSH и POP.
Процесс обработки запроса на прерывание во многом подобен процессам вызова и возврата из подпрограмм. Однако в первом случае вызов осуществляется командой CALL, которая сформирована и подставлена в общую командную последовательность с помощью аппаратуры системы прерываний, во втором случае команда CALL действительно присутствует в последовательности инструкций. По этой причине запросы на прерывания часто называют аппаратными вызовами подпрограмм.
Для увеличения числа одновременно обслуживаемых источников прерываний в систему вводится несколько линий с фиксированными стартовыми адресами подпрограмм обслуживания. Примером такой системы, получившей название радиальной, служит подсистема ВМ85А, организованная четырьмя входами: TRAP, RST 7.5, RST 6.5, RST 5.5 (см. табл. 2.7).
Обычно часть радиальных линий резервируется для приема внутренних прерываний ЦП, отражающих его критические состояния и требующих немедленного обслуживания. Остальные отводятся для приема внешних (по отношению к ЦП) запросов. В приведенном примере все четыре линии являются внешними.
Введенный при рассмотрении радиального запроса динамический вход IRQ (рис. 3.37, а) имеет низкую помехоустойчивость, так как любая помеха на линии может вызвать прерывание. Повышение помехоустойчивости связано с введением линий статического типа (рис. 3.37, б), от которых запрос на прерывание воспринимается исключительно по уровню. Однако в этом случае возникает проблема блокировки запроса с момента его подтверждения (иначе возможен повторный захват уже принятого к обслуживанию запроса), которая решается с помощью триггера блокировки IS (In Service), устанавливаемого при подтверждении прерывания. Сброс триггера выполняется программными средствами с помощью операции EOI (End of Interrupt) после снятия принятого к обслуживанию запроса. Существует также комбинированный тип входа, когда после фиксации запроса по перепаду требуется его подтверждение уровнем напряжения (рис. 3.37, в). Все типы входов находят самое широкое применение в практических системах прерываний. Так, в радиальной системе 8085А линия RST 7.5 является входом динамического типа, RST 6.5 и RST 5.5—статического, TRAP—комбинированного.
Рис. 3.37. Типы входов для приема запросов на прерывания:
а—динамический; б—статический; в—комбинированный
Практически во всех системах прерываний предусмотрен дополнительный механизм программно-управляемой блокировки запросов, который реализуется с помощью набора флажков, разрешающих или запрещающих восприятие запросов на прерывания. Эти флажки либо входят в состав PSW, либо упаковываются в отдельный регистр маски. Следует отметить, что маска не влияет на фиксацию запроса по динамическому входу триггером IR (Interrupt Request), однако дальнейшее его прохождение блокируется. В случае статической линии роль маски может выполнять триггер IS, например вход INT, и триггер INTE в МП ВМ80.
Контекстные переключения, выполняемые командами PUSH и POP, могут занимать значительное время. Для его сокращения вводятся специальные команды PUSHA и РОРА (МП типов 80186 и 80286), которые сохраняют в стеке и восстанавливают сразу весь (А-А11) набор регистров МП. Аналогично расширяют и функцию командной пары CALL, RET, преобразуя ее к новой взаимно согласованной паре TRAP, RTI (МП типа К1801ВМ1) или INT, IRET (МП типов К1810ВМ86/ВМ88, 80186, 80286), которая одновременно с PC сохраняет или восстанавливает PSW а в некоторых случаях и другие регистры МП. Еще один механизм сохранения контекста связан с переключением регистровых наборов, как это выполнено в МП Z80 и однокристальных МК серии К1816.
В зависимости от числа подтвержденных запросов, одновременно находящихся на обслуживании, различают одно- и многоуровневые системы прерываний. В одноуровневой системе в каждый момент времени допускается лишь один подтвержденный запрос. Обработка всех других запросов откладывается до окончания текущего обслуживания. Блокировка запросов в одноуровневой системе осуществляется общим для всех триггером IS, фиксирующим факт обслуживания прерывания. Триггер устанавливается любым сигналом подтверждения прерывания INTA и сбрасывается командой окончания прерывания EOI. Примером одноуровневой системы с двумя источниками запросов служит система прерываний однокристального МК К1816ВЕ048.
Если несколько устройств одновременно запросили обслуживание, система прерываний выбирает одно из них. Выбор осуществляется на основании приоритета каждого из запросов, который отражает важность и срочность его обслуживания. При расстановке приоритетов учитываются: частота обслуживания запроса, длительность процесса обслуживания, последствия задержки обслуживания и др.
Рассматривая организацию приоритетов, следует выделить систему с фиксированными линейно упорядоченными приоритетами, которая является наиболее практичной и естественной.
Повышение гибкости системы приоритетов связано с их динамическим изменением по заданному алгоритму или при программировании. Однако в каждый отдельный момент времени все приоритеты строго упорядочены, что обеспечивает однозначный выбор одного из них.
Широко применяемой системой динамически изменяемых приоритетов является циклическая. В ней после каждого очередного обслуживания запроса происходит циклический сдвиг приоритетов с присвоением нижнего только что обработанному. Такая схема приводит к равномерному распределению «внимания» ЦП между всем множеством запросов и может быть использована при обслуживании группы одинаковых устройств, когда выделение какого-либо из них нежелательно.
Многоуровневая система разрешает многократные (по числу уровней) прерывания одних процедур обслуживания другими. Для этого каждому уровню ставится в соответствие некоторое подмножество запросов из их общего числа и строго упорядоченный приоритет. Процедуры обслуживания некоторого уровня могут быть прерваны лишь запросами более высокого уровня. Фоновую работу ЦП, связанную с самым нижним приоритетом, может прервать любой запрос.
Для работы многоуровневой системы прерываний необходимо знать приоритет текущей процедуры, который соответствует приоритету процессора. Приоритеты запросов сравниваются с приоритетом процессора и, если последний выше, прерывают его работу. При подтверждении прерывания приоритет процессора повышается, принимая значение, равное приоритету запроса. Для разрешения конфликта внутри группы запросов одного уровня существует вторичная система приоритетов.
Примером МС с двухуровневой системой прерываний и пятью источниками запросов служит однокристальный МК К1816ВЕ51. В нем всем источникам программным методом назначается первый или второй уровень. Текущий приоритет процессора отображается с помощью двух IS-триггеров. Вторичная система приоритетов имеет фиксированную структуру и охватывает все пять источников.
Примером 8-уровневой системы прерываний с восемью источниками запросов является двухкристальная пара ВМ80+ВН59, запрограммированная для работы в режиме строгого вложения приоритетов. Здесь каждому уровню соответствует единственный источник запросов, поэтому необходимость во вторичных приоритетах отпадает. Для отображения приоритета процессора используется 8-разрядный регистр IS БИС КР580ВН59.
Расширение радиальной системы прерываний методом поллинга. Каждая внешняя радиальная линия IRQ с фиксированным вектором прерывания может быть превращена в магистраль, которая по схеме «монтажное ИЛИ» объединяет запросы от нескольких источников прерываний. Однако в этом случае после принятия общего запроса к обслуживанию возникает задача идентификации источника, выставившего запрос, и передачи управления на соответствующую процедуру обслуживания, которая решается только программными методами с помощью специальной процедуры POLL, называемой поллингом.
Функция поллинга состоит в последовательном опросе состояния всех устройств, связанных с данной линией запросов (рис. 3.38), и выявлении готового к обслуживанию. При опросе используются стандартные подпрограммы проверки готовности, которые входят в драйверы устройств:
POLL: —
—
CALL STATUS ;Проверка готовности
JNZ SERVICE ;и переход, если готов
Рис. 3.38. Организация обслуживания по полингу
Конкретный вид процедур проверки готовности STATUS и обслуживания SERVICE зависит от типа ПУ. В подпрограмме предполагается, что признак готовности возвращается через флажок нулевого результата Z. Простейший вид подпрограммы для портов условного ВВ следующий:
STATUS: IN SW ;Ввод слова состояния
ANI RDY ;Выделение флажка готовности
RET
Опрашиваемый подпрограммой STATUS флажок готовности RDY обычно является и флажком потенциального запроса на прерывание IRQ. После обслуживания устройства (операция ВВ для портов) флажок RDY сбрасывается, автоматически снимая запрос на обслуживание. Затем может быть дано разрешение на прием новых запросов от устройств, которые к данному моменту уже выставлены. Однако такая схема действительна только для входов статического типа. При использовании динамических входов ряд новых запросов, пришедших от ПУ во время обслуживания, может быть потерян. Для их восстановления в конце текущего цикла обслуживания следует повторить процедуру POLL. Возврат к прерванной программе разрешается только после обслуживания всех устройств.
Процедура опроса состояния готовности может потребовать значительных временных затрат. Для их сокращения подпрограммы STATUS должны быть оптимизированы, а возможно, и объединены в единую подпрограмму. Однако это приведет к потере гибкости системы прерываний.
Организация векторной системы прерываний. Повышение эффективности системы прерываний связано с параметризацией команды CALL и передачей функции генерации этого параметра, названного вектором прерывания, внешним средствам. Интерфейс векторного запроса расширен шиной VECT для ввода вектора прерывания. Ее физическое совмещение с шиной данных потребовало включения в системную магистраль новой командной линии подтверждения прерывания . Временные диаграммы цикла ввода вектора прерывания аналогичны диаграммам цикла чтения памяти с заменой строба на строб .
Выпускаемые промышленностью МП осуществляют как радиальные так и векторные прерывания (табл. 3.5). При этом вектор может представлять полную команду CALL (МП типов ВМ80/8085А), ее адресную часть, отдельное поле полного адреса и т. д. В более совершенных системах векторного прерывания (МП типов ВМ86/ВМ88, К1801ВМ1) введен уровень преобразования физического вектора в стартовый адрес процедуры обслуживания, который выполняется с помощью таблицы прерываний IDT (Interrupt Descriptor Table). При этом вектор рассматривается как индекс таблицы, которая обычно размещается в системной памяти начиная с нулевого адреса. В новом МП 80286 [52] введен специальный базовый регистр IDTR, позволяющий размещать таблицу прерываний в любой части адресного пространства памяти.
Таблица 3.5
Тип микропроцессора | Запросы | Тип микропроцессора | Запросы | |||
векторного прерывания | с фиксирован-ным вектором | векторного прерывания | с фиксирован-ным вектором | |||
КР580ВМ80 | INT | Нет | К1816ВЕ51 | — | INT0 | |
К1821ВМ85А | INTR | TRAP | INT1 | |||
RST 7.5 | К1810ВМ86 | INTR | NM1 | |||
RST 6.5 | К1801ВМ1 | VIRQ | IRQ1 | |||
RST 5.5 | IRQ2 | |||||
INT | IRQ3 | |||||
INTR | NMI |
Таблица IDT кроме стартового адреса может содержать дополнительную информацию, например начальное состояние PSW. В состав слова состояния программы обычно входит набор наиболее важных флажков и полей, управляющих системой прерываний, в частности приоритет процессора. Подтверждение прерывания автоматически сменяет их состояние, подготавливая систему прерываний к новому уровню обработки.
Аналогичным преобразованиям подвергаются и запросы радиальных прерываний. Обычно они соотносятся с некоторыми векторными прерываниями и называются запросами с фиксированными векторами.
Используя схему векторного прерывания с одним и тем же вектором легко получить линию запросов радиального типа. Так, для процессора на базе МП ВМ80 (см. рис. 2.17) не потребуется никаких вспомогательных схем. Действительно, при каждом стробе МП будет принимать состояние свободной шины данных. Для приведенной на рис. 2.17 схемы ЦП с прямой шиной, нагруженной резисторами, подключенными к источнику питания +5 В, цикл INTA закончится вводом вектора 0FFH что соответствует команде RST 7. В результате этого управление будет передано на стартовый адрес 0038Н. В случае инверсной шины ввод ее свободного состояния содержит код 00Н соответствующий команде NOP.
Существует более простой метод ввода вектора, эквивалентного RST 7. Для этого следует свободный выход системного контроллера ВК28/ВК38 подключить через резистор 1 кОм к источнику питания +12 В. Контроллер сам во время циклов INTA будет генерировать команду RST 7 на внутреннюю шину данных МП ВМ80 независимо от состояния системной шины данных.
На основе вышеизложенной методики можно легко построить поллинговые расширения системы прерываний с одним уровнем. Для этого следует флажок разрешения прерывания INTE (вариант флажка IS) устанавливать только по окончании обслуживания. Разрешение прерываний выполняется командой EI (вариант операции EOI) перед возвратом RET. Особенность команды EI состоит в том, что прерывания разрешаются только после исполнения последующего командного цикла. Это предотвратит возможное переполнение стека при серии плотно следующих друг за другом запросов. Задача построения процедуры POLL облегчается тем, что линия INTR является статической.
Другой способ расширения системы прерываний состоит в проектировании внешних программно-управляемых средств которые собирают вторичные (периферийные) радиальные запросы IRQ1—IRQN и формируют из них внутрисистемное векторное прерывание. Существуют два основных подхода при решении данной задачи. Первый подход—передача этих функций непосредственно ПУ и, следовательно, решается методом децентрализованного управления. Этот подход нашел свое практическое воплощение в МПК БИС, ориентированных на работу с Q-шиной. Второй подход состоит в передаче функции формирования векторного прерывания специальному устройству (рис. 3.39)— контроллеру прерываний. Сам контроллер прерываний может рассматриваться как расширение процессора, по этой причине его часто называют сопроцессором обработки прерываний. Данный подход удовлетворяет стандарту на системный интерфейс периферийных БИС типа Microbus, который предусматривает генерацию исключительно радиальных запросов.
Рис. 3.39. Подключение контроллера прерываний к центральному процессору
Рис. 3.40. Шлейфовая структура системы прерываний:
а—логика опроса периферийных устройств;
б—схема подключения к центральному процессору
Простейший вариант построения внешних средств формирования вектора средствами ПУ носит ярко выраженный шлейфовый характер (рис. 3.40). В нем копируется логика работы программы поллинга, перенося ее на аппаратные средства. Каждый запрос шлейфа может быть индивидуально замаскирован с помощью программно-доступного по записи триггера маски MSK. Обычно этот триггер входит в состав CW устройства и доступен для обратного контроля через SW. Вектор прерывания устройства может быть как фиксированным, так и программно-управляемым. При использовании шлейфа совместно с ЦП на базе ВМ80 вектор имеет вид 11NNN111, соответствующий команде RST N, N = 0—7.
Основной недостаток шлейфовой структуры—трудность управления приоритетами. Устройства, стоящие в INTA-цепочке ближе к ЦП, обладают более высоким приоритетом, поэтому изменение приоритетов сводится к изменению последовательности опроса, для чего может потребоваться специальная логика арбитража. Последняя может выполняться как централизованными, так и децентрализованными средствами.
Дата добавления: 2019-02-07; просмотров: 813;