
- •Организация эвм и систем
- •Глава 1 эвм общего назначения
- •Структура эвм общего назначения.
- •Арифметико-логические устройства.
- •Устройства управления.
- •Risc и cisc процессоры.
- •1.5 Форматы машинных команд.
- •Inc byte ptr [40h] – одноадресная
- •Способы адресации.
- •Стековая адресация. Виды стеков.
- •Глава 2
- •2.1 Микропроцессор к1810вм86.
- •2.2 Назначение входов/выходов вм86 в минимальном режиме.
- •2.3 Назначение входов/выходов вм86 в максимальном режиме.
- •Внутренняя архитектура мп вм86.
- •Сегментация памяти.
- •2.6 Программная модель мп вм86.
- •2.7 Организация оперативной памяти.
- •2.8 Организация адресного пространства портов ву.
- •2.9 Методы обмена информацией между мп и портами ву.
- •2.10 Параллельный программируемый адаптер к1810вв55 (i8255).
- •Пример использования и программирования адаптера
- •2.12 Программируемый таймер к1810ви54 (i8254).
- •2.13 Пример использования таймера.
- •2.14 Обработка прерываний.
- •2.15 Система прерываний вм86.
- •2.16 Контроллер прерываний к1810вн59 (i8259).
- •Дополнительная информация о настройке вн59.
- •Прямой доступ к памяти.
- •Программирование кпдп вт37
- •2.21 Организация процессорного модуля вм86.
- •2.20. Организация шинного интерфейса в максимальном режиме
- •2.23. Слабо связанные конфигурации.
- •2.24. Арбитр шин к1810вб89 (i8289).
- •2.25 Сильно связанные конфигурации на примере совместной работы мп86 и арифметического сопроцессора вм87.
- •2.26. Формат машинной команды вм86.
2.16 Контроллер прерываний к1810вн59 (i8259).
Данная микросхема предназначена для обслуживания двух различных групп МП. К первой группе относятся МП 580 и 8085, ко второй – 8086, 8088, 80286, 80386 и. т. д. Мы рассмотрим работу ВН59 при обслуживании МП второй группы. Подключение ВН59 к системной шине показано на рис. 20.
Рис. 20
Контроллер имеет восемь входов запросов на прерывание (IR7 – IR0). Восприняв запрос на одном из этих входов ВН59, формирует сигнал на выходе INT. Этот сигнал подается на вход INTR ВМ86. Если внешние прерывания не замаскированы, МП подтверждает прерывание, выставляя два сигнала на выходе INTA. Эти сигналы поступают на одноименный вход контроллера, и по второму из них ВН59 выставляет на ШД тип прерывания. Этот тип он формирует следующим образом: старшие пять разрядов типа задает программист при настройке контроллера, а на место младших трех разрядов ВН59 подставляет двоичный номер линии, по которой пришел запрос.
Несмотря на то, что внутренняя архитектура ВН59 включает в себя довольно много различных регистров, с точки зрения программиста, контроллер содержит всего два адресуемых устройства, выбор между которыми определяет сигнал на линии А0.
В системе могут использоваться несколько ВН59, соединенных каскадно. При этом один контроллер является ведущим, а все остальные ведомыми. Выходы INT ведомых контроллеров заводятся на входы IRi ведущего контроллера. Таким образом, максимальное число контроллеров в системе равно девяти, а максимально возможное число источников внешних прерываний равно 64. На рис. 21 показан пример каскадного соединения контроллеров.
Перед началом работы все контроллеры должны быть настроены. Для этого на каждый ВН59 надо подать три или четыре команды инициализации (ICW1 – ICW4). Три команды подаются, если в системе один контроллер прерываний,
Рис. 21
четыре – если несколько. Далее рассмотрим упрощенные форматы этих команд для второй группы процессоров.
ICW1
передается при А0=0 и имеет формат,
приведенный на рис. 22.
Рис. 22
Если D1=0 – в системе несколько контроллеров и, следовательно, будет команда инициализации ICW3. При D1=1 – в системе один контроллер и ICW3 передаваться не будет.
ICW2 передается при А0=1 и имеет формат, приведенный на рис.23. Здесь Т7-Т3 – старшие пять разрядов типа прерывания.
Формат ICW3 различается для ведущего и ведомых контроллеров. Для ведущего: если в i-ом разряде ICW3 стоит единица, значит к линии IRi подключен ведущий контроллер. Для ведомого ICW3 имеет формат, приведенный на рис 24. Передается ICW3 при А0 = 1.
ICW4 передается при А0=1 и обычно имеет формат, приведенный на рис. 25.
Рис. 23
-
0
0
0
0
0
N2
N1
N0
Здесь N 2-0 – двоичный номер линии IR ведущего контроллера, к которой подключен данный ведомый.
Рис. 24
Рис. 25
В 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 и на практике используется редко.