Софт-модемы

главная / все о модемах / Разное... / Софт-модемы

Софт-модемы

 

Небольшое отступление ...

Все будет рассматриваться на примере модемов USR, как наиболее широко распространенных на территории России. Структурно модем состоит из двух частей - DSP и управляющего процессора. На USR эти функции обычно выполняют TMS320 (Texas Instrumens) и i188 (Intel). DSP работает с линией, осуществляет компенсацию передаваемого сигнала и, собственно, кодирование-декодирование информации в линию. i188 процессор выполняет контроль за протоколом на более высоком уровне - работа с PC, сжатие данных, управление скоростью соединения в зависимости от качества сигнала в линии. На нем лежит ответственность за стратегию изменения скорости и необходимость делать retrain. Retrain - это переустановка связи и напоминает первичный хендшейкинг, только без стадии выяснения максимального общего протокола. Больше всего времени в нем занимает настройка эхоподавления. Quick retrain отличается от full retrain отсутствием длительной стадии настройки эхоподавления. При этом нормальные, "длинные" retrain'ы вовсе не отменяются. Это довольно полезное на зашумленных линиях свойство. Обычный длинный retrain во-первых, связан со значительными накладными расходами, и во-вторых, настройка эхоподавления в условиях шумов - не лучшая идея, потому что эти шумы во время настройки будут приняты за эхо, и будут "вычитаться" из сигнала при приеме.

DSP только говорит об уровне ошибок, а что с этим делать решает i188. Это достаточно грубая схема, но она нужна для понимания распределения ролей между процессорами. В SoftModem'ах DSP остается на плате, а функция i188 перекладывается на драйвер. Это вполне логичный шаг, ведь центральный процессор современных компьютеров более, чем в 100 раз быстрее i188, так зачем нужна лишняя деталь? Но при это приходится решать еще одну проблему: для высокоскоростных протоколов скорости i188 явно не хватает на распаковку данных, а более мощного (embedded, т.е. встроенного) процессора найти трудно или оказывается слишком дорого.

Драйвер SoftModem'а является vxd и входит в состав операционной системы и, соответственно, имеет очень высокий приоритет и малое время реакции. Это говорит о том, что при не очень слабом процессоре (выше Pentium200) эмуляция i188 силами самого центрального процессора не составляет проблем. В худшем случае, произойдет некоторое замедление установления протокола связи, а на скорость передачи данных практически не скажется.

Правда, я бы не рекомендовал даже пробовать SoftModem на 486-ом компьютере. Реальная проверка показала, что загрузка CPU оказывает малое влияние на работу SoftModem'а - скорость загрузки zip архива не изменилась, хотя была запущена фоновая задача, которая с'ела 100% ресурсов CPU.

В заключение этой темы я бы хотел сказать, что новые внутренние модемы будут делать по этой схеме: AMR, особенно дешевые модели (<$150).

У SoftModem'а есть одно потенциальное достоинство - возможность контролировать текущую скорость соединения и как-то на нее влиять.

К сожалению, это не встречал - только показывают текущую скорость. Это было принципиально невозможно в обычных модемах, т.к. управления/передачи данных только один. Вообще - такие попытки делались, хотя бы в RC21600, но проблема совместимости протоколов с W9x, NT - осталась открытой.

Модем Русский Курьер 21600 (Russian Courier 21600, RC21600) представляет собой расширенную и адаптированную версию модема USRobotics Courier и имеет специально адаптированные к советским линиям настройки и расширения.

Знать о текущей скорости соединения очень важно, потому, что при начальном соединении скорость часто бывает завышена и в процессе работы может измениться значительно (до двух раз). Иногда бывает быстрее пересоединиться несколько раз, ведь раз на раз не приходится (нельзя войти в одну реку дважды) и качество связи меняется значительно.

USR vs. Motorola

Аналоговая часть Sporster'a и Courier'а отличается незначительно:

Courier Sporster
набор оптронные ключи реле
трансформатор лучше хуже, особенно внутренний
разводка сигнальных цепей хорошая нормальная
усиление приемника сильно задрано нормально

Аналоговая часть

Аналоговая схема модема должна выполнять функцию передачи сигнала в телефонную линию и приема из нее. Причем вторая часть не так проста - ведь надо вычесть свой сигнал и оставить только входной.

Это делается в 2 приема - в аналоговой схеме выполняется компенсация в первом приближении, более тонким вычитанием занимается DSP. Вот в этом месте и проявляется bug всех USR - глухота. Поясню - передаваемый сигнал (Tx) часто имеет уровень -11db, а приемный ( Rx ) порядка -33db ( посмотреть можно по ati11 ). После компенсации в аналоговой схеме на кодек DSP приходит Rx и только что переданный Tx с уровнями -33db и -23db соответственно (если компенсация в 4 раза). Посмотреть можно по ati4 строка - Near echo. Near echo = Tx - весь переданный сигнал попал на вход.

Т.о. на вход DSP приходит цифровой код, в котором Rx в 4 раза меньше Tx и при малой дискретности АЦП кодека результирующая точность Rx уменьшается. Например, если кодек имеет точность 16 разрядов, тогда на входной (суммарный) сигнал остается 14 бит - 1 знаковый и 1 - запас на переполнение. А так, как Tx на 10db больше Rx, то максимальный уровень АРУ ставится по нему. В результате на реальный входной сигнал остается 12 бит (4096 значений по уровню). При кодировании по V34 на 9600 используется 47 градаций уровня, а на 19200 - уже почти в 4 раза больше. Т.о. при слабом Rx и плохой входной схеме входной сигнал "убивается" на кодеке.

К тому же надо учесть, что очень часто телефонный сигнал проходит через цепи с нелинейным квантованием по уровню - цифровые АТС, к чему модем так же обязан подстраиваться. Это приводит к тому, что для малых значений сигнала точность представления в кодеке еще значительно уменьшается, и даже очень сильно.

Я исходил из разрешения кодека 16 бит, но действительные данные кодека модемов USR не доступны. На модемах Моторолы этого эффекта "глухоты" не замечено, особенно в такой яркой форме. Наверно, там есть запас по количеству разрядов. Для "лечения" этого эффекта применяются различные C-R-L цепочки, подключаемые к входу модема.

Но, как показала практика, они не столь эффективны, хотя и польза имеется. Единственный способ - перепаивание входной схемы. Например, внешними компонентами мне удалось увеличить Near echo (несогласованность приемника с линией) на 6db, а после долгого процесса подгонки схемы в модеме Near echo стало >42db (было 29-35db).

Т.о. во встроенном динамике модема я слышу только приемный сигнал. Бытует мнение, что так настроится можно только под одну конкретный номер, а при соединении с другим номером компенсации не будет. Это ошибка. Near echo не может очень сильно меняться, т.к. это все является согласованием с конкретно моим куском провода до моей АТС - что вряд ли будет динамически изменяться.

Реальные результаты согласования - мне удалось повысить уровень передачи на 3db и поднять планку уверенного приема на одну ступень (9600-12000). Я часто встречаю рекомендации понижать уровень передачи, но при этом станет "хуже" тому модему. Т.о., хотя скорость приема и возрастет, но общий объем может даже упасть из-за retrain'ов от того модема. И вообще - кусок провода один и при изменении уровня передачи одному модему становится лучше, то другому - обязательно хуже.

Если с той стороны стоит нормальный модем, то можно попробовать немного перетянуть одеяло на себя, если USR Courier - лучше не надо, ну а если Sporster - только повышать.

На модемах Моторолы эффект компенсации явно не выражен и к улучшению не приводит, что говорит о хорошей проработанности аналоговой части. Аналоговая часть USR базируется на reference board от Texas Instruments.

Импеданс модема

Для телефонной линии модем обязан иметь сопротивление (импеданс) 600 Ом. Большое отклонение от этого числа приводит к появлению отражения от конца линии, что индицируется модемом как Far echo. Но, в отличие от Near echo, эта величина не может быть скомпенсирована модемом и воспринимается как помех - т.о. скорость передачи данных падает. В реальном соединении даже сложно сказать, что вносит бОльшый вред - уровень шума или отражения.

Реальный измерения показали, что для USR Sporster, Courier, Моторола SM56 и Premier этот параметр составляет 600-650 Ом, что нормально. На SkyRocket - порядка 800 Ом ( вот еще одна прелесть подделки ).

Уровень приема и BUSY

Вторая, по важности, проблема в аналоговой части - коэффициент усиления Rx. Здесь нужно уяснить, что просто повышать усиление нельзя - собственный Tx все испортит и будет только хуже (на USR clone). С другой стороны, минимальное усиление ограничено собственными шумами и наводками платы и chip'а усилителя. Для USR эта цифра порядка -55db, а на SkyRocket = -45db (вот она, цена подделки!). А если учесть уровень приема в -33db, то эти цифры станут более понятны.

Мой вывод - в Sporster'е коэффициент усиления почти оптимален, а в Courier'е завышен в 2 раза. Когда схема Courier'а была соответствующим образом доработана, то BUSY стал браться с вероятностью 95%, а скорость передачи не изменилась. Про Моторолу сказать нечего - на советских линиях как не брала BUSY, так и не берет. Доработка входной схемы не помогает.

Трансформатор

В дешевых моделях ставят мерзкий трансформатор. Для рассмотренных модемов это Sporster, SkyRocket, SM56. В дорогих моделях (Courier, Premier) трансформатор достаточно качественный. Плохой трансформатор (маленький) имеет очень большое сопротивление обмоток, часто недостаточную индуктивность, малый запас по перегрузке (легче насыщается) и повышенный уровень потерь на перемагничивание. На своем SkyRocket мне удалось получить Near echo (согласовать с линией) только после замены его трансформатора на ферритовый. Такой трансформатор практически не вносит искажения в сигнал, т.к. потери на перемагничивание крайне низки. У "них" (за бугром) отношение сигналов Tx и Rx меньше и потери в трансформаторе существенно не влияют. А в нашем государстве магистральных усилителей подчас вообще нет и затухание в линии настолько высоко, что уровень Tx в модеме стоит на максимуме (-11db). Для справки - уровень передачи заказывает себе приемник того модема и, при необходимости, может его понизить.

Программное обеспечение (firmware)

Hа V.32, V.34 модемы выбиpают скоpость в диапазоне 4800...33600 согласно текущему отношению сигнал/шум (SNR). В USR этот пpоцесс выглядит так: DSP пеpиодически шлет в i188 "New recommended speed", котоpую он (TMS) опpеделяет из SNR(уровень шума), оцениваемому по сумаpной за некотоpый пpомежуток вpемени ошибке детектиpования состояний сигнала. Анализиpуя и усpедняя эту "pекомендованную" скоpость, i188 пеpиодически пpинимает pешения о смене скоpости, а также pешает, соглашаться или нет на запpосы с удаленной стоpоны. Такой способ пpост и хоpош лишь на линии с постоянным (или медленно меняющимся) уpовнем шума, и пpи условии, что DSP pекомендует пpавильную скоpость. (что в USR не так: поpоги занижены, из-за чего DSP pекомендует завышенную скоpость, что обоpачивается снижением CPS по пpичине пеpезапpоса большого числа кадpов V42).

Hа линиях с плавающим SNR и имульсными помехами (котоpых DSP почти не замечает) это не самый лучший способ. Поэтому в некоторые модемы (IDC) вдобавок к подобному способу опpеделения скоpости имеется анализ статистики сбойных кадpов, и "качество линии" (читай - скоpость) опpеделяется как из SNR, так и из этой статистики (отн. кол-ва хоpоших и плохих кадpов). Т.о. за стратегию изменения скорости связи отвечает не DSP, а второй процессор.

Отношение к импульсным помехам в линии

USR Sporster (SkyRocket) - по любому щелчку делает полный retrain. На плохой линии совсем не живет. Этот "модем" легко понижает и повышает скорость и совершенно не помнит о том, что сосем недавно это же и делал. В случае с редкими импульсными помехами это приводит к постоянным retrain'ам.

USR Courier - более терпим с помехам, лучше стратегия изменения скорости (немного помнит, что было раньше). У всех USR есть "свойство" - после полного retrain'а короткие retrain'ы невозможны. А так, как длинный уже был при установке соединения, то их и не бывает. Короткий retrain выполняется 0.5сек, а длинный - порядка 10 секунд. Отличие в них то, что при коротком retrain'е не перенастраивается эхокомпенсация.

Моторола - SM56 (Premier) - однократные помехи часто игнорирует, в случае пачки вначале пытается обойтись короткими retrain'ами и плавно снижает скорость.

Сейчас я использую модем SM56, но совсем избавится от retrain'ов мне не удалось - с той стороны стоит Courier и делает "бесплатные подарки". Мой модем обязан сделать retrain, ели тот попросил, иначе - разрыв связи.

Если кто хочет убедиться сам, то соединитесь с нужным модемом и наберите (для модемов V.34 USR):

  • +++ (пауза 3 секунды без [enter])
  • ATL0M2I6
  • A>

... и наблюдайте цифры:

  • Retrains Request -счетчик retrain'ов, запpошенных этим модемом
  • Retrains Granted - счетчик retrain'ов, иницииpованных удаленным модемом (и удовлетвоpенных этим)
  • а так-же строку: speed - первое число = скорост приема, второе = скорость передачи.

Примерно так выглядит на USR Sporster и Моторола Premier взаимное изменение скоростей при редких помехах:

  • 19200 - 14400
  • 14400 - 14400
  • 12000 - 12000
  • 7200 - 9600
  • 9600 - 9600
  • 14400 - 9600

Где первая цифра, это скорость приема на Sporster'е, а вторая - скорость передачи. Данные при тесте не передавались и эти retrain'ы были вызваны исключительно DSP, а не сбоями кадра V42. Напомню - скорость заказывает себе приемник. Из этого можно сделать вывод, что Premier плавно понизил скорость и успокоился, а Sporster бегал как ненормальный. Для него - это типичное поведение при редких импульсных помехах.

Другие достоинства

USR: При связи на V.34 с не-USR легко может поставить скорость 2400/9600 и разорвать связь. Видел такое неоднократно - приходилось запрещать V.34. Для справки - на протоколах V.32, V.34 минимальная скорость составляет 4800. Откуда он брал 2400 - уму не постижимо!

И еще одно качество у USR - на высокоскоростных модемах (V.34, V.90) очень плохо работают медленные протоколы (V.22 & etc). Может это и пустяк, но иногда они нужны и тогда появляются большие проблемы, например - для удаленного программирования станций, да и не у всех есть даже V32 ;)

Про функции FAX'а можно сказать только, что в модемах USR FAX есть, но пользоваться им не рекомендую. На моем Courier'е FAX вообще не отождествлялся, а Sporster - очень плохо. Если вал нужен именно FAX-модем, то проще взять дешевый модем на chipset'е Rocwell.

Второе бесплатное приложение - UTR (Unalble to Retrain) - не смог сделать retrain. Очень часто после нескольких попыток настроить связь (retrain) бросает линию с этой диагностикой. И это весьма незначительная часть грубых ошибок в firmware модемов USR. И вообще, мне иногда кажется, что Courier и Sporster делали не просто разные люди, а даже в разных странах - настолько отличается продуманность Courier'а с идиотизмом Sporster'а.

Моторола: патологически не ловит BUSY. И, как уже говорил, у Моторолы достаточно консервативная стратегия выбора скорости, что является большим достоинством, особенно при редких помехах.

Моторола Premier - очень качественный FAX - он единственный (насколько я знаю) умеет "на ходу" исправлять ошибки в принимаемом факсе, чего вообще не умеют делать модемы USR. Недостаток - слишком дорог и не будет V.90 - больше не поддерживаются Моторолой.

Моторола SM56: SoftModem, скорость до 56K (V. 90). Драйвер имеет системное окно, где показывается текущая скорость соединения. FAX не проверял, но хуже USR не будет - это невозможно. Имеется драйвер как под Windows 9x и под Windows NT 4.0.

В SM56 очень много мелких и очень неприятных ошибок, но они не столь фатальны, как в Sporster'е.

Например:

  • системное окно "теряет" модем.
  • если поставить ограничение снизу и первая же попытка установления связи удалась на меньшей скорости, то модем отваливает со "странной" диагностикой "no ansfer"...
  • функция AT+MS не работает, а это особенно жаль! Она позволяет устанавливать отдельно границы на скорость приема и скорость передачи. Т.о. можно ограничить скорость передачи на 9600 (а больше и не надо для получения информации) и тот модем больше не будет гнать retrain'ы! Для приема данных из интернета вполне достаточен передающий канал со скоростью 9600, т.к. по нему отправляются только запросы на получение информации и подтверждение приема.

SkyRocket - полный аналог Sporster'а за исключением старательно испорченной аналоговой схемы. При необходимости, схему достаточно просто привести к оригиналу.

На чем исследовалось

Модемы:

  • USR Sporster 33600int на TMS
  • Sky Rocket 33600int
  • USR Courier 21600ext
  • Motorola Premier 33600ext
  • Motorola SM56 - V90int voice

Компьютер:

  • Mainboard ASUS P2B v1.02, BIOS v.1.08
  • процессор - Celeron300A ->450
  • RAM - 64-192Mb PC66, PC100

Дополнительная информация о используемых модемах

USR Sporster 33600int - установлен мерзкий трансформатор

SkyRocket - является (почти) точной копией USR Sporster 33600int как по электрическим характеристикам, так и по характеру поведения на линии. Внешнее отличие - слегка переразведенная плата и отсутствие DIP переключателей (что является положительным качеством).

К отрицательным качествам (и это уже не недостатки) относится плохая разводка (большой уровень шума) и применение некачественных комплектующих. Мой модем отказывался работать, если напряжение падало ниже 4.95V или становилось жарко. Даже установка радиатора на chip DSP только частично решило проблему. Еще - завышено усиление -> прощай BUSY.

USR Courier 21600ext - это тот самый модем, в который делался Upgrade Sporster'ов 14400. Недостаток - как и у всех Courier'ов сильно задрано усиление и патологически не ловится BUSY.

Motorola Premier 33600ext - очень качественный модем, но слишком дорогой. Даже сейчас стоит больше 200$.

Motorola SM56 - нормальная рабочая лошадка, хоть и имеет много ошибок и недоработок. Используется сейчас. Premier был до этого, но помер ("помогли" - перешили с ошибкой) - ремонт бы вышел дороже нового.

Рекомендации

Если у Вас плохая линия (с треском и редкими помехами), то можете поставить ограничение скорости сверху. Тогда модем не будет зря дергаться вверх. За это придется платить вынужденной потерей скорости, но в результате можно получить больше данных, чем без этого ограничения (уменьшается количество retrain'ов).

Меньше 9600 ставить бесполезно - связь уже невозможна. Ограничение скорости снизу так же является положительным фактором. Меньше 7200 - бесполезно.

Для USR список скоростей можно узнать по команде AT&$, а AT$ и ATS$ вызывают общий help.

Для Моторолы можете попробовать ограничить только скорость передачи по AT+MS - тот модем будет лучше себя чувствовать и количество retrain'ов уменьшится.

Установить фильтр на линию.

Произвести подстройку (перепаивание) аналоговой схемы модема. Актуально для USR.

Заключение

Из моего поля зрения выпали модемы на chip'е LUCENT (AT&T). По многочисленным откликам людей, которым я доверяю, это очень хорошие модемы. Если расставлять по местам, то 1 место я бы присвоил модемам на chip'ах Motorola и LUCENT, второе место USR Courier, 3 место - всем остальным. Не могу хоть как-то поделить места среди глюкавых модемов .... но это мое, субъективное, мнение.

Про SM56 - это был куплен AVAKS Porshe 5614 MHS - но AVAKS только клеит свои лейблы на китайские платы от Моторолы, ничего не вкладывают и накручивают цену в 2 раза. Я не могу рекомендовать эту покупку. Поищите его где-либо еще.

В тексте статьи я умышленно говорил о SM56, а не о AVAKS - т.к. даже драйверы с AVAKS'а можно сгрузить только двухмесячной давности, а про техническую поддержку я лучше умолчу. Если интересно, то почитайте конференцию и специально обратите внимание на ответы AVAKS-SERVICE. К сожалению, SM56 это единственный модем, который "делает" Моторола.

Полезные ссылки:

Если у Вас есть вопросы, то прошу обращаться на конференцию, там Вам помогут!

Удачного коннекта!

Когда статья была уже написана, мне к руки случайно попался июньский номер "Мир ПК" (#6/99) с обзором модемов. Я был в шоке - по ним выходило, что лучший модем для плохих линий - это USR Courier. Но это противоречит всему, что я знаю... Стал разбираться и, конечно, нашел причину - они очень творчески подошли к понятию "плохая линия". Небольшая цитата "Импульсные помехи ..... их основной характеристикой принято считать периодичность возникновения, зная которую можно определить процент переданных испорченных блоков от от их общего количества." Т.о. тот факт, что на плохой линии помехи значительно сильнее по амплитуде - в расчет не принимается?!? Причем, сам уровень помех установлен с удивительной тщательностью - Courier еще держится, а все нормальные модемы уже снизили скорость. А вот если бы еще, ну хоть на пару децибел, побольше, так Courier отвалился бы в постоянный retrain. Кстати, об этом говорят и тесты, проведенные теми-же Analytic TelecomSystems уже достаточно давно. Я не хочу сказать, что та статья "заказная", но ...

Извините, нет слов.

Вопросы, комментариии и дополнения напрявляйте в редакцию iXBT.
Источник iXBT.

:: назад