МПС

Подсистема ввода-вывода МПС (Лекция)

ПЛАН ЛЕКЦИИ

Подсистема параллельного обмена на базе буферных регистров

Контроллер параллельного обмена К580ВВ55

Последовательный обмен в МПС

Универсальный последовательный приемопередатчик КР580ВВ51

 

Подсистема ввода/вывода (ПВВ) обеспечивает связь МП с внешними устройствами, к которым будем относить:

·      устройства ввода/вывода (УВВ): клавиатура, дисплей, принтер, датчики и исполнительные механизмы, АЦП, ЦАП, таймеры и т.п.

·      внешние запоминающие устройства (ВЗУ): накопители на магнитных дисках, "электронные диски" и др.

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

ПВВ в общем случае должна обеспечивать выполнение следующих функций:

1)   согласование форматов данных, т.к. процессор всегда выдает/принимает данные в параллельной форме, а некоторые ВУ (например, НМД) - в последовательной. С этой точки зрения различают устройства параллельного и последовательного обмена. В рамках параллельного обмена не производится преобразование форматов передаваемых слов, в то время как при последовательном обмене осуществляется преобразования параллельного кода в последовательный и наоборот. Все варианты, когда длина слова ВУ (больше 1 бита) не совпадает с длиной слова МП, сводятся к разновидностям параллельного обмена;

2)   организация режима обмена - формирование и прием управляющих сигналов, идентифицирующих наличие информации на различных шинах, ее тип, состояние ВУ (Готово, Занято, Авария), регламентирующих временные параметры обмена. По способу связи процессора и ВУ (активного и пассивного) различают синхронный и асинхронный обмен. При синхронном обмене временные характеристики обмена полностью определяются МП, который не анализирует готовность ВУ к обмену и фактическое время завершения обмена. Синхронный обмен возможен только с устройствами, всегда готовыми к нему (например, двоичная индикация). При асинхронном обмене МП анализирует состояние ВУ и/или момент завершения обмена. Временные характеристики обмена в этом случае могут определяться ВУ;

3)   адресную селекцию внешнего устройства.

 

Подсистема параллельного обмена на базе буферных регистров

Простейшая подсистема параллельного обмена должна обеспечить лишь дешифрацию адреса ВУ и электрическое подключение данных ВУ к системной шине данных DB по соответствующим управляющим сигналам. На Рис. 0.1 показаны устройства параллельного ввода (DD1) и вывода (DD2) информации в составе МПС на базе МП К580ВМ80 на базе буферных регистров К580ИР82.

 

Контроллер параллельного обмена К580ВВ55

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

БИС. .ВВ55 представляет собой трехканальный байтовый интерфейс и позволяет организовать обмен байтами с периферийным оборудованием в различных режимах. Внутренняя структура. .ВВ55 показана на Рис. 0.2, а подключение его к системной шине МПС - на Рис. 0.3.

Рис. Параллельный обмен на базе буферных регистров

Контроллер параллельного обмена К580ВВ55 (далее - "контроллер") включает в себя оборудование трех 8-разрядных каналов ввода/вывода (регистр и буферную схему), буфер шины данных, 8-разрядный регистр управления Y и блок управления.

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

Таблица 1

A1

A0

Адресуемый объект

Примечание

0

0

Канал А

 

0

1

Канал B

 

1

0

Канал С

 

1

1

Регистр управления

Только запись

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

При подаче сигнала SR все регистры контроллера, в том числе и регистр управления Y, устанавливаются в состояние 00h.

В каждый момент времени процессор может поддерживать связь только с одним каналом, в зависимости от состояния линий A[1:0]. Функцию каждого канала и режим его работы определяет состояние управляющего слова Y, помещенного в регистр управления.

Каналы контроллера могут работать в одном из трех режимов:

·      Режим "0" - синхронный однонаправленный ввод/вывод;

·      Режим "1" - асинхронный однонаправленный ввод/вывод;

·      Режим "2" - асинхронный двунаправленный ввод/вывод.

Кроме трех перечисленных, существует еще режим сброса-установки произвольного разряда канала C.

В режиме "0" контроллер может работать как четыре порта ввода/вывода: A[7:0], B[7:0], C[7:4], C[3:0], причем каждый порт может быть независимо запрограммирован на ввод или на вывод. При этом к порту, определенному как выходной, нельзя обращаться по чтению (будет прочитан "обрыв" - FFh), а на входной порт нельзя выводить информацию).

 

 

Рис. Внутренняя структура контроллера К580ВВ55

В стробируемом однонаправленном режиме "1" могут работать только каналы A и B, причем соответствующие линии (см. ниже) канала C придаются каналам A и B для передачи управляющих сигналов. Как и в режиме "0", каналы A и B программируются на ввод или вывод (независимо).

Рис. Подключение контроллера ВВ55 к системной шине

 

В режиме "2" может работать только канал A, к которому в этом случае можно обращаться как по записи, так и по чтению (двунаправленный стробируемый обмен).

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

 

1

D6

D5

D4

D3

D2

D1

D0

 

 

Режим А

00 -”0”

01 -”1”

1х -”2”

Направление А

Направление

С[7:4]

 

Режим

B

0-“0”

1-”1”

Направление

B

Направление

C[3:0]

 

Направление:

1 - ввод

0 - вывод

Рис. Формат управляющего слова. .ВВ55

 

Загрузка управляющего слова осуществляется путем записи его в регистр Y по адресу A[1:0] = 11, причем в старшем (D7) разряде такого слова должна стоять логическая единица.

Если при записи по адресу 11 D7 = 0, то такое слово не будет воспринято как управляющее и не будет помещено в регистр Y. Такие действия обеспечивают установку или сброс одного разряда регистра C, причем номер изменяемого разряда записывается в разрядах D[3:1], а значение записываемого бита - в D0. Состояние разрядов D[6:4] - безразлично.

7

6

5

4

3

2

1

0

0

х

х

х

Номер разряда С

0/1

 В разряде 0 - значение устанавливаемого бита порта С

Рис. Управление битами канала C

Рассмотрим подробнее работу контроллера в различных режимах.

Режим "0". При работе в этом режиме на вывод информация, поступающая с системной шины DB, запоминается в буферном регистре канала, адресуемого A[1:0] и сразу же передается на его выход. При вводе информации данные с линий соответствующего канала, минуя регистр, поступают через буфер данных на системную шину данных DB. Временные диаграммы режима "0" приведены на Рис. 0.6, где под именем K понимается один из трех каналов: A, B или C.


Рис. Временные диаграммы режима «0»

 

В режиме "0" канал C может быть разбит на два подканала, один из которых запрограммирован на ввод, а другой - на вывод. Обращение к обоим подканалам осуществляется по адресу A[1:0] = 10, причем в цикле ввода на DB подключаются только 4 входные линии, на остальных четырех - код 1111. При выводе информация с DB попадает только в 4 разряда регистра канала C, объявленные как выходные.

Режим 1 обеспечивает однонаправленную асинхронную передачу информации между МП и ВУ. При этом каналы A и B используются как регистры данных, а канал C - для приема и формирования сигналов, сопровождающих асинхронный обмен, причем каждый разряд канала C имеет строго определенное функциональное назначение. В Табл. 0.1 показано использование линий канала C для передачи управляющих сигналов в режимах "1" и "2".

Таблица

Разряд

канала С

Режим 1

Режим 2

Ввод

Вывод

0

ГТВ В

ГТВ В

-

1

ППР В

КГТ В\

-

2

СТР В\

ППРД В\

-

3

ГТВ А

ГТВ А

ГТВ А

4

СТР А\

-

СТР А\

5

ППР А

-

ППР А

6

-

ППРД А\

ППРД А\

7

-

КГТ А\

КГТ А\

Использованы следующие обозначения:

СТР - строб записи в регистр канала (вход);

ППР - подтверждение приема (выход);

ГТВ - готовность (выход), может использоваться в качестве запроса на прерывание;

ППРД - подтверждение передачи (вход);

КГТ - канал готов к обмену (выход).

Символ "\" после имени сигнала обозначает, как и ранее, что активный уровень этого сигнала - низкий.

Работа канала в режиме 1 "ВВОД" иллюстрируется временной диаграммой
Рис. 0.7. ВУ, будучи готовым выдавать информацию в контроллер, выставляет стробирующий сигнал, поступающий на вход СТР (C2 - для канала A, C4 - для B). По спаду строба байт данных с входных линий A или B "защелкивается" в регистр соответствующего канала. При этом контроллер формирует управляющий сигнал ППР (подтверждение приема), который высоким уровнем запрещает ВУ вырабатывать новый строб.

Рис. Ввод в режиме "1"

 

Информация, попавшая в регистр канала, должна быть передана в МП. Контроллер вырабатывает по фронту СТР при ППР = 1 сигнал ГТВ, который поступает в качестве запроса на прерывание в подсистему прерываний и инициирует процедуру чтения байта из канала. Сигнал ГТВ формируется контроллером только при условии установления в "1" внутреннего триггера разрешения прерывания по каналу (разряды 2 и 4 регистра порта C для каналов A и B соответственно). Эти триггеры могут быть установлены и сброшены программно с помощью команд установки/сброса разряда порта C.

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

При появлении сигнала RD\ по соответствующему адресу содержимое регистра канала передается на шину данных DB и далее - в МП. По спаду RD\ снимается запрос ГТВ, а по фронту RD\ снимается ППР и ВУ получает возможность формировать новый строб записи данных. Промежуток времени t2 характеризует быстродействие ВУ и может, как и t1, иметь произвольную длительность.

Таким образом, в описанном режиме осуществляется асинхронный ввод информации в МП с анализом готовности вводимой информации и исключением потери информации (в контроллере). Подсистема прерываний может быть выключена (сброшены триггеры разрешения прерывания или сигнал ГТВ не заведен в систему), однако МП может осуществлять программный опрос состояния каналов, считывая значение регистра порта C и анализируя значения разрядов готовности (C3 и C0 для каналов A и B соответственно). Модификация управляющих сигналов на линиях порта C может осуществляться программно с помощью соответствующих команд МП и аппаратно со стороны контроллера.

Работа контроллера в режиме "1" на ВЫВОД показана на Рис. 0.8. По стробу WR\ производится запись байта с системной шины данных в регистр канала. Одновременно снимается сигнал запроса на прерывание ГТВ. По фронту WR\ контроллер посылает на ВУ сигнал КГТ\, подтверждая, что данные для ВУ записаны в регистр и присутствуют на выводах канала. После получения КГТ ВУ начинает прием данных (отрезок времени t2), а закончив прием - формирует сигнал подтверждения передачи ППРД\. Получив ППРД\, контроллер формирует для МП сигнал ГТВ, сообщая, что можно выводить следующий байт данных. Время ожидания реакции МП - отрезок t1. Программная установка/сброс триггеров разрешения формирования сигналов ГТВ осуществляется с помощью команд переключения разрядов C6 и C2 - соответственно для каналов A и B.

 

Рис. Вывод в режиме "1"

 

Как и в случае режима ВВОД возможна реализация программно-управляемой процедуры асинхронного обмена.

В режиме "1", как и в режиме "0", недопустимо обращение по чтению к каналу, объявленному выходным и по записи к входному каналу. Для организации двунаправленного обмена предназначен режим "2", в котором может работать только канал A, которому для передачи управляющих сигналов придается 5 линий порта C (см. Табл. 0.1). Канал B может при этом работать в режиме "1" - совместно с оставшимися линиями порта C, или в режиме "0", тогда C[2:0] будут работать тоже в "0"-режиме.

Направление передачи по каналам B и C определяется разрядами управляющего слова Y.

Процедуры ВВОД и ВЫВОД в режиме "2" осуществляются аналогично соответствующим процедурам в режиме "1".

 

Последовательный обмен в МПС

При организации последовательного обмена ключевыми могут считаться две проблемы:

1)   синхронизацию битов передатчика и приемника;

2)   фиксацию начала сеанса передачи.

Различают два способа передачи последовательного кода: синхронный и асинхронный.

При синхронном методе передатчик генерирует две последовательности - информационную TxD и синхроимпульсы CLK, которые передаются на приемник по разным линиям

Рис. Последовательный синхронный обмен с внешней синхронизацией

 

Синхроимпульсы обеспечивают синхронизацию передаваемых бит, а начало передачи отмечается по-разному. При организации внешней синхронизации сигнал начала передачи BD генерируется передатчиком и передается на приемник по специальной линии (Рис. 0.9).

В системах с внутренней синхронизацией отсутствует линия BD, а на линию данных генерируются специальные коды длиной 1-2 байта - “символы синхронизации”. Для каждого приемника предварительно определяются конкретные синхросимволы, таким образом можно осуществлять адресацию конкретного абонента из нескольких, работающих на одной линии. Каждый приемник постоянно принимает биты с RxD, формирует символы и сравнивает с собственными синхросимволами. При совпадении синхросимволов последующие биты поступают в канал данных приемника.

Асинхронный способ обеспечивает передачу информации по единственной линии. Для надежной синхронизации обмена в асинхронном режиме

1)   передатчик и приемник настраивают на работу с одинаковой частотой;

2)   передатчик формирует стартовый и стоповый биты, отмечающие начало и конец посылки;

3)   передача ведется короткими посылками (5..9 бит), а частоты передачи выбираются сравнительно низкими.

 

Универсальный последовательный приемопередатчик КР580ВВ51

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

 

 


Рис. Обозначение контроллера. .ВВ51 на функциональных (принципиальных) схемах

Назначение выводов контроллер. .ВВ51 приведено ниже.

Таблица

 

№ вывода

Русск.

Лат.

Тип

вывода

Назначение

вывода

 

8,7,6,5,2

1,28,27

D(7:0)

D(7:0)

вх/вых

Шина данных

 

20

C

CLK (C)

вх

Синхронизация

 

21

УСТ

RESET (SR)

вх

Уст. в исходное

состояние

 

12

ПНУ/Д\

C/D\

вх

Признак управление

/данные

 

10

РПМ\

WR\

вх

Запись-разрешение приема

с шины данных

в контроллер

 

13

РВД\

RD\

вх

Чтение - разрешение выдачи на шину

данных

 

11

ВД\

CS\

вх

Выбор микросхемы

 

22

СОН1\

DSR\

вх

Готовность ВУ

передать данные

 

24

СОН2\

DTR\

вых

Запрос на передачу данных

 

17

ПГТ\

CTS\

вх

Готовность ВУ

принять данные

 

23

СОН3\

RTS\

вых

Запрос на прием данных

 

16

С1

SYNDET/BD

вх/вых

Вид синхронизации (различный смысл в разных режимах

25

СПМ\

RxC\

вх

Синхронизация

приемника

14

ПГТПМ

RxRDY

вых

Готовность приемника

3

ВХ ПМ

RxD

вх

Вход данных

приемника

9

СВД\

TxC\

вх

Синхронизация

передатчика

. 15

ПГТПЧ

TxRDY

вых

Готовность передатчика

19

ВЫХ ПЧ

TxD

вых

Выход данных

передатчика

18

 

TxEND

вых

Конец передачи

26

Епит

Ucc

-

+ 5 В

4

Общий

GND

-

Общий

 

Контроллер работает в двух режимах - инициализации и приема/передачи.

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

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

 

D7

D6

D5

D4

D3

D2

D1

D0

 СС

Ч

К

Длина слова

Реж/Чаc

Рис. Формат управляющего слова контроллера. .ВВ51

Ниже приводятся значения разрядов управляющего слова и их смысл для различных режимов работы контроллера. .ВВ51.

Режим работы контроллера определяется разрядами D0, D1, причем для трех разновидностей асинхронного режима это поле определяет коэффициент деления частоты синхроимпульсов CLK для получения частоты асинхронного приема/передачи.

D1

D0

 

 

0

0

Синхронный режим

 

0

1

1: 1

Асин-

1

0

1: 16

хронный

1

1

1: 64

режим

Длина слова (кадра) определяется значением разрядов D3 и D2:

D3

D2

Длина кадра (бит)

0

0

5

0

1

6

1

0

7

1

1

8

 

Разряды D4 и D5 определяют режим контроля на четность:

 

D4 = 0

- нет контроля;

D5 = 0

- контроль по нечетности;

D4 = 1

- есть контроль;

D5 = 1

- контроль по четности.


Рис. Структура контроллер К580ВВВВ51

Разряды D6 и D7 имеют различный смысл для синхронного и асинхронного режима. В синхронном режиме D6 задает вид синхронизации, а D7 - число синхросимволов:

 

D6 = 0

- внутренняя;

D7 = 0

- два синхросимвола;

D6 = 1

- внешняя;

D7 = 1

- один синхросимвол.

 

В асинхронном режиме поле D7D6 определяет длительность стоп-бита в периодах частоты передачи:

 

D7

D6

Длина стоп-бита

0

0

Не используется

0

1

1

1

0

1,5

1

1

2

 

 

 

 

 

Последовательность программирования контроллера ..ВВ51 и соответствующие входные управляющие сигналы приведены ниже.

Таблица

Последовательность программирования

Сигналы на входах

CO/D

WR\

CS\

SR

1

Установка исходного состояния

X

X

X

1

2

Запись инструкции режима

1

0

0

0

3

Запись синхросимвола

1

0

0

0

4

Запись синхросимвола

1

0

0

0

5

Запись команды

1

0

0

0

 

Данные, передаваемые по шине D[7:0], в отличие от команд, инструкций режима и синхросимволов сопровождаются низким уровнем на линии CO/D.

Каждый бит команды, установленный в "1", имеет свой смысл, независимый от остальных разрядов команды:

D0 - разрешена передача;

D1 - запрос о готовности приемника;

D2 - разрешен прием;

D3 - пауза;

D4 - сброс триггеров ошибок;

D5 - запрос о готовности передатчика;

D6 - программный сброс;

D7 - поиск синхросимволов

Прием/передача может осуществляться в одном из двух режимов - синхронном или асинхронном.

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

Различают два режима синхронного приема. В режиме приема с внутренней синхронизацией приемник начинает работу с поисков символа (символов) синхронизации. Информация принимается по входу RxD на первый регистр приемника и непрерывно сравнивается с содержимым регистра первого синхросимвола. Если содержимое двух регистров не одинаково, то в регистр приемника принимается следующий бит и сравнение повторяется. Когда содержимое сравниваемых регистров становится одинаковым, контроллер заканчивает поиск и переходит в режим синхронизации. При этом, если не запрограммирован контроль по четности (нечетности), на выводе SYNDET/BD, работающем как выход, во время приема последнего бита синхросимвола устанавливается напряжение высокого уровня, сигнализируя ВУ, что произошел захват синхронизации. Если контроллер. .ВВ51 запрограммирован с двумя символами синхронизации и/или контролем на четность, то указанная выше ситуация произойдет во время приема последнего бита второго синхросимвола или бита контроля.

В режиме синхронного приема с внешней синхронизацией на вывод SYNDET/BD, работающий как вход, подается напряжение синхронизации, которое разрешает прием информации по входу RxD со скоростью синхросигналов, поступающих на вход RxC\. Если в управляющем слове определен прием в синхронном режиме с внешней синхронизацией, то цепи внутренней синхронизации блокируются установкой внутреннего триггера, сброс которого возможен по сигналу SR или после чтения состояния контроллера.

Синхронная передача начинается при подаче на вход CTS\ низкого уровня. Передатчик начинает трансляцию битов буферного регистра на выход TxD со скоростью синхроимпульсов, поступающих на вход TxC.

Асинхронный режим характеризуется одиночными посылками информации, инициализация которых определяется либо процессором системы, либо внешним устройством. Синхронизация передатчика и приемника обеспечивается равенством частот передачи и приема (частоты задаются программно). Для контроллера. .ВВ51 возможны три частоты передачи/приема: 1:1, 1:16 и 1:64 относительно частоты синхронизации на входе CLK. Неактивному состоянию передатчика соответствует высокий уровень на линии данных.

В начале каждой посылки устанавливается низкий уровень на выходе TxD данных передатчика т.н. "старт-бит", длительность которого равна периоду заданной передающей частоты. Старт-бит служит для ввода в синхронизацию передатчика и приемника. В конце посылки выдается "стоп-бит", длительность которого программируется на 1, 3/2 или 2 периода передатчика.

Асинхронная передача начинается с записи в контроллер данных и при условии, что в D0 инструкции команды записана "1" и на входе CTS\ - низкий уровень. Передатчик формирует на выходе TxD стартовый бит, заданное число бит данных (5..8, начиная с бита d0), если необходимо - контрольный бит и - обязательно - стоповый бит. Если контроллер не содержит информации для передачи, то на линии TxD удерживается высокий уровень, а если в инструкции запрограммирован режим "Пауза", то на TxD выдается низкий уровень.

Асинхронный прием. Обнаружение на RxD перехода с высокого уровня на низкий интерпретируется как приход старт-бита. Истинность этого бита проверяется вторично через 1/2 периода приема и если наличие низкого уровня подтверждается, то запускается счетчик битов, который позволяет определить конец битов данных, бит контроля (если он запрограммирован) и стоп-бит. Если же низкий уровень в середине периода не подтверждается, то приемник переходит в исходное состояние.

Схема управления и синхронизации приемника предохраняет от ошибочного запуска счетчика битов, если на выводе RxD присутствует напряжение низкого уровня, вызванное командой D3 "Пауза". Регистр приемника обнаруживает паузу и на выводе SYNDET/BD устанавливает высокий уровень.

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

Наличие единиц в триггерах ошибок не останавливает работу контроллера. Триггеры ошибок сбрасываются командой с D4 = 1.

Состояние контроллера отображается в регистре состояний, доступном по чтению процессору (при CS = 0, RD = 0, CO/D = 1). Формат регистра состояний приведен ниже:

 

7

6

5

4

3

2

1

0

DSR

SYN/BD

D5

D4

D3

TxEND

RxRDY

TxRDY

 

Разряды 7, 6, 2, 1, 0 дублируют состояния соответствующих выводов контроллера; D5 - триггер ошибки стоп-бита, D4 - триггер ошибки переполнения (устанавливается, если предыдущий символ не прочитан процессором до записи в буферный регистр нового принятого символа), D3 - триггер ошибки четности.