Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Программируемый контроллер прерываний




 

Программируемый контроллер прерываний К580ВН59 позволяет организовать более гибкую и эффективную подсистему прерываний в МПС.

Отличительной особенностью контроллера..ВН59 является то, что он генерирует код команды CALL, поэтому область векторов прерываний (по-прежнему компактная) может располагаться по произвольным адресам памяти. Структурная схема контроллера прерываний представлена на Рис. 5.4.

 
 

Рис. 5.4. Структура контроллера прерываний К580ВН59

Программируемый контроллер прерываний включает в себя блоки связи с системной шиной, управления и запросов. Блок запросов содержит три 8-разрядных регистра - регистр запросов РгЗ, в котором фиксируются запросы от источников прерываний, регистр маски РгМ, определяющий подмножество источников, которым разрешены прерывания и регистр состояний РгС, в котором фиксируются запросы, принятые на обслуживание.

Состав управляющих линий контроллера включает стандартные линии подключения к системной шине: D[7:0], A0, WR\, RD\, CS\; линии, передающие запрос на прерывания процессору и ответ МП INT и INTA\ соответственно.

Линии запросов z7..z0 соединяют контроллер с источниками прерываний. Контроллер может обслуживать до 8 источников прерываний. При большем числе источников возможно каскадное включение..ВН59, причем один из контроллеров будет ведущим, а остальные (не более 8) - ведомыми. Для назначения роли контроллера в системе предназначен вход SP
(H - уровень соответствует ведущему контроллеру). Для организации взаимодействия каскадированных контроллеров прерываний предназначены линии CAS[2:0].

Программирование контроллера осуществляется путем загрузки в специальные регистры двух или трех управляющих слов, форматы которых показаны на Рис. 5.5. Загрузка этих слов осуществляется командами инициализации в начале работы системы.

 

Команда A0                  
КИ1     А7 А6 А5     F S  
КИ2     A15 A14 A13 A12 A11 A10 A9 A8
КИ3-1     z7 z6 z5 z4 z3 z2 z1 z0
КИ3-2     x x x x x n n N

Рис. 5.5. Форматы команд инициализации контроллера..ВН59

В команде КИ1 разряд S определяет количество контроллеров прерываний в системе: "1" - один контроллер, "0" - более одного (имеет место каскадирование). Разряд F задает шаг между соседними адресами подпрограмм, обслуживающих прерывания: "1" - 4 байта, "0" - 8 байт.

Разряды A7, A6, A5 вместе со всеми разрядами КИ2 образуют старшие 11 бит адреса подпрограммы. При значении F = 1 вектор прерывания (адресная часть команды CALL) формируется следующим образом:

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 n n n 0 0,

где nnn - номер обслуживаемого запроса на прерывание (номер входа z). Если задан шаг между адресами 8 байт (F = 0), то разряд A5 игнорируется и вектор генерируется след. образом:

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 n n n 0 0 0.

Третья команда инициализации подается (и принимается контроллером) только при наличии нескольких контроллеров в системе (S = 0), причем формат этой команды различен для ведущего и ведомых контроллеров.

Ведущему контроллеру командой КИ3-1 указывается, к каким его входам z подключены ведомые контроллеры (в соответствующем разряде КИ3-1 установлена "1"). "0" в разряде КИ3-1 означает, что на соответствующий вход z подключен обычный источник прерываний.

Каждому ведомому контроллеру в трех младших разрядах КИ3-2 указывается номер входа ведущего контроллера, к которому подключен данный ведомый. Состояние разрядов КИ3-1[7:3] безразлично.

Помимо команд инициализации, выполняемых один раз в начале работы МПС, контроллер в любое время может выполнить команды управления, позволяющие установить маску запросов (КУ1), задать режим приоритета запросов (КУ2) или определить будущую операцию. Форматы команд управления приведены на рис. 5.6.

Команда КУ1 устанавливает новое значение в регистр маски, причем если разряд РгМ установлен в "1", то соответствующий вход z считается замаскированным и прерывание от этого источника запрещено.

Команда A0                  
КУ1     m7 m6 m5 m4 m3 m2 m1 m0
КУ2     ЦП К СВ     k2 k1 k0
КУ3     x СМ1 СМ0     СП Р1 Р0
                       

Рис. 5.6. Форматы команд управления контроллера..ВН59

КУ2 задает тип приоритета запросов (ЦП = 0 - фиксированный приоритет, z0 -высший, z7 -низший; ЦП = 1 - циклический приоритет). При циклическом приоритете этой же командой задается номер входа (в разрядах k[2:0]), которому присвоен низший приоритет. После обслуживания любого запроса приоритеты входов циклически меняются на одну позицию. Разряд СВ КУ2 позволяет сбросить бит регистра РгС, номер которого задан битами k[2:0] КУ2. Разряд К определяет, используется ли в команде поле k[2:0].

Команда КУ3 позволяет установить или сбросить режим спецмаскирования, при котором на обслуживание принимаются запросы с приоритетом, ниже текущего. КУ3[6:5] = 11 - установить режим спецмаскирования, КУ3[6:5] = 10 - снять режим спецмаскирования, КУ3[6:5] = 0x - не воздействует.

Эта же команда подготавливает в следующем такте один из допустимых к чтению объектов: регистр запросов при КУ3[1:0] = 10; регистр состояний при КУ3[1:0] = 11; номер запроса с наивысшим приоритетом по формату Рис. 5. при КУ3[2:0] = 10x. Считывание осуществляется командой IN при A0 = 0, WR = 0. Признак INT отмечает наличие запроса, а код w[2:0] определяет номер незамаскированного запроса с наивысшим приоритетом. Результатом чтения информации по формату Рис. 5.7 можно воспользоваться при организации программной идентификации источника прерывания.

 

               
INT x x x x w2 w1 w0

Рис. 5.7. Формат слова номера запроса с наивысшим приоритетом

Считывание содержимого регистра маски может осуществляться командой IN при
A0 = 1 без предварительной загрузки команды КУ3.

При организации векторных прерываний контроллер, получив запросы на входах z0..z7, фиксирует их в соответствующих разрядах РгЗ. При наличии незамаскированных запросов контроллер формирует для МП сигнал INT, а, получив ответ INTA\, принимает на обслуживание наиболее приоритетный из незамаскированных запросов, для чего

(1) устанавливает в "1" соответствующий разряд РгС;

(2) выдает на шину данных DB код команды CALL (константу CDh);

(3) по второму и третьему сигналу INTA\ выдает на DB адрес подпрограммы обслуживающей выбранное прерывание, сгенерированный по правилам, описанным выше.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...