Ввод/вывод с проверкой готовности
Схема организации операции ввода/вывода с проверкой готовности представлена на рис. 5.2. Основными блоками схемы являются процессор, оперативная память и периферийное устройство. Для простоты рассматривается только операция ввода – передача данных от периферийного устройства (например, датчика температуры) в оперативную память. В схеме периферийного устройства выделены два регистра: данных (RD) и управления (RU).
Регистр RD используется в качествепочтового ящика для промежуточной фиксации текущего значения температуры.
Регистр RUиспользуется в качестве регистра управления. В этом регистре используется только 3 разряда для фиксации сигналов управления:
· «Ошибка» Ош – 15-й разряд,
· «Готовность» Гот – 7-й разряд,
· «Пуск» П – 0-й разряд.
Рис. 5.2. Схема организации ввода (вывода) с проверкой готовности
Стратегия метода передачи данных с проверкой готовности заключается в следующем.
Устройство может иметь два состояния: включенное и выключенное, в зависимости от значения бита "Пуск" регистра управления. Включение и выключение устройства производится командой программы (драйвера) процессора занесением в младший разряд регистра RD единицы или нуля.
Сигнал «Готовность» является сигналом (светофором) разделения доступности регистра данных RD со стороны процессора и периферийного устройства.
Эта стратегия разделения доступности (метод стробирования и квитирования) в ЭВМ является одним из основных методов согласования работы как программ, так и аппаратуры в разных сочетаниях.
Сигнал "Ошибка" используется для передачи процессору информации об "особых" ситуациях в устройстве, требующих вмешательства программ операционной системы. Это может быть сигналом о переполнении выходного буфера данных, средств измерения или фиксации результатов.
Входными параметрами программы ввода/вывода являются:
· Код операции (прочитать/записать) Для рассматриваемого случая (датчик температуры) корректной является операция чтения.
· Начальный адрес массива чтения. Для передачи данных с единственного датчика этот адрес не используется.
· Начальный адрес области ввода в оперативной памяти.
· Количество передаваемых данных, например, в байтах.
Блок схема программы представлена на рис. 5.3.
В общем случае, в программе ввода/вывода, кроме основной функции (синхронизации вода/вывода) предусматривается ряд дополнительных, например, выявления и обработки ряда особых или внештатных ситуаций.
В данном примере рассматриваются три таких функции:
· обработки непредусмотренного кода, например команд записи устройству чтения,
· обработки сообщений о сбоях от периферийного устройства, например, при выявлении бита "Ошибка" в регистре управления (15-й бит в регистре RU).
· обработки ошибки тайм-аута.
Ошибка тайм-аута – это превышение максимального периода ожидания установки периферийным устройством бита готовности (7-й бит регистра управления RU).
В качестве средства программирования выберем ассемблер семейства PDP-11.
Для передачи входных параметров определим четыре РОНа: R1 – код операции W/R, R2 – начальный адрес (Аm) массива данных в ОП, R3 – количество слов в массиве, R4 – значение тайм-аута.
Рис.5.3. Блок схема программы ввода данных с проверкой готовности.
Содержание программы:
START
СМP R1, #read ;проверка корректности кода операции
JNQ M4 ;В случае несовпадения кодов – переход на программу
;сообщения об ошибке и выход из программы
МО: MOV R4, R1;копирование значения тайм-аута в освободившийся РОН
MOV #1, @#RU ;включение устройства в работу занесением единицы в
;младший разряд RU
M1: TSTB @#RU;проверка бита готовности в регистре RU
JPL M2;данные не готовы,переход на продвижение счетчика (М2).
TST @#RU;проверка бита сбоя (7 "знаковый" бит в регистре RU)
JPL M7;бит сбоя определен, переход на блок сообщения об
;ошибке (М7)
M2: DEC R1;модификация регистра тайм-аута (R1=R1-1)
JNE M1;пока счетчик тайм-аута не нулевой, передача на повтор ;проверки готовности
JMP M6;переход на обработку ошибки тайм-аута
М3: MOV @#RD, (R2)+;пересылка данных из RD в ОП по адресу, заданному
;содержимым регистра R1, модификация адреса.
MOV #1, @#RU;сброс бита готовности в регистре RU
DEC R3, ;продвижение счетчика слов (R3)
JNQ M0;пока содержимое не равно нулю – повтор цикла передачи
CLR @#RU;выключение устройства
END START
Это самый простой по конструкции контроллер и самый старый способ организации ввода вывода. Для реализации этой схемы ввода/вывода не обязательно наличие системы прерывания. Но это не значит, что он несовместим со сложными операционными системами и многопрограммными режимами работы. В многопрограммных режимах программа ввода/вывода может прерываться, как и остальные программы. Основным его недостатком является недостаточно эффективное использование процессора. Но его можно эффективно использовать в микроконтроллерных системах управления.
Вопросы для самопроверки:
1. Назначение регистров RD и RU.
2. Назначение и источник бита "Ошибка" в регистре RU.
3. Назначение и источник бита "Готовность" в регистре RU.
4. Входные параметры программы ввода/вывода с проверкой готовности.
5. Стратегия разделения доступности (метод стробирования и квитирования).
6. Ситуация ошибки тайм-аута.
Дата добавления: 2021-01-26; просмотров: 553;