10. ПРОГРАММИРУЕМЫЕ БОЛЬШИЕ ИНТЕГРАЛЬНЫЕ СХЕМЫ

 

10.1 ПРОГРАММИРУЕМЫЙ ПЕРИФЕРИЙНЫЙ ИНТЕРФЕЙС (PPI)

 

На рисунке внизу приведены условное обозначение ППИ и одна из возможных схем его включения в микропроцессорную систему. PPI имеет три двунаправленных 8-ми битных канала связи с внешними устройствами, называемых обычно портами - PA,PB,PC. Порт PC отличается от остальных тем, что его можно "расчленить" на два независимых 4-х битных порта - старшую половину D7..D4 и младшую D3..D0.ppi.gif (4245 bytes) ППИ, называемый иногда параллельным интерфейсом (IOP), подключается к шине данных с помощью двунаправленных тристабильных выводов D7..D0. Входы A1,A0 осуществляют выбор одного из четырех каналов обмена данными: трех портов PA,PB,PC или внутреннего регистра управления/состояния (РУС или CSR - Control and Status Register).

A1 A0 КАНАЛ
0 0 PA
0 1 PB
1 0 PC
1 1 CSR

PPI переводится в рабочее состояние активным значением сигнала на инверсном входе "выбор микросхемы" (Chip Select, Crystall Select, CS) ~CS = 0, снимаемым  с выхода дешифратора адреса ( на рисунке приведен неполный дешифратор - элемент И-НЕ). Логический ноль на выходе элемента И-НЕ появится, если ВСЕ сигналы на его входах равны "1"   (A7=A6=A5=A4=1). Так как выбор того или иного канала производится с помощью входов A1,A0 подключенных к аналогичным линиям шины адреса (ША), то с учетом входов дешифратора возможны следующие   комбинации  сигналов на ША.

ЛИНИИ ШИНЫ АДРЕСА КАНАЛ/ПОРТ АДРЕС (HEX)
A7 A6 A5 A4 A3 A2 A1 A0
1 1 1 1 x x 0 0 PA F0
1 1 1 1 x x 0 1 PB F1
1 1 1 1 x x 1 0 PC F2
1 1 1 1 x x 1 1 CSR F3

Линии A3,A2 шины адреса в схеме не задействованы, поэтому их значения в таблице обозначены (x - Don't Care Bits). При вычислении 16-ного адреса программист в качестве значения этих бит может подставлять любые значения, в том числе нули, как это и сделано в таблице. Например, для порта PB двоичный код 1111xx01 = 11110001(BIN) = F1(HEX).

Обмен   байтами  данных между МП (CPU)  и внешними устройствами (ВУ), подключенными к портам PPI может производиться по командам ассемблера IN..... и OUT.... например : in al,XX и out XX,al.

Выполнение команд IN и OUT производится в два этапа (без учета тактов и циклов, зависящих от конкретной архитектуры микропроцессора). Пример : выполнение инструкций IN AL,0F1h и OUT 0F1h,AL.

Тип операций выполняемых PPI (режим работы) зависит от информации записанной в его регистр управления. Эта информация называется управляющим байтом или иногда приказом. Подробная информация по режимам приведена, например в справочнике : Микропроцессоры и микроЭВМ, под редакцией Хвощ С.Т. Ниже приведен формат байта управления в одном из наиболее популярных режимов - режиме "0", о чем свидетельствуют нули в битах D6,D5,D2:

D7 D6 D5 D4 D3 D2 D1 D0
1 0 0 PA PCh 0 PB PCl

Биты PA,PB,PCh,PCl  определяют направление передачи данных через порты ( если порт настроен, например, на вывод, то ввести данные через него в МП командой IN не удастся !).

Если один из перечисленных четырех   битов установлен (в него записана 1), то соответствующий порт будет настроен на ввод (МП <----- ВУ), если бит сброшен (в него записан 0), то порт будет настроен на вывод (  МП -----> ВУ).

 

10.1.1 ПОДКЛЮЧЕНИЕ К PPI ЦАП И АЦП

Ниже на рисунке приведен пример подключения двух внешних устройств, в качестве которых выступают ЦАП и АЦП. ppi-adda.gif (7168 bytes)Аналого-цифровой преобразователь последовательных приближений (наиболее распространенный в микропроцессорных системах) подключен цифровыми выходами к порту PA ( может быть и другой порт). Вход сброса/запуска R подключен к одной из линий порта PC (на рисунке PC0), а выход готовности преобразователя соединен с линией PC7. ЦАП входами связан с  портом PB.

Как это видно из рисунка порт PA должен быть настроен на ввод кода пропорционального входному напряжению Uвх, а порт PB - на вывод кода. Поэтому бит D4 (PA) управляющего

D7 D6 D5 D4 D3 D2 D1 D0
1 0 0 1 PCh 0 0 PCl

байта должен быть установлен, а бит D1(PB) - сброшен. Далее обращаем внимание, что линия PC0 ( а вместе с ней и вся младшая половина порта PCl) должна быть настроена на вывод, а линия PC7(PCh) - на ввод, поэтому окончательно управляющий байт для приведенного ВАРИАНТА подключения АЦП и ЦАП будет выглядеть следующим образом:

D7 D6 D5 D4 D3 D2 D1 D0 HEX код
1 0 0 1 1 0 0 0 98

Теперь приведем типовые фрагменты программы управления работой ЦАП и АЦП, с учетом временных диаграмм  АЦП.

ad-vrem.gif (2058 bytes)

Преобразователь активизируется при поступлении импульса R = 1 ( происходит обнуление регистров). Отрицательным перепадом сигнала R запускается процесс преобразования и через время Tпреобр. новый код появляется на выходах преобразователя.  В этот момент на выходе готовности АЦП появляется сигнал ~RDY = 0, свидетельствующий об окончании очередного цикла пребразования.


;  ++++++++ подготовка PPI к работе ++++++++

   mov al,98h ; запись управляющего байта 98
   out 0f3h,al; в регистр управления с адресом F3
   ...........

;  ++++++++ запуск АЦП и считывание кода ++++++++

   mov al,01  ; формирование на линии PC0
   out 0f2h,al; импульса запуска  (R = 1)
   mov al,00  ; преобразователя
   out 0f2h,al; (R = 0) 
w: in al,0f2h ; ввести в аккумулятор (AL) байт из порта PC
   test al,80h; отселектировать бит готовности PC7 (маска 80h),
   jnz w      ; если он не равен нулю - повторить ввод снова,
   in al,0f0h ; если АЦП готов (~RDY=0), то ввести код из порта PA 
   ...........; с адресом F0 (выход АЦП) в аккумулятор.
;  терерь код напряжения, например, можно вывести на дисплей и т.д.


;  ++++++++  вывод кода в ЦАП  ++++++++

   mov al,XXh ; запись в аккумулятор требуемого значения XX
   out 0f1h,al; и вывод его на ЦАП через порт PB с адресом F1.
   ...........

 

 

10.2 ПРОГРАММИРУЕМЫЙ ИНТЕРВАЛЬНЫЙ ТАЙМЕР (PIT)

Содержит три независимых шестнадцатиразрядных синхронных вычитающих счетчика CTi с синхронной загрузкой кодаpit-cpu.gif (5087 bytes) На рисунке внизу приведена типичная схема включения ПИТ в микропроцессорную систему. Левая часть схемы  тождественна предыдущей схеме подключения ППИ за исключением того, что   в качестве дешифратора используется популярная м/с ИД7.

Назначение выводов счетчиков: CLKi - вход сигнала тактовой  частоты. G(ATE)i - вход   управления запуском/остановом счета. OUTi - выход сигнала.

Входы A1,A0 осуществляют выбор одного из трех счетчиков или  регистра управления.

A1 A0 СЧЕТЧИК / РЕГИСТР УПРАВЛЕНИЯ
0 0 CT0
0 1 CT1
1 0 CT2
1 1 CSR

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

В приведенной конкретной схеме вход Chip Select соединен с 0-м выходом дешифратора адреса. В соответствии с логикой работы DC при обращении CPU к PIT на управляющих входах OE должны быть активные уровни: A7=1,A6=A5=0. На адресных входах дешифратора для активизации 0-го выхода должен быть помещен двоичный код A4=A2=A1=0. С учетом приведенных ранее битов A1,A0 таймер имеет следующие адреса:

ЛИНИИ ШИНЫ АДРЕСА СЧЕТЧИК / РЕГИСТР УПРАВЛЕНИЯ АДРЕС (HEX)
A7 A6 A5 A4 A3 A2 A1 A0
1 0 0 0 0 0 0 0 CT0 80
1 0 0 0 0 0 0 1 CT1 81
1 0 0 0 0 0 1 0 CT2 82
1 0 0 0 0 0 1 1 CSR 83

Установка режима работы каждого счетчика производится программно путем записи байта управления и начального значения коэффициента деления Ni (модуля счета). Формат управляющего байта представлен ниже.

D7 D6 D5 D4 D3 D2

D1

D0

 

D7 D6 Номер счетчика Способ загрузки Ni в счетчик D5 D4
0 0 Счетчик 0 (CT0) Фиксация Ni 0 0
0 1 Счетчик 1 (CT1) Загрузка Ni одним младшим байтом 0 1
1 0 Счетчик 2 (CT2) Загрузка Ni одним старшим байтом 1 0
1 1 Запрет Загрузка Ni двумя байтами 1 1
D3 D2 D1     Формат записи Ni в счетчик D0
0 0 0 Режим 0 Запись Ni двоичным кодом 0
0 0 1 Режим 1 Запись Ni двоично-десятичным кодом 1
x 1 0 Режим 2  
x 1 1 Режим 3
1 0 0 Режим 4
1 0 1 Режим 5

Два старших бита D7,D6 байта управления определяют номер регистра управления соответствующего счетчика.

Биты D5,D4 задают способ записи модуля счета Ni i-го  счетчика.

Биты D3,D2,D1 определяют форму выходного сигнала. В режимах 0,2,3,4 счет разрешается при GATE=1 и останавливается при  GATE=0. В режимах 1 и 5 для начала счета на вход GATE необходимо подать положительный перепад.

pit-regim0.gif (1739 bytes)

pit-regim1.gif (1742 bytes)

pit-regim2.gif (1835 bytes)

pit-regim3.gif (1856 bytes)

pit-regim4-5.gif (1726 bytes)

Бит D0 регламентирует формат записи кода Ni в счетчик.  Если D0=0, загружаемый код трактуется счетчиком, как двоичный - в противном случае, как двоично-десятичный.

 

10.2.1 ПРИМЕР ИСПОЛЬЗОВАНИЯ PIT

На рисунке внизу приведена одна из множества схем применения ПИТ в качестве таймера с программируемой длительностью временного интервала T1, подачей звуковых отметок с периодом T2 и сигнализацией с частотой F0 спустя время T1.

PIT-budilnik.gif (4835 bytes)

Исходные данные для проектирования:

Необходимо для каждого счетчика вычислить коэффициенты деления Ni и управляющие байты.

D7 D6 D5 D4 D3 D2 D1 D0 HEX код
0 0 1 1 0 1

1

0 36
0 0 1 1 1 1

1

0 3E
D7 D6 D5 D4 D3 D2 D1 D0 HEX код
1 0 0 1 0 1

0

0 94
0 0 1 1 1 1

0

0 9C
D7 D6 D5 D4 D3 D2 D1 D0 HEX код
0 1 0 1 0 0

0

1 51

Программа запуска приведенной схемы таймера:

   ;#### подготовка счетчиков таймера к работе в выбранных режимах
   mov al,51h; загрузка управляющего байта CT1
   out 83h,al; по адресу 83
   mov al,9ch ; загрузка управляющего байта CT2
   out 83h,al; по адресу 83
   mov al,3eh  ;  загрузка управляющего байта CT0
   out 83h,al;  по адресу 83


   ;#### запись коэффициентов деления  Ni в счетчики
   ;#### в режимах 0,2,3 счетчики при записи в них последнего
   ;#### (единственного) байта Ni начинают счет импульсов CLKi
   mov al,14h  ; запись N1=14(BCD !) в счетчик CT1
   out 81h,al; по адресу 81
   mov al,64h  ; запись N2=100(DEC) в счетчик CT2
   out 82h,al; по адресу 82
   mov al,20h  ; запись младшего байта N0=20000(DEC)=4e20(HEX)
   out 80h,al; в счетчик CT0 по адресу 80
   mov al,4eh  ; а теперь - старшего байта N0
   out 80h,al; по тому же адресу
   ;#### таймер начал отсчет времени.

 

10.3 ПРОГРАММИРУЕМЫЙ СВЯЗНОЙ ИНТЕРФЕЙС (PCI)

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

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

Назначение некоторых выводов: TxD - выход передатчика, RxD - вход приемника, CLK - вход частоты синхронизации, TxC - вход синхросигнала передатчика, RxC - вход синхросигнала приемника, ~CTS - инверсный вход готовности приемника терминала (удаленного устройства или модема). В простых системах связи вход ~CTS можно жестко связать с "землей", уведомляя передатчик, что приемник "всегда готов", а его действительная готовность к приему - это забота программиста! Если используется стандартный протокол связи, например RS-232C, то вход ~CTS должен быть отсоединен от нулевого провода. C/~D - функциональный вход "управление/данные". Если C/~D = 0 , то МП и УСАПП обмениваются байтом данных, если C/~D = 1, то происходит запись байта управления или чтение байта состояния. Назначение остальных выводов PCI аналогично назначению соответствующих выводов PPI. Приведенных на рисунке выводов достаточно для реализации связи с не очень удаленными объектами, например с компъютером или с другими МП.

ios.gif (8836 bytes)

Из приведенного рисунка нетрудно вычислить адреса PCI. Для нулевого выхода дешифратора, подключенного к входу таймеру "выбор микросхемы"адреса уже найдены. Активизация инверсного  входа ~CS УСАПП производится подачей сигналов A4,A3,A2 = 111(BIN) = 7(DEC) и разрешающих работу дешифратора сигналов A7,A6,A5 = 100(BIN). В таблице приведены два из четырех возможных адресов PCI (A1 = 0).

ЛИНИИ ШИНЫ АДРЕСА ДАННЫЕ / РЕГИСТР УПРАВЛЕНИЯ (CSR) АДРЕС (HEX)
A7 A6 A5 A4 A3 A2 A1 A0
1 0 0 1 1 1 x 0 Адрес порта данных
1 0 0 1 1 1 x 1 Адрес порта CSR 9D

Одним из наиболее распространенных режимов работы УСАПП является асинхронный режим. В этом режиме каждый передаваемый символ (кадр) содержит следующие поля:

Кадры следуют непрерывно или отделяются паузами. Инфомационные биты передаются начиная со старших разрядов. На рисунке передается/принимается код 01011001, а не 10011010.

УСАПП программируется записью в него байта управления, который может быть двух типов:

ФОРМАТ ИНСТРУКЦИИ РЕЖИМА

Инструкция режима задает режим синхронизации, формат данных, скорость обмена, необходимость контроля. Ниже в таблице приведен формат инструкции режима.

D7 D6 D5 D4 D3 D2 D1 D0

 

D7 D6 Число стоп-бит Вид контроля D5 D4
0 0 Запрет Нет контроля 0 0
0 1 1 стоп-бит Контроль нечетности 0 1
1 0 "полтора" стоп-бита Нет контроля 1 0
1 1 2 стоп-бита Контроль четности 1 1
D3 D2 Число информационных бит Частота синхронизации D1 D0
0 0 5 fTxC(RxC)  / 1 0 1
0 1 6 fTxC(RxC) / 16 1 0
1 0 7 fTxC(RxC) / 64 1 1
1 1 8

ФОРМАТ КОМАНДЫ УПРАВЛЕНИЯ

Ниже в таблице приведены некоторые биты команды управления.

Разряд Обозначение НАЗНАЧЕНИЕ КОМАНДЫ
D0 TxEN Разрешение работы УСАПП в качестве передатчика, D0=1
D2

RxEN

Разрешение работы УСАПП в качестве приемника, D2=1
D4 ER Сброс в ''0" флагов ошибок, D4=1
D6 RESET Программный сброс УСАПП в исходное состояние, D6=1

ФОРМАТ БАЙТА СОСТОЯНИЯ

В процессе работы можно осуществлять контроль за работой  УСАПП путем чтения байта его состояния. Ниже в таблице приведены некоторые наиболее употребительные в асинхронном режиме биты состояния УСАПП.

D7 D6 D5 D4 D3 D2 D1 D0
    FE OE PE   RxRDY TxRDY

Биты D5,D4,D3, называемые также флагами, устанавливаются/сбрасываются   приемником УСАПП сигнализируя:

Бит RxRDY (Готовность приемника), если RxRDY=0, то приемник еще не преобразовал последовательный код в параллельный и считывать его в микропроцессор бессмысленно.

Бит TxRDY (Готовность передатчика) - если TxRDY=0, то передатчик еще не преобразовал параллельный код в последовательный и загрузка следующего кода из МП в передатчик исказит текущее передаваемое значение.

Ниже приводится фрагмент программы передачи массива байтов, хранящихся в памяти.RAM-ios.gif (2410 bytes)Начальный адрес массива символов - 8007(HEX). Передается  8 байтов: fd,87,9c,88,40,55,8a,b8. Адреса таймера 80,83 и УСАПП 9c,9d были получены ранее. Коэффициент деления частоты fCLK(N0=5)>4.5.

 

 


;#### настройка и запуск делителя частоты

     mov al,1eh; CT0,1 мл.байт, режим 3, код BIN
     out 83h,al; вывод байта упр. 1e в порт 83
     mov al,5  ; коэфф. деления частоты Fclk N0=5
     out 80h,al; и запись его в CT0 по адресу 80

;#### настройка УСАПП
     ...........

     mov al,40h;программный сброс D6=1
     out 9dh,al;

     mov al,0cfh;инструкция режима: 2 стоп-бита,
     out 9dh,al ;нет контроля,8 инф. бит, fTxC(RxC) / 64

     mov al,01h;разрешение передачи TxEN=1
     out 9dh,al;
;#### передача массива символов
     mov cl, 8; число передаваемых символов
     mov bx,8007h; начальный адрес блока
nxt: mov al,[bx]; переслать текущий байт в AL
     out 9ch,al; и вывести его в УСАПП
wt:  in al,9dh; чтение байта состояния
     shr al,1; символ передан в линию? (TxRDY=1?),
     jnc wt; если нет,то подождать,
     inc bx; если да, перейти к адресу след. байта 
     dec cl; переданы все байты?
     jnz nxt; если нет,то повторить вывод след. байта 
     ........; если да,то выйти из цикла.

10.4 КОНТРОЛЛЕР КЛАВИАТУРЫ И ДИСПЛЕЯ

РАЗДЕЛ В СТАДИИ ОФОРМЛЕНИЯ !

8279.gif (8381 bytes)

 

8279key.gif (2400 bytes)