Организация векторной системы прерываний. Программируемый контроллер прерываний ВН59, страница 3

В каскадном режиме генерация кода команды CALL возлагается на ведущую БИС, а генерация адреса подпрограммы обслуживания—на ведомую. Для этого каждой ведомой БИС присваивается идентификационный код, соответствующий номеру линии запроса на прерывание ведущей БИС, к которой она подключена. Вместо генерации адреса ведущая БИС посылает по трехразрядной шине CAS_номер уровня, принятого к обслуживанию, на второй и третий стробы INTA. Этот номер сравнивается компараторами ведомых БИС с присвоенными им иденти­фикаторами, в результате выбирается один из них. Выбранная БИС завершает команду CALL, отвечая на второй и третий стробы INTA генерацией одного из восьми возможных адресов.

Отличительной чертой БИС типа ВН59 является ее программируемость. Программирование осуществляется двумя типами управляющих слов: командами инициализации ICW (Initialization Command Word) и управления OCW (Operation Command Word). Три команды инициализации ICW1—ICW3 загружаются перед началом работы и служат для установки БИС в исходное состояние. Команды управления OCW1—OCW3 могут быть переданы в ПКП в любое время после окончания инициализации. Они предназначены для оперативного управления работой контроллера. При каскадном включении каждая БИС программируется независимо от других.

При А0=0 и D4=1 входной байт интерпретируется как ICW1. При этом очищаются IRR, IMR и осуществляется последовательность действий, приведенная на рис. 3.45. Генерируемые ПКП восемь адресов в команде CALL (по адресу на каждый уровень) равно удалены друг от друга с интервалом либо 4, либо 8 байт, образуя в памяти МС таблицу входов в процедуры обслуживания прерываний размером 32 или 64 байт соответственно. Два первых обязательных слова ICW1 и ICW2 определяют базовый адрес таблицы входов. Адресный интервал таблицы программируется специальным битом F слова ICW1 (ICW1.F). При F=1 интервал равен 4, в противном случае—8. Адреса команды CALL формируются по схеме

addr=base+k-NL, k=4 или 8

и имеют формат, приведенный на рис. 3.46. Здесь через NL обозначен уровень запроса, принятого к обслуживанию. Программируемость базы таблицы вхо­дов base предполагает ее размещение в любом месте памяти МС с точностью до границы в 32 или 64 байт. При k=8 и base = 0 таблица совпадает с системой входов по командам RSTn, n=0—7, микропроцессора ВМ80. При k=4 и base =4 обеспечивается совместимость со второй половиной таблицы входов по командам RSTn, п=4—7.5 микропроцессора ВМ85А. Кроме того, поддерживается перемещаемость таблицы входов, что может быть полезно в ряде практических случаев.

В составе ICW1 находится также бит S (Single), определяющий в каком режиме работает система прерываний: автономном (S=1) или каскадном (S=0). При работе в автономном режиме процедура инициализации завершается. В каскадном режиме в ПКП должна быть передана еще одна команда ICW3. Формат ICW3 ведущей БИС (SP=1) отличается от формата ICW3 ведомого (SP=0). В первом случае ICW3 сообщает контроллеру о множестве тех уровней, которые задейство­ваны под каскадирование. Эти уровни выделяются установкой в 1 соответствую­щих разрядов ICW3. Во втором случае ICW3 используется для сообщения ведомой БИС идентификационного номера. Идентификатор должен соответствовать номеру уровня ведущей БИС, к которой подключена ведомая.

После инициализации микросхема готова к работе в режиме строго упорядоченных приоритетов. В данном режиме приоритеты уровней IRO—IR7 располагаются в порядке от 0 (высший) для IRO до 7 (низший) для IR7. Даль­нейшее управление работой схемы осуществляется с помощью OCW1—OCW3, форматы которых приведены на рис. 3.47.

Для установки регистра маски IMR применяется слово OCW1. С его помощью каждый уровень может быть замаскирован в произвольный момент времени независимо от других. При установке 1 в некотором разряде IMR запрещается


прием прерываний по соот­ветствующему уровню. Ре­гистр маски воздействует и на IRR, и на ISR.