Информационные технологииStfw.Ru 🔍
🕛

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

В СОМ-портах преобразование параллельного кода в последовательный для передачи и обратное преобразование при приеме данных выполняют специализированные микросхемы UART (Universal Asynchronou
В СОМ-портах преобразование параллельного кода в последовательный для передачи и обратное преобразование при приеме данных выполняют специализированные микросхемы UART (Universal Asynchronous Receiver-Transmitter - универсальный асинхронный приемопередатчик). Эти же микросхемы формируют и обрабатывают управляющие сигналы интерфейса. СОМ-порты 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
продолжение-^


Таблица 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 байта;

• 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 бит.

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) - ошибка контрольного бита (паритета или фиксированного).
¦ Бит 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.

Также по теме:
Новые программы для Windows, Linux и Android.