Л А Б О Р А Т О Р Н А Я Р А Б О Т А N 2
Организация обмена в последовательных
каналах передачи данных
Цель работы: изучение принципов организации асинхронного обмена в
последовательных каналах передачи данных. Приобретение практических
навыков программирования асинхронных приемопередатчиков (UART).
В В Е Д Е Н И Е
Для интерфейсов систем передачи данных характерен обмен информа-
цией, представленной в последовательном формате. Подобная организация
информации упрощает и удешевляет собственно каналы передачи данных,
однако требует использования достаточно сложной аппаратуры. В боль-
шинстве случаев функции управления реализуются специализированными ин-
терфейсными БИС, именуемыми универсальными приемопередатчиками, адап-
терами последовательной связи, контроллерами последовательного кана-
ла, УСАПП, UART и т.п.
В большинстве случаев символ представляется набором из 5 - 8 дво-
ичных импульсных токовых посылок, передаваемых последовательно через
канал передачи данных (КПД), при этом значение бита определяется либо
наличием тока в линии, либо его отсутствием.
В стандартных системах часто используется асинхронный
(старт-стопный) метод обмена, при котором каждый символ передается не-
зависимо от других, таким образом, что его передача может быть начата
в любой момент времени по завершении передачи предыдущего символа.
Стандартный формат символа при асинхронном обмене соответствует
приведенному ниже:
------------¬ -------T---------T------T--------------¬ -----
¦ | | ..... | | ¦ |
L------+------+---------+------- L------+----
пауза старт 5-9 разрядов данных стоп/пауза старт
в коде Б В Н (следующий символ)
Рис. 1. Формат посылки (символа) при асинхронной передаче
Примечание 1: пауза является необязательным элементом, то есть
символы могут передаваться без разделителя; в некоторых случаях огова-
ривается максимальная длительность паузы (после чего наступает "пере-
рыв") - обычно 20 секунд. Передается сигнал паузы высоким уровнем,
аналогичным стоповой посылке.
Примечание 2: код БВН - без возврата к нулю -обеспечивает переда-
чу разряда, содержащего логическую единицу, высоким уровнем сигнала,
логический нуль - низким.
Передача начинается со стартового бита, то есть прекращения тока
в линии. Затем передаются 5-8 битов символа (количество зависит от
конкретного применяемого способа кодирования) и необязательный бит па-
ритета. Завершается передаваемый символ единичной стоповой посылкой,
длительность которой составляет один, полтора или два битовых интерва-
ла. Затем может быть начат цикл передачи следующего символа.
Основная функция приемопередатчика при обмене заключается в па-
раллельно-последовательных (при передаче) и последовательно-параллель-
ных (при приеме) преобразованиях обрабатываемой процессором информа-
ции. При этом для процессора он представляется стандартным устройством
параллельного ввода-вывода. Особенностью приемопередатчика является
наличие в его составе двух автономных преобразователей, что обеспечи-
вает возможность работы как в полудуплексном, так и в дуплексном режи-
мах, обеспечивающих двустороннюю связь в двух- и четырехпроводных КПД.
Как следует из данного далее описания, приемник и передатчик ос-
нащены двойными буферами, что позволяет в определенной мере упростить
их взаимодействие с процессором, обеспечивая возможность его работы по
прерываниям.
Помимо преобразователей, в состав UART входят схемы управления,
поддерживающие стандартный диалог протокола RS232C или ему подобного.
Эти схемы формируют сигналы управления модемом (то есть аппаратурой,
непосредственно управляющей работой КПД), генерируют внутренние сигна-
лы, управляющие приемопередатчиком во всех оговоренных режимах, обес-
печивают передачу в процессор статусной информации. Взаимодействие с
ними процессора осуществляется стандартным образом - командами IN и
OUT через порты с соответствующими адресами. Номенклатура, назначение
и программирование данных элементов подробно рассматриваются далее.
1. Внутренние регистры приемопередатчика
Для организации последовательной связи через модемы и иную анало-
гичную аппаратуру передачи данных были разработаны специальные микрос-
хемы, носящие название универсальных асинхронных приемопередатчиков
(UАRT). Стандартом де-факто стали микросхемы типа 8250 фирмы INTEL,
логику работы которых и протокол в настоящее время эмулируют последо-
вательные порты всех IBM-совместимых персональных ЭВМ и особенности
организации которых рассматриваются далее.
Операционная система ПЭВМ поддерживает, как правило, 2 или 4 пос-
ледовательных порта, при этом для СОМ1 и СОМ2 базовые адреса хранятся
соответственно в ячейках 0040:0000 и 0040:0002. Конкретное значение
базовых адресов для этих портов составляет 3F8H и 2F8H (базовый адрес
- это двухбайтовый адрес порта, являющийся младшим из группы адресов
портов, дающих доступ к UART). Примечание: все IBM-совместимые компь-
ютеры на самом деле таковыми являются не полностью. В данном случае
это означает, что базовые адреса в ячейках 0040:0000 и 0040:0002, ко-
нечно же, записаны, но для коммуникационных целей компьютер может "вы-
уживать" адреса из других ячеек!
Микросхема 8250 имеет 10 прграммируемых однобайтовых регистров, с
помощью которых управляется и контролируется последовательный коммуни-
кационный порт. Большинство из них осуществляет инициализацию порта.
Доступ к ним производится через семь портов с адресами 3F8H - 3FEH
(или 2F8H - 2FEH), причем в пяти случаях доступ определяется тем, как
установлен бит 7 в регистре управления линией (см. табл. 1.).
Из десяти регистров для обмена через последовательный канал необ-
ходимы только шесть: в регистре данных передатчика размещается байт,
подлежащий передаче в следующем цикле (подробнее - см. в п. 4), из ре-
гистра приемника считывается последний полученный из канала байт дан-
ных (см. п. 5). Регистры управления и статуса линии инициализируют и
управляют линией, используя скорость обмена, указанную в двух регист-
рах делителя скорости обмена (см. п. 2). Из оставшихся четырех регист-
ров регистры управления и статуса модема необходимы для связи через
модем или при использовании протокола модема, а регистры прерывания -
только в процедурах, управляемых прерываниями.
Таблица 1.
-----------------------------------T---------------------------------¬
¦ Адрес порта доступа к регистру ¦ Назначение регистра ¦
+----------------------------------+---------------------------------+
¦ 3F8H (OUT, бит 7 = 0 в 3FBH) ¦ Регистр данных передатчика ¦
¦ 3F8H (IN, бит 7 = 0 в 3FBH) ¦ Регистр данных приемника ¦
¦ 3F8H (OUT, бит 7 = 1 в 3FBH) ¦ Делитель скорости обмена (млад-¦
¦ ¦ ший байт) ¦
¦ 3F9H (OUT, бит 7 = 1 в 3FBH) ¦ Делитель скорости обмена (стар-¦
¦ ¦ ший байт) ¦
¦ 3F9H (OUT, бит 7 = 0 в 3FBH) ¦ Регистр разрешения прерывания ¦
¦ 3FАН (IN) ¦ Регистр идентификации прерыва- ¦
¦ ¦ ния ¦
¦ 3FВH (OUT) ¦ Регистр управления линией ¦
¦ 3FСH (OUT) ¦ Регистр управления модемом ¦
¦ 3FDH (IN) ¦ Регистр статуса линии ¦
¦ 3FEH (IN) ¦ Регистр статуса модема ¦
L----------------------------------+----------------------------------
2. Инициализация последовательного порта
При инициализации устанавливаются все параметры коммуникационного
порта. Эти параметры, в случае асинхронного обмена, включают в себя
длину слова, число стоп-битов, установку четности и скорость обмена.
Инициализацию можно осуществить как непосредственно программируя ре-
гистры микросхемы (1-й способ), так и с использованием прерывания 14Н
BIOS (2-й способ).
2.1. Программирование 8250
В процедуре инициализации участвуют 4 регистра микросхемы 8250:.
делителя скорости обмена, управления линией и разрешения прерывания.
2.1.1. Инициализация скорости обмена
Делитель скорости обмена - это число, на которое необходимо раз-
делить частоту системных часов (1190 кГц), чтобы получить требуемую
скорость обмена. Стандартные значения делителей приведены в таблице 2:
Таблица 2.
--------------------------------T-------------------T----------------¬
¦ Стандартная скорость обмена ¦ 3F9H ¦ 3F8H ¦
+-------------------------------+-------------------+----------------+
¦ 110 Бод ¦ 04Н ¦ 17Н ¦
¦ 300 Бод ¦ 01Н ¦ 80Н ¦
¦ 600 Бод ¦ 00Н ¦ С0Н ¦
¦ 1200 Бод ¦ 00Н ¦ 60Н ¦
¦ 1800 Бод ¦ 00Н ¦ 40Н ¦
¦ 2400 Бод ¦ 00Н ¦ 30Н ¦
¦ 3600 Бод ¦ 00Н ¦ 20Н ¦
¦ 4800 Бод ¦ 00Н ¦ 18Н ¦
¦ 9600 Бод ¦ 00Н ¦ 0СН ¦
L-------------------------------+-------------------+-----------------
Целесообразно устанавливать регистры скорости обмена первыми, так
как они единственные, которые требуют установку бита 7 в регистре уп-
равления линией. После этого надо изменить содержимое регистра управ-
ления, сбросив этот бит, чтобы обеспечить доступ ко всем другим ре-
гистрам.