Программируемый контроллер приоритетных прерываний, страница 2

регистр прерываний и регистр маски. Все внешние по отношению к ЦПЭ средства образуют систему много­уровневого прерывания. Линии запроса прерывания заканчиваются в регистре прерываний, и запрос от любого устройства, находящегося на данном уровне приоритета, вызывает установку логической 1 в соответствующем бите регистра прерываний. Регистр маски — это адресуемое устройство, поэтому его содержание может быть установ­лено путем подачи соответствующей команды. Соответ­ственные биты этих двух регистров объединяются логи­ческой схемой И. Таким образом, запрос на прерывание достигает ЦПЭ только в том случае, если соответствующий бит маски прерываний был предварительно установлен в состояние логической 1.

В любое время программно можно запретить запросы на прерывание на каждом уровне, установив логический О в соответствующем бите регистра маски. Путем запрета уровня п и разрешения уровня п — 1 приоритет уровня п — 1 можно сделать выше, чем п. В результате про­грамма управляет аппаратной установкой приоритетов.

БИС контроллера приоритетных прерываний. В составе микропроцессорного комплекта БИС серии К580 имеется специальная микросхема КР580ВН59, предназначенная для построения многоуровневых приоритетных прерыва­ний и называемая БИС контроллера приоритетных пре­рываний (КПП). Она размещена в корпусе с 24 выводами (рис. 8.11) и представляет собой 8-уровневое програм­мируемое устройство. Каскадное включение подобных схем позволяет расширить систему прерываний до 64 запросов.

Рис. 8.11. Структурная схема КПП

При этом одно из устройств является основным (веду­щим), а другие—вспомогательными (ведомыми).

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

Каскадный буфер-компаратор используется при кас­кадном включении нескольких КПП. В буфере ведущего контроллера (ВВдм равен 0) генерируется код ведомого {ВВдм равен 1), вырабатывающего сигнал прерывания. По линиям Кас2, Кас1, КасО ведущий контроллер передает код, а ведомые по этим же цепям этот код принимают и сравнивают с собственным номером.

Регистр запросов и обслуживающий регистр пред­назначены для фиксации запросов прерывания: регистр запросов хранит все поступившие запросы прерывания, а обслуживающий регистр хранит только обслуживаемый запрос. Сброс бита обслуживающего регистра выполняет­ся текущим управляющим словом по окончании обслу­живания, а бита регистра запросов — автоматически.

Регистр маски хранит код маски, влияющий и на регистр запросов, и на обслуживающий регистр. .

Схема управления обеспечивает загрузку и хранение командных слов и передачу на шину данных содержимого внутренних регистров контроллера. Режимы работы и сиг­налы управления КПП представлены в табл. 8.5. Програм­мирование КПП выполняется последовательным занесе­нием начальных (НУС) и текущих (ТУС) управляющих слов. Перед началом работы системы в контроллер заносятся НУС1, НУС2 и НУСЗ, которые задают структуру блока приоритетных прерываний и адресный интервал между .начальными командами программ обслуживания, т. е. протяженность ареалов памяти. Если в системе управления технологическими процессами имеется не более 8 периферийных устройств, то в единственный КПП заносится два слова — НУС1 и НУС2. При большем числе периферийных модулей выполняется каскадное включение контроллеров и в каждый загружается три начальных слова.

Начальное управляющее слово НУС1 (рис. 8.12) задает адресный интервал {И А} (4 или 8) и младший байт адреса подпрограммы. Затем НУС2 задает старший байт адреса и заносится непосредственно после НУС1. В слове НУСЗ ведущего модуля записываются единицы в битах, соответствующих номерам тех входов, к которым подключены ведомые модули. Для ведомого контроллера в разряды D2, Dl, DO слова НУСЗ заносится код его номера, равный номеру входа ведущего КПП, к которому он подключен.

Текущие управляющие слова ТУС1, ТУС2 и ТУСЗ управляют режимами работы КПП и всеми этапами обработки запросов прерываний от периферийных

Таблица 8.5, Сигналы управления и функции программируемого КПП


Рис. 8.12. Форматы начальных управляющих слов КПП

устройств. Слово ТУС1 представляет собой код маски, который заносится в соответствующий регистр. Слово ТУС2 осуществляет изменение приоритетов внешних устройств и сброс отдельных бит обслуживающего регистра. Слово ТУСЗ устанавливает специальный режим маскирования, в котором разрешаются прерывания от запросов более низких приоритетов, а от более высоких — запрещаются (рис. 8.13).

Распределение приоритетов запросов в исходном состоянии КПП имеет .вид: 0, 1,2, 3, 4, 5, 6, 7. Наивысший приоритет имеет 0. Управляющим словом ТУС2 этот поря­док можно изменить, назначив запрос с младшим приоритетом. При этом остальные приоритеты смещаются циклически, сохраняя тот же порядок. Например, задавая самый младший приоритет запросу с номером 5, образуют распределение приоритетов следующего вида:

6, 7, О, 1, 2, 3, 4, 5. Циклический сдвиг приоритета выполняется при D7=1, причем если D6==0, то "самый низкий приоритет будет присвоен старшему из обслужи­ваемых запросов, а при D6==\ — запросу с номером, код которого размещен в битах D2, Dl, DO. Остальные приоритеты смещаются циклически.

После загрузки начальных командных слов контрол­лер находится в исходном состоянии, в котором все регистры очищены и самый младший приоритет при­своен устройству, подключенному к входу ЗПР7 (см. рис. 8.11). Один или несколько запросов устанавливают в состояние 1 соответствующие разряды регистра запро­сов. Контроллер выявляет сигнал, имеющий наивысший приоритет, и вырабатывает запрос прерывания, подавае­мый в ЦПЭ. Последний дает согласие на выполнение прерывания и сигнал разрешения РПР. .Контроллер, установив в единицу бит обслуживающего регистра, выставляет код операции CALL<B2> <B3> на шину данных. Выполнение команды вызова подпрограммы CALL обеспечивается еще двумя сигналами РПР, по кото­рым на шину данных передаются младший и старший байты начального адреса подпрограммы. Например, при адресном интервале 8 и начальном адресе размещения подпрограмм 0000 HEX на запрос третьего устройства будут выработаны следующие кодовые комбинации: 11001101—код операцииCALL; 00101000 — младший байт адреса <ВЗ> ; 00000000 — старший байт адреса подпрограммы обработки.

Рис. 8.13. Форматы текущих управляющих слов КПП

При организации в микропроцессорной системе упра­вления технологическими процессами ввода-вывода по прерываниям необходимо тщательно проанализировать временные соотношения обработки прерываний, а также соблюдать специальные правила проектирования систем с прерываниями:

1. Выполнение прерванной программы должно возоб­новляться таким образом, как если бы прерывания вообще не было. Поэтому в программах обслуживания прерываний следует предусмотреть временное запомина­ние содержимого всех внутренних регистров, привле­каемых для обмена данными.

2. Для временного запоминания используется стек, под который следует выделить достаточную область памяти. Емкость стека играет важную роль в системах с многоуровневыми прерываниями.

3. Большое значение имеет правильное присвоение приоритетов периферийным устройствам. Наивысший приоритет присваивается критическим прерываниям типа аварийного выключения питания, достижения парамет­рами предельных значений и др. Следующий приоритет обычно назначается таймеру реального времени. Низшие приоритеты присваиваются периферийным устройствам, у которых время ожидания некритично, например пишу­щей машинке, делающей периодическую распечатку значений параметров.

4. В режимах управления системой с пульта оператора пульт должен иметь достаточно высокий приоритет, чтобы. оператор не терял связь с системой.

5. При анализе системы на наиболее неблагоприятный режим предполагается, что запросы на прерывания от периферийных устройств поступают одновременно, а запросы на передачу управления следуют с максимальной частотой. Рекомендуется проверить последовательность обслуживания в соответствии с присвоенными приорите­тами и убедиться, что запросы от устройств с высоким приоритетом не блокируют устройства с низким приорите­том.