МЕТОДИЧЕСКАЯ РАЗРАБОТКА


Рис. 9.

Рис. 8.

Рис. 7.

Рис. 6.

Рис. 5.

Рис. 4.

Рис. 3.

Рис. 2.

Рис. 1.

УСО для ввода данных без преобразования

Такие УСО могут использоваться для ввода данных с внешнего устройства, которое предоставляет данные в цифровой форме — в виде двоичного кода. Примером такого устройства может служить цифровой датчик (например, положения). УСО такого типа могут применяться также при вводе информации в параллельном формате с ЭВМ верхнего уровня.

Рассмотрим задачу проектирования УСО и сопряжения УСО с объектом управления применительно к данному случаю. Объект управления представлен цифровым датчиком и УСО должно обеспечить ввод данных с него в МПС через магистраль. Таким образом, с одной стороны мы имеем цифровой датчик, предоставляющий данные в параллельном двоичном коде, с другой стороны — магистраль МПС (рис. 1).

Так как ввод любых данных в МПС осуществляется по шине данных (ШД), мы должны соединить выходные линии датчика с шиной данных. Но соединить их напрямую мы не можем, так как в этом случае информация, передаваемая датчиком, будет находиться на шине данных постоянно. И обмен с другими устройствами будет невозможен.

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

В данном случае БР играет роль усилителя с возможностью отключения от шины данных. Следовательно, на вход STB должен быть подан сигнал логической "1", обеспечивающий работу БР в режиме усилителя. Вход OE будет использоваться для подключения БР (и датчика) к ШД в цикле чтения. БР должен подключаться к ШД при следующих условиях:

· Выполняется цикл обмена по чтению из внешнего устройства (управляющая линия IOR в активном состоянии — логического "0").

· Цикл обмена выполняется именно с данным датчиком. Так как любое внешнее устройство, подключенное к МПС, должно иметь уникальный адрес, необходимо проанализировать адресную информацию (сигналы на линиях адреса). И если установленный на шине адрес соответствует адресу рассматриваемого ВУ (датчика), БР должен быть подключен к шине данных.

Для анализа адресной информации используется дешифратор (рис. 3).

В приведенной схеме УСО используется дешифратор с двумя входами, на которые подаются сигналы двух младших адресных линий. Следовательно, линия CS будет активизирована при передаче адреса, у которого младшие разряды будут иметь значение "00" (старшие разряды адреса в данной схеме не анализируются и могут иметь любые значения).

Использование логического элемента "ИЛИ" позволяет формировать сигнал OE на входе буферного регистра только если оба сигнала — CS и IOR находятся в активном состоянии — логического "0".

Таким образом, схема УСО, представленная на рис. 3 позволяет решить поставленную задачу — подключение цифрового датчика к шине данных только на время выполнения обмена с ним (с установкой соответствующего ему адреса на шине адреса).

Временная диаграмма изменения сигналов в УСО представлена на рис. 4.

Из временной диаграммы видно, что данные на шине данных появляются только после установки на шине адреса соответствующего адреса и активизации сигнала IOR

Задача подключения цифрового датчика может быть решена также с использованием программируемого параллельного интерфейса (ППИ, параллельного порта). Схема УСО для этого случая представлена на рис. 5.

Схема во многом аналогична предыдущей. Так как ППИ имеет в своем составе несколько портов ввода-вывода, при вводе данных через него необходимо указать, с каким конкретно портом идет работа (т.е. к какому порту подключено интересующее нас устройство — в данном случае цифровой датчик). Для этого используются входы А0, А1, которые соединены непосредственно с двумя младшими линиями шины адреса.

Следовательно, два младших разряда адреса в данном случае определяют номер нужного порта внутри ППИ. Два следующих разряда адреса (А2, А3) используются для выбора конкретной микросхемы ППИ — через дешифратор они соединены со входом CS ППИ. Параллельный интерфейс будет подключен к ШД только если на вход CS подан активный сигнал логического "0", а это произойдет только при А2=А3=0. Таким образом, если предположить, что датчик подключен к порту A ППИ, для выбора которого необходимо А1=А2=0, то для чтения данных с датчика через ППИ на шине адреса должно быть установлено значение "0000" — четыре младшие разряда нулевые. Значения старших разрядов не имеют значения, так как никак не используются в данной схеме.

Временная диаграмма изменения сигналов в УСО рис. 5. представлена на рис. 6.

Рассмотрим теперь ситуацию, когда разрядность данных, получаемых с датчика, больше 8. Так как порты ввода-вывода и буферные регистры обычно являются восьмиразрядными, для ввода данных большей разрядности необходимо использовать несколько портов (буферных регистров). Например, при вводе данных с 16-разрядного датчика положения, в схеме на рис. 5 линии восьми младших разрядов должны быть подключены к одному порту ППИ (например, порту А), линии восьми старших разрядов — к другому (например, порту В). Ввод данных с датчика будет осуществляться в два приема — сначала считывание младшего байта из порта А, затем старшего — из порта В. В соответствии со схемой подключения на рис. 5. порт А ППИ имеет адрес 0000h, порт В — 0001h. В таком случае ввод данных осуществляется следующей последовательностью команд МП Intel 8086:

IN AL, 0000h ; ввод младшего байтаMOV BL, AL ; сохранение младшего байтаIN AL, 0001h ; ввод старшего байтаMOV BH, AL ; сохранение старшего байта

Значение, введенное с датчика, помещается в результате в регистр BX.

Рассмотрим процесс ввода во временной области. Для ввода данных в данном случае необходимо выполнить два цикла обмена. Каждый цикл занимает определенное время (несколько тактов синхронизации процессора). Между циклами имеется некоторый промежуток за счет выполнения команды сохранения введенного значения в регистре BL. Таким образом, между моментами ввода в МП младшего и старшего байтов существует интервал времени , имеющий конечное, пусть даже малое, значение (рис. 7).

В течение этого интервала времени, значение, поступающее с датчика, может измениться. Например, в момент ввода младшего байта имелось значение 00FFh (младший байт — FFh, старший байт — 00h). Ввели младший байт (FFh). Затем, в течение интервала , датчик изменяет свои показания на 1 отсчет — с 00FFh на 0100h (младший байт — 00h, старший байт — 01h). Вводим старший байт (01h). В результате, в МП будет введен младший байт FFh и старший байт 01h, и по окончании ввода мы получим в регистре BX значение 01FFh, которое значительно отличается от обоих реально выдаваемых датчиком значений. То есть будет иметь место грубая ошибка при вводе данных. Очевидно, что для исключения данной ошибки, перед собственно вводом данных необходимо зафиксировать значение, поступающее с датчика, в буферном регистре, для того, чтобы обеспечить его неизменность во время всего процесса ввода. Количество буферных регистров зависит от разрядности вводимых данных. На рис. 8. представлен вариант для ввода данных с 16-разрядного датчика.

Младшие и старшие восемь линий, идущие с датчика, подключены через соответствующие буферные регистры к портам А и В ППИ. Буферные регистры работают в режиме усилителей с возможностью фиксации данных по заднему срезу сигнала STB. Для формирования строба на линии STB используется линия 0 порта С ППИ. При установке младшего разряда порта С в "1" сигнал на линии STB переходит из "0" в "1" (начало строба), при сбросе младшего разряда порта С в "0" сигнал на линии STB переходит из "1" в "0" (окончание строба). Процесс иллюстрирует рис. 9.

В момент времени происходит фиксация значений в буферных регистрах.

Так как адрес порта С ППИ при указанной на рис. 8. схеме подключения равен 0002h, начало строба формируется командами

MOV AL, 0001hOUT 0002h, AL

Окончание строба — командами

MOV AL, 0000hOUT 0002h, AL

Так как фиксация данных в БР происходит по заднему фронту сигнала STB, установка и сброс должны быть произведены перед процедурой ввода данных. При этом длительность импульса ( на рис. 9) должна быть достаточной для завершения всех переходных процессов в БР. Длительность строба может быть рассчитана по известной тактовой частоте МП и известному количеству тактов на выполнение каждой команды. При необходимости между командами установки и сброса строба может быть введена программная задержка.

В результате, фрагмент программы, выполняющей ввод данных с 16-разрядного цифрового датчика, будет выглядеть следующим образом:

MOV AL, 0001h ;OUT 0002h, AL ;Установка сигнала STBMOV AL, 0000h ;OUT 0002h, AL ;Сброс сигнала STB- фиксация данных IN AL, 0000h ;ввод младшего байтаMOV BL, AL ;сохранение младшего байтаIN AL, 0001h ;ввод старшего байтаMOV BH, AL ;сохранение старшего байта

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