Методика программирования контроллера прерываний

Технические характеристики БИС Intel 8259A.

Реализация многоуровневых ВП в ЭВМ семейства IBM.

Для Реализация многоуровневых ВП в ЭВМ семейства IBM применена БИС Intel 8259 A.

1. Число уровней ЗП = 8.

2. Количество уровней можно расширить до 64 за счет каскадного включения микросхем

3. Режим обслуживания ЗП, уровни приоритетов, АВП устанавливаются программным путем.

6.7 Программируемые режимы обслуживания ВУ.

Режимы работы:

1. Режим вложенные прерывания.

Входы для ЗП: IRi,. Каждому из входов присваивается приоритет IR0, IR1, …IR7 в порядке убывания ЗП с большим приоритетом могут прерывать обслуживание ЗП с меньшим приоритетом.

2. Круговые циклические приоритеты.

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

3. Адресуемые приоритеты.

Аналогично п. 2, но допускает программное указание входа, которому назначается самый низкий приоритет.

4. Режим опроса.

В этом режиме ЦП не реагирует на ЗП (прерывания запрещены). ВУ, требующее обслуживания, определяется чтением состояния ПКП (т.е. опрос состояния контроллера).

5. Незамаскированные запросы прерываний обслуживаются в порядке их поступления.

6.8 Схема включения ПКП к системной шине ВУ.

Рис. 6.7 Схема включения ПКП к системной шине и ВУ.

Назначение выводов БИС:

- D7-D0 – выводы ШД, служат для приема управляющее информации от ЦП и передачи статусной информации в ЦП.

- A0 – адресный вход, адресация внутренних регистров контроллера (2 адреса).

- ~CS (chip select) - выбор кристалла, разрешает или запрещает связь контроллера с системной шиной.

o ~ CS = 0 – есть связь, ~ CS = 1 – нет связи.

Первый ПКП использует адреса – 20h, 21h.

Второй ПКП использует адреса – A0h, A1h.

- ~RD, ~WR – ввод, вывод (сигналы ШУ), соединяются с линиями магистрали ~IOR и ~IOW.

- INT (выход) – сигнал ЗП в ЦП.

- ~INTA (interrupt acknowledge) – сигнал РП от ЦП.

- CAS2, CAS1, CAS0 – шина каскадирования. Для ведущего контроллера прерывания эти линии являются выходами, а для ведомого – входами.

- ~SP/~EN – указывает ведущий (1) или ведомый (0) ПКП.

- IR0...IR7 – входы запросов прерывания от ВУ.

6.9 Аппаратные прерывания в порядке их приоритетов и назначения.

Вход Номер типа Назначение входа
IR0 8 АВП = 0000.0020 h Таймер
IR1 9 АВП =0000.0024 h Клавиатура
IR2 Ah Каскадирование
IR3 Bh COM2
IR4 Ch COM1
IR5 Dh LPT2
IR6 Eh НГМД (накопитель на гибких магнитных дисках)
IR7 Fh LPT1

6.10 Функциональный состав ПКП и его программная модель

Рис. 6.8 Программируемый контроллер прерываний в ЭВМ семейства IBM PC.

IRR – Interrupt Request Register – регистр запросов прерываний,

IMR – Interrupt Mask Register – регистр масок прерываний,

ISR – Interrupt Service Register регистр обслуживаемых запросов,

PR – Priority Resolver – шифратор приоритетов.

Назначение:

IRR:

- фиксирует ЗП на входах IR0-IR7 от ВУ. К каждому входу можно подключить одно ВУ.

IRi =1, если на входе IRi появляется ЗП.

- Входные цепи могут программироваться на восприятие уровня или фронта сигнала.

IMR:

- Служит для маскирования или разрешения ЗП на отдельных входах.

- Если IMi =1, то сигнал на входе IRi не обслуживается.

- Маскирование входа IRi не запрещает прерывание на остальных входах..

ISR:

- Хранит запросы, обслуживаемые ЦП.

- На время обслуживания IRi ЦП, бит ISi устанавливается в 1.

- Если ISi = 1, то прерывания от этого входа и входов с меньшими приоритетами запрещены.

- Этот бит должна сбросить программа обслуживания прерывания по завершению работы или в процессе обслуживания ВУ.

PR:

- Анализирует содержимое предыдущих трех регистров и определяет необходимость генерировать сигнал ЗП (INT) в ЦП,т.е. реализует схему учета приоритетов и формирования АВП.

6.11 Алгоритм работы ПКП.

Начальная инициализация подразумевает установку всех параметров:

1. Количество ПКП в системе: один или несколько.

2. АВП (номера типов прерываний).

3. Режим обслуживания ВУ.

Инициализация выполняется специальными командами записи приказов инициализации в регистр ПКП и не должна прерываться. В ЭВМ семейства IBM PC инициализация выполняется BIOS (basic input/output system - базовая система ввода-вывода), которая устанавливает режим вложенных прерываний, АВП, ПКП1 объявляет ведущим, ПКП2 – ведомым.

При появлении сигнала ЗП от какого-либо ВУ, ПКП выполняет следующие действия:

1. Запрос на входе IRi фиксируется в регистре IRR.

2. Установленный в 1 бит IRi сравнивается с соответствующим битом IMi. Если

a) IMi = 1 → запрос IRi не обслуживается.

b) IMi = 0 → запрос IRi передается в PR.

3. PR сравнивает приоритет IRi с приоритетами ЗП, обслуживаемыми в данный момент времени ЦП.

a) Если биты регистра ISR с большим приоритетом = 1, то дальнейшее обслуживание запроса не выполняется.

b) Если биты регистра ISR с большим приоритетами сброшены в 0, то ПКП формирует ЗП (INT) в ЦП.

4. ЦП проверяет бит IF (Interrupt Flag) в регистре флагов (Flags):

a) Если IF = 0, запрос не обслуживается, пока IF не будет установлен в единицу.

b) Если IF = 1, то по завершению текущей команды ЦП сбрасывает IF=0 и возвращает сигнал в ПКП по линии INTA в виде двух последовательных импульсов.

5. ПКП при первом импульсе INTA запрещает сигналы на входах IRR до второго импульса INTA. Сбрасывает бит IRi = 0 и устанавливает бит ISi = 1.

6. ПКП при втором импульсе INTA ЦП разрешает сигналы на входах регистра IRR и на ШД устанавливает номер типа прерывания.

7. ЦП считывает с ШД код номера типа прерывания и приступает к обслуживанию устройства.

Если поступает сигнал с большим приоритетом, ЦП не реагирует на сигнал INT при сброшенном IF. Поэтому любая оперативная программа должна устанавливать IF=1, как только это становится возможным, чтобы установить режим вложенных прерываний.

Чтобы повторить процедуру прерывания, то входа IRi необходимо сигнал на входе IRi перевести в неактивное состояние.

Если какой-то вход IRк замаскирован соответствующим битом IMк, то запрос не обрабатывается ПКП.

Если программа сбрасывает IMк =0, ПКП распознает активный запрос и начинает его обслуживать.

6.12 Схема каскадирования контроллеров прерывания.

Каскадирование позволяет объединить несколько контроллеров для расширения числа ЗП.

При этом один ПКП работает как ведущий, а до 8 ПКП могут работать ведомыми.

Сигнал INT ведомого ПКП подается на один из входов ведущего (IRi). Если IMR и ISR не блокируют сигнал, то он поступает на вход ЦП по линии INT ведущего.

Когда ЦП возвращает INTA, ведущий ПКП проверяет, возникло ли его собственное прерывание или от ведомого. Если прерывание от ведомого, то на шину ведущий на шину каскадирования выдает код, соответствующий входу, к которому подключен ведомый.

Рис. 6.9 Схема каскадирования контроллера прерывания.

CAS2 CAS1 CAS0  
22 (4) 21 (2) 20 (1)  
       

За исключением реакции на сигнал INTA действие всех контроллеров в системе одинаково.

IR 0 имеет самый высокий приоритет, номер типа прерывания – 8.

IR0 IR1 IR8 IR9 IR10 IR11 IR12 IR13 IR14 IR15 IR3 IR4 IR5 IR6 IR7
8 9 70h 71h 72h 73h 74h 75h 76h 77h Bh Ch Dh Eh Fh

После включения питания БИОС выполняет инициализацию ПКП.

При инициализации:

- Устанавливается режим работы ПКП.

- Номера типов прерываний.

- Определяется ПКП1-ведущий, ПКП2-ведомый.

6.13 Программирование ПКП в процессе обслуживания ВУ и работы системы.

По окончании инициализации IMR обнуляется, следовательно, разрешаются ЗП на всех входах.

Для программирования ПКП в работе системы используется 3 слова рабочих приказов:

- Operation Command Word (OCW).

1. OCW1 – разрешение или запрет отдельных входов ЗП.

OCW1 использует нечетный адрес.

Регистр масок всегда доступен ЦП для чтения и для записи.

               
IM 7 IM 6 IM 5 IM 4 IM 3 IM 2 IM 1 IM 0
LPT 1 HTMD LPT 2 COM 1 COM 2 Каскадир. Клавиатура Таймер
               

Слова рабочих приказов OCW 2 и OCW 3 используются для управления текущим режимом работы ПКП. Оба слова передаются по четному адресу.

Для отличия OCW 2 от OCW 3 и ICW 1(Initialization Command Word) используются два бита с номерами 4 и 3:

D4 D3
  X – ICW1
  0 – OCW2
  1 – OCW3

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

Формат OCW2:

                OCW 2 подается по четному адресу, для первого контроллера = 20 h.
MODE     L2 L1 L0
OCW2

Если MODE =00100000 = 20h, устанавливается режим вложенных прерываний и сбрасывается бит в ISR, в соответствии с последним обслуживаемым запросом.

Пример: поступил ЗП на вход IR5. ЦП начал обслуживание, бит IS5 =1, затем пришел ЗП на вход IR4, устанавливается IS4 =1. Режим вложенных прерываний сохраняется. Пришел ЗП на IR3, устанавливается IS3 =1.

Если поступает команда Port[$20]:=$20;, бит IS3 сбросится в 0, если еще раз поступает эта же команда, то сбросится бит IS4 =0, следующая аналогичная команда сбросит бит IS5 =0.

Если установить режим MODE=10100000 = A0h, устанавливается режим циклических приоритетов, сбрасывается бит с максимальным приоритетом, входу присваивается самый низкий приоритет.

Если установить MODE = 11000L2L1L0 режим адресуемых приоритетов, номеру входа, определяемого полем L2L1L0, присваивается низший приоритет.

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

Формат OCW 3:

                OCW2 подается по четному адресу, для первого контроллера = 20 h.
  SMM     p RRC
Признак OSW3

SMM может принять только 2 значения (остальные не действуют).

SMM = 01101000 = 68h – незамаскированные запросы обслуживаются в порядке их поступления.

SMM = 01001000 = 48h – восстанавливается приоритет упорядоченных запросов.

RRC = 00001010 = Ah – разрешение чтения регистра IRR.

RRC = 00001011 = Bh – разрешение чтения регистра ISR.

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

P=1→00001100 = Ch – разрешение чтения незамаскированного запроса с максимальным приоритетом.

Следующая операция чтения из регистра с четным адресом приводит к установке бита ISk с максимальным приоритетом, как будто получен сигнал INTA и передача ЦП в байта следующего формата I0000W2W1W0, где I показывает наличие ЗП (I =1, есть ЗП), а W2W1W0 показывают номер входа с наивысшим приоритетом.

Пример №1.

Port[$21]: = Port[$21] or 2; OCW1, адрес нечетный. IMi=1 – запрет клавиатуры.
Port[$21]: = Port[$21] and not 2; IMi =0 – разрешение работы клавиатуры.

Пример №2.

Port[$20]: = Port[$20]; Сброс бита с самым высоким приоритетом ISi. Завершение обслуживания прерывания, соответствующего последнему запросу.

Пример №3.

Port[$20]:=$A; Разрешение чтения регистра IRR.
Writeln(‘содержимое регистра IRR=’), port[$20]; Чтение регистра IRR

6.14 Методика программирования обмена данными с прерыванием программы.

Содержит две части:

- Подготовка к обмену с прерываниями выполняется в фоновой программе.

- Обслуживание ВУ в режиме прерывания фоновой программы.

Подготовка к обмену с прерываниями включает:

1. Резервирование памяти для совместного использования фоновой и оперативной программ:

- Память для хранения данных. Оперативная программа использует её для ввода данных в ВУ или вывода данных из ВУ. Фоновая программа – для подготовки данных ВУ или обработки данных.

- Программный счетчик. Содержит текущее количество слов, переданное между фоновой и оперативной программами в том или ином направлении. Оперативная программа модифицирует программный счетчик в каждом цикле обмена. Фоновая – использует программный счетчик для проверки завершения обмена.

- Указатель длины массива данных. Оперативная программа в этой переменной указывает общее количество слов, предназначенных для передачи. Фоновая программа должна запретить прерывание при передаче установленного объема данных.

2. Установка ВП на оперативную программу. В

3. Разрешение прерывания ВУ. Определяет момент начала совместной работы фоновой и оперативной программ.

Обслуживание ВУ в режиме прерываний (вторая часть) выполняется оперативной программой, она в каждом цикле обмена данными должна выполнять следующие действия:

1. Сохранение регистров процессора, которые будут модифицированы.

2. Инкремент (декремент) программного счетчика.

3. Обмен данными с памятью.

4. Сброс ЗП в интерфейсе ВУ, если он не сбрасывается аппаратными средствами.

5. Восстановление регистров ЦП: СК, РСП.

6. При передаче установленного фоновой программой обмена данных оперативная программа должна запретить прерывание ВУ.

Для ЭВМ семейства IBM PC:

В регистре флагов IF =1, чтобы восстановить режим вложенных прерываний и разрешить прерывание от устройств с большими приоритетами. Оперативная программа должна сбрасывать бит ISi =0, чтобы разрешить прерывание от данного устройства и устройств с меньшими приоритетами.

6.15 Реализация методики обмена данными с прерыванием программы между в ЭВМ в автоматизированных системах на основе ЭВМ семейства IBM PC в среде Borland Pascal.


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



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