Программируемый контроллер прерываний ВН59
Система векторных прерываний ВМ80/ВМ85А может быть построена различными способами. Наиболее эффективно она реализуется с помощью специальной БИС типа КР580ВН59 (ВН59), называемой программируемым контроллером прерываний (ПКП). Микросхема выполняется по n-МОП-технологии и размещается в 28-выводном корпусе с вертикальным расположением выводов. Она совместима с ТТЛ-схемами. Для работы БИС требуется единственный источник питания +5 В.
На основе ПКП ВН59 формируется 8-уровневая приоритетная система векторных прерываний для МП типов ВМ80/ВМ85А. Несколько контроллеров ВН59 могут соединяться каскадно для расширения числа уровней прерывания до 64. Прибор обеспечивает работу в нескольких режимах, позволяя оптимизировать логику работы системы прерываний согласно требованиям, предъявляемым к МС. Структурная схема и условное графическое обозначение ПКП приведены на рис. 3.41.
Рис. 3.41. Программируемый контроллер прерываний ВН59:
а—структурная схема; б—условное графическое обозначение
Рассмотрим работу ВН59 в автономном режиме (рис. 3.42). Один или несколько запросов на прерывания (переход из 0 в 1) подаются на входы IR0—IR7 и запоминаются в регистре запросов IRR (Interrupt Request Register). Регистр обслуживания ISR (In Service Register) содержит все запросы, которые в данное время находятся в стадии обработки. Регистр маски IMR (Interrupt Mask Register) используется для маскирования отдельных уровней. Запрет некоторого уровня соответствует единице в соответствующем разряде IMR.
Рис. 3.42. Автономное включение ВН59
Приоритетная логика выбирает разрешенный запрос на прерывание с наивысшим приоритетом из числа поступивших и сравнивает его с текущим приоритетом запросов, находящихся на обслуживании. При превышении последнего ПКП генерирует сигнал INT (рис. 3.43). Микропроцессор подтверждает прием запроса INT генерацией строба , под воздействием которого запрос с высшим приоритетом из IRR фиксируется в соответствующем разряде ISR. Принятый к обслуживанию IRR-бит сбрасывается и прием нового запроса разрешается. Одновременно с этим ПКП генерирует код команды CALL (0CDH), который принимается МП. В ответ ВМ80/ВМ85А инициирует еще два следующих друг за другом INTA-цикла. Во время этих циклов ПКП передает в МП полный адрес программы обслуживания прерывания, принятого к обработке: сначала младший, а затем старший байт адреса. Установленный в ISR бит остается в состоянии 1 до окончания процедуры обслуживания. В конце процедуры в ПКП должна быть передана специальная команда окончания прерывания EOI, которая сбрасывает соответствующий ISR-бит.
Рис. 3.43. Временные диаграммы работы ВН59
Рис. 3.44. Каскадное включение ВН59 | Рис. 3.45. Последовательность инициализации ВН59 |
До тех пор, пока некоторый ISR-бит установлен, все запросы с равным или меньшим приоритетом игнорируются. В то же время запросы с более высоким приоритетом приводят к генерации сигнала INT, инициируя вложенные прерывания МП.
Каскадное соединение нескольких БИС типа ВН59 (рис. 3.44) позволяет довести число приоритетных уровней до 64. В данном случае одна БИС действует как ведущая ( = 1), а другие как ведомые ( = 0).
В каскадном режиме генерация кода команды CALL возлагается на ведущую БИС, а генерация адреса подпрограммы обслуживания—на ведомую. Для этого каждой ведомой БИС присваивается идентификационный код, соответствующий номеру линии запроса на прерывание ведущей БИС, к которой она подключена. Вместо генерации адреса ведущая БИС посылает по трехразрядной шине CAS номер уровня, принятого к обслуживанию, на второй и третий стробы . Этот номер сравнивается компараторами ведомых БИС с присвоенными им идентификаторами, в результате выбирается один из них. Выбранная БИС завершает команду CALL, отвечая на второй и третий стробы генерацией одного из восьми возможных адресов.
Отличительной чертой БИС типа ВН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 таблица совпадает с системой входов по командам RST n, n = 0—7, микропроцессора ВМ80. При k = 4 и base = 4 обеспечивается совместимость со второй половиной таблицы входов по командам RST n, n = 4—7.5 микропроцессора ВМ85А. Кроме того, поддерживается перемещаемость таблицы входов, что может быть полезно в ряде практических случаев.
Рис. 3.46. Формат адреса команды CALL
В составе ICW1 находится также бит S (Single), определяющий в каком режиме работает система прерываний: автономном (S = 1) или каскадном (S = 0). При работе в автономном режиме процедура инициализации завершается. В каскадном режиме в ПКП должна быть передана еще одна команда ICW3. Формат ICW3 ведущей БИС ( = 1) отличается от формата ICW3 ведомого ( = 0). В первом случае ICW3 сообщает контроллеру о множестве тех уровней, которые задействованы под каскадирование. Эти уровни выделяются установкой в 1 соответствующих разрядов ICW3. Во втором случае ICW3 используется для сообщения ведомой БИС идентификационного номера. Идентификатор должен соответствовать номеру уровня ведущей БИС, к которой подключена ведомая.
После инициализации микросхема готова к работе в режиме строго упорядоченных приоритетов. В данном режиме приоритеты уровней IR0—IR7 располагаются в порядке от 0 (высший) для IR0 до 7 (низший) для IR7. Дальнейшее управление работой схемы осуществляется с помощью OCW1—OCW3, форматы которых приведены на рис. 3.47.
Рис. 3.47. Форматы OCW1—OCW3
Для установки регистра маски IMR применяется слово OCW1. С его помощью каждый уровень может быть замаскирован в произвольный момент времени независимо от других. При установке 1 в некотором разряде IMR запрещается прием прерываний по соответствующему уровню. Регистр маски воздействует и на IRR, и на ISR.
По окончании очередной процедуры обслуживания в контроллер должна быть передана команда EOI, которая сбрасывает ISR-бит с высшим приоритетом. Для этой цели используется OCW2 с кодом R = 0, SL = 0, ЕOI = 1. При работе в каскадном режиме команда EOI выдается дважды: для ведущего и ведомого приборов.
В более общем случае OCW2 служит для установки в 0 произвольных разрядов ISR и циклического сдвига приоритетов с присвоением максимального значения любому из восьми возможных уровней. Если операция установки в 0 кодируется установкой в 1 бита OCW2.EOI, то операция циклического сдвига—бита OCW2.R (Rotate). В зависимости от состояния флажка SL (Special Level) возможны две ситуации: операция установки в 0 и (или) циклического сдвига относится к уровню с высшим в данный момент приоритетом из числа находящихся в обслуживании (SL = 0); одна и (или) обе операции относятся к явно указываемому в OCW2 уровню (SL = 1). В последнем случае номер уровня кодируется в трехразрядном поле L2—L0 (Level). Различные комбинации этих функций и соответствующие им коды приведены на рис. 3.47. На их основе можно построить достаточно мощные и гибкие системы прерываний с разнообразными характеристиками.
Применение только команды EOI обеспечивает работу в режиме строго упорядоченных приоритетов, когда все запросы имеют фиксированные и строго упорядоченные приоритеты. Для обслуживания запросов с равными приоритетами должна быть использована команда EOI с циклическим сдвигом. При использовании команды сдвига одновременно со сбросом ISR-бита, имеющего высший текущий приоритет, реализуется циклический сдвиг приоритетов с присвоением низшего только что обслуженному уровню. На рис. 3.48 приведен пример циклического сдвига после обработки пятого уровня с приоритетом 3. Следует отметить, что циклический сдвиг не нарушает последовательности вложенных друг в друга прерываний, что обеспечивает правильный возврат из обслуживающих их подпрограмм.
Рис. 3.48. Операция EOI со сдвигом:
а—до операции; б—после операции
В рассмотренных случаях в качестве сбрасываемого в регистре ISR-бита и (или) уровня с низшим приоритетом после циклического сдвига выступал уровень с высшим приоритетом из числа обслуживаемых в данное время, который однозначно определяется состоянием ISR и текущим распределением приоритетов. Прямая адресация уровня обеспечивает: сброс конкретного ISR-бита и, следовательно, завершение процедуры обслуживания соответствующего уровня; циклическое изменение приоритетов с явным указанием нижнего уровня системы приоритетов; сброс адресуемого ISR-бита и присвоение ему низшего приоритета за счет их циклического сдвига. Эти операции позволяют построить системы прерываний с разнообразными (в том числе динамически изменяемыми) структурами приоритетов.
В рассмотренной системе приоритетов находящийся на обслуживании уровень подавляет обработку уровней с меньшим приоритетом даже несмотря на его временное маскирование. Обработку прерываний более низкого уровня можно разрешить сбросом соответствующего ISR-бита, однако этот процесс необратим. Еще одна возможность состоит в установке с помощью OCW3 режима специального маскирования (см. рис. 3.47). В данном режиме каждый бит в регистре ISR запрещает только собственный уровень, но разрешает все остальные. Во время процедуры инициализации режим специального маскирования автоматически аннулируется.
Кроме управления режимом специального маскирования в функции OCW3 входит управление режимом поллинга и выбор регистра IRR или ISR для чтения его содержимого с помощью программ. Режим поллинга (опроса) предполагает ввод информации об источнике прерывания программным методом. Режим инициируется выдачей в ПКП слова OCW3 с установленным битом Р (Polling). Контроллер ВН59 интерпретирует следующий цикл чтения при А0 = 0 как подтверждение прерывания и выдает на шину данных информацию о требующем обслуживания уровне с высшим приоритетом в формате, представленном на рис. 3.49. Если к моменту опроса запросов нет, то возвращается слово с флажком запроса I = 0 в противном случае I = 1, а в поле W2—W0 содержится код уровня с высшим приоритетом. В остальном работа ВН59 аналогична предыдущему случаю. Режим поллинга применяется в случаях, когда существует единая программа обслуживания для нескольких запросов, а также для расширения числа уровней (сверх 64).
Рис. 3.49. Формат данных при опросе
Следует отметить, что ведущие и ведомые контроллеры программируются независимо друг от друга. Поэтому они могут работать в различных режимах, благодаря чему расширяются возможности создания эффективных систем обработки прерываний.
Входящие в состав ВН59 регистры IMR, IRR и ISR доступны для чтения. Регистр маски IMR может быть прочитан в любой момент при А0 = 1 по команде , регистры IRR и ISR при А0 = 0. В каждый момент времени непосредственно доступен только один из регистров. Выбор регистра осуществляется словом OCW3 с помощью ERIS и RIS в соответствии с таблицей на рис. 3.47. После выбора содержимое регистра может считываться произвольное число раз до выбора другого. При приеме ICW1 устанавливается режим чтения содержимого IRR.
Дата добавления: 2019-02-07; просмотров: 569;