logo search
конспект II частина

5.2. Координация взаимодействия с внешними устройствами

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

Процесс передачи данных между МП и УВВ состоит из трех операций:

  1. Запуск (инициация) действия в устройстве;

  2. Проверка микропроцессором готовности порта;

  3. Собственно передача данных.

Существует три метода организации ввода/вывода:

  1. Пуск со стороны программы;

  2. Пуск со стороны устройства;

  3. Общая схема обмена.

Пуск со стороны программы.

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

На рис. 5.4 приведена схема формирования сигналов пуска для МП. Установка триггеров осуществляется теми же сигналами, которые использовались на рис. 5.1 для управления передачей данных между МП и соответствующим регистром порта.

Рис. 5.4. Схема формирования сигналов пуска для МП

Выходной сигнал от каждого триггера поступает в устройство и вызывает в нем выполнение действия, например запуск АЦП на преобразование аналогового сигнала. После завершения действия устройство подает сигнал сброса соответствующего управляющего триггера. Этим обеспечивается выполнение действия в устройстве.

Пуск со стороны устройства.

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

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

Общая схема обмена

Если объединить оба рассмотренных выше метода, то получаем общую схему обмена. В этом случае программа инициирует действие в устройстве, и проверяет готовность порта. На рис. 5.5 совместно с рис.5.1 приведена схема общего интерфейса, включающая порт состояния и порт управления.

Рис. 5.5. Схема порта состояния и порта управления в иллюстративном микропроцессоре

Порт состояния – это порт ввода, через который МП может получить наиболее важную информацию о состоянии устройства. В частности, неготовность вводного порта данных определяется битом 7(Рис.5.5), а неготовность выводного порта данных – битом «0». Оба эти бита поступают с выходов RS-триггеров. В каждом из этих триггеров устанавливается «1» на время выполнения передачи данных между МП и портом, т.е. на время, когда порт занят. Это же состояние сообщает устройству о необходимости выполнить соответствующее действие, то есть выдать новые данные в случае порта ввода или принять данные в случае порта вывода. Завершив действие, устройство сбрасывает соответствующий бит состояния, и это говорит МП о готовности порта. Остальные 6 битов состояния могут характеризовать другие возможные ситуации в устройстве.

Порт управления – это выводной порт, который служит для передачи команд устройству от МП. Две из этих команд соответствуют битам 0 и 7 и называются «активация ввода» и «активация вывода». Назначение этих команд – чтение или запись целого блока данных. Например, при чтении магнитной ленты бит «активация ввода» устанавливается в «1» в начале блока данных и сбрасывается в «0» после того, как под магнитными головками пройдут все слова блока данных.

В устройстве значения этих командных битов объединяются вентилем И с битами неготовности портов (с выходами RS-триггеров) для того, чтобы начать или продолжить выполнение действия в устройстве, связанных с актами передачи данных. Так, например, движение ленты и чтение информации с нее продолжается только, если оба бита «активация ввода» и «неготовность порта» имеют значение «1». Оставшиеся 6 управляющих битов можно использовать для выполнения таких функций, как «перемотка ленты», «пропуск блока», «сброс флагов ошибок» и т.д.