Главная > Схемотехника > Искусство схемотехники, Т.2
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

10.19. Последовательная связь и коды ASCII

Как уже упоминалось, передача алфавитно-цифровой информации между компьютером и устройствами с умеренным быстродействием чаще всего выполняется с помощью 7-бит кода ASCII (American Standard Code for Information Interchange - американский стандартный код для обмена информацией), при бит-последовательной передаче по единственной линии.

Таблица 10.3. Коды ASCII

В табл. 10.3 представлен список -бит кодов. Устройства, обменивающиеся данными с помощью последовательной -передачи, почти всегда посылают 8 бит, но этот бит не является частью кода ASCII; часто он представляет бит аппаратного контроля четности (иногда четности, иногда нечетности, хотя чаще всего он устанавливается в 0 и игнорируется), но иногда этот бит используется как «мета-клавиша» регистра для образования дополнительных 128 символов, которые могут быть греческими буквами, альтернативным шрифтом и т.д. Для этих дополнительных символов не существует стандарта.

Восьмой бит используется и в тех случаях, когда по последовательной связи передаются двоичные данные; это, однако, не всегда возможно, так как для аппаратуры последовательной связи столь привычно отбрасывать этот бит при передаче кодов ASCII, что она может не допустить его использования в качестве элемента данных.)

Несколько замечаний по поводу таблицы кодов ASCII. Буквы верхнего регистра (прописные) начинаются с кода установка в 1 бита 5 генерирует соответствующие буквы нижнего регистра (строчные). Код ASCII цифры равен самой цифре плюс ЗОН. Первые 32 символа ASCII являются «неотображаемыми», управляющими символами. Некоторые из них достаточно важны, чтобы удостоиться собственных клавиш на клавиатуре, например CR (клавиша «возврата каретки», которая может называться return - возврат, поскольку у клавиатур отсутствует каретка), BS (-возврат на шаг), НТ (-табуляция) и ESC (-выход). Любые управляющие символы, включая и перечисленные выше, можно ввести, нажав (и не отпуская) клавишу CTRL и введя соответствующую букву на верхнем регистре; например, CR эквивалентно CTRL-M (попробуйте это на своем компьютере). Управляющие символы используются для управления печатью или выполнением программ; они могут также восприниматься в качестве управляющих программ, которые предназначены для обработки алфавитно-цифровых символов, например, программами редакторов. Помимо отмеченных выше, к важным символам можно отнести: NUL (ноль), символ, состоящий из одних двоичных нулей, и используемый иногда для разделения символьных строк; FF (Form -перевод страницы), которым начинается новая страница; -конец текста, нежно называемый «control , который воспринимается многими операционными системами, как команда завершения текущей программы; (control S), используемый в качестве «мягкого рукопожатия» для приостановки последовательной передачи; (control Q), символ, возобновляющий передачу.

К сожалению, в таблице кодов ASCII отсутствуют индексы, показатели степени, а также греческие буквы и научные знаки. Было бы полезно иметь по меньшей мере знаки и символ градусов , которые часто встречаются в технических текстах. Разумеется, с помощью управляющих символов (или их последовательности) можно указать на необходимость смены шрифта или алфавита. Так обычно и делают в текстовых процессорах, где после ввода управляющего символа программа форматирования воспринимает последующие символы ASCII по-иному. Возможно, такой подход является наилучшим решением проблемы, так как при работе с техническими текстами вряд ли вам надолго хватит одного фиксированного набора -символов, даже очень большого.

Заметьте, что компьютерные клавиатуры часто конструируются так, что они не являются просто генераторами кодов ASCII (одна клавиша - один код); общепринятой методикой является генерация каждой клавишей некоторых определенных кодов при нажатии и отпускании. Специальное системное программное обеспечение («драйвер клавиатуры», см. разд. 10.18) транслирует затем эти коды в обычные коды ASCII. Такой подход существенно повышает гибкость процедуры ввода с клавиатуры, так как возникает возможность настройки драйвера клавиатуры с целью отработки автоповтора клавиш или многоклавишных комбинаций, переотображения всей клавиатуры (например, в клавиатуру Дворака) и организации «горячих клавиш» и т.д.

Бит-последовательная передача.

Код ASCII (или любой другой алфавитно-цифровой код) может быть передан либо группой из 8 параллельных бит (по 8 отдельным проводам), либо последовательностью из 8 бит, один за другим. Для организации передачи со скоростями от низкой до средней более удобной является экономичная в смысле используемых проводов последовательная связь.

Рис. 10.16. Формат кадра при последовательной передаче данных (интерфейс ).

Модем (подробнее о модемах см. ниже) преобразует последовательность бит в звуковой сигнал и наоборот (например, используя одну звуковую частоту для «1» и другую для ), который затем может быть послан в телефонную линию; здесь так же, естественно, используется последовательная передача. При этом используется стандартный протокол и стандартные скорости передачи. При асинхронной передаче к концам каждого -бит символа присоединяются старт-бит и стоп-бит (иногда два), образуя группу («кадр») из 10 бит. Передатчик и приемник используют фиксированную скорость из допустимого набора; наиболее популярны скорости передачи 300, 1200, 2400, 4800, 9600 и 19200 бод тактов в секунду). На рис. 10.16 приведен формат кадра последовательной передачи.

Когда передача данных отсутствует, передатчик находится в состоянии «маркера» (терминология осталась еще от времен телетайпов). Каждый символ начинается со старт-бита, за которым следуют 8 бит кода ASCII, младшим битом вперед (обычно в эти 8 бит входят 7 бит данных плюс 1 необязательный бит контроля четности) и, наконец, стоп-бит; последний должен поддерживаться по меньшей мере один такт, но может длиться сколько угодно. На приемной стороне УАПП (универсальный асинхронный приемо-передатчик, см. разд. 11.11), работая с той же частотой, синхронизируется к каждой -бит группе и преобразует входную последовательность в -бит параллельные группы данных. Поскольку приемник заново синхронизируется к старт- и стоп-битам каждого символа, ему не требуется очень высокая точность тактовых сигналов; равенство и стабильность частот передатчика и приемника должны обеспечивать рассогласование не более доли длительности одного бита на длине кадра, т. е. не более нескольких процентов. Приемный УАПП запускается фронтом старт-бита, выжидает половину длительности бита чтобы удостовериться, что старт-бит еще присутствует, а затем фиксирует значение данных в середине каждого бита. Стоп-бит завершает каждый символ и одновременно выполняет роль промежутка между кадрами, если следующий символ не посылается немедленно за предыдущим. Приемный УАПП проверяет наличие уровня стоп-бита через 10,5 длительностей бит после фронта старт-бита, что помогает удостоверить правильность посылки символа. «Разрыв» (break) представляет собой длительный пробел, который не может возникнуть в ходе нормальной передачи символов. На рынке имеются программируемые тактовые генераторы (т. е. программируемые делители частоты), которые преобразуют входную частоту от генератора в стандартный набор тактовых частот, определяющих скорость передачи, причем конкретный коэффициент деления определяется входным двоичным кодом. Большинство современных УАПП (например, двухканальная синхронно-асинхронная микросхема 8530 фирмы Zilog) включает внутренние программно-управляемые генераторы скорости передачи.

RS-232.

Сами сигналы при последовательной передаче -кодов могут посылаться различными способами. Самый первый из них, предложенный еще несколько десятков лет назад, состоит в переключении, с выбранной скоростью передачи, тока величиной 20 (или иногда . Это так называемая «токовая петля». Иногда этот способ реализуется, как альтернативный вариант, но для умеренных скоростей передачи он был вытеснен стандартом ассоциации электронной промышленности г. (и последующим стандартом г.), в которых передача осуществляется биполярным напряжением.

Стандарт RS-232 определяет характеристики и драйверов, и приемников. Драйвер должен создавать уровни напряжения от до (логический вход низкого уровня) и от — 5 до —15 В (логический вход высокого уровня) на нагрузке от 3 до 7 кОм с крутизной перепада менее и способностью противостоять замыканию на любой другой выход даже со столь неблагоприятными характеристиками, как 5 В при приемник должен представлять нагрузочное сопротивление от 3 до 7 кОм, преобразующее входное напряжение от до в низкий логический уровень, а входное напряжение от —3 до — 25 В в высокий логический уровень. Заметьте, что логическая 1 преобразуется драйвером в отрицательный уровень, называемый «маркером»; логический 0 представляет собой положительный уровень («пробел»). При передаче с помощью токовой петли ток течет в течение логической 1 (маркер) и прекращается на время действия логического 0 (пробел).

Для приемников характерно наличие гистерезиса входного напряжения; некоторые приемники позволяют подключать конденсатор с целью увеличения постоянной времени и уменьшения чувствительности к шумовым импульсам. Стандартные микросхемы приемника и драйвера описаны в разд. 9.14 и 14.17. При расстояниях интерфейс обеспечивает высокое качество передачи на скоростях вплоть до 38400 бод даже при использовании неэкранированного многожильного кабеля; связь на короткие расстояния иногда осуществляют со скоростью 115200 бод.

Стандарт определяет также тип разъема и назначение его контактов. К сожалению, это описание не полно! Это вечный источник неприятностей, потому что, вообще говоря, два устройства с интерфейсами , соединенные друг с другом, работать не будут. Это настолько неожиданно и неприятно, что читатели предыдущего издания этой книги даже обвинили нас, потому что мы не написали в книге, как бороться с этой несовместимостью. К счастью для вас, вы читаете второе издание. Разгадка состоит в следующем.

В этой истории с последовательным интерфейсом имеется два источника неприятностей: (а) Определены два типа устройств, причем входные контакты устройств одного типа соответствуют выходным контактам другого; вам может понадобиться связать между собой два устройства одного типа или два взаимно дополняющих устройства; (б) Имеется пять сигналов квитирования; одни устройства генерируют эти сигналы и ожидают их приема, другие же игнорируют соответствующие входы (и ничего не подают на выходы). Чтобы все у вас работало, в этих деталях придется разобраться. Приступим.

Интерфейс был разработан для связи DTE (Data Terminal - оконечное оборудование данных, ООД) с DCE (Data Communication - аппаратура передачи данных, АПД). Терминал всегда выглядит, как DTE, а модем всегда выглядит, как DCE; однако другие устройства, включая микрокомпьютеры, могут быть и тем, и другим. Компьютер IBM PC выглядит как DTE и укомплектован вилочной частью разъема, но большинство больших компьютеров имеют выход типа DCE. Подключая DTE к DCE, вы просто соединяете одноименные контакты разъемов (которые могут быть как вилочными, так и ), и, если вам повезет, все будет работать. Мы говорим «если повезет», потому что результат все еще зависит от того, какие квитирующие сигналы одно устройство ожидает от второго, и устанавливает само. (Само собой разумеется, что решив проблему с кабелем, вы еще должны выбрать скорость передачтт, четность и некоторые другие программные параметры!) С другой стороны, связывая два одинаковых устройства, вы не можете соединить одноименные контакты, потому что тем самым вы соедините вместе два выхода: DTE передает через контакт 2 и принимает через контакт 3, a DCE делает как раз наоборот.

Таблица 10.4. Сигналы

Поэтому такую пару устройств следует соединять кабелем (так называемым ), в котором контакты 2 и 3 соединяются друг с другом крест-накрест. К сожалению, это еще не все

В табл. 10.4 показаны все основные линии. TD и - это линии передачи и приема данных; RTS и CTS - запроса передачи и готовности передачи; DTR, DSR и DCD - «оконечное оборудование данных готово», «аппаратура передачи данных готова» и «детектор принимаемого линейного сигнала». В разъеме имеются две земли: защитное заземление (или корпус, контакт 1) и сигнальное заземление (контакт 7); в большинстве машин их просто соединяют вместе. Пять сигналов, не относящихся к данным, являются управляющими сигналами квитирования. Устройство DTE устанавливает RTS и DTR, когда оно готово к передаче, а устройство DCE устанавливает CTS и DSR, когда оно готово к приему. Некоторые устройства DTE требуют, чтобы до выполнения ими любых действий был установлен их вход DCD. На всех сигнальных линиях действуют биполярные уровни , причем установленные данные (TD, RD) имеют отрицательную полярность, а установленные управляющие сигналы (RTS, CTS, DSR, DTR, -положительную.

Заметьте, что названия сигналов имеют смысл только если их рассматривать со стороны DTE. Например, контакт 2 называется TD (Transmitted Data - передаваемые данные) на обеих сторонах, несмотря на то, что DTE устанавливает данные, a DCE принимает их. Поэтому название контакта не говорит вам однозначно, вход это или выход-вам еще надо знать, рассматривает ли себя устройство, как DTE или DCE (вы можете обойти это затруднение с помощью вольтметра!).

Если бы все устройства устанавливали все сигналы, требующие установки, и анализировали состояние всех сигналов, требующих анализа, то всегда можно было бы просто соединить соответствующие контакты (для пары DTE-DCE) или соединить соответствующие контакты крест-накрест (для пар DCE-DCE или DTE-DTE). Если, однако, вы к устройству, игнорирующему все линии квитирования, подключите устройство, реализующее полный протокол квитирования, ничего хорошего из этого не получится. Разрабатывая стратегию своих действий, вы должны опираться на реальность; иногда для этого требуется некоторая хитрость.

Рис. 10.17. Кабели , обеспечивающие правильные соединения. Указанные номера контактов соответствуют -контактным разъемам разводка альтернативного -контактного разъема приведена на схеме д.

На рис. 10.17 показаны схемы кабелей, обеспечивающих правильные соединения для всех (ну, скажем, почти всех) ситуаций. На схеме а показаны соединения для пары устройств DTE-DCE, когда оба устройства используют полный протокол квитирования. Одна пара квитирующих сигналов представлена линиями RTS/CTS, другая - линиями DTR/DSR. На схеме в показан кабель «нуль-модема» с перекрещенными входами и выходами для пары DTE-DTE. Тот же кабель годится и для пары DCE-DCE, только надо изменить направление стрелок на рисунке и опустить соединение контакта 8. Если, однако, одно устройство реализует протокол квитирования, а другое - нет, кабели а и в не годятся. В этом случае самое простое - распаять кабель таким образом, чтобы устройство само отвечало на свои же сигналы квитирования и разрешало самому себе переход к следующим операциям.

Такое соединение показано на схеме б для пары DTE-DCE и на схеме г для пары DTE-DTE (или пары DCE-DCE, но тогда следует опустить соединение контакта 8).

Как сделаться гением RS-232. Если вы распаяете эти четыре кабеля с розеткой и вилкой на каждом конце, вы сможете заставить что угодно работать с чем угодно (почти). Ваши коллеги признают в вас гения. Правда, только в том случае, если им в руки не попадется действительно профессиональная штучка - «индикаторная коробка для . Она оснащена световыми индикаторами на ЭЛД для каждой линии интерфейса, что позволяет наблюдать, какое устройство какие сигналы устанавливает, и имеет набор перемычек для соединения контактов разъемов в любом порядке. Использовать индикаторную коробку надо следующим образом. Прежде всего, наблюдая световые индикаторы, соедините правильно TD и RD, затем по состоянию индикаторов определите, какое устройство посылает сигналы квитирования. Если устройство устанавливает RTS, оно, скорее всего, ожидает ответной установки CTS. Если это делают оба устройства, соедините их друг с другом; в противном случае замкните RTS на CTS того же устройства. То же самое проделайте с сигналами DTR и DSR. Если в устройстве используется только одна пара квитирующих сигналов, то это, скорее всего, DTR/DSR. Вообще пара DTR/DSR используется для оповещения о том, что устройство на противоположной стороне подсоединено и включено, в то время как пара RTS/CTS запускает и останавливает передачу.

Если скупость не позволяет вам приобрести индикаторную коробку, можете проанализировать состояние линий с помощью вольтметра: любая линия, находящаяся под большим отрицательным или положительным напряжением, несет установленный сигнал; если напряжение на линии около нуля, сигнал сброшен.

Программное квитирование. Некоторые устройства используют аппаратные сигналы квитирования RTS/CTS для индикации начала и конца передачи данных, в то время как более медленные устройства (например принтер) просто держат их установленными. Другие осуществляют программное квитирование: CTRL-S (для остановки) и CTRL-Q (для возобновления). Если вам повезет, у вас будет возможность выбора. Программный метод позволяет упростить кабель, и если устройства полностью игнорируют сигналы аппаратного квитирования, в кабеле будут лишь провода, подключенные к контактам 1, 2, 3 и 7 (вам только надо выяснить, соединять ли контакты 2 и 3 прямо или крест-накрест). Однако, даже если устройство использует CTRL-S и CTRL-Q для управления передачей, оно может требовать подключения линий аппаратного квитирования для установления связи. В этом случае вам понадобится одна из схем соединений, приведенных на рис. 10.17, б и г. Не забудьте только включить питание на обеих сторонах линий связи, так как ни одно из соединенных устройств не имеет никакой возможности определить, включено ли другое и вообще существует ли оно!

Другие стандарты на последовательную передачу

Стандарт был введен в 1969 г., когда последовательная передача данных осуществлялась медленно. Интерфейс обеспечивает дальность связи до со скоростью до 19200 бод. Однако скорости компьютеров и периферийных устройств удваивались каждые год-два, и потребовались лучшие стандарты на последовательную передачу.

Как уже отмечалось в разд. представляет собой улучшенный протокол для биполярных несимметричных цепей, обеспечивающий скорость передачи до 100 кбод и дальность до (но не одновременно); он принципиально совместим с представляет собой протокол для однополярных симметричных цепей с граничными возможностями 10 Мбод и (см. рис. 9.37, где приведена зависимость скорость-дальность). подобен , но содержит дополнительные спецификации для подключения к одной линии многих драйверов и приемников. В табл. 10.5 собраны характеристики этих четырех стандартов.

Таблица 10.5. Стандарты последовательной связи

Модемы.

Как уже отмечалось ранее, модем («модулятор/демодулятор») используется для преобразования бит-последовательных цифровых величин в аналоговые сигналы, которые можно пересылать по телефонным линиям или другим каналам передачи данных (рис. 10.18). Внутренний модем вставляется в разъем (слот) вашего компьютера (либо поступает к вам уже встроенным в компьютер), в то время как внешний модем представляет собой автономный прибор, питающийся от сети переменного тока и имеющий соединитель в стандарте для подключения к последовательному порту компьютера. Любой модем имеет выход на телефонную линию одним из двух способов: (а) с помощью прямого соединения через телефонную розетку или (б) акустически, когда телефонная трубка кладется в обрезиненное гнездо, содержащее микрофон и динамик. Модемы с акустическим подключением в настоящее время вышли из моды, хотя они могут пригодиться, например, в гостинице, где иначе вам пришлось бы лазить под кроватями в поисках телефонной розетки (возможно и несуществующей!).

Рис. 10.18. Связь через модем.

В большинстве случаев требуется пересылать данные по одному телефонному каналу в обоих направлениях одновременно («полнодуплексная ); передача и прием совместно используют телефонную полосу частот, которая занимает область приблизительно .

Широко используются три полнодуплексных формата: 300 бод FSK (Bell 103) 1200 бод дибитный PSK (Bell ) и 2400 бод дибитный PSK (FSK обозначает Frequen-cy-shift Keying - частотная манипуляция, a PSK-Phase-Shift Keying - фазовая манипуляция; о дибитах см. ниже). Модем, предназначенный для передачи со скоростью, скажем, 1200 бод, обычно поддерживает и связь со скоростью 300 бод и т.д. Хотя для использования модема нет необходимости вникать в тонкости кодирования им данных, однако методы кодирования интересны сами по себе, и мы не можем удержаться, чтобы кратко не описать их.

Стандарт на 300 бод (Bell 103) использует частотную манипуляцию (FSK), при которой выбранная пара звуковых тонов обозначает маркер и пробел: 1270 Гц (маркер) и 1070 Гц (пробел) в одном направлении, 2225 Гц и 2025 Гц в другом. Модем Bell 103 очень прост и состоит из переключаемого генератора для передачи и пары звуковых фильтров для приема (рис. 10.19, я). Обратите внимание на использование гибридной цепи (рис. ) для разделения передаваемого и принимаемого сигналов. Если принять, что импеданс телефонной линии близок к его номинальному значению 600 Ом, передаваемый сигнал модема совершенно не проходит на выход принимаемого сигнала . На практике гибридные цепи работают не так уж хорошо, потому что импеданс телефонной линии может заметно отклоняться от номинального значения (см. разд. 14.5). Поэтому желательно иметь узкополосный приемный фильтр, а это приводит к усложнению модема.

Упражнение 10.5. Разберитесь, как работает гибридная цепь на рис. 10.19. После этого вы сможете поражать коллег своей эрудицией.

Стандарт на 1200 бод (Bell ) работает иначе. Поток цифровых данных груп пируется в пары бит каждый из четырех возможных дибит передается в виде заданного сдвига фазы несущей постоянной частоты и 11: —90°), с плавным переходом фазы от одного дибита к следующему. Таким образом, скорость передачи дибит составляет 600 Гц. Частота (фазово-модулированной) несущей равна 1200 Гц в одном направлении и 2400 Гц в другом. Приемный модем расшифровывает данные, определяя разность фаз между соседними дибитами. Эта остроумная идея имеет один недостаток, именно, приемник теряет значение относительной фазы, если поступает длинная последовательность одинаковых дибит. Для того чтобы предотвратить длинные посылки данных с неизменной фазой, передаваемый поток данных рандомизуется (скремблируется) путем выполнения над данными операции исключающего ИЛИ с псевдослучайной последовательностью (генерируемой с помощью -разрядного сдвигового регистра с петлей обратной связи из разряда по исключающему ИЛИ, см. разд. 9.32). На приемном конце выполняется аналогичный процесс дескремблирования.

Полно-дуплексные модемы со скоростью передачи 2400 бод также передают дибиты с фазовым кодированием, хотя и с другим набором фаз. В этих сложных устройствах обычно используются адаптивные корректоры частотных и временных ошибок на телефонной линии, а также глубоко оптимизированные фильтры для передаваемых и принимаемых сигналов. В результате частота ошибок уменьшается в незначительной степени по сравнению с ранними -модемами на 300 бод.

Нет никакой необходимости разрабатывать модемы заново, так как фирмы AMI/Gould, Exar, National, Rockwell, Silicon Systems и TI выпускают микросхемы и модули модемов. Еще проще купить готовый модем, либо в виде вставной платы, либо в виде отдельного прибора с соединителем в стандарте для подключения к компьютеру. Модемы, в зависимости от характеристик, стоят 100-300 долл. Стоит поискать -совместимый» модем, воспринимающий стандартизованный набор команд для передачи номера абонента и эти модемы стали стандартом де-факто для всего связного программного обеспечения.

Рис. 10.19. Модем с частотной манипуляцией (а) и гибридная цепь (5).

(см. оригинал)

Полезный совет: передавая через модем файлы данных между компьютерами, используйте модемный протокол с проверкой блоков, например, Kermit или XMODEM. Такой протокол посылает данные блоками фиксированной длины, сопровождая каждый блок контрольной суммой. Приемный модем сравнивает контрольные суммы, автоматически запрашивая повторную передачу дефектных блоков. Принятые таким образом файлы гарантированно не имеют ошибок; напротив, файлы, посланные просто в виде набора кодов ASCII, почти наверняка будут содержать ошибки!

<< Предыдущий параграф Следующий параграф >>
Оглавление