Текстовые терминалы на Unix-подобных системах (и на PC) обычно соединяются с
асинхронными 232 последовательным портом компьютера. Это - обычно RS-232-C,
EIA-232-D, или EIA-232-E. Эти три стандарта почти одно и то же. Первоначальный
префикс RS стал EIA (Ассоциация Электронной Промышленности) и позже EIA/TIA
после обьединения EIA с TIA (Ассоциация Промышленности Передачи данных).
EIA-232 спецификации используются также для синхронной (sync) связи, но
аппаратные средства для поддержки sync на PC почти всегда отсутствуют. RS
обозначение устаревает, но все еще используется. В этой статье будет
использоваться обозначение EIA.
Старые терминалы используют 7-разрядный код ASCII для символов, но большинство
терминалов, сделанных после 1990 позволяют иметь другие символьные наборы,
которые используют 8-разрядные символы (256 возможных символов). Чтобы иметь
дело с терминалами, вы должны также прочитать соответствующие части
Serial-HOWTO и ознакомиться с таблицей кодов ASCII.
Последовательный порт - это больше, чем просто физический соединитель на конце
компьютера или терминала. Он включает электронику, которая должна вырабатывать
сигналы, согласовывающиеся со спецификацией EIA-232. Стандартный соединитель
имеет 25 штырьков, большинство из которых не используются. Альтернативный
соединитель имеет только 9 штырьков. Один штырек используется, чтобы посылать
байты данных, а другой, чтобы получать байты данных. Другой штырек - общая
земля. Другие "полезные" штырьки используются главным образом для передачи
сигналов с устойчивым отрицательным значением напряжения "off" и устойчивым
положительным значением напряжения "on".
Микросхема UART (Универсальный Асинхронный Приемопередатчик) проделывает
большинство такой работы. Сегодня функциональные возможности этой микросхемы
обычно встраиваются в другую микросхему.
Напряжение для бита
В последовательном порту EIA-232, напряжения биполярны (положительны или
отрицательны относительно земли) и по величине должны быть приблизительно 12
вольт (некоторые - 5 или 10 вольтов). Для передающих и принимающих выводов
+12 вольт - это 0 (иногда назваемый "пробелом") и -12 вольт - это 1
(иногда назваемая "меткой"). Это известно как инвертированная логика, обычно
бит 0 является false и отрицательным, в то время как единица обычно true и
положительной. Хотя получающий и передающий вывода - инвертированная логика,
другие штырьки (линии управления модемом) - нормальная логика с положительным
напряжением, являющимся true (или "on", или "установленными"), и отрицательным
напряжением, являющимся false (или "off", или "инвертированными"). Нулевое
напряжение не имеет никакого значения (за исключением того, что оно ошибочно).
Допускается отклонение напряжений. Спецификации говорят, что величина
переданного сигнала должна быть между 5 и 15 вольтами, но никогда не должна
превышать 25 V. Любых напряжения меньше 3 V - это неопределенный логический
уровень (но некоторые терминалы принимают более низкое напряжение как
допустимое). Иногда ошибочно говорят, что требуется напряжение 5 вольт (или
даже 3 вольта), но обычно нужно 10-12 вольтов. Если вы используете порт EIA-422
на компьютере Mac как EIA-232 (требует специального кабеля) или EIA-423, то
фактически напряжение будет только 5 V. Обсуждаемый здесь интерфейс работает с
12 V. В Интернете много беспорядка в вопросе о напряжениях, и по крайней мере
одна книга ошибочно утверждает, что положительное напряжение - это 1, не
понимая, что EIA-232 использует инвертированную логику для передачи данных.
Обратите внимание, что нормальные компьютерные логические уровни обычно - 5
вольт (часто даже меньше), так что если вы пробуете использовать испытательное
оборудование, разработанное для тестирования компьютерных логических 5 вольт
(ТТЛ-логика) на 12-вольтовых последовательных портах, то вы можете повредить
испытательное оборудование.
Последовательности напряжений для байта
На выводе передачи (© 2) во время паузы находится -12 V (метка). Чтобы начать
байт, он переводится в +12 V (пробел) для обозначения стартового бита и
остается в +12 V в течении времени передачи бита. Затем приходит бит младшего
разряда байта данных. Если он равен 0, ничнго не изменяется, и линия остается в
+12 V до времени передачи следующего разряда. Затем приходит следующий бит, и
т.д. В конце может быть послан бит контроля четности и затем появляется -12 V
(метка) - это стоповый бит.
Линия остается в -12 V (пауза) до следующего стартового бита. Обратите внимание,
что уровень 0 V отсутствует и таким образом нет простого способа (за исключением
сигналов синхронизации) сообщить, где кончается один разряд и начинается
следующий, если 2 последовательных бита имеют одинаковую полярность (оба нулевые
или оба единички).
2-ой стоповый бит был бы -12 V, также как первый стоповый бит. Так как нет
сигнала, который отмечал бы границы между этими битами, то единственый эффект,
производимый 2-ым стоповым битом - тот, что линия должна оставаться в состоянии
-12 V немного дольше. Приемник не может обнаружить различия между 2-ым стоповым
битом и более длинным временем простоя между байтами. Таким образом связь
работает хорошо, если один конец использует один стоповый бит, а другой конец
использует 2 стоповых бита, но использование, только одного стопового бита
очевидно быстрее. В редких случаях используются 1 1/2 стоповые биты . Это
означает, что строка сохраняется в -12 V для 1 1/2 периодов времени(подобно
стоповому биту, который в полтора раза шире обычного).
Символы обычно кодируются или 7, или 8 битами (данных).
Дополнительный бит контроля четности может (или не может) быть сопровождать байт
символа, что дает в результате длину байта 7, 8 или 9 бит. Некоторые эмуляторы
терминала и старшие терминалы не работают с 9 битами.
Контроль четности может быть установлен по нечетности, четности или не делаться
вообще (контроль четности метки и пробела на некоторых терминалах невозможен).
При проверке на нечетность бит контроля по четности выбирается так, чтобы число
единичек в байте, включая бит контроля четности, было нечетно. Если такой байт
портится, когда один из битов примет другое значение, то в результате проверки
на четность будет определено, что байт испорчен. При обнаружении ошибки, если
этот символ идет на терминал, на экране появится символ ошибки. Проверка на
четность работает подобным способом со всеми допустимыми байтами (включая бит
контроля по четности) создавая четное число единичек в байте. При установке,
число битов на символ обычно означает только число информационных разрядов на
байт (7 для истинного ASCII и 8 для различных наборов символов ISO).
"Метка" - это логическая 1, а "пробел" - это логический 0. При контроля четности
метки бит четности всегда одноразрядный. Для контроля четности пробела он -
всегда нулевой. Контроль четности метки или пробела снижает полосу пропускания и
нужно избегать его, насколько возможно. "Нет контроля по четности" не означает,
что бит контроля четности не добавляется. Для терминалов, которые не работают с
9-битными байтами, должно быть выбрано "нет контроля четности" при использовании
8 разрядных символьных наборов, так как для бита контроля четности не хватает
разрядов.
При последовательной передаче байтов через EIA-232 порты, сначала всегда
посылается бит младшего разряда. Последовательные порты на PC используются для
асинхронной связи, когда имеются стартовый бит и стоповый бит, отмечающие начало
и конец байта. Это называется кадрированием, кадрируемый байт иногда называется
кадром(фреймом). В результате общее количество посланных бит на один байт
составляет 9, 10 или 11 битов, причем 10 бит - наиболее часто применяемое
количество бит. 8-N-1 означает 8 информационных разрядов, нет контроля по
четности, 1 стоповый бит. Это приводит к общему количеству 10 бит, если
посчитать стартовый бит. Один стоповый бит используется почти всегда.
На скоростях 110 бит/сек (и иногда 300 бит/сек) использовались 2 стоповых бита,
но сегодня 2-ой стоповый бит используется только в очень необычных ситуациях
(или по ошибке, так как он по-видимому все еще хорошо работает).
Низкое быстродействие и короткое расстояние
Стандартный последовательный порт EIA-232 имеет низкое быстродействие и строго
ограничен по расстоянию. Часто читают "высокую скорость", но он может работать с
высокой скоростью только на очень коротких расстояниях типа модема,
размещенного прямо рядом с компьютером. Все провода используют общую землю так,
чтобы технология витой пары (необходимой для высоких скоростей) не может
использоваться без дополнительных аппаратных средств. Однако некоторые
компьютеры и терминалы имеют более современные интерфейсы. См. ``Преемники EIA-
232".
Трагедия в том, что стандарт RS-232 1969 года не использовал технологию витой
пары, которая могла бы функционировать в сотни раз быстрее. Витые пары
использовались в телефонных кабелях с 1800-ых. В 1888 (более чем 110 лет назад)
"Кабельная конференция" сообщила о поддержке витой пары (для телефонных систем)
и подчеркнула ее преимущества. Но спустя более, чем 80 лет, RS-232 не сумел
использовать это. Так как RS-232 был первоначально разработан для соединения
терминала с низким модемным быстродействием, размещенным поблизости, то
потребность в высокоскоростной связи и более длинном расстоянии передачи не
была предусмотрена.
Преемники EIA-232
Для повышения скорости и увеличения расстояний был принят ряд стандартов EIA,
использующих (сбалансированную) технологию витой пары. Сбалансированная передача
может иногда быть в сотни раз быстрее, чем несбалансированный EIA-232. Для
данного быстродействия расстояние (максимальная кабельная длина) с применением
витой пары может быть во много раз больше. Но на PC стоит "устаревший" EIA-232,
так как он хорошо работает с модемами, соединенными с медленными телефонными
линиями, и он хорошо работает с мышами.
Одно исключение - компьютер Mac от Apple с EIA-232/EIA-422 GeoPort, который
использует витую пару (сбалансированную) для передачи и приема. Он использует
маленький круглый "мини-DIN" разъем. Он также обеспечивает стандартный EIA-232,
но только на 5 вольтах (что допускается по спецификации EIA-232). Однако,
вследствие того, что Macs стоят больше чем PC, они редко используются как
главный компьютер для терминалов. Некоторые более новые терминалы используют
EIA-423, но он точно такой же, как несбалансированный EIA-232, и может быть
соединен с EIA-232 портом. Этот EIA-423 использует уровни 5 вольт, но по
спецификации обеспечивает скорости выше, чем EIA-232 (который не будет иметь
никакую справку на длинном выполнен, где это - неравновесие, которое вызывает
вмешательство).
EIA-530-A (сбалансированный, но может также использоваться как
несбалансированный) на 2Мбит/сек (сбалансированный) был предназначен для замены
EIA-232, но таких интерфейсов было установлено немного. Он использует тот же
самый разъем с 25 выводами как и EIA-232. Высокоскоростной Последовательный
Интерфейс (HSSI = EIA-612/613) использует разъем с 50 выводами и имеет скорость
до 50 Мбит/сек, но расстояние ограничено только несколькими метрами.
Универсальная Последовательная Шина (USB) встраивается в PCI чипы. Это - 12
Мбит/сек по витой паре с разъмом с 4 выводами (2 провода - питание), но также
ограничен короткими расстояниями.
Драйверы линии
Для текстового терминала, скорости интерфейса EIA-232 вполне достаточно, но
длина используемого кабеля зачастую слишком короткая. Сбалансированная
технология могла бы это исправить. Общий метод получения сбалансированной связи
с текстовым терминалом состоит в том, чтобы установить 2@ драйвера линии на
последовательную линию, чтобы преобразовать несбалансированный в
сбалансированный (и наоборот).
Они являются специальными продуктами и дороги, если приобретены новыми.
Как синхронизируется "асинхронное" соединение
В интерфейсе EIA-232 есть только два состояния передающего (или принимающего)
провода: "метка" (-12 V) или "пробел" (+12 V). Состояния 0 V нет, и таким
образом последовательность логических единиц передается только устойчивым -12 V
без каких-либо маркеров между битами. Чтобы приемник обнаружил отдельные биты,
он должен иметь тактовый сигнал, который синхронизирован с тактовым генератором
передатчика. Такой тактовый генератор генерирует "тик" с передачей (или
получением) каждого бита.
Для асинхронной передачи, синхронизация достигается введением для каждого байта
стартового бита и стопового бита (выполненных аппаратными средствами). Приемник
прослушивает линию, ожидая появления стартового бита, и когда обнаруживает его,
запускает тактовый генератор. Он использует эти тактовые импульсы во время
чтения следующих 7, 8 или 9 битов. (На самом деле этот процесс несколько более
сложен, так как часто принимаются несколько выборок битов, и это требует
дополнительных тактовых импульсов синхронизации.) Затем читается стоповый бит,
тактовый генератор останавливается, и приемник ждет прибытия следующего
стартового бита. Таким образом асинхронный обмен фактически синхронизирован в
течение приема одного байта, но синхронизации между двумя соседними байтами нет.
Как определить - асинхронный обмен или синхронный
Асинхронный (async) означает "не синхронный". Практически, асинхронный обмен -
это когда асинхронный последовательный порт посылает и получает поток байтов,
разграниченных стартовым и стоповым битами. Синхронный (Sync) - большинство
остальных видов обмена. Но это не объясняет основные понятия.
Теоретически, синхронный обмен означает, что байты посланы с постоянной
скоростью один за другим (с промежутками, равными одному такту тактового
генератора).
Асинхронные байты могут быть посланы с различными интервалами времени между
байтами (подобно тому, как поступают символы с клавиатуры).
Имеются пограничные ситуации, которые должны быть классифицированы или как
синхронный, или как асинхронный. Асинхронный последовательный порт часто
выпускает байты устойчивым потоком, который мог бы сойти за синхронный, но так
как они все еще имеют старт/стоповые биты (из-за которых возможно посылать их с
произвольными промежутками), то обмен называется асинхронным. Другой случай -
когда байты данных (без старт/стопных битов) помещены в пакеты с возможным
ошибочным интервалом между соседними пакетами. Это называется синхронным
обменом, так как байты внутри каждого пакета должны быть переданы синхронно.
Синхронная связь
Вы когда-либо задавались вопросом, для чего нужны все неиспользуемые вывода на
разъеме последовательного порта с 25 выводами? Большинство их предназначено для
использования в синхронной связи, которая редко применяетя на PC. Имеются вывода
для сигналов синхронизации также, как и для синхронного обратного канала.
Спецификации EIA-232 предусматривают и sync, и async, но используемые в PC чипы
UART (Универсальный Асинхронный Приемопередатчик) типа 16450, 16550A или 16650
не умеют работать с sync. Для sync требуется чип USART или эквивалентный ему,
где "S" - означает "синхронный". С тех пор как sync занимает рыночную нишу, sync
последовательный порт, вероятно, будет совершенно дорог.
Помимо sync части EIA-232, имеются другие другие синхронные стандарты EIA. Для
EIA-232, 3 вывода разъема зарезервированы для тактовых импульсов (или
синхронизация). Иногда в задачу модема входит генерация сигналов синхронизации,
что делает невозможным использование синхронной связи без синхронного модема
(или без устройства, называемого "синхронный модем eliminator", которое
вырабатывает сигналы синхронизации).
Хотя немногие последовательные порты - sync, синхронная связь часто
осуществляется по телефонным линиям с использованием модемов, которые используют
коррекцию ошибок V.42 . Он удаляет старт/стопные биты и помещает байты данных в
пакеты, что приводит к синхронной передаче по телефонной линии.
Введение
Блочный режим редко используется в Linux. В блочном режиме, когда кто-то
печатает на терминале, результат сохраняется в памяти терминала и не посылается
только главному компьютеру. Такие терминалы часто имеют встроенные возможности
редактирования. Когда пользователь нажимает некоторые клавиши (типа посылающей
клавиши), все, что было сохранено в памяти терминала, посылается главному
компьютеру. Сейчас Linux редакторы vi и emacs, реагируют немедленно на нажатие
некоторых клавиш, но в вышеупомянутой ситуации, при нажатии таких клавиш ничего
не случится, так как ничто не посылается при нажатии клавиши. Таким образом
использование блочного режима терминала не позволит использовать такие
интерактивные программ. Старый интерфейса мейнфрейма IBM использует блочный
режим, так многие терминалы IBM - работают только в блочном режиме и также
синхронные (см. раздел ``Синхронизация и синхронный").
Виды блочных режимов, формы
Блочный режим может сам иметь различные подрежимы типа "страничного" (страница
за раз) и "строчного" (строка за раз). Некоторые терминалы имеют, и блочные
режимы передачи, и стандартные символьные режимы и могут переключаться с одного
режима на другой. Асинхронные терминалы, которые имеют блочные режимы - это
HP2622A, VT130, VT131, VT330, VT340 и Visual500.
Блочные режимы могут включать возможность обработки форм, когда хост посылает
форму терминалу. Затем пользователь заполняет ее и нажимает посылающую клавишу,
которая посылает только данные из формы обратно на хост. Форма непосредственно
(не данные) отображаются на экране в защищенных полях, которые не передаются для
главной ЭВМ.
Эффективность
Блочный режим несильно загружает главный компьютер, особенно, если аппаратные
средства главного компьютера разработаны для блочных режимов (как в было и есть
в IBM). В символьном режиме каждый печатаемый символ посылается в
последовательный порт немедленно и обычно вызывает прерывание на хосту. Хост,
который получает байт, должна остановить свою работу и принять символ из
аппаратного порта. Даже с UART, который имеет мощные аппаратные буферы задержка
по времени может быть такой, что прерывание будет выдаваться для каждого
печатаемого символа.
В истинном блочном режиме длинный блок символов принимается с использованием
только одного прерывания. Если блочный режим используется со стандартными
асинхронными последовательными портами, то более новые модели могут теперь
получать за одно прерывания по 14 байтов, так как они имеют 16-байтовые
аппаратные буфера. Таким образом при ипользовании блочного режима большинство
лишних загрузок и непроизводительных затрат на обработку прерывания удалены, и
компьютер может большее количество времени посвятить решению других задач.
Значительная экономия в блочном режиме происходит, если терминал соединен с
хостом через сеть. Без блочного режима, каждый печатаемый символ (байт)
представлен собственным пакетом, включая все байты заголовков (40 в TCP/IP
пакете). При блочным режиме, большое количество символов представляется в виде
одиночного пакета.
(Обратите внимание: В первой книге описано гораздо больше, чем только EIA-232.)
- Black, Uyless D.: Протоколы и интерфейсы физического уровня, IEEE Computer
Society Press, Los Alamitos, CA, 1996.
- Campbell, Joe: Решение RS-232, 2nd ed., Sybex, 1982.
- Putnam, Байрон В.: RS-232 упрощенно, Prentice Зал, 1987.
- Seyer, Мартин Д.: Легкость использования RS-232, 2-ым редакция, Prentice,
1991
Вперед
Назад
Содержание