Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Булатов В.Н. Архитектура микропроцессороной системы, состав машинных команд и основы программирования микропроцессорной .pdf
Скачиваний:
97
Добавлен:
02.05.2014
Размер:
7.1 Mб
Скачать

А = 0008х4 = 002016 = 0 0 0 0 0 0 0 0

0 0 1 0 0 0 0 0

 

ст.байт адреса

мл.байт адреса

 

 

 

 

Взаключение можно отметить следующее:

-программа инициализация ПКП обычно включается (как фрагмент) в программу инициализации микропроцессорной системы;

- размаскирование запросов (команда CLI) должно проводиться в в

самом конце программы инициализации микропроцессорной системы или в конце настройки параметров системы загружаемой программы ;

- любая подпрограмма, вызываемая аппаратным прерыванием, должна содержать команды разрешения следующего аппаратного прерывания STI для микропроцессора и команды завершения обработки прерывания OCW2 (например, код 20 при А0=0) для контроллера прерываний.

14 Параллельный интерфейс

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

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

1)Прием-передача без фиксации данных в портах интерфейса.

2)Прием-передача с односторонней фиксацией данных в портах интерфейса.

3)Прием-передача с протоколом обмена ИРПР (IRPR).

4) Прием-передача с протоколом обмена CENTRONICS.

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

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

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

81

(передатчиком) и приемником. Этот диалог лучше всего представляется графически (рисунок 12): все здесь делается в инверсном виде.

Как видно из рисунка 12, данные в интерфейсе, то есть в порту «висят» все время. Но приемное устройство, которое принимает данные, «берет» их только в соответствии с протоколом. В чем особенность этого протокола? На рисунке стрелками указана последовательность действий. Передающая сторона ждет, когда

приемник сообщит о готовности (-ASK:=0).

Рисунок 12 —Временная диаграмма протокола ИРПР

Обнаружив готовность приемника, передающая сторона выставляет в порт новые данные и практически одновременно выставляет -STB=0 (строб передачи). Именно его ждет приемник. Как только приемник обнаруживает появление строба (-STB=0), он «забирает» с шины данных интерфейса байт данных (это не видно на графике) и тут же выставляет «занято» (-ASK=1), сообщая тем самым передатчику, что байт принят, и с ним началась работа. Передатчик, получив подтверждение о приеме байта, снимает строб (-STB=1). Так происходит один цикл приема-передачи байта в ИРПР (ИРПР —интерфейс радиальный параллельный).

Четвертый тип параллельного интерфейса —CENTRONICS. Этот тип интерфейса схож с ИРПР и отличается от него некоторыми временными параметрами (рисунок 13). Как только приемник готов (BUSY=0), передатчик выставляет на шину данных интерфейса новые данные и с небольшой задержкой (не регламентирована) выставляет строб (-STB=0) на фиксированное время» 0,5 мкс. Таким образом, в протоколе нет подтверждения приема байта для съема строба передатчика. Приемник должен успеть в отведенное время 0,5мкс принять байт и выставить «занято» (BUSY=1) на время, пока он

82

«переваривает» принятый байт. По окончании обработки принятого байта приемник выставляет «свободен» (BUSY=0) и подтверждает этот момент коротким стробом -ACK=0 длительностью» 2,5мкс (см. рисунок 13).

Рисунок 13 —Временная диаграмма протокола CENTRONICS

На практике применение в протоколе CENRONICS сигнала -ACK встречается крайне редко. Задуман он был разработчиками интерфейса как вызов прерывания

На базе того, что было изложено, можно сделать вывод, что любой разработчик параллельного интерфейса постарается реализовать как минимум эти четыре варианта, чтобы интерфейсная схема пользовалась спросом. Фирма Intel разработала подобный параллельный интерфейс (ИФ): 8255. Отечественная копия: 580ВВ55. В дальнейшем будет именоваться: ИФ55. Рассмотрим архитектуру ИФ55 (рисунок 14).

Опускаем ту часть схемы, которая осуществляет сопряжение с системной шиной, и начнем изучение сразу с существенных элементов.

Из архитектуры следует (рисунок 14), что ИФ55 имеет три 8-и разрядных порта, причем все три двунаправленные. Каждый порт связан через внутреннюю шину данных через шинный формирователь с шиной данных системной магистрали. В составе ИФ55 имеется РУС —регистр управляющего слова, который разделен на две части. Первая часть РУС

83

(группа А) управляет портом A и старшей тетрадой порта C. Вторая часть

РУС (группа B) управляет младшей

тетрадой порта C и портом B.

В скобках названий портов и РУС

проставлены значения адресов

A1,A0 (номеров) этих элементов.

 

Рисунок 14 —Архитектура параллельного интерфейса 8255

Микросхема выполнена по n-МОП технологии и запитывается от +5 В. Выход сопрягается со входами ТТЛ (ТТЛШ) элементов: 1 элемент ТТЛ или до 4-х элементов ТТЛШ.

ИФ55 реализует 3 режима работы:

1)Режим 0 —нестробированный ввод-вывод;

2)Режим 1 —стробированный ввод или вывод;

3)Режим 2 —стробированный ввод-вывод (через порт A).

Кроме этого, ИФ55 позволяет иметь особый доступ к отдельным разрядам порта C (особый режим).

Все перечисленные режимы настраиваются с помощью управляющего слова после загрузки его в РУС. Рассмотрим, как составляется управляющее слово (УС), формат которого представлен на рисунке 16.

Характеристика режимов.

Режим 0. Если для группы А или В установлен режим 0, то порты этой группы, в зависимости от настройки, могут быть входами или выходами (рисунок 15).

84

а) Если порт —в состоянии «ввод», то он является шинным формирователем: ВШД:= <Шина данных интерфейса>.

б) Если порт —в состоянии «вывод», то он является регистром

(RGпорта), и шина порта подключена к выходу регистра RGпорта.

На рисунке 15 приведена упрощенная схема управления режимом «ввод» «вывод».

Рисунок 15 —Упрощенная схема управления вводом-выводом ИФ55

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

Следовательно, если, к примеру, порт настроен на режим «ввод», и при этом выполняется команда OUT в этот порт, то данные на выходе порта обнаружены не будут. Поэтому при программировании портов надо сразу определиться, какой порт будет выходным, а какой — входным, и соответственно запрограммировать ИФ55.

И потом, не задумываясь, можно использовать команды IN к входным портам и команды OUT —к выходным, так как направления в портах заданы. Режим 0 —самый эксплуатируемый режим.

Пример 1 —Пусть чип ИФ55 выбирается в соответствии со следующим логическим уравнением:

85

CSИФ55=(-A9) (-A8) (-A7) (-A6) (-A5) (-A4) (-A3) (-A2).

Составим таблицу адресов портов и РУС ИФ55 (таблица 16).

Таблица 16

Имя

А9

А8

А7

А6

А5

А4

А3

А2

А1

А0

Н-код

РА

0

0

0

0

0

0

0

0

0

0

000

РВ

0

0

0

0

0

0

0

0

0

1

001

РС

0

0

0

0

0

0

0

0

1

0

002

РУС

0

0

0

0

0

0

0

0

1

1

003

Далее, пусть к порту РА подключены сигналы датчиков, а к портам РС и РВ —логика исполнительных устройств. Составим фрагмент программы инициализации ИФ55. Для этого синтезируем УС, выбрав, исходя из описания ИФ55, соответствующий заданным условиям режим 0 для всех портов:

Н-код

9

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

0

0

1

0

0

0

0

 

 

Порт С:

Реж. 0,1,2

Реж.0

 

 

Порт А: Порт С: Реж. 0

Порт В:

 

 

 

для гр.А:

 

 

ввод

 

РС...4

для гр.В: вывод РС3…0

 

 

 

РА,РС7…0

 

 

 

вывод

РВ,

вывод

MOV DX,0003

 

 

 

 

РС3…0

 

 

; Адрес РУС в DX;

 

 

MOV AL,90

; Управляющее слово в AL и

OUT DX,AL

; оттуда в регистр управления слова.

После выполнения этого программного фрагмента ИФ55 будет настроена:

Режим 0; РА —ввод; РС и РВ —вывод. Режим 1. Стробированный ввод-вывод.

В стробированном вводе (рисунок 17) или выводе (рисунок 18)

могут участвовать

только порты А и В.

При

этом часть

шин порта

С отключается в

точке «а» (рисунок

15)

от разрядов

порта С и

переключается на схему управления протоколом интерфейса, реализованную внутри ИФ55. Здесь не рассматривается схемное решение

ИФ55 для режимов 1.

Достаточно

знать,

что

ИФ55 в режиме

1 поддерживает протокол

ИРПР

(правда,

с

несущественными

оговорками).

 

 

 

 

86

Рисунок 17—Схема порта А в режиме 1 в состоянии «ВВОД»

При записи данных РА7...РА0 в порт А (в регистр РА) ИФ55 вырабатывает сигнал -ASK=1 («мы заняты»). Но как сообщить микропроцессору, что данные приняты, и что их надо ввести в

МП из регистра РА? Для этих целей существует вывод РС3, который можно подключить к контроллеру прерываний, и через него вызвать подпрограмму ввода байта из порта А.

Как только выполнится команда IN, сигналом -IORD этой команды установится сигнал готовности: — ASK=0. Цикл окончен.

С помощью разряда РС4 регистра порта С можно запрещать или разрешать вызов прерывания. Уравнение INT: INT=ASK^<триггер РС4>.

Рисунок 18 —Схема порта А в режиме 1 в состоянии «ВЫВОД»

Из рисунка 18 следует, что для доведения параметров интерфейса до ИРПР необходимо ставить инвертор по линии -ASK. Это и есть маленькая оговорка. Очевидно, что она несущественна.

Опять возникает ситуация: как микропроцессор узнает, что выведенную им информацию забрали из порта A? Это можно сделать опять с помощью прерывания, подключив вывод РС3 ко входу

87

контроллера прерывания ПКП. И как только -STB=0, и если триггер РС6=1, то будет инициировано прерывание. А как им распорядиться — это рассматривалось в главе 13.

Следующим в режиме 1 рассмотрим порт В. Сначала рассмотрим этот режим для состояния «Ввод» (рисунок 19). Анализ рисунка 19 позволяет сделать вывод, что здесь полная идентичность режиму 1, «Ввод»—для порта A. Поэтому без всяких комментариев можно переходить к режиму 1, «Вывод»— для порта В (рисунок 20). Как видно из рисунка 20, и здесь полная идентичность режиму 1, «Вывод»—для порта A.

Примечание —Если некоторые выводы порта С не задействованы в той или иной группе в режиме 1, то эта часть порта С может использоваться для ввода или вывода в режиме 0. В частности, очень часто через эти оставшиеся собственностью порта С выводы заводят сигналы INT (см. рисунки 17 —20), и организуют прерывание по опросу

этого сигнала.

Рисунок 19 —Схема порта В в режиме 1 в состоянии «ВВОД»

Рисунок 20 —Схема порта В в режиме 1 в состоянии «ВЫВОД»

Режим 2. Он устанавливается только для порта A. Если внимательно посмотреть на выводы управления в режиме 1 порта A, то

88

можно обнаружить, что они различны для ввода и вывода, кроме INT (PC3). Так вот, в режиме 2 работает весь набор управления вводом и выводом для режима 1. И порт A уже не программируется на ввод или вывод. Это игнорируется режимом 2. А ввод сразу коммутируется командой IN , а вывод —командой OUT. Этот режим чрезвычайно редко используется. Задумывался он для организации интерфейса с флоппидиском, но вскоре появились специализированные контроллеры флоппидисков, и этот режим остался практически не востребованным.

Особый режим —режим побитной записи в порт С. Еще его называют режимом прямого управления битами порта C. Пожалуй, последнее более точно отображает суть этого режима. Хотя и слово «режим» здесь не совсем уместно. Попробуем разобраться с ним и с управляющим словом по существу (рисунок 21). Что здесь важно отметить?

1) Если D7=1, то УС, отправленное в РУС по адресу А1=1, А0=1, действительно попадает в РУС и производит настройку режимов портов.

2) Если D7=0, то слово, отправленное в РУС по адресу А1=1,А0=1, на самом деле не попадает в РУС, то есть оставляет неизменным настроенный до того режим. Так куда же он попадает? А попадает он на схему управления записью в один из триггеров порта C. Остается только ознакомиться с расшифровкой этого псевдоуправляющего слова, представленного на рисунке 21 (здесь х —произвольное состояние).

Трудно переоценить наличие такой возможности, которая позволяет изменить один бит РС, не трогая остальные.

Пример 2 —Пусть к порту C, настроенному на вывод, подключены (через усилители тока) реле. Пусть ИФ55 подключен к системной шине и настроен в режим 0 в соответствии с примером 1. Необходимо выключить одно реле, подключенное логически к РС5.

89

Рисунок 21 —Формат управляющего слова для особого режима ИФ55.

Ответ: Составляем псевдоуправляющее слово:

 

 

 

 

iРС=510

РСi=0 —выключить

 

 

 

 

 

┌───────┐

┌┐

 

0

X=0

x=0

x=0

1

0

1

 

0

 

 

0

 

А

 

 

 

 

 

Тогда:

; № РУС в DX;

 

 

 

 

MOV DX,0003

 

 

 

 

MOV AL,OA

; псевдоуправляющее слово в AL;

 

 

OUT DX,AL

; РС5=0.

 

 

Отметим, что при этом остальные реле останутся в прежнем состоянии. Такую процедуру невозможно выполнить посредством вывода байта в порт C. Ведь кроме того, что нужно РС5:=0, неизвестно, в какие состояния надо поставить остальные биты порта C, чтобы продублировать их (то есть, оставить неизменными).

Исходное состояние ИФ55 после подачи на него питания +5В или после сигнала RES:

все порты в режиме 0;

состояние всех портов —ввод.

Обычно в IBM совместимых компьютерах параллельный интерфейс обслуживает порт печати (LPT1, LPT2, LPT3), при этом полностью задействованы разряды только порта А —для вывода символа в кодах КОИ-8. Для реализации протокола CENTRONICS (рисунок 13) на РВ7 через инвертор подается сигнал BUSY, а на РС0 с последующим инвертированием выводится строб -STB. Ниже приведены адреса портов в существующих IBM PC, используемых по умолчанию.

Таблица 17 —Адреса параллельных портов РС

Имя порта РС

Порт А

Порт В

Порт С

LPT1

378

379

37A

LPT2

278

279

27A

LPT3

3BC

3BD

3BE

Пример —Пусть принтер типа EPSON подключен к LPT1, и пусть байт для вывода на печать хранится в регистре DL. Составить подпрограмму вывода на печать <DL>.

MOV DX,379

; Читаем

M1: IN AL,DX

; порт В

AND AL,80

; и анализируем занятость (-BUSY=0);

JZ M1

; если занято, то снова чтение -BUSY.

DEC DX

; Подготавливаем адрес порта А

MOV AL,DL

; и выводим туда

90