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

БИС КР580ВН59,

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

Напомним кратко процедуру выполнения прерываний. Входной сигнал «Запрос прерывания» (ЗПР) поступает на вход ЦПЭ (вывод 14) от внешнего устройства. Этот сигнал анализируется в конце текущей команды. Предварительно должен быть установлен в 1 триггер возможности прерывания. Эта установка делается только программно, по команде EI. Если сигнал INTE равен 1, сигнал ЗПР инициирует процедуру перехода текущей программы в состояние прерывания; одним из элементов этой процедуры будет автоматический сброс в 0 триггера разрешения прерываний, а другим — передача по спе­циальной линии шины управления сигнала согласия на выполнение прерывания — «Прерывание разрешено» (РПР).

Таким образом, имеется два сигнала разрешения пре­рывания: один появляется на выводе 16 ЦПЭ, а другой — на шине данных (бит Do). Как называть каждый из них, нет единого мнения. Первый — Interrupt Enable (INTE) — можно называть «Разрешение прерывания», хотя более строго он означает «Возможно прерывание» (ВЗПР). Второй — Interrupt Acknowledge (INTA) — переводят как «Подтверждение получения запроса», хотя его сущ­ность заключается именно в согласии, иными словами раз­решении, на выполнение прерывания (РПР). Именно этот сигнал используется для управления прерываниями.

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

Обслуживание запросов только от одного периферий­ного устройства протекает описанным образом и не вызы­вает затруднений, так как начальный адрес программы обработки прерывания можно зафиксировать аппаратно. Ситуация усложняется, когда на линию запроса прерыва­ния подаются сигналы от нескольких внешних устройств, а именно так бывает в реальных системах автомати­ческого управления технологическими процессами. В такой системе возможен запрос на прерывание сразу от двух или более устройств во время выполнения центральным про­цессором какой-либо команды. Таким образом, в конце выполнения команды ЦПЭ имеет дело с несколькими запросами, называемыми одновременными, хотя факти­чески они могли возникнуть не строго в одно и то же время. Система прерываний должна решить, какое из устройств, пославших запрос, следует обслужить сразу, а какое оставить ждать. Иными словами, она должна установить очередность обслуживания устройств, или их приоритеты.

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

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

Аппаратная реализация управления приоритетами.Для аппаратной реализации управления приоритетами существует два основных метода. Первый метод заклю­чается в использовании поллинга, т. е. линии, по которой сигнал РПР идет от центрального процессора последовательно ко всем внешним устройствам (рис. 2.9). Сигнал РПР посылается сначала устройству с наивысшим приоритетом; в этом случае говорят, что сигнал посылается только самому ближнему устройству, хотя пространствен­но оно может располагаться дальше всех от ЦПЭ. Если это устройство не запрашивало прерывания, то сигнал РПР переходит к следующему устройству (со вторым приоритетом) и т. д. Если же какое-то устройство запрашивало прерывание, то оно прерывает путь сигнала РПР и не допускает его пересылки дальше.

Устройство, запросившее прерывание, не только захватывает сигнал РПР, но и выставляет на линии шины данных двоичный код (вектор), представляющий собой указатель начального адреса программы обслуживания данного устройства. Это позволяет центральному про­цессору очень быстро переходить к программе обработки прерываний. Для каждого внешнего устройства резерви­руется несколько ячеек памяти. Первая используется для хранения содержимого счетчика команд (адреса возврата), а во второй хранится адрес, с которого начинается программа обслуживания внешнего устройства. Содержимое этой ячейки загружается в программный счетчик, и центральный процессор сразу же переходит к выполнению команды обслуживания. Процесс этот очень быстрый, занимает не более двух машинных циклов. Время обслуживания не зависит от числа внешних устройств в системе.

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

Рис. 2.9. Аппаратная реализация управления приоритетами (схема поллинга)

 

Рис. 2.10. Система многоуровневых прерывании

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

Практически при аппаратном управлении приоритетами часто используется комбинация двух описанных способов, дающая систему многоуровневых прерываний. В такой системе используется несколько пар линий запроса-разрешения (ЗПР-РПР). Линии запроса специальной схемой устанавливаются на приоритетный уровень, а разрешение, соответствующее каждому приоритетному уровню, идет по цепочке через все внешние устройства данного уровня приоритета (рис. 2.10). Таким образом, каждое устройство на любом уровне имеет свой собственный приоритет.

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

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

Гибкость программных средств и высокие скорости аппаратурной реализации соединяются в комбинирован­ной программно-аппаратной системе управления приори­тетами. Такие системы должны иметь два регистра:

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

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

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

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

 

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

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

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

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

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

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

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

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

 

 

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

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

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

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

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

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

 

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

11001101—код операцииCALL; 00101000 — младший байт адреса <ВЗ> ; 00000000 — старший байт адреса подпрограммы обработки.

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

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

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

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

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

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