Одноуровневая система прерывания. Аппаратное и программное обеспечение.
Основным недостатком программно-управляемого ввода-вывода является нерациональное использование машинного времени микропроцессора. Оно, в основном, тратится на циклы ожидания изменений во входном коде при поддержке портов безусловного ввода или на циклы ожидания готовности порта при поддержке портов условного ввода-вывода. Число циклов ожидания может быть очень большим из-за низкой скорости работы большинства внешних устройств.
Полностью исключить циклы ожидания и связанные с ними потери машинного времени позволяет ввод-вывод по прерываниям. Порты, использующие этот вид обмена, не имеют средств для пересылки в микропроцессор сигнала готовности по шине данных. На основе сигналов готовности они формируют запросы на обслуживание IRQ.
Функциональная схема включения таких портов в микропроцессорную систему с учебным микропроцессором представлена на рис.4.17. Эта схема реализует так называемую одноуровневую векторную систему прерываний. Она включает в себя порты 1…N, реализующие асинхронный ввод-вывод на внешнем участке обмена, элемент «ИЛИ», приоритетный шифратор и порт ввода вектора прерывания.
Пусть в исходном состоянии все запросы на обслуживания IRQ1…IRQN равны нулю, то есть отсутствуют. Пусть далее появляется запрос от порта ввода No1 IRQ = 1. Этот запрос через элемент «ИЛИ» передается на вход запроса прерываний INT процессора. Процессор, реагируя на этот запрос, выполняет следующие действия:
- проверяет, разрешены ли прерывания. Если они запрещены, никаких других действий по обслуживанию прерывания не производится. В микро-ЭВМ продолжается выполнение основной программы;
- запрещает прерывания;
- завершает выполнение текущей команды;
- переходит в режим приема кода операции с шины данных;
- блокирует с помощью системного контроллера выдачу сигнала MEMR шины управления и формирует на отдельной линии этой шины сигнал INTA – «подтвеждение прерывания»;
- принимает с шины данных код команды рестарта RST 1;
- выполняет эту команду, то есть записывает в стек адрес следующей по порядку команды основной программы и передает управление по адресу 0008H, с которого должна начинаться программа ввода из порта 1;
- выполняет всю программу ввода и завершающую ее команду RET. По этой команде из стека восстанавливается содержимое счетчика команд, которое было там до рерывания, то есть управление передается очередной команде основной программы.
Рис.4.17.Функциональная схема одноуровневой векторной системы прерываний
Рис.4.18.Типовая блок-схема программы обслуживания прерывания
Каждый из портов этой системы имеет свою собственную программу обслуживания порта, вызываемую одной из команд вида RST X. Конкретный вариант команды рестарта называют вектором соответствующего прерывания. Вектор формируется приоритетным шифратором из запросов IRQ1… IRQN и выставляется на шину данных по сигналу . Использование приоритетного шифратора позволяет обслуживать одновременно поступившие запросы от разных портов в соответствии с заранее определенной системой приоритетов.
Программа обслуживания прерывания в одноуровневой векторной системе обычно строится по типовой блок-схеме (рис.4.18).
При практическом использовании прерываний следует иметь в виду особенность исполнения команды разрешения прерываний EI. Она исполняется не в момент получения ее микропроцессором, а лишь после выполнения следующей команды. В нашем случае это означает, что прерывания вновь будут разрешены лишь после возврата в основную программу.
В одноуровневой системе все запросы на прерывания практически равнозначны. Приоритет сказывается лишь при одновременности поступления запросов.
Иногда удобнее иметь многоуровневую систему прерываний, в которой запросы с более высоким приоритетом могут прерывать работу программ обработки прерываний, имеющих низшие приоритеты. Векторную многоуровневую систему прерываний реализуют с помощью специализированной БИС – контроллера приоритетных прерываний.
Следует отметить, что ввод-вывод по прерываниям, в конечном итоге, также обеспечивает асинхронную передачу кодов на внутреннем участке обмена. Роль недостающего сигнала асинхронного протокола (STB) или (ACK) здесь выполняет сформированный системой вектор прерывания.
Дата добавления: 2016-06-13; просмотров: 2202;