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

(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) (54)

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

Подключение регистров ВВ к щине данных осуществляется с помощью логических схем, формирователей с открытым коллектором и тристабильных буферов. Наиболее удобно в качестве регистров ВВ использовать многорежимный буферный регистр К589ИР12, имеющий тристабильные выходные каскады, встроенную логику выбора и вход аппаратного программирования на ввод или вывод. В обычной конфигурации на вход DS1 подается управляющий сигнал ввода или вывода, а на вход DS2 -сигнал выбора от дешифратора адреса.

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

Непосредственные действия, связанные с вводом-выводом реализуются одним из двух способов, различающихся адресацией регистров ВВ. Изолированный ВВ предполагает наличие специальных команд ВВ, общий формат которых показан на рис. 5-2. При выполнении команды ввода IN содержимое адресуемого входного порта PORT передается во внутренний регистр REG процессора, а при выполнении команды вывода OUT содержимое регистра REG передается в выходной порт PORT. В процессоре могут быть также и другие команды, относящиеся к ВВ и связанные с проверкой и модификацией содержимого регистра управления и состояния.

Нетрудно заметить, что в этом способе адресное пространство портов ввода и вывода изолировано от адресного пространства памяти, т. е. в ЭВМ могут быть входной порт, выходной порт и ячейка памяти с одинаковыми адресами.

КОП([Н) RES

PORT

КОП (OUT)

PORT

Рис. 5-2. Команды ввода-вывода (общий формат)



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

В ЭВМ, рассчитанной на изолированный ВВ, нетрудно перейти к ВВ, отображенному на память. Если, например, адресное пространство памяти составляет 64К байт, а для программного обеспечения достаточно 32К байт, то область адресов от О до 32К-1 используется для памяти, а область от 32К до 64К-1 используется для ВВ. При этом признаком, дифференцирующим обращения к памяти и портам ВВ, становится старший бит Ais адреса.

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

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

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

5-2. ПРОГРАММНЫЙ ВВОД-ВЫВОД

Данный режим характеризуется тем, что все действия по ВВ реализуются командами прикладной программы. Наиболее простыми эти действия оказываются для «всегда готовых» периферийных устройств, например индикатора на светодиодах. При необходимости ВВ в соответствующем месте программы используются команды IN или OUT. Такая передача данных называется синхронным или безусловным ВВ.



Однако для большинства периферийных устройств до выполнения операций ВВ необходимо убедиться в их готовности к этим операциям, т. е. ВВ оказывается асинхронным. Общее состояние устройства характеризуется флажком готовности READY, называемым также флажком готовности/ занятости READY/BUSY. Иногда состояния готовности и занятости идентифицируются отдельными флажками READY и BUSY, входящими в слово состояния устройства. Интерпретация флажка READY в устройствах ввода и устройствах вывода различна. Для устройств ввода обычно принимается следующая интерпретация флажка READY и выполняемых с ним операцией:

состояние READY=0 означает отсутствие входных данных в регистре ввода;

состояние READY = 1 определяет наличие входных данных;

подпрограмма инициализации сбрасывает флажок READY;

при загрузке входных данных в регистр данных флажок READY автоматически устанавливается;

при вводе (считывании) данных процессором флажок READY сбрасывается.

Для устройств вывода соответствующие состояния и действия имеют несколько другой смысл:

состояние READY=0 означает недоступность регистра вывода для приема данных от процессора;

состояние READY = 1 сигнализирует о доступности регистра вывода;

подпрограмма инициализации устанавливает флажок READY;

при восприятии выходных данных из регистра вывода непосредственно в устройство флажок READY автоматически устанавливается;

при выводе (записи) данных процессором флажок READY сбрасывается.

Процессор проверяет флажок готовности с помощью одной или нескольких команд. Если флажок установлен, инициируется собственно ввод или вывод одного или нескольких слов данных. Когда же флажок сброшен, процессор выполняет цикл из 2-3 команд с повторной проверкой флажка READY до тех пор, пока устройство не будет готово к операциям ВВ. Данный цикл называется циклом ожидания и реализуется в различных процессорах по-разному. Например, для процессоров СМ цикл ожидания устройства, флажок готовности которого находится в старшем, 7-м



(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)