
МПУЭВС. Лекции. Задания / pdf_ПрилПЦиПУ / Приложение_ К_РасширСистПрер
.pdf
1
Приложение К
К.1 Расширение одноуровневой системы прерываний
Контроллер прерывания с циклической очередью запросов
На рисунке К.1 приведена функциональная схема контроллера прерывания с циклической очередью запросов к выделенным векторным областям. Контроллер под управлением тактовых сигналов генератора G при условии разрешения прерываний с регистра RG последовательно с периодом восемь шагов подключает линии запросов прерываний Зпр1-Зпр8
Рисунок К.1 - Схема контроллера циклической системы прерывания
ко входу S регистра RG. При установке запроса прерывания от УСО на
соответствующем номеру запроса шаге регистр RG через элемент &1
заблокирует подачу тактовых импульсов на счётчик Ст. В счётчике будет |
|
зафиксирован номер запроса, |
а через дешифратор DC приостановит и |
дальнейший перебор линий |
запросов на элементах &2-&9. Вместе с |
блокировкой счёта с выхода |
регистра RG активизируется одноуровневый |
вход запросов прерывания |
INTR. Модуль МПУ в конце последнего |
машинного цикла выполнения очередной команды основной программы проверяет наличие активного запроса и совпадение его с разрешением. По совпадению МПУ переходит к машинному циклу аппаратного рестарта. Во
2
исполнение рестарта МПУ выставляет на линии INTA активный уровень и этим сигналом выполняет операцию чтения через шинный формирователь F
кода, установленного на его входах DI. В рассматриваемом примере для определённости в качестве МПУ принят модуль на основе МП ВМ85. Для этой модели (см. раздел 3) номер запроса кодируется через трёхбитовый вектор встроенный в код команды рестарта RST V. Этот трёхбитовый вектор в рассматриваемом примере контроллера прерывания на входы формирователя F подводится с выхода двоичного трёхразрядного счётчика
Ст по линиям D5-D3. Оставшиеся пять разрядных линий на входах формирователя F заполняются единичными позициями по спецификации кода команд RST V МП85. Таким образом, сигналом INTA в МПУ будет доставлена команда RST V , вектор в которой представлен номером запроса.
Далее в МПУ процесс развивается аналогично тому, как это могло соответствовать чтению команды RST V из памяти команд, с тем отличием,
что выборка команды произошла без участия в адресации счётчика команд МПУ (его значение остаётся таким, как было установлено при выполнении предшествующей текущей команды). Это означает, что после выборки кода
RST V, текущий адрес счётчика команд полежит сохранению в стеке, как
адрес возврата. Его новое значение будет сформировано через полученный
вектор V в следующем двоичном виде 0000 0000 00хх х0002 (здесь обозначению ххх соответствуют три позиции двоичного кода вектора V ).
Следующим состоянием программы будет выборка первой команды из подпрограммы обработчика полученного запроса. Если бы система прерываний МП была одноуровневой, то её поведение определялось бы исключительно рассмотренной версией контроллера. Разрешая или запрещая прерывания во время выполнения подпрограммы какого-либо обработчика прерывания, можно реализовать разные алгоритмы реакции на запросы этой одноуровневой системы. Если контекстные (на фоне выполняемых подпрограмм обработчиков) прерывания не разрешать, то рассмотренный контроллер соответствует реализации последовательности обработчиков

3
прерывания без приоритета в очереди на обслуживание. На схеме штриховой линией показана связь, установив которую, возможно сбрасывать накопленное счётчиком число шагов и начинать счёт с нулевого вектора всякий раз после очередного разрешения запросов. В этом варианте контроллер будет соответствовать циклической системе с приоритетом нулевого вектора. В многоуровневой версии системы прерывания, к которой относится МП ВМ8, разрешение прерываний по входу INTR зависит наличия активных разрешённых запросов на входах RST7.5, RST6.5, RST5.5.
Рассмотренный контроллер функционирует на аппаратном уровне,
программная настройка объектов не предусмотрена (без учёта возможно программно управляемого сброса регистра RG).
Контроллер с очередью по подключению (с аппаратным полингом)
На рисунке К.2 приведена схема контроллера прерывания, в которой
Рисунок К.2 - Схема контроллера с приоритетами по подключению
для одноуровневых входов запросов МПУ решается задача расширения числа уровней с очередностью обслуживания запросов идентичных по составу модулей контроллера прерывания (КПрi) в зависимости от места в каскадной цепи. Активизация запросов ЗПр1-ЗПр8 на входе элемента \/1, при условии наличия разрешения на прерывания с входа INTR, как в ранее
4
рассмотренном варианте контроллера, в конце последнего машинного цикла текущей команды переводит МПУ в машинный цикл прерывания с выдачей сигнала INTA вместо сигнала чтение памяти (MEMR). Число модулей КПрi
определяется размером, принятым в МП для кодирования одноуровневых номеров запросов. Для примера с ВМ85 это число, как отмечалось, равно восьми. Каждый из модулей содержит регистр RG фиксации запроса прерывания, формирователь F для выдачи идентификационного признака модуля, схему коммутации-пропуска сигнала INTA на элементах логического умножения &1, &2 и элемент \/2 сброса регистра RG. Запросы прерываний,
объединённые на элементе \/1, подаются раздельно и на входы S регистров
RG. При активном запросе регистр устанавливается в единичное состояние сигнал. Прямым выходом регистр разрешает пропуск сигнала INTA на вход считывания формирователя F. Инверсным выходом разрешается пропуск
сигнала INTA на выход модуля, без выдачи идентификационного признака.
Модули контроллеров подключаются между входами запросов и МПУ так,
что сигнал считывания INTA от МПУ подключается на вход а3 контроллера прерываний с наивысшим приоритетом. Каждый контроллер имеет один вход сигнала INTA (а3) и один выход (а3+). На выход а3+ сигнал INTA
передаётся, если запрос прерывания на этом модуле не активен.
Последующие модули контроллеров подключаются за предыдущим по сигнальной линии INTA, так что выход INTA предшествующего модуля соединяется с входом последующего. Линии запросов соединяются с входами а1, выходы формирователей кода вектора а4 объединяются на магистрали данных МПУ. Линии сброса а2 регистров фиксации запросов для
каждого модуля локальны, но могут иметь и общие условия сброса
(разрешения запросов), как, например, по системному сигналу сброса. Коды
векторов прерывания в модулях могут устанавливаться и |
изменятся по |
||
усмотрению пользователя (или проектировщика контроллера). |
Приоритет |
||
запроса понижается по мере смещения модулей удаления КПрi |
в цепочке |
||
подключений относительно сигнального выхода |
INTA |
МПУ. После |

5
обслуживания текущего запроса, если это не сделано ранее, должно быть выставлено разрешение запросов на этом модуле и каскадная цепь восстанавливается для пропуска сигнала INTA через этот модуль. Как и контроллер циклической системы прерываний, рассмотренный контроллер функционирует на аппаратном уровне. Программная настройка его модулей не предусмотрена (без учёта возможно программно управляемого сброса регистра RG). Установка требуемого кода вектора на входах формирователей, если не предусмотрено иное решение, осуществляется сменяемыми перемычками. Естественно, каждому коду вектора может соответствовать определённая команда RST V и область программы обработчика прерывания.
Контроллер прерываний с опросом и анализом запросов
Способ идентификации устройств, запросивших обслуживания прерывания опросом и анализом состояния запросов, реализуется в контроллере, приведенном на рисунке К.3.
Рисунок К.3 - Схема контроллера с запоминанием запросов
В состав этого контроллера включён регистр запросов RG1RG8.
Активные запросы фиксируются в регистре RG1RG8 независимо, а выходы регистра используются по двум направлениям: через элемент логического
6
сложения V1 объединяются на входе INTR МПУ, а через шинный формирователь F10 состояние запросов с регистра RG1RG8 может быть введено МПУ по магистрали данных. При условии разрешения на прерывания с входа INTR и, хотя бы одном активном состоянии запросов в регистре RG1RG8, в конце последнего машинного цикла текущей команды МПУ переходит в машинный цикл прерывания с выдачей сигнала INTA
вместо сигнала чтение памяти (MEMR). Сигналом INTA считывается байт фиксированного кода с формирователя F9. Код соответствует одной из команд рестарта базового МП МПУ (это может быть, например, МП
1821ВМ85А). Результатом приёма команды RST V, будет передача управления на начало подпрограммы обработчика прерывания с сохранением адреса возврата. В программе обработчика полученного общего запроса предусматривается опрос регистра RG1RG8 состояния запросов ЗПр1-ЗПр8 от внешних объектов. Опрос, как отмечалось, выполняется через формирователь F10 с адресом доступа As. Спецификация приоритетов запросов обычно сохраняется в таблице. Запросам по таблице соответствуют адреса размещения подпрограмм их обработчиков. После выполнения программы обработчика очередного текущего запроса подлежит избирательному сбросу состояние его бита в регистре RG1RG8. Регистр запросов должен допускать и общий системный сброс. Для избирательного сброса обслуженных запросов в RG1RG8 контроллера применён элемент
&3 на восемь входов с общим входом стробирования E, управляемым по совпадению сигналов As и I/OW на элементе &3. Выходы элемента программного сброса &3 вместе с другими сигналами сброса объединяются на элементах логического сложения V2-V9. Таким же набором элементов программного сброса может дополняться и схема, приведенная на рисунке К.3, но она является общей для комплекта модулей КПр1-КПр8. Система прерывания по опросу регистра запросов позволяет программно настраивать очередь обслуживания запросов. Недостатком системы прерывания является повышенное время реакции на активированный запрос. Программный опрос

7
и сброс обслуженного запроса в контроллере соответствует работе с программной моделью под одним адресом As,показанной на рисунке К.4.
Рисунок К.4 - Программная модель системы прерывания с опросом
Примером типовых средств поддержки режима прерываний может служить контроллер прерываний 580ВН59 (аналог i8259).
К.2 Унифицированные средства систем прерываний
Примером типовых средств поддержки режима прерываний может служить контроллер прерываний 580ВН59. В основу его организации положена векторная система прерываний с внеинтерфейсным вектором прерывания. Для идентификации устройств, запросивших обслуживания,
используется общий для всех устройств контроллер прерываний. Модуль
580ВН59 является программируемым контроллером прерываний (ПКП). В
нём реализуется до восьми уровней запросов на прерывания с возможностью программного маскирования и изменения порядка обслуживания прерываний. Каскадным включением нескольких модулей ПКП число уровней прерывания может быть расширено до 64. Контроллер программируется на четыре режима отработки запросов прерывания:
-режим вложенных прерываний (входам запросов назначается фиксированный приоритет в порядке нарастания и, при наличии разрешения от МПУ, обработка запросов меньшего приоритета могут быть прервана более приоритетными запросами);
-циклическая очередь запросов с равными правами в очереди, когда последний обслуженный запрос становится последним в очередь;
-циклическая очередь с программным назначением запроса последнего
вочереди;

8
- режим опроса при запрещённых прерываниях МПУ, когда МПУ опрашивает состояние запросов и выполняет программное обслуживание запросов.
Особенностью контроллера является взаимодействие с МПУ по встроенной команде CALL вызова подпрограмм. При активизации разрешённого запроса на входе INTR МПУ выставляет на контроллер сигнал подтверждения прерывания INTA, которым из контроллера считывается код команды CALL. По выборке этого кода в управляющем устройстве МПУ инициируются две выдачи сигнала INTA для считывания из контроллера двухбайтового адреса подпрограммы обработчика запроса. В двух после дующих машинных циклах сохраняется адрес возврата и в счётчике команд устанавливается адрес обращения в программу обработчика прерывания.
Внешние связи контроллера отражены на рисунке К.5.
Рисунок К.5 - Обозначение контроллера прерываний (IC)
Линии каскадирования CAS при установке высокого уровня на входе
SP (режим ведущего) активизируются, как выходные. К ведущему контроллеру может быть подключено до восьми ведомых контроллеров, у
которых на входы SP должен быть подан низкий потенциал. У ведомых контроллеров линии каскадирования активизируются, как входные. Для каскадирования выходы линий CAS ведущего контроллера соединяют с входными линиями CAS всех ведомых контроллеров с соблюдением их нумерации. При каскадировании выходные сигналы INTR ведомых

9
контроллеров должны быть соединены с входом запросов прерывания IR
ведущего контроллера, принимаемым далее в программных настройках.
Например, если ведомый контроллер будет определён в настройках под номером 1012, то выход его INTR следует соединить с входом IR5.
Максимально восемь ведомых контроллеров через входы девятого ведущего контроллера могут поддержать расслоение уровней запросов до 64. ый Состав регистров сопровождения запросов в контроллере представлен на рисунке К.6.
Рисунок К.6 - Функциональный регистровый состав контроллера
К.3. Программная модель контроллера прерываний.
На рисунке К.7 приведен состав программной модели управления контроллерами.
Рисунок К.7 - Объекты программной модели контроллера прерываний
Работа с программной моделью контроллера осуществляется двумя разновидностями приказов - приказами инициализации ICW и рабочими приказами OCW . Цепь внешнего сброса в контроллере не предусмотрена,
поэтому работа с приказами предусмотрена с привязкой к включению питания на контроллер. Первой осуществляется загрузка приказов инициализации ICW (двумя или тремя в зависимости от формата первого слова) словами. Формат приказов инициализации приведен на рисунке К.8.
При четырёх байтовой векторной области начальный адрес для запроса IR0
имеет формируемые в контроллере нулевые значения A4-A0, для запроса IR1
соответственно 001002 и т. д. При восьми байтовой векторной области в

10
контроллере формируется разряд адреса A5 и для запроса IR0 нулевые значения имеют разряды A5-A0. Под инициализацию, таким образом, занято до трёх регистров в модели. Инициализация ведущего и ведомых контроллеров выполняется по разным адресам независимо, но ограничения на значение адресной линии A0 одинаково: первое слово инициализации
ICW1 загружается по чётному адресу (A0=0), а второе и третье - по одному и тому же нечётному адресу с использованием скрытого инкремента.
Рисунок К.8 - Формат приказа инициализации контроллера
Приказами инициализации контроллеры настраиваются на режим вложенных прерываний с наивысшим приоритетом запроса IR0 и
наименьшим - запроса IR7. Если контроллер не один в системе, то он ведущий или ведомый. В слове приказа ICW3 установкой (Si=1) отмечаются входы IRi ведущего контроллера, на которые подключены ведомые контроллеры выходами INTR, а в ведомых контроллерах устанавливается код ведомого в поле ID2-ID0, как номер входа IRi ведущего, к которому подключен выход INTR ведомого. Входы INTA ведущего и ведомых контроллеров объединяются. Входы CS ведущего и ведомых контроллеров используются независимо, а каждый из контроллеров инициализируется автономно. Каждый ведомый контроллер может программироваться на