Главная -> Книги

(0) (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) (27) (28) (29) (30) (31) (32) (33) (34) (35) (36) (37) (38) (39) (40) (41) (42) (43) (44) (45) (46) (47) (48) (49) (50) (51) (52) (53) (54) (55) (56) (57) (58) (59) (60) ( 61 ) (62) (63) (64) (65) (66) (67) (68) (69) (70) (71) (72) (73) (74) (75) (76) (77) (78) (79) (80) (81) (82) (83) (84) (85) (86) (87) (88) (89) (90) (91) (92) (93) (94) (95) (96) (97) (98) (99) (100) (101) (102) (103) (104) (105) (106) (107) (108) (109) (110) (111) (112) (113) (114) (115) (116) (117) (118) (119) (120) (121) (122) (123) (124) (61)

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

При запросе прерывания от периферийного устройства выполняются следующие действия:

на одной или нескольких входных линиях IR7-0 формируется переход от низкого уровня к высокому, сигнализирующий о готовности устройства к вводу или выводу;

контроллер воспринимает запросы, учитывает их приоритеты и формирует сигнал INT прерывания процессора;

процессор завершает текущую команду и, если прерывания разрешены (INTE = 1), выдает в контроллер импульс подтверждения прерывания INTA;

контроллер по шине данных вводит в процессор код операции команды CALL вызова подпрограммы;

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

управление передается выбранной подпрограмме, а после ее завершения возвращается прерванной программе.

На рис. 5-И приведена блок-схема контроллера и его программная модель. Основу контроллера составляют следующие узлы: регистр запросов прерывании IRR, регистр обслуживаемых прерываний ISR, регистр маски прерываний IMR, шифратор приоритетов PR, схема каскадирования, буфер шины данных и схемы управления.

Запросы прерываний обрабатываются тремя взаимосвязанными регистрами. Регистр IRR фиксирует все запросы прерываний, регистр ISR хранит обслуживаемые прерывания, а регистр IMR идентифицирует маскируемые (запрещаемые) входы прерываний. Шифратор приоритетов анализирует содержимое этих трех регистров и определяет, необходимо или нет генерировать сигнал INT прерывания процесора.

Входные цепи сигналов IRy-o рассчитаны на восприятие фронта сигнала и сохранение высокого уровня до подтверждения запроса первым импульсом INTA.

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



- Д г

RD-4gf

CS- ОД-

ОД--• eg CASp g SP-

Управление

ША INT

f § -I

s5 4 J 2

Регистр масок прерываний (Ш)

-IRo

- t -2 -3

- 4 -5 -6

-JR-,

РегистрШЯ II

Регистр приказов инициализации

Регистр ISR

м i i i i i

Регистр! MR II

Регистр рабочих приказов I I I I I f i

Регистр состоянии i i i i i 1 I

ША шу mosp

Каскадные линии

Рис. 5-11. Структурная схема (а) и программная модель (б) микросхемы КР580ВН59

чает импульсом INTA. Этот входной сигЬал заставляет контроллер выдать на шину данных код операции команды CALL и зафиксировать состояние IRR. Следовательно, высокий уровень IR должен сохраняться минимум до первого сигнала INTA. Код операции CALL вызывает формирование двух дополнительных импульсов INTA, передающих из контроллера на шину данных два байта адреса подпрограммы обслуживания прерывания (вектор). Сразу после третьего импульса INTA шифратор приоритетов устанавливает в единицу соответствующий бит в регистре ISR и сбрасывает установленный запросом бит регистра IRR. Вход IR к этому моменту может еще находиться в активном core?



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

Если какой-либо вход IR замаскирован, сигнал IR зафиксируется в регистре IRR, но установленный бит регистра IMR не пропустит его в шифратор приоритетов. Когда выполняемая программа сбрасывает бит IMR, шифратор приоритетов распознает активный запрос и контроллер генерирует прерывание INT. Отметим, что маскирование входа с некоторым приоритетом не запрещает прерывания от входов с меньшими приоритетами.

Восьмибитный двунаправленный буфер шины данных с тристабильными каскадами используется для интерфейса с системной шиной данных по линиям D7 o. Через него передаются управляющие слова (приказы), информация о состоянии контроллера и команда CALL.

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

Схема каскадирования позволяет объединить несколько контроллеров для расширения числа входов запросов прерываний. При этом один из контроллеров работает как ведущий (управляющий), а до 8 контроллеров- как ведомые (управляемые).

Контроллер имеет следующие управляющие сигналы (рис. 5-12):

CS (выбор кристалла)-L-активный входной сигнал, разрешающий связь контроллера с шиной данных;

WR (запись) - L-активный сигнал загрузки информации с шины данных в адресуемый регистр контроллера;

RD (считывание) - L-активный вход, инициирующий передачу на шину данных информации о состоянии контроллера;

INT (прерывание)-выходной Н-активный сигнал, ко-торый подается на вход прерывания процессора;

INTA (подтверждение прерывания) - входной L-активный сигнал от процессора, на который контроллер реагирует выдачей команды CALL;



(0) (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19) (20) (21) (22) (23) (24) (25) (26) (27) (28) (29) (30) (31) (32) (33) (34) (35) (36) (37) (38) (39) (40) (41) (42) (43) (44) (45) (46) (47) (48) (49) (50) (51) (52) (53) (54) (55) (56) (57) (58) (59) (60) ( 61 ) (62) (63) (64) (65) (66) (67) (68) (69) (70) (71) (72) (73) (74) (75) (76) (77) (78) (79) (80) (81) (82) (83) (84) (85) (86) (87) (88) (89) (90) (91) (92) (93) (94) (95) (96) (97) (98) (99) (100) (101) (102) (103) (104) (105) (106) (107) (108) (109) (110) (111) (112) (113) (114) (115) (116) (117) (118) (119) (120) (121) (122) (123) (124)