Лекции по Вычислительным машинам, системам и сетям   

2. Микропроцессорный комплект К1810

2.16. Контроллер прерываний К1810ВН59 (i8259)

Эта микросхема предназначена для обслуживания двух групп МП. К первой группе относятся МП 580 и 8085, ко второй – 8086, 8088, 80286, 80386 и т.д. Рассмотрим работу ВН59 при обслуживании МП второй группы. Подключение ВН59 к системной шине показано на рис. 2.17.

Рис. 2.17

Контроллер имеет восемь входов запросов на прерывание (IR7 – IR0). Восприняв запрос на одном из этих входов ВН59, формирует сигнал на выходе INT. Этот сигнал подается на вход INTR ВМ86. Если внешние прерывания не замаскированы, то МП подтверждает прерывание, выставляя два сигнала на выходе INTA. Эти сигналы поступают на одноименный вход контроллера, и по второму из них ВН59 выставляет на ШД тип прерывания. Этот тип он формирует следующим образом: старшие пять разрядов типа задает программист при настройке контроллера, а на место младших трех разрядов ВН59 подставляет двоичный номер линии, по которой пришел запрос.

Несмотря на то, что внутренняя архитектура ВН59 включает в себя довольно много различных регистров, с точки зрения программиста, контроллер содержит всего два адресуемых устройства, выбор между которыми определяет сигнал на линии А0.

В системе могут использоваться несколько ВН59, соединенных каскадно. Один контроллер является ведущим, а все остальные ведомыми. Выходы INT ведомых контроллеров заводятся на входы IRi ведущего контроллера. Максимальное число контроллеров в системе равно девяти, а максимально возможное число источников внешних прерываний равно 64. На рис. 2.18 показан пример каскадного соединения контроллеров.

Перед началом работы все контроллеры должны быть настроены. Для этого на каждый ВН59 надо подать три или четыре команды инициализации (ICW1 – ICW4). Три команды подаются, если в системе один контроллер прерываний, четыре – если несколько.

Рис. 2.18

Рассмотрим упрощенные форматы этих команд для второй группы процессоров. ICW1 передается при А0 = 0 и имеет формат, приведенный на рис. 2.19.

0

0

0

1

0

0

D1

1

Рис. 2.19

При D1 = 0 – в системе несколько контроллеров и, следовательно, будет команда инициализации ICW3. При D1 = 1 – в системе один контроллер и ICW3 передаваться не будет.

ICW2 передается при А0 = 1 и имеет формат, приведенный на рис. 2.20. Здесь Т7 - Т3 – старшие пять разрядов типа прерывания.

Формат ICW3 различается для ведущего и ведомых контроллеров. Для ведущего: если в i-м разряде ICW3 стоит единица, значит к линии IRi подключен ведущий контроллер. Для ведомого ICW3 имеет формат, приведенный на рис. 2.21. Передается ICW3 при А0 = 1.

ICW4 передается при А0 = 1 и обычно имеет формат, приведенный на рис. 2.22.

T7

T6

T5

T4

T3

0

0

0

Рис. 2.20

0

0

0

0

0

N2

N1

N0

N 2-0 – двоичный номер линии IR ведущего контроллера, к которой подключен данный ведомый.

Рис. 2.21

0

0

0

0

0

0

0

1

Рис. 2.22

В IBM PC/XT есть контроллер ВН59. Ему назначены системные адреса 20h (А0 = 0) и 21h (А0 = 1). Настройка ВН59 в XT производится последовательностью команд:

mov al, 13h

; передаем ICW1, ICW3 не будет

out 20h, al

 

mov al, 8

; передаем ICW2. Старшие ;разряды типа задаем

out 21h, al

;равными 00001. Таким образом, ;для линии IR0 (прерывание от ;канала 0 таймера) контроллер ;будет вырабатывать тип, равный 08h, для ;линии IR1 (прерывание от ;клавиатуры) – тип, равный 09h, и т.д

mov al,1

;передаем ICW4

out 21h, al

 

Начиная с PC/AT, в системе стоит два ВН59. При этом все вышесказанное для ВН59 в ХТ является справедливым для ведущего в АТ.

После того как ВН59 настроен, все остальные настроечные слова он воспринимает как команды управления. Всего имеется три такие команды. Обычно их обозначают OCW1, OCW2 и OCW3.

OCW1 передается при А0 = 1. Если в i-м разряде OCW1 стоит единица, вход IRi контроллера маскируется и запросы на этом входе ВН59 восприниматься не будут до тех пор, пока программист его не размаскирует.

Во избежание конфликтов всем входам IR контроллера присваиваются приоритет. Если программист не задает приоритеты линий IR, то по умолчанию линии IR0 присваивается старший, а линии IR7 – младший приоритет. Команда OCW2 (передается при А0 = 0) позволяет менять приоритеты линий IR.

Пользователь должен знать о важной особенности работы контроллера ВН59. Если контроллер настроен на «обычный конец прерывания», то, восприняв запрос на линии Iri, он автоматически маскирует эту линию и все линии IR с более низкими приоритетами. Иногда говорят, что контроллер «ставит штору». Снимать штору самостоятельно контроллер не умеет. Это должен делать программист, передав в контроллер команду управления OCW2 формата 20h. Как правило, штора снимается в конце обработчика. Например, в конце обработчика прерывания от клавиатуры должны стоять две команды:

mov al,20h

out 20h,al

; снимаем штору в ХТ или у ;ведущего в АТ

Если эти команды не поставить, то клавиатура будет заблокирована. OCW3 передается при А0 = 0 и на практике используется редко.

Вход ВН59 не предназначен для использования в многопроцессорных системах, поскольку «не умеет» распределять прерывания между имеющимися в системе процессорами. Поэтому (начиная с Pentium) в тех моделях процессоров, которые поддерживают многопроцессорные конфигурации, используется контроллер прерываний APIC (advanced programmable interrupt controller). При этом сам МП имеет встроенный APIC (local APIC) и, кроме того, в системе имеется общий внешний APIC (I/O APIC). Последний воспринимает прерывания от ВУ и, в зависимости от настройки, распределяет их обработку между процессорами (между встроенными APIC).

Общение между внешним и встроенным APIC осуществляется либо по СШ (Pentium IV), либо по специальной шине APIC (более ранние процессоры). Если МП стоит в однопроцессорной сиистеме, внутренний APIC может быть настроен на работу с ВН59. Настройка внутреннего APIC в защищенном режиме производится только на нулевом уровне привилегий.



*****
© Банк лекций Siblec.ru
Формальные, технические, естественные, общественные, гуманитарные, и другие науки.