Обмен данными в параллельном коде


Обмен данными в параллельном кодеПрямой ввод/вывод данных.

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

Ввод данных в процессор из подсистемы ввода–вывода (ВВ) — это опера­ция чтения процессором отдельного порта пространства

IOSEG

. Операция ввода выполняется в следующей последовательности (рис. 3.3.1, а):

● на шину ША адреса микропроцессор выставляет адрес требуемого ВУ;

● на выходе дешифратора Дш формируется сигнал адреса буфера данных ¯АДБ;

● на одну из линий шины управления выставляется строб чтения ¯Чт;

● на выходе логического элемента ИЛИ–НЕ формируется сигнал чтения данных ЧтД, который открывает буфер данных БД и пропускает данные через шину данных ШД в микропроцессор. рис. 3.3.1

В качестве примера приведем подпрограмму прямого ввода данных в ячейку памяти М, адрес ко­торой хранится в регистровой паре

HL

.

INPUT

:

PUSH

PSW

;сохранение в стеке содержимого

PSW

IN

port

;ввод данных в аккумулятор А из порта

MOV

М, А

;запись в память по адресу (

HL

) из А

POP PSW

;возврат из стека содержимого

PSW

RET

;возврат из подпрограммы

где

INPUT

— метка, указывающая адрес первой ячейки подпрограммы;

port

— адрес порта; А — акку­мулятор;

PSW

— регистр слова состояния;

(HL)

— содержимое регистровой пары

HL.

Вывод данных из процессора в подсистему ВВ — это операция записи данных процессором в отдельный порт пространства

IOSEG.

Операция вывода выполняется в следующей последовательности (рис. 3.3.1, б):

на шину адреса ША микропроцессор выставляет адрес регистра данных РД требуемого ВУ;

● на выходе дешифратора Дш формируется сигнал адреса регистра данных ¯АРД;

● на одну из линий шины управления выставляется строб записи ¯Зп;

● на выходе логического элемента ИЛИ–НЕ формируется сигнал записи данных ЗпД, с помощью которого поступившие из микропроцессора данные записы­ваются в регистр данных РД.

В качестве примера приведем подпрограмму прямого вывода данных из ячейки памяти М с адре­сом, хранящимся в регистровой паре

HL

.

OUT

:

PUSH

PSW

;запись в стек содержимого

PSW

MOV

А, М

;считывание в А ячейки М с адресом в

HL

OUT

port

;вывод данных из аккумулятора А в порт

POP PSW

;возврат из стека содержимого

PSW

RET

;возврат из подпрограммы

где

OUT

— метка, указывающая адрес первой ячейки подпрограммы; А — аккумулятор;

PSW

— ре­гистр слова состояния.

Обмен данными с программным квитированием. Особенности обмена дан­ными с программным квитированием рассмотрим на примере простейших уст­ройств (контроллеров) ввода и вывода. рис. 3.3.2

Ввод данных.

В состав устройства ввода данных входят (рис. 3.3.2, а):

● буфер данных

БД, при активизации которого сигналом чтения данных ЧтД = 1 происходит ввод данных в процессор;

● буфер состояния

БС, при активизации которого сигналом чтения состояния ЧтС = 1 в процессор вводится сигнал ГтВУ. При ГтВУ = 1 процессору разреше­но вводить данные;

● триггер подтверждения

ТПт, предназначен для формирования сигнала под­тверждения Пт о том, что данные микропроцессором введены;


● дешифратор

Дш и логические элементы (ЛЭ) 1, 2, 3 ИЛИ–НЕ, формирующие сигналы для управления БД, БС и ТПт. табл. 3.3.1

Назначение сигналов, используемых в устройстве ввода, приведено в табл. 3.3.1.

Пусть на устройство ввода от внешнего устройства ВУ поступает сигнал готов­ности ГтВУ = 0. Тогда процессор будет работать в режиме периодического опроса буфера состояния БС. В этом режиме процессор выставляет адрес буфера со­стояния БС на ША и генерирует сигнал чтения ¯Чт = 0; с выхода элемента 2 посту­пает сигнал ЧтС буфера БС. После того, как ВУ выставит новые данные на ШВУ и сигнал ГтВУ = 1 (рис. 3.3.2, б), при первом же чтении буфера состояния БС сиг­налом ЧтС процессор узнает о возможности ввода данных и приступит к ее реа­лизации. Для этого на ША (вход дешифратора Дш) выставляется адрес регистра данных РД, а на вход элемента 1 подается сигнал чтения ¯Чт = 0. Сформирован­ный таким способом сигнал чтения данных ЧтД отпирает буфер данных БД и про­изводит ввод данных в процессор. Затем процессор с помощью Дш и ЛЭ 3 фор­мирует сигнал записи подтверждения ЗпПт = 1, который устанавливает на выходе триггера подтверждения ТПт сигнал подтверждения Пт = 1. Этот сигнал сообщает ВУ о том, что новые данные введены. Микропроцессор переходит в режим опро­са БС. После того как ВУ сбросит сигнал готовности (ГтВУ = 0), процессор после первого сигнала ЧтС = 1 при ГтВУ = 0 формирует сигнал ЗпПт = 1 и сбрасывает сиг­нал подтверждения (Пт = 0). Устройство ввода возвращается в исходное состояние. табл. 3.3.2

Вывод данных.

В состав устройства входят (рис. 3.3.2, в):

● буфер состояния

БС, при активизации которого сигналом чтения состояния ЧтС = 1 в процессор вводится сигнал подтверждения ПтВУ. При ПтВУ = 0 мик­ропроцессору разрешено выводить данные;

● регистр данных

РД, в который записываются выводимые процессором дан­ные (сигналом записи данных ЗпД = 1);

● триггер готовности

ТГт, предназначенный для формирования сигнала готов­ности Гт = 1 микропроцессора к выводу новых данных;

● дешифратор

Дш и ЛЭ ИЛИ–НЕ 1, 2, 3, формирующие сигналы для управления РД, БС и ТГт.

Назначение сигналов, используемых в устройстве вывода, приведено в табл. 3.3.2.

Пусть в исходном состоянии (рис. 3.3.2, г) сигнал подтверждения ПтВУ = 1 и процессор работает в режиме опроса буфера состояния БС. После установки ПтВУ = 0 профессор переходит в режим записи данных в РД устройства вывода. Для этого на ША устанавливается адрес регистра данных РД и продается сигнал записи Зп = 0. Затем с помощью сигнала ЗпГт = 1 на выходе триггера ТГт форми­руется сигнал готовности Гт = 1, информирующий ВУ о том, что данные занесены в РД. Микропроцессор переходит в режим опроса. После того, как ВУ примет но­вые данные и установит сигнал ПтВУ = 1, микропроцессор после первого же чте­ния состояния при ПтВУ = 1 сбросит сигнал готовности (Гт = 0). Устройство выво­да вернется в исходное состояние.

Обмен данными с аппаратным квитированием.

Состав устройств. Для иллюстрации принципов программно–управляемого обмена с аппаратным квити­рованием рассмотрим схемы интерфейсных устройств (контроллеров) ввода (рис. 3.3.3, а) и вывода (рис. 3.3.3, б). рис. 3.3.3

Устройства содержат:

● регистры для хранения данных

(РД);

● буферы

каналов данных (БД) и состояния (БС). Буферы представляют собой однонаправленные шинные формирователи с высокоомным состоянием. Через них осуществляется связь устройств с внешними шинами;

● дешифраторы

(Дш) для формирования сигналов обращения к буферам и ре­гистрам;

● триггеры

и логические элементы для формирования осведомительных и уп­равляющих сигналов.

Сведения об используемых в устройствах ввода и вывода сигналах приведены в табл. 3.3.3. табл. 3.3.3

Ввод данных.

При вводе информации (рис. 3.3.3, а, б) по стробу ввода СтрВв, поступившему из ВУ, данные записываются в РД. Сигнал чтения ЧтД = 0, поэтому триггер–защелка Т по срезу строба устанавливается в единичное состоя­ние, формируя флаг ФВв = 1 готовности к началу операции ввода. Микропроцес­сор производит опрос состояния устройства ввода. При этом:

● на вход устройства по шине управления поступает сигнал Чт = 0, на вход де­шифратора Дш — адресный код буфера состояния БС, инициируя на входе ЛЭ ИЛИ–НЕ (1) нулевой сигнал;

● сигналом чтения состояния ЧтС = 1, снимаемым с выхода ЛЭ ИЛИ–НЕ (1), от­крывается буфер состояния БС, и сигнал ФВв передается по ШД в процессор. В микропроцессоре происходит выделение сигнала флага (например, коман­дой

ANI)

и определение его значения

(например, с помощью команды условного перехода

JZ).

Если ФВв = 1, то выполняется команда ввода данных из РД, в про­тивном случае производится повторный цикл опроса состояния, т. е. микропро­цессор переходит режим ожидания.

При ФВв = 1 микропроцессор выполняет команду ввода

IN,

адресуясь к регист­ру данных РД. При этом:

● с выхода Дш поступает нулевой сигнал на один из входов ЛЭ ИЛИ–НЕ (2);

● с шины управления поступает сигнал ¯Чт = 0 на другой вход ИЛИ–НЕ (2);

● с выхода ЛЭ ИЛИ–НЕ (2) снимается сигнал чтения данных ЧтД = 1, активизи­руя БД для передачи информации в микропроцессор;

● триггер Т по срезу сигнала ЧтД переводится в нулевое состояние и осуще­ствляет сброс флага ФВв = 0, информируя тем самым ВУ о вводе данных в микропроцессор. Внешнее устройство может приступить к загрузке РД сле­дующим байтом данных.

Вывод данных.

При выводе информации (рис. 3.3.3, в, г), так же как и при вводе (командой

IN

по адресу буфера состояния), производится опрос состояния устройства вывода. Если сигнал флага готовности вывода ФВыв = 0, то цикл опро­са повторяется. Если же ФВыв = 1, то со стороны процессора (по команде

OUT

) поступает сигнал записи ¯Зп = 0. С его помощью формируется сигнал записи дан­ных ЗпД = 1, по которому информация с ШД заносится в регистр РД. Так как по­ступающий со стороны устройства вывода строб вывода СтрВыв = 0, то по срезу сигнала ЗпД триггер Т устанавливается в единичное состояние. На выходе ЛЭ ИЛИ–НЕ (3) формируется сигнал ФВыв = 0. Происходит сброс флага, запреща­ющий микропроцессору повторную запись данных до тех пор, пока со стороны ВУ не поступит строб вывода СтрВыв = 1 (рис. 3.3.3, г). Задний фронт этого сигнала восстановит состояние флажка (ФВыв = 1) и разрешит микропроцессору запись следующего байта данных. рис. 3.3.4

Двунаправленный обмен.

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

Порт содержит:

● регистры

вводимых РД1 и выводимых РД2 данных;

● буферы данных

БД1, БД2 и буфер состояния БС;

● триггеры

Т1, Т2 для установки и сброса флагов ввода ФВв и вывода ФВыв;

● дешифратор

Дш для выделения адресов;

● набор

логических элементов.

Ввод/вывод данных осуществляется в два этапа. На первом этапе данные от источника (ВУ/процессора) заносятся в регистры данных порта, на втором — переписываются в приемник (процессор/ВУ).

Индикаторами разрешения/запрещения обмена служат два флага, упакован­ные в слово состояния.

Флаг ввода

при ФВв = 1 свидетельствует о том, что регистр РД1 загружен но­вой порцией данных и микропроцессор может приступить к их вводу. При ФВв = 1 для ВУ накладывается запрет на передачу данных.

Флаг вывода

при ФВыв = 0 свидетельствует о том, что регистр РД2 загружен данными и они могут быть считаны ВУ. При ФВыв = 0 для микропроцессора на­кладывается запрет на передачу данных.

Обмен данными протекает в две стадии. В первой стадии проверяется готов­ность ВУ к обмену, во второй — происходит ввод или вывод данных.

Ввод данных

при ФВв = 0 (для ВУ разрешена запись в РД1) протекает в такой последовательности:

● микропроцессор командой

IN

опрашивает буфер состояния БС, выставив сигнал чтения ¯Чт = 0 и адрес буфера. Так как ФВв = 0, процессор переходит в режим ожидания или продолжает выполнять программу до генерирования очередного запроса;

● по срезу строба СтрВв данные, поступившие из ВУ, заносятся в регистр РД1, а триггер Т1 и флаг готовности ФВв устанавливаются в единичное состояние, так как ЧтД = 0. Флаг в состоянии ФВв = 1 запрещает ВУ передачу данных и разрешает процессору приступить к вводу данных после фиксации значе­ния флага при очередном опросе;

● данные из регистра РД1 с помощью сигнала ЧтД считываются в аккумулятор микропроцессора. Это цикл отличается от цикла опроса лишь тем, что вы­ставляется адрес регистра РД1 вместо БС. По завершении ввода по срезу ЧтД происходит сброс флага ФВв.

Вывод данных

при Фвыв = 1 (для процессора разрешена запись в РД2) проте­кает в такой последовательности:

микропроцессор командой

IN

опрашивает буфер состояния БС, выставив сигнал чтения ¯Чт = 0 и адрес буфера. Так как ФВыв = 1, процессор приступа­ет к загрузке регистра данных РД2;

● на вход дешифратора подается адрес РД2, с помощью сигнала внешнего сигнала записи ¯Зп = 0 формируется внутренний сигнал записи ЗпД = 1 в РД2. По срезу этого сигнала устанавливается флаг ФВыв = 0, информирующий ВУ о том, что регистр РД2 заполнен;

● внешнее устройство посылает в порт сигнал СтрВыв, который открывает бу­фер для передачи сигнала в ВУ. По срезу ЗпД флаг ФВыв переводится в ну­левое состояние, свидетельствующее об окончании операции вывода.

Проиллюстрируем реализацию рассмотренных принципов программного об­мена в параллельном коде на примере микросхемы КР580ВВ55.


Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: