Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Micro_systK.doc
Скачиваний:
4
Добавлен:
01.04.2025
Размер:
4 Мб
Скачать
☆

2.6. Контроллер прерываний

Для обеспечения реакции на запросы прерывания от внешних устройств в МП обычно имеется один или два входа запросов прерывания. В последнем случае один из входов предназначен для маскируемых (INT), а второй – для немаскируемых прерываний (NMI). При этом внутренняя структура МП пред­усматривает поддержку многоуровневой системы прерываний. Для практи­ческой реализации этой возможности по маскируемому входу прерывания (INT), в состав процессорного модуля включают специальные, обычно прог­раммируемые, микросхемы – контроллеры прерываний (КПР). Контроллер прерывания выполняет следующие функции:

  • принимает запросы прерываний от нескольких источников;

  • запрещает в случае необходимости запрос прерывания от любого источника прерывания;

  • на приоритетной основе выбирает один из одновременно поступивших запросов прерывания;

  • на приоритетной основе определяет возможность прерывания текущей программы;

  • формирует запрос прерывания на входе INT микропроцессора;

  • обеспечивает ввод в микропроцессор по сигналу INTA информации о номере (или векторе) прерывания.

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

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

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

П римером программируемого контроллера прерываний может служить микросхема I8259A [ХВОЩ87]. Контроллер позволяет обслужить до 8 запросов прерываний от внешних устройств, а при подключении дополнительных подобных ИМС число обслуживаемых запросов может быть расширено до 64. Структурная схема I8259A представлена на рис. 2.23.

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

В состав контроллера входят:

  • двунаправленный 8-разрядный буфер данных (BD), предназначенный для сопряжения контроллера прерываний с системной информационной шиной;

  • блок управления записью чтением (RWCU), принимающий управля­ющие сигналы от микропроцессора и задающий режимы функционирования контроллера;

  • схема каскадного буфера-компаратора (CMP), используемая для вклю­чения в систему нескольких контроллеров;

  • схема управления (CU), вырабатывающая сигнал прерывания INT и формирующая номер запроса прерывания для выдачи на шину данных;

  • регистр запросов прерываний (IRR – Interrupt Request Register), исполь­зуемый для хранения всех запросов прерываний поступающих по линиям IRQ0... IRQ7;

  • схема принятия решений по приоритетам (PRB), идентифицирующая приоритеты запросов и выбирающая запрос с наивысшим приоритетом для дальнейшего обслуживания;

  • регистр масок прерываний (IMR – Interrupt Mask Register), содержимое каждого бита которого отвечает за маскирование соответствующего запроса прерывания (0 – разрешение обработки прерывания, 1 – запрещение);

  • регистр обслуживаемых прерываний (ISR – Interrupt Service Register), сохраняющий уровни запросов прерываний, находящихся на обслуживании контроллера.

Каждый сигнал запроса прерывания, поступившей с линии IRQx, фик­сируется в соответствующем бите регистра IRR. Проверяется регистр маски IMR. Если запрос по данному входу разрешен (не замаскирован), микросхема проверяет, не обрабатывается ли другое прерывание. При этом она запрашивает информацию регистра ISR. Содержимое регистра IRR поступает на схему приоритетов, чтобы в случае поступления сразу нескольких запросов пре­рывания выбрать из них запрос с наивысшим приоритетом. Бит, соответ­ствующий запросу с наивысшим приоритетом, переносится в регистр ISR и контроллер формирует сигнал запроса прерывания INT для микропроцессора. Если в микропроцессоре флаг IF=1, то микропроцессор отвечает двумя сиг­налами по линии INTA, выполняя два цикла подтверждения прерывания. По второму сигналу INTA контроллер выдает на линии данных D0–D7 номер обрабатываемого прерывания, по которому микропроцессор передает управ­ление соответствующей программе обработки прерывания.

Номер прерывания для каждой линии IRQx, а также уровень приоритета запроса задаются микропроцессором при программировании контроллера.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]