Программируемый контроллер приоритетных прерываний
Как уже указывалось в § 4.4, эффективность систем автоматического управления технологическими процессами значительно повышается, когда в системе возможна организация прерываний программы, так как наличие прерываний позволяет -изменять ход программы на основании сигналов, поступающих в микропроцессор от периферийного оборудования.
Напомним кратко процедуру выполнения прерываний. Входной сигнал «Запрос прерывания» (ЗПР) поступает на вход ЦПЭ (вывод 14) от внешнего устройства. Этот сигнал анализируется в конце текущей команды. Предварительно должен быть установлен в 1 триггер возможности прерывания. Эта установка делается только программно, по команде EI. Если сигнал INTE равен 1, сигнал ЗПР инициирует процедуру перехода текущей программы в состояние прерывания; одним из элементов этой процедуры будет автоматический сброс в 0 триггера разрешения прерываний, а другим — передача по специальной линии шины управления сигнала согласия на выполнение прерывания — «Прерывание разрешено» (РПР).
Таким образом, имеется два сигнала разрешения прерывания: один появляется на выводе 16 ЦПЭ, а другой — на шине данных (бит Do). Как называть каждый из них, нет единого мнения. Первый — Interrupt Enable (INTE) — можно называть «Разрешение прерывания», хотя более строго он означает «Возможно прерывание» (ВЗПР). Второй — Interrupt Acknowledge (INTA) — переводят как «Подтверждение получения запроса», хотя его сущность заключается именно в согласии, иными словами разрешении, на выполнение прерывания (РПР). Именно этот сигнал используется для управления прерываниями.
После наступления прерывания выполнение текущей программы прекращается и центральный процессор переключается на выполнение запроса. Адрес программы отработки прерывания указывается периферийным устройством, пославшим запрос прерывания, с помощью вектора рестарта, выставляемого на шину данных. Как только работа этой программной секции завершится, осуществляется обратный переход к прерванной программе и продолжается ее нормальное выполнение.
Обслуживание запросов только от одного периферийного устройства протекает описанным образом и не вызывает затруднений, так как начальный адрес программы обработки прерывания можно зафиксировать аппаратно. Ситуация усложняется, когда на линию запроса прерывания подаются сигналы от нескольких внешних устройств, а именно так бывает в реальных системах автоматического управления технологическими процессами. В такой системе возможен запрос на прерывание сразу от двух или более устройств во время выполнения центральным процессором какой-либо команды. Таким образом, в конце выполнения команды ЦПЭ имеет дело с несколькими запросами, называемыми одновременными, хотя фактически они могли возникнуть не строго в одно и то же время. Система прерываний должна решить, какое из устройств, пославших запрос, следует обслужить сразу, а какое оставить ждать. Иными словами, она должна установить очередность обслуживания устройств, или их приоритеты.
Когда в системе используется несколько внешних устройств, центральный процессор должен прежде всего определить, какое из них выставило запрос на прерывание и какое обслуживается в данный момент. После этого необходимо решить, какое из них имеет более высокий приоритет и должно быть обслужено в первую очередь. Возможно два подхода к решению этой проблемы:
применение специальных аппаратных средств и программное задание приоритетов. Программное решение обычно медленнее соответствующего аппаратного, а так как скорость отработки прерываний является важнейшим аспектом снижения затрат времени на обслуживание и повышение эффективности системы, то чаще применяется аппаратное решение.
Аппаратная реализация управления приоритетами. Для аппаратной реализации управления приоритетами существует два основных метода. Первый метод заключается в использовании поллинга, т. е. линии, по которой сигнал РПР идет от центрального процессора последовательно ко всем внешним устройствам (рис. 8.9). Сигнал РПР посылается сначала устройству с наивысшим приоритетом; в этом случае говорят, что сигнал посылается только самому ближнему устройству, хотя пространственно оно может располагаться дальше всех от ЦПЭ. Если это устройство не запрашивало прерывания, то сигнал РПР переходит к следующему устройству (со вторым приоритетом) и т. д. Если же какое-то устройство запрашивало прерывание, то оно прерывает путь сигнала РПР и не допускает его пересылки дальше.
Устройство, запросившее прерывание, не только захватывает сигнал РПР, но и выставляет на линии шины данных двоичный код (вектор), представляющий собой указатель начального адреса программы обслуживания данного устройства. Это позволяет центральному процессору очень быстро переходить к программе обработки прерываний. Для каждого внешнего устройства резервируется несколько ячеек памяти. Первая используется для хранения содержимого счетчика команд (адреса возврата), а во второй хранится адрес, с которого начинается программа обслуживания внешнего устройства. Содержимое этой ячейки загружается в программный счетчик, и центральный процессор сразу же переходит к выполнению команды обслуживания. Процесс этот очень быстрый, занимает не более двух машинных циклов. Время обслуживания не зависит от числа внешних устройств в системе.
Второй метод аппаратной реализации управления приоритетами заключается в использовании нескольких линий запросов, прерывания. Если каждое внешнее устройство связано с центральным процессором своей собственной линией запроса, то при помощи простой логической схемы можно реализовать систему, при которой
Рис. 8.9. Аппаратная реализация управления приоритетами (схема поллинга)
Рис. 8.10. Система многоуровневых прерывании
на ЦПЭ поступает запрос только с наивысшим приоритетом. Тот факт, что каждый запрос идет по своей индивидуальной линии, также означает, что в системе можно сделать опознание устройства и нет необходимости в дополнительном векторе программы отработки прерывания.
Практически при аппаратном управлении приоритетами часто используется комбинация двух описанных способов, дающая систему многоуровневых прерываний. В такой системе используется несколько пар линий запроса-разрешения (ЗПР-РПР). Линии запроса специальной схемой устанавливаются на приоритетный уровень, а разрешение, соответствующее каждому приоритетному уровню, идет по цепочке через все внешние устройства данного уровня приоритета (рис. 8.10). Таким образом, каждое устройство на любом уровне имеет свой собственный приоритет.
Система приоритетных прерываний позволяет центральному процессору непрерывно сравнивать приоритет обслуживаемого устройства, а также собственный с приоритетом внешних устройств, пославших запрос, и немедленно переключаться на выполнение самых срочных требований. Когда поступает запрос с более высоким приоритетом, например сигнал о возникновении аварийной ситуации в системе, то прерывается выполнение даже той программы, которая до этого вызвала прерывание основной программы, но уровень приоритета которой ниже. Обслуживание прерванной программы с низким приоритетом возобновляется автоматически, как только будет завершено выполнение программы с более высоким приоритетом. Такой процесс, называемый вложением прерываний, может повторяться много раз и выполняется автоматически на любом уровне без всяких дополнительных указаний в программе.
Программное управление приоритетами. Недостаток аппаратной системы управления приоритетами заключается в том, что однажды установленные приоритеты жестко фиксируются. При программной установке приоритетов последние находятся под контролем программиста и, следовательно, могут быть изменены и приспособлены к требованиям конкретной системы управления технологическими процессами.
Гибкость программных средств и высокие скорости аппаратурной реализации соединяются в комбинированной программно-аппаратной системе управления приоритетами. Такие системы должны иметь два регистра:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.