Каскадное включение контроллеров приоритетных прерываний

Для расширения количества запросов прерываний, которые могут быть подключены к микропроцессору, в микропроцессорной системе может быть использовано несколько КПП. Схема каскадного подключения двух контроллеров представлена на рис. 7.6.


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

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

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

Регистры КПП делятся на 2 группы: регистры инициализации ICW1-ICW4 и операционные регистры OCW1-OCW3.

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

Регистр ICW1 - управление микросхемой:

  • настраивает контроллер на восприятие сигналов запроса по низкому уровню или заднему фронту;
  • определяет, используется в МПС единственный КПП или применяется их каскадное включение;
  • определяет порядок загрузки приказов инициализации. Необходимость этого обусловлена тем, что в пространстве ввода/вывода каждому контроллеру выделено всего 2 адреса. Так, в стандартной конфигурации персональной ЭВМ ведущему контроллеру выделены адреса 20h и 21h, а ведомому - A0h и A1h. В то же время каждый контроллер имеет в своем составе 7 регистров, к которым должен быть обеспечен программный доступ. В частности, при инициализации необходимо занести информацию в 4 регистра ICWi.

Регистр ICW2 - регистр типа прерывания. При инициализации в 5 его старших разрядов заносится некоторая константа. В процессе обработки запросов прерываний в 3 младшие разряда этого регистра заносится номер входа IRQi, по которому принят запрос, подлежащий обработке (рис. 7.7):


Рис. 7.7. Формат регистра типа прерывания ICW2

В персональной ЭВМ в регистр ICW2 ведущего контроллера при инициализации заносится константа 00001b, а в ведомый - константа 01110b. Поэтому типы всех прерываний, запросы от которых поступают через ведущий КПП, лежат в диапазоне 00001000b-00001111b (08h-0Fh), а через ведомый - в диапазоне 01110000b-01110111b (70h-77h). Распределение входов прерываний в стандартной конфигурации персональной ЭВМ представлено в табл. 7.1.

Таблица 7.1. Распределение входов запросов прерываний в персональной ЭВМ
Контроллер IRQ Тип Назначение Начальное состояние маски
Ведущий контроллер Таймер
Клавиатура
A Ведомый КПП
B Последовательный порт 2 (COM2)
C Последовательный порт 1 (COM1)
D Последовательный принтер (LPT2)
E НГМД
F Параллельный принтер (LPT1)
Ведомый контроллер Часы реального времени
Резерв. Программно переназначен на IRQ2
Резерв
Резерв
Мышь
Ошибка сопроцессора
НЖМД
Резерв

Регистр ICW3 - регистр управления ведомым. Имеет различное назначение в ведущем и ведомом КПП. В ведущем КПП устанавливаются единицы в разрядах, соответствующих линиям с подключенными ведомыми КПП. В персональной ЭВМ его значение имеет вид 00000100b. В ведомом КПП пять старших разрядов этого регистра установлены в 0, а в трех младших кодируется номер входа ведущего КПП, к которому подключен данный ведомый. В персональной ЭВМ его значение имеет вид 00000010b.

Регистр ICW4 - регистр управления режимом. Определяет, является данный КПП ведущим или ведомым, тип окончания прерывания, то есть кем должен сбрасываться бит запроса в регистре обслуживания прерывания ISR, и другие параметры работы.

Так как для КПП определено только 2 допустимых состояния (ведущий или ведомый), максимальная конфигурация контроллеров приоритетных прерываний состоит из 1 ведущего и 8 ведомых КПП. Это обеспечивает возможность подключения к входу INT микропроцессора до 64 запросов прерываний.

Содержимое операционных регистров изменяется в процессе работы КПП записью в них новой информации.

Регистр OCW1 ( IMR ) - регистр маски прерывания. Код 1 в разряде i запрещает, а код 0 - разрешает обработку запроса прерывания по входу IRQi.

Регистр OCW2 - определяет один из трех возможных порядков изменения приоритетов запросов прерываний:

  • приоритеты не меняются в процессе работы КПП;
  • приоритеты меняются циклически: после обработки очередного запроса его приоритет становится самым низким, а приоритеты остальных запросов циклически сдвигаются;
  • процессе работы КПП какому-либо запросу можно задать наивысший приоритет, приоритеты остальных запросов при этом циклически сдвигаются.

В персональной ЭВМ установлено постоянство приоритетов запросов прерываний, при этом запрос IRQ0 имеет самый высокий приоритет.

Так как здесь используются два каскадно включенных контроллера (см.рис. 7.6), приоритеты запросов прерываний IRQi имеют вид, представленный на рис. 7.8.


Рис. 7.8. Приоритетность запросов прерываний IRQi в персональной ЭВМ

Регистр OCW3 - управляет переводом контроллера в режим неприоритетного обслуживания и считыванием содержимого регистра запросов IRR и регистра обслуживанияISR. В режиме неприоритетного обслуживания микропроцессор получает от КПП только сигнал запроса прерывания, после чего микропроцессор должен программно считать содержимое регистров IRR и ISR и по своим алгоритмам определить, какой из имеющихся запросов прерываний принять к обслуживанию.

Краткие итоги. В лекции рассмотрена классификация прерываний, порядок обработки прерываний в реальном и защищенном режимах работы микропроцессора, структура и функционирование контроллера приоритетных прерываний.