Схема контроллера прерываний. Назначение основных регистров. Порядок программирования

14. Контроллер прерываний i8259A

Общая функциональная схема контроллера прерываний.

Основные функции контроллера:

1. Фиксация запросов на прерывания от восьми внешних источников.

2. Программное маскирование поступающих запросов.

3. Присвоение фиксированных или циклически изменяемых приоритетов входам контроллера, на которые поступают запросы.

4. Определение адреса и инициация вызова процедуры обработки поступившего аппаратного прерывания.

Назначение основных устройств и регистров ПКП.

- контроллер (устройство) управления;

- схема каскадирования;

- регистр фиксации поступления запросов на прерывания IRR;

- регистр маскирования запросов на прерывания IMR;

- регистр состояния исполнения запроса на прерывание ISR;

- регистр управляющего слова ICW;

- регистр операционного управления OCW.

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

В состоянии настройки контроллер принимает управляющие слова инициализации (Initialization Command Words, ICW).

В состоянии обслуживания - операционные управляющие слова (Operation Control Words, OCW).

Порядок программирования ПКП:

Для ввода информации в ПКП используются 2 порта ввода-вывода. Порт с четным адресом (20h/А0h) и порт с нечетным адресом (21h/А1h). Через эти порты могут быть переданы 4 слова инициализации, (ICW1- ICW4), задающие режим работы ПКП, и 3 операционных управляющих слова (слова рабочих приказов OCW1 - OCW3).

В порт с четным адресом выводятся ICW1, OCW2 и OCW3, а в порт с нечетным адресом – ICW2, ICW3, ICW4 и OCW1.

Формат слов инициализации

Формат ICW1

Формат ICW2

Величина смещения номера вектора от номера аппаратного прерывания

Формат ICW3

Для ведущего контроллера показывает к каким входам IRQn подключен ведомый (каскадируемый) контроллер –

для ведущего контроллера (2)

Для ведомого контроллера, работающего на уровне 1

для ведомого контроллера (1)

Формат ICW4

завершение инициализации

0 – тип центрального процессора

1 – режим автоматического завершения

2 – равен 1 для ведомого контроллера

3 – режим буферизации

4 – вложенный режим определения приоритетов ПКП

В процессе работы ПКП может быть перепрограммирован:

- допускается маскировать и размаскировать аппаратные прерывания;

- допускается изменять приоритеты уровней;

- можно давать команду завершения обработки аппаратного прерывания;

- допускается устанавливать/сбрасывать режим специальной маски;

- разрешен перевод контроллера в режим опроса и считывания состояния регистров ISR и IRR;

Для этого используется одно из слов рабочих приказов OCW1 - OCW3.

Форматы слов рабочих приказов

Формат OCW1

Единичное значение одного из битов М0 - М7 означает, что прерывания соответствующего уровня (IR0 - IR7) маскируются и не будут обрабатывать-ся контроллером.

Четвертый бит у ICW2, ICW3, ICW4 и OCW1 не является определяющим, т.к. все эти слова вводится в порт с нечетным номером (А0=1) и используются все биты байта.

Формат OCW2 - Порядок завершения аппаратного прерывания

Процедура обработки аппаратного прерывания должна перед своим завершением очистить свой бит в ISR выводом команды завершения обработки прерывания (End Of Interrupt, EOI).

Существует два варианта команды EOI: обычный и специфицированный EOI. Обычный EOI очищает бит в ISR, соответствующий прерыванию с максимальным приоритетом. Специфицированный EOI (R=0, SL=1, EOI=1, L0 - L2 равно номеру уровня прерывания) очищает в ISR бит, соответствующий прерыванию с номером, указанным в L0 - L2 независимо от его приоритета.

Формат OCW3 - Изменение режима и разрешение опроса IRR и ISR.

Единичное значение бита Р (бит опроса, Polling Bit) переводит контрол-лер в режим опроса. Если после этого считать данные из порта с четным адресом, получим байт следующего содержания:

Если I = 1, значит имеются запросы на прерывания и тогда L0 - L2 - это номер уровня с наивысшим приоритетом, по которому имеется запрос на прерывание.

Если P=0, можно считать информацию из ISR или IRR. Для этого необходимо дать команду чтения ISR или IRR и затем считать значение из порта с нечетным адресом.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: