- •Архитектура и режимы работы микропроцессора к1810вм86
- •Выбор основных узлов для построения мпс
- •3.1 Буферные регистры и шинные формирователи
- •3.2 Программируемый таймер к1810ви54
- •3.3 Разработка блока ацп
- •3.4 Разработка контроллера прямого доступа к памяти
- •3.5 Организация прерываний в мп к1810вм86
- •3.6 Разработка подсистемы ввода/вывода
- •3.7 Генератор тактовых импульсов
- •3.8 Разработка принципиальной схемы микро-эвм
- •5. Буферные регистры и шинные формирователи
3.5 Организация прерываний в мп к1810вм86
Микропроцессорная БИС имеет простую и изменяющуюся систему прерываний. Прерывания могут быть вызваны внешними устройствами, выполнением соответствующих команд, а также инициированы самой МП БИС (внутренние прерывания). Существует 256 различных типов прерываний.
Для подачи прерываний в МП БИС имеются два входа:
INTR – Interrupt Reguest и NMI – Non Masking Interrupt (рисунок 20).
Рисунок 20 – Возможные способы формирования прерываний в
МП К1810ВМ6
Вход INT обычно используется для подключения программируемого блока приоритетных прерываний (БПП). По функциональному назначению микросхема БПП аналогична схеме КР580ИК59 и является дальнейшей ее модификацией. Режимы работы БПП могут быть заданы программно. Основные задачи БПП – получение запросов прерывания от различных внешних устройств, определение сигнала с высшим приоритетом, формирование запроса прерывания на входе МП БИС и сообщение номера текущего обслуживаемого внешнего устройства. Прерывания по входу INT могут быть маскированы путем записи «0» или «1» в разряд 1 флагового регистра МП БИС.
Микропроцессорная БИС реагирует на поступление запроса прерывания по входу INTR последовательным выполнением двух машинных циклов обслуживания прерывания: первый указывает БПП, что запрос прерывания был воспринят, и начинает обслуживаться; на втором БПП выдает на МД байт данных, указывающий тип прерывания (0–255). При работе МП БИС с максимальной конфигурацией системы на интервале двух циклов INTA на выходе LOCK формируется сигнал, запрещающий другим процессорам системы пользоваться магистралями.
Внешние устройства могут подавать запросы прерывания на второй
вход NMI МП БИС. На этом входе запрос воспринимается и записывается в МП БИС по фронту поступающего импульса, не может быть маскирован и имеет высший приоритет по отношению к запросам, поступающим на вход INTR. Обычно вход NMI используют для указания МП БИС о каких-либо сбоях в системе (сбоях в источнике питания, ошибках в памяти). При определении наличия сигнала на входе NMl МП БИС нет необходимости получать код для инициализации процесса обслуживания прерывания и соответственно она не формирует два машинных цикла INTA в ответ на запрос по входу NMI.
Внутренние прерывания формируются за счет выполнения МП БИС команды прерывания (тип команды зависит от источника прерывания).
При установке флага переполнения О=1 в результате выполнения какой-либо команды программы формируется команда прерывания – INTO (прерывание по переполнению).
Микропроцессорная БИС формирует прерывание сразу же после выполнения команд DIV или IDIV, если частное от деления больше, чем разрядность используемых регистров.
При установке флага Т=1 МП БИС автоматически формирует прерывание, которое воздействует сразу после выполнения любой текущей команды. Этот тип прерывания называют одношаговым или первым типом, и он является мощным средством при отладке программ. При выполнении одношагового типа прерывания МП БИС производит обычную последовательность операций, а именно записывает в стек флаги МП БИС, содержимое регистров CS и IP. В дополнение к этому очищаются флаги I и Т. В регистры CS и IP записываются соответственно из адресов 00006, 00007 и 00004, 00005 новые значения базового адреса сегмента и смещения для передачи управления на соответствующую подпрограмму обслуживания прерывания. В качестве такой подпрограммы может быть использована подпрограмма выдачи результата выполнения программы на печать, дисплей и т. д. По окончании выполнения подпрограммы после получения команды IRET (возврат из подпрограммы) из стека извлекаются и записываются в МП БИС флаги и содержимое регистров IP и СР. Из приведенных пояснений ясно, что при выполнении одношагового типа прерывания МП БИС обслуживает прерывания обычным способом. Однако обеспечение вывода результатов выполнения отдельных блоков в программе или даже отдельных команд с целью их последующего анализа путем задания в нужном месте программ режима одношаговых прерываний является удобным средством при исследовании работы программ.
Типы внутренних прерываний имеют ряд общих свойств:
1) код прерывания сообщается МП БИС перед командой или включен в команду прерывания;
2) на выходе МП БИС не формируются сигналы INTA;
3) за исключением одношагового типа, внутренние прерывания не могут быть программно отключены;
4) за исключением одношагового типа, любой из внутренних прерываний имеет более высокий приоритет по отношению к внешним прерываниям.
Любой из 256 возможных типов прерывания характеризуется вектором прерывания. Векторы прерывания занимают 1К байт адресного пространства. На рисунке 21 показано распределение начал векторов прерывания по адресам памяти. Как видно из рисунка, каждый вектор занимает четыре ячейки памяти, при этом два младших адреса в векторе используются для записи смещения в сегменте, а два старших — для записи базового адреса сегмента.
Рисунок 21 – Распределение векторов прерываний в памяти микроЭВМ
Формирование адреса передачи управления на соответствующую подпрограмму обслуживания прерывания в BIU происходит так же, как и при обращении к любой ячейке памяти, а именно: содержимое двух младших адресов вектора прерывания записывается в регистр IP, coдержимое старших двух адресов записывается в регистр CS. После этого содержимое CS смещается на четыре разряда влево и откладывается с содержимым IP. Полученное 20-разрядное число определяет адрес начала подпрограммы прерывания.
В данной микропроцессорной системе используется контроллер прерываний К1810ВН59А. Структурная схема изображена на рисунке 22.
Рисунок 22 – Структурная схема контроллера прерываний К1810ВН59А
Включение контроллера прерываний в систему показано на рисунке 23.
Рисунок 23 – Включение контроллера прерываний в МПС
Контроллер принимает запросы от внешних устройств, определяет, какой из незамаскированных запросов имеет наивысший приоритет, сравнивает его с приоритетом текущей программы и при соответствующих условиях выдает запрос прерывания INT для МП. После подтверждения запроса МП должен получить от котроллера информацию, которая укажет на подпрограмму, соответствующую данному ВУ.