Библиотека сайта rus-linux.net
21. Приложение А: Принципы работы аналоговых модемов (технические) (незавершенное)
21.1 Модуляция
Введение
В этой части описываются методы модуляции, используемые в обычных аналоговых модемах. Два других типа модемов, кабельные и ADSL, используют те же методы, но у них немного посложнее: свой частотный спектр они разделяют на множество каналов и пр. =) У кабельных модемов один кабель используется сразу несколькими модемами. В данном HOWTO не рассматриваются эти дополнительные аспекты кабельных и ADSL модемов.
Модуляция -- это преобразование цифрового сигнала, представляющего двоичный код (0 или 1), в аналоговый сигнал, навроде синусоиды. Модулированный сигнал представляет собой видоизмененную в соответствии с передаваемой информацией синусоиду "несущего" сигнала. Сама по себе несущая синусоида, неизменяемая ни по частоте, ни по амплитуде, не передает никакой информации (разве только сообщает о своем присутствии). Чтобы осуществить передачу информации, мы видоизменяем (модулируем) эту несущую. Есть 3 основных вида модуляции: частотная, амплитудная и фазовая. Рассмотрим их по порядку.
Частотная модуляция
Простейшим методом модуляции является частотная модуляция. Частота -- это количество периодов синусоиды в секунду, т.е. сколько раз за секунду синусоида повторяет свою форму (столько же раз она, соответственно, достигает своего максимального значения). Для обозначения "количества периодов в секунду" используется слово "Герц" (сокращенно Гц), т.е. частота измеряется в герцах.
Простой пример частотной модуляции -- это когда одна частота соответствует двоичному 0, а другая -- двоичной 1. В некоторых старых 300-бодовых модемах 1070 Гц означали двоичный 0, а 1270 Гц -- двоичную 1. Этот способ также называется "частотной манипуляцией" ("frequency shift keying"). Вместо двух значений частот можно использовать несколько, что позволит передавать большее количество информации. Если у нас будет 4 различных частоты (назовем их A, B, C и D), то каждой частоте можно будет сопоставить пару битов. Например, для 00 использовать частоту A, для 01 -- B, для 10 -- C, для 11 -- D. Подобным образом, используя 8 различных частот, можно каждым изменением частоты передавать уже 3 бита. Закономерность такая: удваивая число частот, мы увеличиваем количество бит, соответствующих каждой частоте, на 1.
Амплитудная модуляция
Поняв, как биты представляются частотой в частотной модуляции, понять амплитудную и фазовую модуляции будет проще :) В амплитудной модуляции, как следует из названия, изменяется амплитуда (величина напряжения) синусоиды по аналогии с изменением частоты в частотной модуляции. В простом случае могут быть только два уровня амплитуды: одному соответствует нулевой бит, а другому -- единичный. Как и в случае частотной модуляции, большее число уровней позволит передавать большее число бит за каждое изменение амплитуды.
Фазовая модуляция
Чтобы изменить фазу синусоиды, надо в определенный момент времени остановить передачу "старой" синусоиды и в этот же момент начать передавать "новую" синусоиду с такой же частотой и амплитудой. Если передача "новой" синусоиды начнется с того же уровня напряжения, на котором остановилась "старая" (и с тем же уклоном), то никакого изменения фазы не будет (вообще, не будет заметно никакого изменения). Но вот если "новая" синусоида начнется с другой точки, то в этот момент времени будет заметен скачок напряжения (на картинках объяснять проще :) -- прим. перев.). Это и есть сдвиг по фазе, который измеряется в градусах. Фазовый сдвиг на 0 градусов (или, что равнозначно, на 360 градусов) ничего не изменяет, в то время как сдвиг на 180 градусов изменяет напряжение (и уклон) на прямо противоположное. Можно сказать, что при фазовом сдвиге на 180 градусов синусоида перескакивает через полупериод (как раз соответствующий 180 градусам). Естественно, перескакивать можно и через 90 градусов, и через 135, и через 225 и т.д. Чем больше число используемых фазовых сдвигов, тем больше битов можно сопоставить каждому сдвигу -- все то же самое, что и в амплитудной и частотной модуляциях :)
Комбинированная модуляция
Вместо того, чтобы использовать частотную, амплитудную или фазовую модуляцию по отдельности, мы можем скомбинировать их. Пусть у нас есть 256 различных частот, с помощью которых мы за каждое изменение частоты можем передавать один байт (8 бит; 2 в степени 8 равно 256). Пусть также у нас есть 256 различных амплитуд, также позволяющих за раз передавать один байт. Наконец, пусть у нас есть 256 возможных фазовых сдвигов :) Тогда, если одновременно изменять три параметра: частоту, амплитуду и фазу, можно за один раз передать сразу 3 байта :)
Правда, ни в одном из используемых сегодня методов модуляции так не делается :) -- детектирование (демодулирование) изменений всех 3-х параметров занимает относительно долгое время. Но основной проблемой такого метода является то, что частые сдвиги фазы могут детектироваться как изменения частоты, а не фазы.
Дабы избежать данного затруднения, можно изменять только фазу и амплитуду (а частоту не менять). Такой способ называется амплитудно-фазовой модуляцией. Также его называют квадратурная амплитудная модуляция (КАМ), т.к. в ее ранних версиях было только 4 значения фазы (квадратуры). Данный метод используется в протоколах со скоростями 14.4k, 28.8k и 33.6k (кбит/с). В модемах 56k КАМ (амплитудно-фазовая модуляция) применяется только для исходящей передачи, от Вашего ПК. Но и в обратном направлении на плохой линии может произойти переход на КАМ. Таким образом, на сегодняшний день КАМ (амплитудно-фазовая модуляция) остается наиболее распространенным методом модуляции, используемом на обычных телефонных линиях.
21.2 Модемы 56k (V.90, V.92)
Метод "модуляции", применяемые при скоростях свыше 33.6k, совсем не похож на обычную амплитудно-фазовую модуляцию, используемую при 33.6k и ниже. Поскольку обычные телефонные звонки преобразуются на АТС в цифровые сигналы, то скорость передачи данных через обычную телефонную линию максимально может равняться скорости, с которой эти цифровые сигналы передаются внутри сети телефонной компании. Значение этой скорости близко к 64 кбит/с (64k). Она меньше 64k из-за того, что некоторые биты "крадутся" при передаче. Если телефонная компания знает, что линия используется не для передачи голоса, то биты могут и не "красться". Мы рассмотрим случай, когда скорость равняется 64k, а потом объясним, почему реальная скорость ниже (56k или еще меньше, обычно значительно меньше).
Итак, 64 кбит/с -- максимально возможная скорость (при отсутствии сжатия данных) для обычного телефонного звонка внутри сети телефонной компании, рассчитанной на передачу человеческого голоса в цифровом кодировании. Чтобы скорость была 64 кбит/с, модем должен либо иметь прямой доступ к внутренней цифровой сети телефонной компании, либо уметь точно определять цифровой сигнал, который представляет полученный аналоговый сигнал (и наоборот). Последняя задача почти невыполнима (получается слишком много ошибок), если у обоих сторон (и у вызывающей, и у принимающей) "аналоговый интерфейс" с сетью телефонной компании. Но если с одной стороны будет "цифровой интерфейс", то такое вполне возможно (в одном направлении в случае V.90, и в обоих направлениях в случае V.92). Таким образом, если у Вашего провайдера "цифровой интерфейс" с телефонной сетью, то он может отправить Вашему ПК цифровой сигнал. Этот цифровой сигнал будет преобразован в аналоговый на обслуживающей Вас АТС (находящейся, возможно, рядом с Вашим домом). После этого у Вашего модема будет задача попытаться точно вычислить первоначальный цифровой сигнал по полученному аналоговому сигналу. Если он может это сделать, то в данном направлении возможна передача на скорости 64 кбит/с (скорости, с которой передается цифровой сигнал по сети телефонной компании).
Каким же образом производится цифровое кодирование аналоговых сигналов для передачи по сети телефонной компании? Оно осуществляется путем дискретизации амплитуды аналогового сигнала со скоростью 8000 отсчетов в секунду. Каждый полученный отсчет преобразуется (квантуется) в 8-битный байт. (Примечание: 8 x 8000 = 64k) Это называется импульсно-кодовой модуляцией (ИКМ; Pulse Code Modulation, PCM). Полученные байты отсылаются по внутренней цифровой сети телефонной компании, в которой по одной линии сразу передается много телефонных звонков по схеме временного разделения доступа, известной как "мультиплексирование с временным разделением". В итоге на Вашей АТС происходит восстановление ("демультиплексирование") исходного цифрового сигнала, полученного в результате импульсно-кодовой модуляции, и тут же его обратное преобразование в аналоговую форму. В таком виде сигнал поступает к Вам домой. Указанное аналого-цифровое преобразование (и обратное) выполняется на АТС устройством с названием "кодек" (кодер/декодер). Каждый 8-битный байт импульсно-кодовой модуляции в ходе обратного преобразования воссоздает определенную амплитуду аналогового сигнала. У Вашего модема стоит задача по данной амплитуде определить данный 8-битный байт.
Первоначально данная задача модема называлась "перекодировка амплитуды" ("modulus conversion"). Сейчас же ее чаще называют "как бы PCM", потому что по существу она представляет собой PCM-кодирование/декодирование, но с дополнительным требованием: отсчеты амплитуды во времени должны производиться модемом точно в соответствии с кодеком на АТС (преобразующим начальный цифровой код в аналоговый сигнал).
Чтобы правильно определить первоначальный цифровой код (байты), пришедший на АТС и преобразованный там в амплитуду аналогового сигнала, передаваемого в телефонную линию, модему надо производить отсчеты этой амплитуды синхронно с АТС. Чтобы это происходило, из имеющегося в телефонной линии сигнала 4 кГц создается тактовый синхронизирующий сигнал 8 кГц (??). Чтобы передать по телефонной линии в дом/офис 8000 (8k) амплитуд в секунду, АТС производит "синусоподобный" сигнал с частотой 4 кГц - предполагается, что каждая вторая амплитуда имеет противоположную полярность (т.е. получается, что за один период можно передать две амплитуды -- перев. честно сознается, что не до конца понимает переводимое, и просит помочь разобраться :)). Каждая амплитуда представляет 8-битный символ (8 бит х 2 амплитуды х 4000 периодов/сек = 8 бит х 8000 амплитуд/сек = 64000 бит/сек), поэтому отсчеты амплитуд называют "символьной выборкой" ("symbol timing") (??). Задача модема - убедиться, что его внутренний генератор 8 кГц работает на частоте, ровно в два раза превышающей частоту сигнала 4 кГц (которая может слегка отклоняться от 4 кГц), и что эта частота синхронизирована с частотой кодека АТС. На самом деле в модемах могут использоваться генераторы с более высокими частотами (которые потом делятся), а за раз может производиться более одного отсчета амплитуды. Если Вам известно, как происходит данная синхронизация частот, сообщите мне, пожалуйста (если данной информации нет в самой последней версии этого HOWTO).
Кодирование амплитуды в ИКМ (PCM) изначально не линейно. При низких значениях амплитуды аналогового сигнала, используемого для передачи в ИКМ ("несущей"), увеличение на 1 значения исходного байта (который требуется передать) отражается в значительно меньшем изменении (увеличении, дельте) амплитуды, чем при высоких значениях (?). Получается, что для низких значений амплитуд трудно найти отличие между соседними значениями байтов. Чтобы устранить данную трудность (для модемов 56k) определенные PCM-коды, соответствующие очень низким значениям амплитуды, не используются. Это дает бОльшую величину дельты между возможными значениями амплитуд и делает проще их правильное детектирование принимающим модемом. Таким образом, в протоколах V.90 и V.92 половина уровней амплитуд не используется (в основном направлении (upstream), от АТС к Вашему модему). Это равноценно тому, что каждый символ (определенный уровень амплитуды) представляется 7-ю битами вместо 8-и. Вот откуда берется 56k: 7 бит/символ х 8k символов/сек = 56k бит/сек. Конечно, на самом деле каждое значение амплитуды (символ) получается из 8 бит, но из возможных 256 значений байта (2 в 8-ой степени) используется только 128. Преобразование этих 128 8-битных байтов в 128 7-битных байтов происходит в соответствии с кодовой таблицей. Данное преобразование -- это не просто "отбрасывание" последнего бита. Таким образом, чтобы послать 7 нормальных байтов (8-битных) потребуется 8 таких ("урезанных") байтов.
В действительности все еще более запутанно, чем здесь описано :) Если условия в линии далеки от идеальных, то используется еще меньше уровней амплитуд (символов), скорость при этом, естественно, также меньше 56k (это же можно сказать и о передаче в направлении от Вашего модема к АТС (upstream) в протоколе V.92). Помимо этого в США из-за правительственных норм, запрещающих высокие уровни мощности в телефонных линиях, не могут использоваться некоторые высокие уровни амплитуды, что ограничивает максимально достижимую скорость в направлении от АТС к Вашему модему "56k" всего лишь значением 53.3k (актуально ли это для России? -- вопрос перев.).
Надо заметить, что цифровая часть телефонной сети является двунаправленной: для телефонного звонка используется два канала, по одному для каждого направления. В V.90 передача со скоростью 56k возможно только в одном из этих направлений: от Интернет-провайдера к Вашему ПК (его называют "downstream", основное направление). В другом направлении (upstream, из Вашего дома/офиса к провайдеру) используется стандартная амплитудно-фазовая модуляция с максимально возможной скоростью 36,6 кбит/с (а не 53,3 кбит/с). В протоколе V.92 в данном направлении (upstream) используется ИКМ со скоростями вплоть до 48 кбит/с. Аналоговый участок телефонной сети, расположеный между Вашим домом/офисом и АТС ("последняя миля"), никогда не предполагался быть двунаправленным, поскольку это всего лишь одна витая пара. Но благодаря появлению замысловатых методов подавления (компенсации?) стало возможным осуществлять одновременную передачу данных по двум направлениям в одной линии, как описано в следующем подразделе. В то же время, как утверждается, почти невозможно получить максимальную пропускную способность по двум направлениям одновременно из-за имеющихся ограничений для двунаправленного потока в одной линии.
21.3 Полный дуплекс
Современные модемы способны передавать и принимать сигналы одновременно. Это называется "двунаправленной передачей" или "полным дуплексом". Раньше одна частота использовалась для передачи, а другая для приема. Сейчас посылка и прием осуществляются на одной частоте. Понять, как это работает, не так просто.
Подавляющее большинство "магистральных линий" телефонных сетей являются цифровыми, в которых для каждого телефонного соединения используется два канала: то, что говорите Вы, идет по одному цифровому каналу, а то, что говорит Ваш собеседник, идет по другому (обратному) цифровому каналу. К сожалению, часть телефонной сети, идущая к жилым домам (и к большинству офисов), представляет собой один аналоговый канал. Если бы модемы подключались непосредственно к цифровой части телефонной сети, то для двунаправленной связи (одновременный прием и передача) не было бы никаких проблем, потому что были бы доступны два канала.
Но последнюю часть своего пути сигнал проходит только по одной линии. Как в таком случае может осуществляться одновременная двунаправленная связь? Предположим, что Ваш модем принимает сигнал от другого модема и ничего не передает. Никаких проблем не возникает. Но если бы Ваш модем при получении начал осуществлять передачу, то это заглушило бы принимаемый сигнал. Если бы передаваемый сигнал на данном конце линии представлял собой "сплошное" напряжение (в виде волны), то поступающий с другого конца линии сигналв данной точке отсутствовал бы (??).
Но передатчик имеет "внутренний импеданс" ("внутреннее сопротивление"), и передаваемый сигнал на данном конце линии не является "сплошным" (достаточно сильным), чтобы полностью заглушить поступающий сигнал. Таким образом, малая часть напряжения на конце линии все же приходится на принимаемый сигнал, тогда как большую часть занимает более сильный передаваемый сигнал. Все, что теперь нужно, -- это отфильтровать более сильный передаваемый сигнал; то, что останется, и будет являться поступающим с другого конца линии сигналом, нужным нам. Чтобы так сделать, надо взять исходный передаваемый сигнал непосредственно с выхода передатчика (до того, как он поступает в линию), усилить его в определенное количество раз и затем вычесть его из общего сигнала на конце линии. Указанные действия производятся в цепях приемника.
21.4 Эхоподавление
Проходя по линии, аналоговый сигнал может частично отражаться от неоднородностей в ней. Поскольку по этой же линии идет сигнал противоположного направления, то такие отражения приведут к искажению принимаемых данных. Решением данной проблемы является посылка время от времени тренировочных сигналов для определения отражающих характеристик данной линии. Это позволит предсказывать отражения, которые будут возникать при передаче любого сигнала. Предсказанные таким образом отражения (эхосигнал) затем вычитаются из принимаемого сигнала, тем самым происходит их подавление.
Следующий Предыдущий Содержание