МПС

Программируемые контроллеры прерываний (Лекция)

ПЛАН ЛЕКЦИИ

1. Вложенные прерывания с фиксированными приоритетами входов

2. Прерывания с круговым (циклическим) приоритетом

3. Специальное маскирование

4. Структура программируемого контроллера прерываний

 

При работе микропроцессорной системы в ней или внешней среде происходят события, требующие немедленной реакции, что обеспечивается прерыванием выполняемых программ и переходом к обслуживанию запросов прерывания. Аппаратно прерывания обслуживаются специализированными ИС, простейшими из которых являются блоки приоритетного прерывания (Intel 8214, К589ИК14 и др.). Эти блоки решают несложные задачи обработки нескольких векторных прерываний при фиксированных приоритетах запросов. Более сложные задачи решаются программируемыми контроллерами прерываний (ПКП), в частности ИС Intel 8259A, К1810ВН59. Эти контроллеры непосредственно реализуют прерывания с обработкой 8 запросов. С помощью нескольких ПКП легко организуются устройства обработки до 64 запросов. Контроллеры обеспечивают различные виды прерываний. Система прерываний должна выдать команду перехода к той подпрограмме обслуживания, которая соответствует признанному запросу. Контроллер ВН59 обеспечивает различные виды прерываний:

 

1. Вложенные прерывания с фиксированными приоритетами входов

 

Имеются 8 входов запроса прерывания IR7...IR0 (от английского Interrupt Request). Высший приоритет имеет вход IR0, низший - у входа IR7. Вложенность - возможность прерывания подпрограммы обслуживания запроса другой подпрограммой с более высоким приоритетом, которая, в свою очередь, также может быть прервана более приоритетной подпрограммой и т.д. Возможность вложенных прерываний обеспечивается введением команды EI (Enable Interrupt) в подпрограммы обслуживания прерываний. Прерывания с фиксированными приоритетами реализуются просто, но запросы неравноправные и при интенсивном поступлении запросов с высокими приоритетами запросы с низкими приоритетами могут вообще не получить обслуживания.

 

2. Прерывания с круговым (циклическим) приоритетом

В этом случае у каждого входа тоже есть свой приоритет, но после обслуживания он изменяется в круговом порядке так, что обслуженный вход получает низший приоритет. Такая дисциплина обслуживания характерна для ситуации с источниками, не имеющими преимуществ друг перед другом. Запрашивающее обслуживания устройство будет ждать в худшем случае до того, как 7 других источников будут обслужены по одному разу. Работу с круговым приоритетом можно иллюстрировать примером (Рисунок 45), в котором регистр запросов вначале содержит 6-й и 4-й запросы, т.е. наивысший приоритет имеет 4-й запрос, который и будет обслужен. После обслуживания приоритетность входов изменяется как бы вращением кольца, причем номер 7 с низшим приоритетом становится на 4-ю позицию только что обслуженного запроса. Позицию низшего приоритета называют дном приоритетного кольца. Контроллерами реализуется маскирование запросов, когда запрещается их восприятие с помощью соответствующих битов регистра маски. При этом могут быть реализованы разные ситуации. Обычное маскирование. Маскирование какого-либо запроса ведет и к маскированию других запросов с меньшими приоритетами.

 

3. Специальное маскирование

                 Происходит блокирование восприятия только одного входа запросов при отсутствии маскирования младших по приоритету. После снятия маски обслуживание запросов становится возможным.

 

Рис. Пример обслуживания запросов прерывания с круговым приоритетом

 

Включение контроллера прерываний в систему показано на рисунке ниже. Контроллер принимает запросы от внешних устройств, определяет, какой из незамаскированных запросов имеет наивысший приоритет, сравнивает его с приоритетом текущей программы и при соответствующих условиях выдает запрос прерывания INT для МП. После подтверждения запроса МП должен получить от контроллера информацию, которая укажет на подпрограмму, соответствующую данному ВУ, т.е. вектор прерывания.

 

Рис. Схема включения контроллера прерываний в микропроцессорную систему

 

4. Структура программируемого контроллера прерываний

Структура ПКП Intel 8259A представлена на рисунке 47. В английской терминологии ПКП называют PIC, т.е. Programmable Interrupt Controller. Запросы прерываний от ВУ поступают на регистр запросов IRR, сохраняющий запросы до их принятия на обслуживание. Биты регистра IRR сопоставляются с битами регистра масок IMR (Interrupt Mask Register).

 

Рис. Структура программируемого контроллера прерываний

 

Биты регистра масок действуют также на работу схемы определения приоритетов и регистр обслуживания ISR, так что маскирование может быть осуществлено не только на стадии приема запросов, но и на более поздних стадиях их обработки.

Если приоритет запроса выше текущего приоритета, то при вложенных прерываниях формируется сигнал INT для процессора. При поступлении от процессора сигнала подтверждения прерывания INTA принятый запрос переходит в регистр обслуживания ISR (Interrupt Servicing Register) и сбрасывается в регистре запросов IRR. Установка бита ISR запрещает прерывания от всех других запросов с меньшими приоритетами. Подпрограмма обслуживания прерывания завершается сбросом бита регистра ISR.

Можно также обслуживать прерывания по результатам опроса источников запросов, когда сигнал INT не используется, и процессор сам производит поочередный опрос входов, начиная со старшего по приоритету. Обнаружение запроса ведет к его обслуживанию с переходом на соответствующую подпрограмму.

Буфер ШД восьмиразрядный, двунаправленный, с третьим состоянием. При программировании контроллера через него передаются управляющие слова, и считывается состояние регистров, а также код запроса, выработавшего сигнал INT. При обслуживании прерывания по сигналу INTA через буфер ШД в шину данных системы выдается трехбайтная команда вызова подпрограммы CALL.

Смысл сигналов ,  и , ясен (совпадает со смыслом этих сигналов в описанных выше устройствах). Сигнал  поступает от процессора в виде трех последовательных импульсов, для выдачи контроллером кода команды CALL, младшего байта адреса начала подпрограммы и старшего байта этого адреса. Первый импульс  сбрасывает запрос в соответствующем бите IRR.

Сигналы IR0...IR7 - входы запросов прерывания (Interrupt Requests), A0- младший разряд адреса, показывает, к какому регистру управляющих слов (УСИ или УСО) обращается процессор. Сигналы CAS2-0 связаны с работой контроллера в групповой схеме, образуют выходную шину для ведущего контроллера и входную для ведомых. Сигнал () двухфункциональный, как  он определяет, является ли контроллер ведущим или ведомым в групповой схеме, как  используется в так называемом буферизованном режиме для разрешения выхода на шину системы, т.е. для управления выходными буферами участников обмена.