История модемов
Введение
Первый модем появился в 1958 году. Американская телефонная компания AT&T ввела дейтафонное обслуживание (передача информации по телефонному каналу). Первым модемом был Bell Dataphone 103, скорость передачи которого составляла 300 бит/с. Но даже сегодня большинство модемов имеет режим работы, совместимый с Bell 103. Bell 212a предложил уже 1200 бит/с, правда, был более чувствителен к шумам в телефонной линии. Менее шумочувствительный модем разработала компания Racal-Vadic. К сожалению, эти две модели модемов несовместимы. Так начиналось длительное соперничество за права и стандарты в мире модемов.
В последнее время модемы становятся неотъемлемой частью компьютера, который превратился в интеллектуальное многофункциональное устройство, предоставляющее пользователю возможность общаться с огромным миром информации со всего света. Благодаря установке модема на компьютер, последний фактически превращается в звено глобальной сети.
Модем позволяет, не выходя из дома, помимо широчайшего спектра информации и услуг, получаемых через Internet, разместить сообщение на BBS (электронной доске объявлений), скопировать с той же BBS интересующие файлы. Кроме того, воспользовавшись глобальными сетями (RelCom, FidoNet), можно принимать и посылать электронные письма не только внутри города, но фактически в любой конец земного шара. Глобальные сети дают возможность не только обмениваться почтой, но и участвовать во всевозможных конференциях, получать новости практически по любой интересующей тематике.
Классификация модемов
Модемы могут быть классифицированы:
· по типу используемого канала:
- модемы для коммутируемых каналов — наиболее распространенные — используются на коммутируемых телефонных линиях;
- модемы для арендованных каналов — используются на выделенных линиях;
- комбинированные — сочетающие в себе свойства двух предыдущих.
· по скорости передачи информации:
- низкоскоростные модемы (до 1200 бит/с) — "первая волна" модемов;
- среднескоростные (от 1200 до 14400 бит/с) — как правило, модемы, произведенные до 1991 года;
- высокоскоростные (>14400 бит/с) — большая часть современных модемов (за исключением специализированных, которым не требуются высокие скорости передачи данных и которыми можно пренебречь в пользу качества этой передачи).
· по области применения:
- для передачи данных;
- факсимильные модемы (как правило, интегрированные в факс-аппараты или отдельные устройства, обеспечивающие прием и передачу факсимильных сообщений со скоростью до 14400 бит/с);
- комбинированные модемы (большинство модемов, использующихся в быту).
· по исполнению:
- внутренние;
- внешние.
· по реализации дополнительных функций:
- интеллектуальные модемы, как правило, современные типы модемов с возможностями управления их работой и установкой конфигурации (т. е. скорости передачи, режима работы, типа синхронизации, протокола защиты от ошибок и др.). Модемы часто имеют возможность установки типовых конфигураций и управления набором одного из хранимых в памяти телефонных номеров с помощью органов управления на лицевой панели модема;
- голосовые модемы получили такое название за способность оперировать соответствующими сигналами, так как позволяют одновременно передавать данные и голос. В основном, в пользовательских моделях применяется метод аналоговой передачи потоков голоса и данных, разнесенных по частотам, получивший название ASVD (Analogue Simultaneous Voice/Data). Этот подход поддержали ведущие производители модемных чипсетов Rockwel Semiconductor Systems (ныне Conexant) и AT&T Paradyne (теперь независимая компания Paradyne). Другой подход — DSVD (Digital Simultaneous Voice/Data) — подразумевает оцифровку голоса и включение полученных отсчетов в общий поток данных. В отличие от предыдущего метода, где скорость передачи данных ограничена 14400 Kbps, этот позволяет ее повысить до 28800 Kbps. Правда, качество голоса, передаваемого таким образом, гораздо хуже. Спецификация DSVD была разработана совместно Intel, Rockwell и U.S. Robotics. Такие модемы позволяют во время передачи данных между моделями такого типа подключать к ним телефонную гарнитуру и вести разговор. Преимущество этого режима заключается в том, что разговор будет абсолютно конфиденциальным: вы получите закрытый, защищенный от прослушивания канал, что само по себе немаловажно. Еще одним полезным свойством модема является возможность его применения в составе электронного офиса. Автоответчик, голосовая почта, выдача документов по требованию, факсимильный аппарат — и все это с использованием модема и персонального компьютера. Хотя, может быть, и не очень эффективно, с точки зрения экономии электроэнергии, держать персональный компьютер включенным круглосуточно. В таком случае лучше выбрать внешний модем с достаточным объемом оперативной памяти, чтобы в ней временно хранились принятые факсимильные и голосовые сообщения. Конечно, такие модели дороже, но их совокупную стоимость можно оценить, учитывая экономию в плате за свет при отключении персонального компьютера в нерабочее время. "Просто" голосовые, а также модели с одновременной передачей голоса и данных имеют в своих технических характеристиках соответствующие параметры: Voice и ASVD или DSVD.
· по средствам управления:
- аппаратные;
- программные.
В виду важности последних двух классов, рассмотрю их подробнее.
Аппаратные модемы: внутренние и внешние
Внешние модемы — отдельное устройство, питающееся от сети и имеющее разъемы для подключения телефонной линии и телефонного аппарата, соединяющееся шнуром с последовательным портом (интерфейсом) компьютера. На передней панели модема выведены светодиодные индикаторы, отображающие его состояние.
Внутренние модемы выполнены в виде отдельной платы, вставляемой в слот на материнской плате компьютера. Подключение питания и соединение с компьютером внутренних модемов происходит непосредственно через шину. Это, с одной стороны, позволяет сэкономить на соединительных проводах, а с другой — ведет к замедлению работы компьютера, так как внутренний модем создает дополнительную нагрузку на центральный процессор. Одним из недостатков внутренних модемов является и сложность настройки конфигурации интерфейсов COM3 и COM4.
В последнее время наметилась тенденция к переводу внутренних модемов с шины ISA на PCI. При этом осталась актуальной одна из основных проблем инсталляции этого вида модемов: правильно сконфигурировать базовый адрес и используемое устройством прерывание. Помимо этого при установке изначально необходимо иметь свободный порт на материнской плате компьютера.
Внутренний модем не позволяет осуществлять контроль его состояния, что удобно реализовано посредством ряда светодиодных индикаторов на лицевой панели внешнего модема, а эмуляционные программы потребляют часть и без того обильно используемых внутренним модемом ресурсов центрального процессора (около 10%), что не происходит при работе модема внешнего. Причем для корректной работы внутренних модемов предъявляются довольно жесткие требования к ресурсам компьютера. На начало 2000 года — это процессор с тактовой частотой 166 МГц и ОЗУ как минимум 32Мб. При "зависании" внутреннего модема его нельзя перезагрузить отдельно — приходится прибегать к перезагрузке всего компьютера.
С другой стороны, внешние модемы довольно громоздки, соединительные провода так же не придают им привлекательности. Внутренние же обходятся без дополнительного источника питания и вставляются в соответствующий порт компьютера, не занимая место на рабочем столе. Помимо этого, они, как правило, на $10 – 15 дешевле внешних аналогов.
Программные модемы
Программные модемы выполнены по той же схеме, что и аппаратные. Основное отличие программного модема от аппаратного заключается в том, что часть его функций реализуется за счет центрального процессора компьютера и программного обеспечения. Зачастую от модема остается лишь кодек (сокращение от кодер-декодер), а все остальные функции выполняет драйвер, использующий ресурсы персонального компьютера. Некоторые производители реализуют программно лишь контроллер, оставляя на плате DSP (Digital Signal Processor). Такие модемы потребляют несколько меньше процессорного времени и, как показала практика, обладают лучшими характеристиками. Таким образом, подобное перераспределение аппаратных функций сильно удешевляет производство и, как следствие, конечную стоимость продукта. По существу, все усилия разработчиков сводятся к написанию кода "прошивки" (программы работы модема). Аппаратная реализация кодека требует минимальных затрат.
Недостатки программных модемов:
· Использование ресурсов центрального процессора. Любой аппаратный модем содержит в себе процессор, выполняющий все вычислительные операции. Производительность такого процессора достаточно низкая из-за того, что круг задач подобного процессора невелик. Именно узкая специализация позволяет достичь нужного результата при малой производительности. Если сравнивать с процессорами сегодняшнего дня, то Intel 286 для этих целей хватит с избытком. Использование центрального процессора системы потребует более высоких затрат. Так, при использовании Pentium II 400 МГц требуется порядка 10% его вычислительной мощности. На младших процессорах, таких как Pentium 200 МГц, эта цифра достигает 40%. Для модемов с аппаратно реализованным DSP эти цифры немного меньше. Отсюда видно, что использование программных модемов на младших моделях процессоров Pentium приведет к значительному сокращению вычислительных мощностей. Кроме всего прочего, в системе Microsoft Windows высокий приоритет работы драйвера модема приводит к тому, что пресловутые 10% можно считать недоступными для различного рода приложений. При этом зачастую становится невозможным использование приложений, работающих в режиме реального времени и наиболее критичных к вычислительным ресурсам.
· Зависимость модема от операционной системы (ОС) проявляется в наличии или отсутствии драйверов. Здесь основную роль играет распространенность той или иной ОС и популярность самого модема. Поскольку продукт предназначен для конечного пользователя (корпоративный доступ строится на совсем других технологиях), то разработчикам выгоднее всего писать драйверы именно под конечного потребителя. На Украине, в России и ряде других стран на сегодняшний момент большинство пользователей работают под ОС Microsoft Windows. Пользователям других операционных систем перед покупкой такого модема имеет смысл навести справки у производителя. На сегодняшний день большинство таких модемов имеют драйверы под одну – две операционные системы, пользующиеся наибольшим спросом. Хотя в любой момент ситуация может кардинально измениться.
· Полное отсутствие аппаратных средств (кодек можно в расчет не брать) открывает практически неисчерпаемые возможности для создания высококлассных модемов. Если для создания аппаратной части достаточно разового вложения средств, то для создания микропрограммы необходимо нанимать команду разработчиков, а затем постоянно вкладывать деньги в разработку более совершенных алгоритмов, в исправление уже существующих ошибок, в поиск know-how. Все это в итоге приводит к удорожанию конечного продукта и уменьшению рынка сбыта. Именно поэтому многофункциональные модемы обходятся значительно дороже. В их стоимость входит дальнейшая разработка новых и поддержка уже существующих микропрограмм. Про адаптацию к нашим линиям в подобном случае говорить уже не приходится.
Достоинства программных модемов:
· Компактность. Для реализации софт-модема требуется лишь кодек и плата с двумя телефонными разъемами типа RJ-11. Открываются широкие возможности для интеграции софт-модемов в материнские платы, что мы сегодня и наблюдаем. Практически любая современная материнская плата имеет интегрированный кодек. Однако целесообразность подобного решения вовсе не очевидна. Во-первых, цена материнской платы возрастает на 10 – 20 долларов, что заставит призадуматься потенциальных покупателей, а также пользователей, имеющих аппаратные модемы. Во-вторых, не всегда есть возможность запретить системе использовать подобный модем (такие случаи пока еще встречаются), или она некорректно реализована. И наконец, не совсем понятно, чем модем лучше остальных периферийных устройств. Например, многим гораздо больше хотелось бы иметь интегрированный контроллер сканера или FM-тюнер.
· Быстрая реализация новых функций и протоколов.
· Отсутствие привязки к шине ISA.
· Низкая стоимость. Для наращивания возможностей и реализации новых протоколов достаточно изменить соответствующим образом микропрограмму. При этом начисто отсутствуют затраты по разработке аппаратной части и привязке программного комплекса к элементной базе. Так же просто решается вопрос с адаптацией микропрограммы к реальным условиям для каждого конкретного случая. На сегодня система команд процессоров Intel изучена достаточно хорошо, так что изменить код драйвера не составляет особого труда. Для отечественных линий, качество которых оставляет желать лучшего, такая адаптация необходима.
Особенности программных модемов
Появление спецификации PC 99, в которой шина ISA отсутствует как факт, заставляет производителей аппаратных модемов задуматься о целесообразности выпуска внутренних моделей с шиной ISA. С этой точки зрения интегрированные (встроенные в материнскую плату) софт-модемы, могут послужить промежуточным решением для пользователей, чей бюджет не позволяет купить новый аппаратный модем взамен старого. В системе Microsoft Windows 2000 поддержка шины ISA не предусмотрена, поэтому даже наличие материнской платы с этой шиной в данной ситуации уже не спасет.
Софт-модем представляет собой стандартное PCI-устройство. Microsoft Windows при установке такого модема распознает его как стандартное устройство и запрашивает драйверы, после чего все Windows-приложения могут обращаться к нему как к обычному модему. Несколько по-другому работают с модемом DOS-приложения. С их точки зрения модем представляет собой обычный СОМ-порт. Таким образом, драйвер модема должен уметь эмулировать полноценный СОМ-порт для работы подобных программ. К сожалению, большинство производителей вообще не предусматривают такой возможности. В результате некоторые программы и старые игры такой модем использовать не смогут. Это стоит учесть в том случае, если подобные программы разрабатывались на заказ и по каким-либо причинам разработчики их больше не поддерживают. Это могут быть, например, программы бухгалтерии и складского учета, рассчитанные на удаленных друг от друга пользователей, или программы автоматизации предприятия.
Основные компоненты модема
Современный модем — сложное устройство, состоящее из нескольких основных блоков и компонентов, обеспечивающих его функционирование
Компоненты модема:
• Контроллер — реализует протоколы сжатия данных и коррекции ошибок. Кроме того, является связующим звеном между модемом и программным обеспечением компьютера (реализует программный интерфейс).
• Кодек — осуществляет двустороннее преобразование аналогового сигнала, поступающего из линии, в поток цифровых данных.
• ПЗУ (постоянное запоминающее устройство) — микросхема памяти, хранящая в себе программу работы модема, также называемую "прошивкой". Последние модели модемов допускают обновление и перезапись прошивки модема с помощью специального программного обеспечения (за исключением тех случаев, когда это не предусмотрено производителем).
• ОЗУ (оперативное запоминающее устройство) — микросхема оперативной памяти, хранящая данные до первого выключения питания. Предназначена для хранения и последующей обработки потока данных. Иногда в ней же хранятся текущие настройки для работы модема.
Основные функциональные блоки
Со стороны телефонной линии самым первым устройством является блок интерфейса с телефонной линией. Основными функциями этого блока являются:
• обеспечение физического соединения с телефонной линией;
• защита от перенапряжения и радиопомех;
• набор номера;
• фиксация звонков;
• гальваническая развязка внутренних цепей модема и телефонной линии;
• согласование импеданса.
Далее сигналы попадают в дифференциальную систему, цель которой — разделение выходных и входных сигналов и компенсация влияния собственного сигнала на входные цепи. В наиболее простых моделях модемов этот узел исполняется в виде пассивной схемы, что зачастую приводит к сильной зависимости качества работы блока от сопротивления конкретной телефонной линии. Избавиться от такой зависимости могут только модели с активной дифференциальной системой, где необходимый для компенсации сигнал постоянно вычисляется сигнальным процессором и, "вычитаемый" из входного сигнала, обеспечивает необходимый уровень компенсации.
Подготовленные таким образом сигналы, попадают на ряд фильтров, усиливаются и оцифровываются с помощью АЦП (аналогово-цифровой преобразователь) в блоке формирования аналоговых фронтов, так что дальнейшая обработка производится в цифровом виде. Одно из преимуществ такого подхода — улучшение качества обработки сигнала и удешевление схемы.
Обработанная информация поступает в цифровой сигнальный процессор (DSP), который и выделяет из нее на основе математических методов “нули” и “единицы”. Именно возможностями цифровой обработки сигнала этого блока определяется качество и скоростные возможности современных модемов.
Поддержка интерфейса с компьютером, управление DSP, реализация протоколов аппаратной коррекции ошибок и сжатия данных, управление интерфейсом с пользователем (индикаторы, кнопки и джамперы настройки), а также управление энергонезависимой памятью — вот далеко не полный список функций, лежащих на системе управления модемом (контроллере модема).
При этом если ранее микропрограмма хранилась в ПЗУ, изготовленном и "прошитом" на заводе, то теперь производители все чаще стали помещать ее в перезаписываемую флэш-память, что позволяет обновлять программу без аппаратного вмешательства. DSP, со "вшитой" в долговременную память (ПЗУ или flash, что допускает модернизацию) программой обработки, получил образное название "datapump" ("насос данных"). Подобная мультипроцессорная архитектура (так называемая функциональная мультипроцессорность) отлично работала в модемах на протяжении многих лет.
Сегодня актуальной становится "деинтеллектуаилизация" модема, для которой уже родилась и новая аббревиатура — HSP (Host Signal Processing, дословно — обработка ресурсами процессора компьютера). Несомненно, вычислительная мощность массовых процессоров семейства х86 позволяет переложить ряд задач обработки сигналов с DSP на CPU-машины и при этом получить даже дополнительные преимущества, заключающиеся в упрощении процедур модернизации специализированного и прикладного ПО и в снижении стоимости. Но это только одна сторона медали.
Наблюдается также тенденция потери модемом аппаратной независимости — в чипсеты встраиваются контроллеры сугубо "персональных" шин, таких, как РСI и USB (Universal Serial Bus), в сочетании с узкоспециализированными аппаратно-микропрограммными средствами, соответствующими требованиям тех или иных операционных систем. Это тоже, на первый взгляд, неплохо, потому как гарантирует снижение цены и повышение потребительских удобств.
Единственная аналоговая (и потому крайне важная) подсистема модема — DAA — все чаще реализуется в интегральном исполнении, что уменьшает количество необходимых для изготовления полнофункционального модема дискретных элементов (конденсаторов, резисторов и пр.) до единиц. Еще один почти отрадный факт: меньше элементов, меньше необходимых монтажных операций при сборке, следовательно — ниже стоимость и выше надежность.
С другой стороны, после возложения на программу некоторых жизненно важных функций, аппаратно зависимый от платформы модем, как правило, устойчиво работает только под ОС Windows.
К проблеме согласования сопротивлений следует добавить один тонкий нюанс — зависимость сопротивления телефонной линии от частоты сигнала. Из многолетней успешной практики электроники доподлинно известно, что наилучшим устройством для работы на реактивную нагрузку является обычный трансформатор (при некоторых ограничениях, несущественных в рассматриваемом случае). Для модемов (особенно на нашем рынке) это утверждение также справедливо — практически у всех самых лучших проверенных временем моделей трансформаторный DAA.
Естественно, трансформатор — устройство не дешевое, уж, по крайней мере, намного дороже микросхемы DAA, да и качество телефонных линий в странах с емкими платежеспособными рынками намного выше нашего, что объясняет тенденцию "детрансформаторизации".
Теперь пора вкратце рассмотреть механизмы защиты от аналогового хаоса. Чипсет, действительно хорошего модема, обязан для успешной работы в наших условиях обладать двумя скрытыми, но очень важными (и сложными в реализации) функциональными блоками — эхо-компенсации и эквалайзера.
Эхо-компенсатор предназначен для борьбы с эхо-сигналом. Эквалайзер также вносит немаловажный вклад в повышение скорости и устойчивости связи, согласовывая частотные характеристики приемопередатчика модема и конкретной телефонной линии.
Обзор практически всех новых моделей чипсетов, поддерживающих протокол v.90, не выявил реализации в них ни эхо-компенсаторов, ни управляемых эквалайзеров. Возможно, что производители просто "забыли" сообщить об этих особенностях, но подозрение об отсутствии столь необходимой для наших телефонных линий функциональности подтверждается и низкой ценой новых чипсетов (в "до-V.90" времена эхо-компенсатором и эквалайзером оснащались только лучшие чипсеты Lucent, низкой стоимостью никогда не отличавшиеся).
Lucent сосредоточилась на двух семействах чипсетов, ориентированных на применение во внутренних модемах, — Apollo и Mars. Учитывая очень высокое качество используемого DSP и мощный опыт Lucent в разработке модемного firmware (внутреннего модемного ПО), можно смело утверждать, что пользователей Windows модемы на новых чипсетах Lucent не подведут.
До появления высокоскоростных протоколов на 56 Kbps передача данных между двумя модемами по обычным телефонным каналам связи осуществлялась в аналоговом режиме, как было рассмотрено выше.
Основным сдерживающим фактором, препятствующим "бесконечному" увеличению скорости передачи данных с помощью модемов, является качество аналоговых телефонных линий связи. До недавнего времени (буквально до начала 80-х годов) основным назначением телефонных каналов связи была только передача голоса. Поэтому, исходя из соображений стоимости и для борьбы с шумами в линии, полоса пропускания телефонного канала была ограничена диапазоном 300 – 3500 Hz. Исследования показали, что именно в этом диапазоне частот находится основная часть спектра человеческой речи, поэтому после наложения на исходный сигнал указанных ограничений разборчивость речи не ухудшится.
Для управления так называемыми "интеллектуальными" модемами используются специальные связные программы — программы, работающие под управлением операционной системы ЭВМ. Связная программа создает на экране терминала дружественный интерфейс пользователя, обеспечивающий удобное выполнение необходимых управляющих функций. При этом используется, в основном, набор команд АТ, передаваемых модемом либо через связной порт компьютера (для внешних модемов), либо через общую шину (для внутренних модемов). Перед началом работы, пользователь может задать некоторые параметры взаимодействия компьютера и модема. Связные программы создают ряд возможностей, упрощающих управление модемом:
· хранение справочников телефонов;
· хранение наборов команд управления для разных модемов;
· макроязык для написания управляющих программ.
Интерфейсы
Для подключения модема к телефонной линии и компьютеру предусмотрены стандартные интерфейсы.
Интерфейс "модем – телефонная линия"
Соединители RJ11 обеспечивают физическое подключение модема к телефонной линии и телефонного аппарата к модему.
Модемы, как правило, имеют два каскада защиты от неожиданного повышения напряжения. Входные линии защищены от перенапряжения варистором, который резко уменьшает свое сопротивление при напряжении 400 – 500 В. Второй каскад быстродействующей защиты устанавливается во вторичную обмотку трансформатора и реализуется на встречновключенных стабилитронах.
Защита линии от радиопомех, излучаемых модемом, выполняется на обычных LC-фильтрах (1000пФ +3 витка на феррите).
Для коммутируемой линии поддерживается функция импульсного набора номера, "отбоя" (постоянный ток менее 0,5 мА), и "удержания линии" (постоянный ток более 8 мА).
Наиболее универсальна ситуация, когда набор номера выполняет реле, а постоянный ток протекает через трансформатор.
В современных модемах используется схема Electronic Holding Call Circuit, которая имеет низкое сопротивление постоянному току, достаточное для удержания линии, но сохраняет высокий импеданс для переменного тока полезного сигнала. При этом набор номера осуществляет либо реле, либо сам узел EHCC с оптронной развязкой управления.
Наиболее консервативен узел фиксации телефонных звонков. Он состоит из высоковольтного конденсатора, резистора, стабилитрона и светодиода оптронной развязки.
Важным требованием к интерфейсу с линией является симметричность входа и его гальваническая развязка.
Интерфейс "модем – компьютер"
В основе последовательного порта передачи данных компьютера лежит микросхема INTEL 8250 или ее современные аналоги — INTEL16450, 16550, 16550A. Эта микросхема является универсальным асинхронным приемопередатчиком (UART — Universal Asynchronous Receiver Transmitter), обеспечивают скорость приема/передачи данных до 115200 бод (для современной микросхемы INTEL16550A). Микросхема содержит несколько внутренних регистров, доступных через команды ввода/вывода.
Микросхема 8250 содержит регистры передатчика и приемника данных. При передаче байта он записывается в буферный регистр передатчика, откуда затем переписывается в сдвиговый регистр передатчика. Байт "выдвигается" из сдвигового регистра по битам.
Программа имеет доступ только к буферным регистрам, копирование информации в сдвиговые регистры и процесс сдвига выполняется микросхемой UART автоматически.
К внешним устройствам асинхронный последовательный порт подключается через специальный разъем. Существует два стандарта на разъемы интерфейса RS-232C, это DB-25 (5 выводов) и DB-9 (9 выводов).
Интерфейс RS-232C определяет обмен между устройствами двух типов:
· DTE ( Data Terminal Equipment — терминальное устройство);
· DCE ( Data Communication Equipment — устройство связи).
В большинстве случаев, но не всегда, компьютер является терминальным устройством. Модемы, принтеры, графопостроители всегда являются устройствами связи.
Сигналы интерфейса S-232C
Входы TD и RD используются устройствами DTE и DCE по-разному. Устройство DTE использует вход TD для передачи данных, а вход RD для приема. И наоборот, устройство DCE использует вход TD для приема, а вход RD для передачи данных. Поэтому для соединения терминального устройства и устройства связи выводы их разъемов необходимо соединить напрямую.
Подтверждение связи
Рассмотрим процесс подтверждения связи между компьютером и модемом. В начале сеанса связи компьютер должен удостоверится, что модем может произвести вызов (находится в рабочем состоянии). Затем, после вызова абонента, модем должен сообщить компьютеру, что он произвел соединение с удаленной системой. Подробнее это происходит следующим образом:
Компьютер подает сигнал по линии DTR, чтобы показать модему, что он готов к проведению сеанса связи. В ответ модем подает сигнал по линии DSR. Когда модем произвел соединение с другим, удаленным модемом, он подает сигнал по линии DCD, чтобы сообщить об этом компьютеру.
Если напряжение на линии DTR падает, это сообщает модему, что компьютер не может далее продолжать сеанс связи, например из-за того, что выключено питание компьютера. В этом случае модем прервет связь. Если напряжение на линии DCD падает, это сообщает компьютеру, что модем потерял связь и не может больше продолжать соединение. В этом случае эти сигналы дают ответ на наличие связи между модемом и компьютером.
Существует более высокий уровень, который используется для управления скоростью обмена данными, но он также реализуется аппаратно. Практически управление скоростью обмена данными (управление потоком) необходимо, если производится передача больших объемов данных с высокой скоростью. Когда одна система пытается передать данные с большей скоростью, чем они могут быть обработаны принимающей системой, результатом может стать потеря части передаваемых данных. Чтобы предотвратить передачу большего числа данных, чем то, что может быть обработано, используют управление связью, называемое "управление потоком".
Стандарт RS-232C определяет возможность управления потоком только для полудуплексного соединения, при котором в каждый момент времени данные могут передаваться только в одну сторону.
Фактически этот механизм используется и для дуплексных соединений, когда данные передаются по линии связи одновременно в двух направлениях.
Управление потоком
В полудуплексных соединениях устройство DTE подает сигнал RTS, когда оно желает передать данные. DCE отвечает сигналом по линии CTS, когда оно готово, и DTE начинает передачу данных. До тех пор, пока оба сигнала RTS и CTS не примут активное состояние, только DCE может передавать данные.
При дуплексных соединениях сигналы RTS/CTS имеют значения противоположные тем, которые они имели для полудуплексных соединений.
Когда DTE может принять данные, он подает сигнал по линии RTS. Если при этом DCE готово для принятия данных, оно возвращает сигнал CTS. Если напряжение на линиях RTS и CTS падает, то это сообщает передающей системе, что получающая система не готова для приема данных.
Однако на практике не все так просто. Соединить компьютер и модем не составляет труда, т. к. интерфейс RS-232C как раз для этого и предназначен. Но если вы захотите связать вместе два компьютера при помощи такого же кабеля, который вы использовали для связи модема и компьютера, то у вас возникнут проблемы. Для соединения двух терминальных устройств — двух компьютеров — как минимум необходимо перекрестное соединение линий TR и RD. Однако часто этого недостаточно, т. к. для устройств DTE и DCE функции, выполняемые линиями DSR, DTR, DCD, CTS, RTS асимметричны.
Устройство DTE подает сигнал DTR и ожидает получения сигналов DSR и DCD. В свою очередь, устройство DCE подает сигналы DSR, DCD и ожидает получения сигнала DTR. Таким образом, если соединить вместе два устройства DTE кабелем, который вы использовали для соединения устройств DTE и DCE, то они не смогут договориться друг с другом.
Теперь перейдем к сигналам RTS и CTS, управления потоком данных. Иногда для соединения двух устройств DTE эти линии соединяют вместе на каждом конце кабеля. В результате получаем то, что другое устройство всегда готово для получения данных. Поэтому, если при большой скорости передачи принимающее устройство не успевает принимать и обрабатывать данные, возможна потеря данных.
Чтобы решить все эти проблемы для соединения двух устройств типа DTE используется специальный кабель, в обиходе называемый null-modem.
Технические параметры интерфейса RS-232C
При передаче данных на большие расстояния без использования специальной аппаратуры из-за помех, наводимых электромагнитными полями, возможно возникновение ошибок. Вследствие этого накладываются ограничения на длину соединительного кабеля между устройствами DTR-DTR и DTR-DCE.
Официальное ограничение по длине для соединительного кабеля по стандарту RS-232C составляет 15,24 метра. Однако на практике это расстояние может быть значительно больше. Оно непосредственно зависит от скорости передачи данных.
Таблица 1: Зависимость скорости передачи данных от длины соединительного кабеля
Скорость (bod) |
Длина кабеля экранированного (м) |
Длина кабеля неэкранированного (м) |
110 |
1524 |
914,4 |
300 |
1524 |
914,4 |
1200 |
914,4 |
914,4 |
2400 |
304,8 |
152,4 |
4800 |
304,8 |
76,2 |
9600 |
76,2 |
76,2 |
Уровни напряжения на линиях разъема составляют для логического нуля -15. – -3 В, для логической единицы +3. – +15 В. Промежуток от -3 до +3 В соответствует неопределенному значению.
Программирование адаптера
Порты асинхронного адаптера. На этапе инициализации системы, модуль POST BIOS тестирует имеющиеся асинхронные порты RS-232C и инициализирует их. В зависимости от версии BIOS инициализируются первые два или четыре порта. Их базовые адреса располагаются в области данных BIOS, начиная с адреса 0000:0400h.
Первый адаптер COM1 имеет базовый адрес 3F8h и занимает диапазон адресов от 3F8h до 3FFh. Второй адаптер COM2 имеет базовый адрес 2F8h и занимает адреса 2F8h, 2FFh.
Асинхронные адаптеры могут вырабатывать прерывания:
· COM1,COM3 — IRQ4;
· COM2, COM4 — IRQ3.
Для управления портами используются 7 основных регистров:
1. Регистр данных расположен непосредственно по базовому адресу порта RS-232C и используется для обмена данными и для задания скорости обмена.
Для передачи данных в этот регистр необходимо записать передаваемый байт данных. После приема данных от внешнего устройства принятый байт можно прочитать из этого же регистра.
В зависимости от состояния старшего бита управляющего регистра (расположенного по адресу base_adr+3, где base_adr соответствует базовому адресу порта RS-232C) назначение этого регистра может изменяться. Если старший бит равен нулю, регистр используется для записи передаваемых данных. Если же старший бит равен единице, регистр используется для ввода значения младшего байта делителя частоты тактового генератора. Изменяя содержимое делителя, можно изменять скорость передачи данных.
Старший байт делителя записывается в регистр управления прерываниями по адресу base_adr+1.
Максимальная скорость обмена информацией, которую можно достичь при использовании асинхронного адаптера, достигает 115200 бод, что соответствует 14,4 Кбайт в секунду.
2. Регистр управления прерываниями используется либо для управления прерываниями от асинхронного адаптера, либо (после вывода в управляющий регистр байта с установленным в 1 старшим битом) для вывода значения старшего байта делителя частоты тактового генератора.
3. Регистр идентификации прерывания. Считывая его содержимое, программа может определить причину прерывания.
4. Управляющий регистр доступен по записи и чтению. Этот регистр управляет различными U-характеристиками UART: скоростью передачи данных, контролем четности, передачей сигнала BREAK, длиной передаваемых слов (символов).
5. Регистр управления модемом управляет состоянием выходных линий DTR, RTS и линий, специфических для модемов — OUT1 и OUT2, а также запуском диагностики, при соединенных вместе входе и выходе асинхронного адаптера.
6. Регистр состояния линии определяет причину ошибок, которые могут возникнуть при передаче данных между компьютером и микросхемой UART.
7. Регистр состояния модема определяет состояние управляющих сигналов, передаваемых модемом асинхронному порту компьютера.
Инициализация асинхронного адаптера
Первое, что должна сделать программа, работающая с асинхронным адаптером — установить формат и скорость передачи данных. После загрузки операционной системы для асинхронных адаптеров устанавливается скорость 2400 бод, не выполняется проверка на четность, используются один стоповый и восьмибитовая длина передаваемого символа. Можно изменить этот режим командой MS-DOS MODE.
Выполнив ввод из управляющего регистра, программа может получить текущий режим адаптера. Для установки нового режима измените нужные вам поля и запишите новый байт режима обратно в управляющий регистр.
Если вам надо задать новое значение скорости обмена данными, перед записью байта режима установите старший бит этого байта в 1, при этом регистр данных и управляющий регистр используются для задания скорости обмена. Затем последовательно двумя командами ввода загрузите делитель частоты тактового генератора. Младший байт запишите в регистр данных, а старший — в регистр управления прерываниями.
Перед началом работы необходимо также проинициализировать регистр управления прерываниями, даже если в вашей программе не используются прерывания от асинхронного адаптера. Для этого сначала надо перевести регистр данных и регистр управления прерываниями в обычный режим, записав ноль в старший бит управляющего регистра. Затем можно устанавливать регистр управления прерываниями. Если прерывания вам не нужны, запишите в этот порт нулевое значение.
Программирование модемов
После выпуска американской фирмой Hayes модемов серии Smartmodem, система команд, использованная в ней, стала неким стандартом, которого придерживаются остальные фирмы — разработчики модемов. Система команд, применяемая в этих модемах, носит название hayes-команд, или AT-команд. При этом некоторые производители, например Motorola, дополняют hayes-команды рядом своих, подходящих лишь для модемов собственного производства.
Со времени выпуска первых AT-совместимых модемов набор их команд несколько расширился, но все основные команды остались без изменения.
Все команды, передаваемые компьютером модему, надо начинать префиксом AT (ATtention — внимание) и заканчивать символом возврата каретки (<CR>). Только команда А/ и Escape-последовательность "+++" не требуют для себя префикса AT. После префикса AT могут идти одна или сразу несколько команд. Для ясности эти команды могут быть отделены друг от друга символами пробела, тире, скобками. В большинстве случаев команды могут быть написаны как заглавными, так и строчными буквами.
При передаче модему команд они сначала заносятся во внутренний буфер, который, как правило, имеет размер 40 символов. Команды, записанные в буфер модема, исполняются после поступления символа возврата каретки. Вследствие ограниченности размера буфера не следует передавать модему слишком длинные команды (больше размера буфера). Длинные команды можно разбивать на части и передавать в несколько заходов. При этом каждая часть должна начинаться префиксом АТ и заканчиваться символом возврата каретки.
Если при наборе команды допущена ошибка, то ее можно исправить, используя клавишу BackSpace.
После выполнения каждой команды модем посылает обратно компьютеру ответ в виде числа или слова. Этот ответ означает, выполнена ли команда или произошла ошибка.
Основные принципы программирования модемов
Доступ к модему производится через последовательный асинхронный порт. При этом для передачи модему команд их необходимо просто записать в регистр данных COM-порта, на котором находится модем. Ответ от модема также поступает через последовательный порт. Передавая модему команды, его можно проинициализировать, перевести в режим автоответа или заставить набрать номер.
Когда модем наберет номер удаленного абонента или когда модему в режиме автоответа придет вызов, он попытается установить связь с удаленным модемом. После установления связи модем передает компьютеру через COM-порт специальное сообщение и переключится из командного режима в режим передачи данных. После этого данные, передаваемые модему, перестают восприниматься им как команды и сразу передаются по телефонной линии на удаленный модем.
Итак, после установления связи с удаленным модемом, коммуникационная программа может начинать обмен данными. Обмен данными так же, как и передача команд, осуществляется через COM-порт. Затем при помощи специальной Escape-последовательности можно переключить модем из режима передачи данных обратно в командный режим и положить трубку, разорвав связь с удаленным модемом.
Последовательность действий для установления связи
1. Инициализация COM-порта. Проводим инициализацию COM-порта, к которому подключен модем. Для этого программируем регистры микросхемы UART, задавая формат данных и скорость обмена. Заметим, что модем будет проводить соединение с удаленным модемом как раз на этой скорости. Чем скорость выше, тем быстрее будет происходить обмен данными с удаленным модемом.
Однако при увеличении скорости на плохих телефонных линиях сильно возрастает количество ошибок.
2. Инициализация модема. Передавая модему AT-команды через СОМ-порт, производим его инициализацию. При помощи АТ-команд можно установить различные режимы работы модема — выбрать протокол обмена, установить набор диагностических сообщений модема и т. д.
3. Соединение с удаленным модемом. Передаем модему команду набора номера (ATD). В этом случае модем набирает номер и пытается установить связь с удаленным модемом. Или передаем модему команду AT S0 = 1 для перевода его в режим автоответа. После этого модем ожидает звонка от удаленного модема, а когда он приходит, пытается установить с ним связь.
4. Ожидание ответа от модема. В зависимости от режима, в котором находится модем, он может передавать компьютеру различные сообщения. Например, если модем производит вызов удаленного модема (АТ-команда ATD), то модем может выдать следующие сообщения:
· CONNECT — Успешное соединение;
· BUSY — Номер занят;
· NO DIALTONE — На линии отсутствует сигнал коммутатора;
· NO ANSWER — Абонент не отвечает;
· NO CARRIER — Неудачная попытка установить связь.
Когда приходит звонок, модем передает компьютеру сообщение RING, если регистр модема S0 равен нулю. В этом случае для ответа на звонок надо послать модему команду АТА. Если модем находится в режиме автоответа и регистр модема S0 не равен нулю, то модем автоматически пытается ответить на звонок и может выдать следующие сообщения: CONNECT, NO DIALTONE, NO CARRIER.
Если модем передал компьютеру сообщение CONNECT, значит он успешно произвел соединение и теперь работает в режиме передачи данных. Теперь все данные, передаваемые модему через СОМ-порт, будут преобразованы модемом в форму, пригодную для передачи по телефонным линиям, и переданы удаленному модему. И наоборот, данные, принятые модемом по телефонной линии, переводятся в цифровую форму и могут быть прочитаны через СОМ-порт, к которому подключен модем.
Если модем передал компьютеру сообщения BUSY, NO DIALTONE, NO ANSWER, NO CARRIER — значит произвести соединение с удаленным модемом не удалось и надо попытаться повторить соединение.
5. Подключение модема в командный режим. После окончания работы коммуникационная программа должна перевести модем в командный режим и передать ему команду положить трубку (ATH0). Для перевода модема в командный режим можно воспользоваться Escape-последовательностью "+++". После того как модем перешел в командный режим, можно опять передавать ему АТ-команды.
6. Сброс сигналов на линиях DTR и RTS. Низкий уровень сигналов DTR и RTS сообщает модему, что компьютер не готов к приему данных через COM-порт. При работе с асинхронным последовательным адаптером вы можете использовать механизм прерываний. Так как передача и прием данных модемом представляют собой длительный процесс, то применение прерываний от порта позволяет использовать процессорное время для других нужд.
Библиографический список
1. "Разработка настроечных и эксплуатационных норм на электрические параметры каналов связи телефонной сети общего пользования" Ч. 2. Проект норм и методик измерения. 1-я ред.: Отчет о НИР. Шифр 133/93-402. М.: ЦНИИ связи, 1995.
2. "Сравнительные испытания модемов в условиях коммутируемой телефонной сети общего пользования: Отчет о НИР", Кочеров А. В., Пасковатый А. О. 1996.
3. "Модемные протоколы физического уровня", А. Пасковатый. Сборник статей "Модемы: разработка и использование в России" под редакцией А. Пасковатого, Москва 1996.
4. "Анатомия модемного железа", И. Дианов. Сборник статей "Модемы: разработка и использование в России" под редакцией А. Пасковатого, Москва 1996.
5. "Конец эры модемов? ", Лес Фрид. Журнал "PC Magazine", 15 декабря 1998
6. "Идеальный модем", С. Андрианов, К. Яковлев. Журнал "Мир ПК" №06/99
7. "Долгожданный CONNECT", Д. Любивый, Журнал CHIP №2/98
|