Аппаратные интерфейсы ПК

         

Микросхемы асинхронных приемопередатчиков


В СОМ-портах преобразование параллельного кода в последовательный для пе­редачи и обратное преобразование при приеме данных выполняют специализи­рованные микросхемы UART (Universal Asynchronous Receiver-Transmitter — универсальный асинхронный приемопередатчик). Эти же микросхемы формиру-

2.5. Микросхемы асинхронных приемопередатчиков________________________ 63

ют и обрабатывают управляющие сигналы интерфейса. СОМ-порты IBM PC XT/ AT базируются на микросхемах, совместимых на уровне регистров с U ART i8250 — 8250/16450/16550А. Это семейство представляет собой усовершенствование на­чальной модели, направленное на повышение быстродействия, снижение потреб­ляемой мощности и загрузки процессора при интенсивном обмене. Отметим, что:

¦ 8250 имеет ошибки (появление ложных прерываний), учтенные в XT BIOS;

¦     8250А — ошибки исправлены, но в результате потеряна совместимость с BIOS;эта микросхема работает в некоторых моделях AT, но непригодна для скорос­ти 9600 бит/с;

¦     8250В — исправлены ошибки 8250 и 8250А, восстановлена ошибка в прерыва­ниях — возвращена совместимость с XT BIOS; работает в AT под DOS (кроме скорости 9600 бит/с).

Микросхемы 8250х имеют невысокое быстродействие по обращениям со стороны системной шины. Они не допускают обращения к своим регистрам в смежных шинных циклах процессора — для корректной работы с ними требуется введение программных задержек между обращениями CPU.

В компьютерах класса AT применяют микросхемы UART перечисленных ниже модификаций.

¦     16450 — быстродействующая версия 8250 для AT. Ошибок 8250 и полной сов­местимости с XT BIOS не имеет.

¦     16550 — развитие 16450. Может использовать канал DMA для обмена данными. Имеет FIFO-буфер, но некорректность его работы не позволяет им воспользо­ваться.

¦     16550А — имеет работающие 16-байтные FIFO-буферы приема и передачи и

возможность использования DMA.
Именно этот тип U ART должен применять­ ся в AT при интенсивных обменах на скоростях 9600 бит/с и выше. Совмести­мость с этой микросхемой обеспечивает большинство микросхем контролле­ров портов ввода-вывода, входящих в современные чипсеты.

Микросхемы UART 16550А с программной точки зрения представляют собой на­бор регистров, доступ к которым определяется адресом (смещением адреса регист­ра относительно базового адреса порта) и значением бита DLAB (бита 7 регистра LCR). В адресном пространстве микросхема занимает 8 смежных адресов. Список регистров UART 16550A и способы доступа к ним приведены в табл. 2.4. Микросхе­мы 8250 отличаются отсутствием регистра FCR и всех возможностей FIFO и DMA.

Таблица 2.4. Регистры UART 16550А

Доступ                  Регистр Смещение   DLAB    Имя

Название

Чтение/запись R/W

Oh Oh Oh

0 0 1

THR RBR DLL

Transmit Holding Register Receiver Buffer Register Divisor Latch LSB

WO RO R/W

продолжение-^

64________________________ Глава 2. Последовательный интерфейс — СОМ-порт

Таблица 2.4 (продолжение)

Доступ                             Регистр                                                              Чтение/запись R/W

Смещение   DLAB    Имя      Название

1h

1

DIM

Divisor Latch MSB

R/W

1h

0

IER

Interrupt Enable Register

R/W

2h

X

IIR

Interrupt Identification Register

RO

2h

X

FOR

FIFO Control Register

WO

3h

X

LCR

Line Control Register

R/W

4h

X

MCR

Modem Control Register

R/W

5h

X

LSR

Line Status Register

R/W1

6h

X

MSR

Modem Status Register

R/W'

7h

X

SCR

Scratch Pad Register

R/W

1 Некоторые биты допускают только чтение. Запись в регистр может привести к сбою протокола.

Т H R — промежуточный регистр данных передатчика (только для записи). Данные, записанные в регистр, будут пересланы в выходной сдвигающий регистр (когда он будет свободен), из которого поступят на выход при наличии разрешающего сигнала CTS.


Бит 0 передается ( и принимается) первым. При длине посылки ме­нее 8 бит старшие биты игнорируются.

RBR — буферный регистр принимаемых данных (только для чтения). Данные, приня­тые входным сдвигающим регистром, помещаются в регистр RBR, откуда они могут быть считаны процессором. Если к моменту окончания приема очередного символа предыдущий не был считан из регистра, фиксируется ошибка переполнения. При длине посылки менее 8 бит старшие биты в регистре имеют нулевое значение.

DLL — регистр младшего байта делителя частоты.

D L M — регистр старшего байта делителя частоты. Делитель определяется по фор­муле D=115200/V, где V — скорость передачи, бит/с. Входная частота синхрони­зации 1,8432 МГц делится на заданный коэффициент, после чего получается 16-кратная частота передачи данных.

IER — регистр разрешения прерываний. Единичное значение бита разрешает пре­рывание от соответствующего источника.

Назначение бит регистра IER:

¦     биты [7:4]=0 — не используются;

¦     бит 3 — Mod_IЕ — по изменению состояния модема (любой из линий CTS, DSR,

Rl, DCD);

¦     бит 2 — Rx L_I Е — по обрыву/ошибке линии;

¦     бит 1 — TxD_IE — по завершении передачи;

¦     бит 0 — RxD_I Е — по приему символа (в режиме FIFO — прерывание по тайм-ауту).

IIR — регистр идентификации прерываний и признака режима FIFO (только для чтения). Для упрощения программного анализа UART выстраивает внутрен­ние запросы прерывания по четырехуровневой системе приоритетов. Порядок

2.5. Микросхемы асинхронных приемопередатчиков________________________ 65

приоритетов (по убыванию): состояние линии, прием символа, освобождение ре­гистра передатчика, состояние модема. При возникновении условий прерывания UART указывает на источник с высшим приоритетом до тех пор, пока он не будет сброшен соответствующей операцией. Только после этого будет выставлен запрос с указанием следующего источника.


Ниже описано назначение бит регистра IIR.

¦  Биты [7:6] — признак режима FIFO:

•       11-режим FIFO 16550A;

•       10 - режим FIFO 16550;

•       00 — обычный.

¦    Биты [5:4] — не используются.

¦    Бит 3 — прерывание по тайм-ауту приема в режиме FIFO (в буфере есть сим­волы для считывания).

¦    Биты [2:1] — причина прерывания с наивысшим приоритетом (в обычном, не FIFO-режиме):

•       11 — ошибка/обрыв линии, сброс выполняется чтением регистра состояния линии;

•       10 — принят символ, сброс выполняется чтением данных;

•       01 — передан символ (регистр THR пуст), сброс выполняется записью данных;

•       00 — изменение состояния модема; сброс выполняется чтением регистра состояния модема.

¦  Бит 0 — признак необслуженного запроса прерывания (1 — нет запроса, 0 — есть запрос).

В режиме FIFO причину прерывания идентифицируют биты [3:1].

¦    011 — ошибка/обрыв линии. Сброс выполняется чтением регистра состояния линии.

¦    010 — принят символ. Сброс выполняется чтением регистра данных приемника.

¦    110 — индикатор тайм-аута (за 4-кратный интервал времени символа не пере­дано и не принято ни одного символа, хотя в буфере имеется, по крайней мере, один). Сброс выполняется чтением регистра данных приемника.

¦    001 — регистр THR пуст. Сброс выполняется записью данных.

¦    000 — изменение состояния модема (CIS, DSR, RI или DCD). Сброс выполняет­ся чтением регистра MSR.

FCR — регистр управления FIFO (только для записи). Ниже описано назначение бит регистра FCR:

¦  Биты [7:6] — ITL (Interrupt Trigger Level) — уровень заполнения FIFO-буфе­ра, при котором вырабатывается прерывание:

•       00—1 байт (по умолчанию);



•       01 — 4 байта;

66________________________ Глава 2. Последовательный интерфейс — СОМ-порт

•       10 -8 байт;

•       11-14 байт.

¦     Биты [5:4] зарезервированы.

¦     Бит 3 — разрешение операций DMA.

¦     Бит 2 - RESETTF (Reset Transmitter FIFO) - сброс счетчика FIFO-передат­

чика ( записью единицы; сдвигающий регистр не сбрасывается).

¦     Бит 1 — RESETRF (Reset Receiver FIFO) — сброс счетчика FIFO-приемника (за­писью единицы; сдвигающий регистр не сбрасывается).

¦     Бит 0 — TRFIFOE (Transmit And Receive FIFO Enable) — разрешение (едини­цей) режима FIFO для передатчика и приемника. При смене режима FIFO-буферы автоматически очищаются.

LCR — регистр управления линией (настройки параметров канала). Ниже описано назначение бит регистра LCR.

¦     Бит 7 — DLAB (Divisor Latch Access Bit) — управление доступом к делителю частоты.

¦     Бит 6 — BRCON (Break Control) — формирование обрыва линии (посылка ну­лей) при BRCON=1.

¦     Бит 5 — STICPAR (Sticky Parity) — принудительное формирование бита па­ритета:

•       0 — контрольный бит генерируется в соответствии с паритетом выводимо­го символа;

•       1 — постоянное значение контрольного бита: при EVENPAR=1 — нулевое, при EVENPAR=0 — единичное.

¦     Бит 4 — EVE N PAR (Even Parity Select) — выбор типа контроля: 0 — нечетность, 1 —четность.

¦     Бит 3 — PAREN (Parity Enable) — разрешение контрольного бита:

•       1 — контрольный бит (паритет или постоянный) разрешен;

•       0 — контрольный бит запрещен.

¦   Бит 2 — STOP В (Stop Bits) — количество стоп-бит:

•       0—1 стоп-бит;



•       1 — 2 стоп-бита (для 5-битного кода стоп-бит будет иметь длину 1,5 бит).

¦   Биты [1:0] — SERIALDB (Serial Data Bits) — количество бит данных:

•       00-5 бит;

•       01-6 бит;

•       10-7 бит;

•       И-8 бит.

2.5. Микросхемы асинхронных приемопередатчиков________________________ 67

MCR — регистр управления модемом. Ниже описано назначение бит регистра MCR.

¦     Биты [7:5]=0 — зарезервированы.

¦     Бит 4 — LME (Loopback Mode Enable) — разрешение режима диагностики:

•       0 — нормальный режим;

•       1 — режим диагностики (см. ниже).

¦   Бит 3 — IE (Interrupt Enable) — разрешение прерываний с помощью внешнего выхода OUT2; в режиме диагностики поступает на вход MSR. 7:

•       0 — прерывания запрещены;

•       1 — прерывания разрешены.

¦     Бит 2 — OUT1C (OUT1 Bit Control) — управление выходным сигналом 1 (не используется); в режиме диагностики поступает на вход MSR. 6.

¦     Бит 1 — RISC (Request To Send Control) — управление выходом RTS; в режиме диагностики поступает на вход MSR.4:

•       0 — активен (-V);

•       1 — пассивен (+V).

¦   Бит 0 — DTRC (Data Terminal Ready Control) — управление выходом DTP; в ре­жиме диагностики поступает на вход MSR. 5:

•       0 — активен (-V);

•       1 — пассивен (+V).

LSR — регистр состояния линии (точнее, состояния приемопередатчика). Ниже описано назначение бит регистра LSR.

¦     Бит ? — FIFOE (FIFO Error Status) —ошибка принятых данных в режиме FIFO (буфер содержит хотя бы один символ, принятый с ошибкой формата, парите­та или обрывом).


В не FIFO-режиме всегда 0.

¦     Бит 6 — TEMPT (Transmitter Empty Status) — регистр передатчика пуст ( нет данных для передачи ни в сдвиговом регистре, ни в буферных регистрах THR или FIFO).

¦     Бит 5 — THRE (Transmitter Holding Register Empty) — регистр передатчика готов принять байт для передачи. В режиме FIFO указывает на отсутствие сим­волов в FIFO-буфере передачи. Может являться источником прерывания.

¦     Бит 4 — BD (Break Detected) — индикатор обрыва линии (вход приемника на­ходится в состоянии 0 не менее чем время посылки символа).

¦     Бит 3 — F E (Framing Error) — ошибка кадра (неверный стоп-бит).

¦     Бит 2 — РЕ (Parity Error) — ошибка контрольного бита (паритета или фикси­рованного).

68________________________ Глава 2. Последовательный интерфейс — СОМ-порт

¦     Бит 1 — ОЕ (Overrun Error) — переполнение (потеря символа). Если прием

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

ющего регистра в буферный регистр или в регистр FIFO, прежний символ в

сдвигающем регистре теряется.

¦     Бит 0 — DR (Receiver Data Ready) — принятые данные готовы (в DHR или FIFO- буфере). Сброс — чтением приемника.

Индикаторы ошибок — биты [4:1] — сбрасываются после чтения регистра LSR. В режиме FIFO признаки ошибок хранятся в FIFO-буфере вместе с каждым сим­волом. В регистре они устанавливаются (и вызывают прерывание) в тот момент, когда символ, принятый с ошибкой, находится на вершине FIFO (первый в очере­ди на считывание). В случае обрыва линии в FIFO заносится только один «обрыв­ной» символ, и UART ждет восстановления и последующего старт-бита.

MSR —регистр состояния модема. Ниже описано назначение бит регистра MSR:

¦   Бит 7 — DCD (Data Carrier Detect) — состояние линии DCD:

•       0 — активна (-V);

•       1 — пассивна (+V).



¦   Бит 6 — RI (Ring Indicator) — состояние линии RI:

•       0 — активна (-V);

•       1 — пассивна (+V).

¦   Бит 5 — DSR (Data Set Ready) — состояние линии DSR:

•       0 — активна (-V);

•       1 — пассивна (+V).

¦   Бит 4 — CIS (Clear To Send) — состояние линии CTS:

•       0 — активна (-V);

•       1 — пассивна (+V).

¦     Бит 3 — DDCD (Delta Data Carrier Detect) — изменение состояния DCD.

¦     Бит 2 — ТЕ RI ( Trailing Edge Of Ring Indicator) — спад огибающей RI (оконча­ние звонка).

¦     Бит 1 — DDSR (Delta Data Set Ready) — изменение состояния DSR.

¦     Бит 0 — DCTS (Delta Clear To Send) — изменение состояния CTS.

Признаки изменения (биты [3:0]) сбрасываются по чтению регистра.

SCR — рабочий регистр (8 бит), на работу UART не влияет, предназначен для вре­менного хранения данных (в 8250 отсутствует).

В диагностическом режиме (при LME=1) внутри UART организуется внутренняя «заглушка»:

¦     выход передатчика переводится в состояние логической единицы;

¦     вход приемника отключается;

2.7. Конфигурирование СОМ-портов_____________________________________ 69

¦     выход сдвигающего регистра передатчика логически соединяется со входом

приемника;

¦     входы DSR, CIS, RI и DCD отключаются от входных линий и внутренне управ­

ляются битами DTRC, RISC, OUT1C, IE;

¦     выходы управления модемом переводятся в пассивное состояние (логический

ноль).

Переданные данные в последовательном виде немедленно принимаются, что поз­воляет проверять внутренний канал данных порта (включая сдвигающие регист­ры) и отработку прерываний, а также определять скорость работы UART.


Содержание раздела