Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник ОЭВМ Трусфус.doc
Скачиваний:
126
Добавлен:
12.03.2015
Размер:
4.82 Mб
Скачать

6.3. Синхронизация передачи данных при вводе/выводе

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

RDконтроллера по отношению к ПР является быстродействующим регистром, который способен производить прием/передачу данных наравне с внутренними регистрами ПР. С другой стороны, RD осуществляет прием/передачу данных от связанного с ним ПУ с той скоростью и в том порядке, которые обусловлены характеристиками данного ПУ.

Поэтому, моменты появления данных на RD контроллера ПУ при вводе, или готовность ПУ принять новые данные при выводе – непредсказуемы. Определение моментов готовности ПУ принять или передать новые данные и передача данных при условии наступления ожидаемых моментов составляют суть условных программных способов ввода/вывода.

В настоящее время известны два условных способа программного ввода/вывода:

  • с проверкой готовности,

  • с использованием системы прерывания.

Вобоих способах синхронизация передачи данных осуществляется при помощи битаRDY ("флага готовности") в специальном программно доступном регистре управления (RU) контроллера ПУ.

Работа RD с использованием бита RDY в процессе ввода или вывода характеризуется чередованием двух фаз:

1. передача данных между RD и ПУ (доступ ПР к RD при этом запрещен);

2. передача данных между RD и ПР (доступ ПУ к RD при этом запрещен).

Закончив свои операции по загрузке RD при вводе или чтению содержимого RD при выводе, ПУ устанавливает бит RDY в состояние 1 - "поднимает флаг готовности". Поднятие флага означает окончание фазы ПУ в работе RD и начало фазы ПР : поднятый флаг разрешает доступ к RD со стороны ПР и запрещает доступ со стороны ПУ.

ПР по окончании своего этапа обмена информацией с RD сбрасывает флаг в нулевое состояние. Сброс флага символизирует окончание фазы ПР и начало фазы ПУ.

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

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

Вопросы для самопроверки:

1. Ввод/вывод с проверкой готовности.

2. Ввод/вывод с использованием системы прерывания.

6.3.1. Ввод/вывод с проверкой готовности

Схема организации операции ввода/вывода с проверкой готовности представлена на рис. 6.1. Основными блоками схемы являются процессор, оперативная память и периферийное устройство. Для простоты рассматривается только операция ввода – передача данных от периферийного устройства (например, датчика температуры) в оперативную память. В схеме периферийного устройства выделены два регистра: данных (RD) и управления (RU).

Регистр RD используется в качестве почтового ящика для промежуточной фиксации текущего значения температуры.

Регистр RU используется в качестве регистра управления. В этом регистре используется только 3 разряда для фиксации сигналов управления:

  • «Ошибка» Ош – 15-й разряд ,

  • «Готовность» Гот – 7-й разряд ,

  • «Пуск» П – 0-й разряд .

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

Устройство может иметь два состояния: включенное и выключенное, в зависимости от значения бита "Пуск" регистра управления.

Включение и выключение устройства производится командой программы (драйвера) процессора занесением в младший разряд регистра RD единицы или нуля.

Сигнал «Готовность» является сигналом (светофором) разделения доступности регистра данных RD со стороны процессора и периферийного устройства.

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

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

Входными параметрами программы ввода/вывода являются:

  • Код операции (прочитать/записать) Для рассматриваемого случая (датчик температуры) корректной является операция чтения.

  • Начальный адрес массива чтения. Для передачи данных с единственного датчика этот адрес не используется.

  • Начальный адрес области ввода в оперативной памяти.

  • Количество передаваемых данных, например, в байтах.

Блок схема программы представлена на рис. 6.4.

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

В данном примере рассматриваются три таких функции:

  • обработки непредусмотренного кода, например команд записи устройству чтения,

  • обработки сообщений о сбоях от периферийного устройства, например, при выявлении бита "Ошибка" в регистре управления (15-й бит в регистре RU).

  • обработки ошибки тайм-аута.

Ошибка тайм-аута – это превышение максимального периода ожидания установки периферийным устройством бита готовности (7-й бит регистра управления RU).

В качестве средства программирования выберем ассемблер семейства PDP-11 (См. 4.1. Программная модель процессоров семейства PDP-11).

Для передачи входных параметров определим четыре РОНа:

R1 – код операции W/R,

R2 – начальный адрес (Аm) массива данных в ОП,

R3 – количество слов в массиве,

R4 – значение тайм-аута.

В качестве средства программирования выберем ассемблер семейства PDP-11 (См. 4.1. Программная модель процессоров семейства PDP-11).

Содержание программы:

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. Ситуация ошибки тайм-аута.