Как работают модемы

Модем представляет собой устройство, имеющее, с внешней точки зрения, цифровой интерфейс c компьютером (обычно последовательный порт RS-232) и аналоговый интерфейс с каналом связи (телефонной линией) — разъем для телефонного кабеля (RJ-11). "Внутри" модем представляет собой микрокомпьютер с достаточно мощным процессором (иногда несколькими), постоянной и оперативной памятью, и аналоговой частью, ответственной за сопряжение модема с телефонной сетью — устройство набора номера, усилитель, АЦП и ЦАП — Аналого-Цифровой и Цифро-Аналоговый Преобразователи, ответственные за преобразование сигнала из аналоговой формы (непрерывный сигнал-напряжение) в цифровую (отдельные отсчеты сигнала, дискретизованные по времени и квантованные по напряжению), и наоборот, соответственно.
Практически все современные модемы производят обработку информации в цифровой форме, без сколь-либо сложной аналоговой предобработки, так как это позволяет добиться высокой стабильности и в значительной степени упростить разработку и анализ алгоритмов. При этом обычно частота дискретизации (скорость следования отдельных отсчетов оцифрованного сигнала) находится в пределах 7-12 тысяч отсчетов в секунду (килоГерц, kHz). Теоретически, частота дискретизации должна быть как минимум в два раза выше максимальной частоты сигнала, для того, чтобы сигнал был представим отдельными отсчетами без потерь. Количество уровней квантования для ЦАП и АЦП современных модемов достигает десятков тысяч. Обычно, поскольку с "цифровой стороны" ЦАП и АЦП пишутся или читаются в виде числа, говорят о количестве разрядов у ЦАП/АЦП, т.е., количестве разрядов двоичного числа, требуемого для представления всех возможных уровней, например, 16-разрядный АЦП может распознавать 65536 уровней, обозначаемых числами от -32768 до +32767.
Давайте посмотрим на это устройство вот с какой стороны: понятно, что его задача — пересылать информацию с одного компьютера на другой. В случае работы в Интернете — с компьютера клиента на компьютер провайдера, и наоборот. Дабы упростить себе жизнь, будем пока считать, что модем выполняет всего одну, примитивную функцию — модулятора-демодулятора цифрового сигнала (кстати, именно отсюда и взялось сокращение — модем). Будем считать, что он уже набрал номер, установил соединение, начал передавать и принимать данные, и нам интересен пока лишь процесс, как байты информации идут от удаленной стороны к нам, и наоборот. Как же это происходит?
Рассмотрим подробнее, как же модем кодирует сигнал и как помехи этому мешают. Наиболее популярные ныне протоколы передачи данных - V.34 и V.32 — используют амплитудно-фазовую модуляцию сигнала. Базовый сигнал — несущая синусоида определенной протоколом частоты при передаче модулируется, т.е. подвергаются изменению ее амплитуда, то есть уровень, и фаза (сдвиг фазы сигнала относительно немодулированной "исходной" синусоиды). При этом состояния сигнала, характеризующиеся неизменной амплитудой и фазой, последовательно сменяют друг друга. Каждое такое состояние кодирует небольшое количество битов данных и называется одним символом (не путать с буквами и цифрами). Скорость, с которой символы сменяют друг друга, называется символьной скоростью (Symbol rate в статистике модема). Она определяется протоколом, для V.32 она всегда равна 2400 символов в секунду, для V.34 может достигать 3429 символов в секунду. Таким образом, у нас уже два параметра — символьная скорость и частота несущей.
Когда один символ сменяется другим, происходит изменение (увеличение или уменьшение) амплитуды и сдвиг фазы ("вперед" или "назад") сигнала. Мгновенно ни амплитуда, ни фаза измениться не могут — это потребовало бы бесконечной скорости изменения сигнала (напряжения и тока) в канале, т.е. неограниченной полосы пропускания канала. Обычно же требуется передать максимум информации, заняв отведенный диапазон частот. Минимальный диапазон частот, требующийся для передачи сигнала, в котором фаза меняется максимально быстро (худший случай с точки зрения занятия полосы частот) вперед или назад, то есть, на половину периода несущей за один символьный интервал, в точности равен символьной скорости в Гц. Например, если фаза сигнала должна сдвигаться вперед на половину периода несущей за время передачи одного символа, частота сигнала в ходе этого перехода как минимум должна достигать ((исходной частоты несущей) + (символьная скорость)/2). В противном случае будет накапливаться "отставание" фазы сигнала от требуемой.
Для того, чтобы "вписать" сигнал в этот минимально необходимый диапазон частот, переходы между символами сглаживаются с тем, чтобы скорость изменения сигнала (и его частота, соответственно) не превышала это ограничение. Например, если требуется существенный сдвиг фазы "вперед", этот сдвиг происходит не мгновенно, а постепенно. В течение этого переходного периода частота сигнала в канале будет выше исходной частоты несущей (слышимый тон — выше), поскольку для сдвига фазы вперед требуется более быстрое изменение сигнала. И наоборот, для сдвига фазы назад требуется замедление изменения сигнала, и слышимый ухом тон — ниже. А поскольку такие переходы происходят часто (с символьной скоростью, т.е., более 2000 раз в секунду), и требуемые величины изменения фазы сигнала достаточно случайны, в результате, когда модем передает данные, мы слышим не ровный тон, или последовательность тонов, а "шипение", т.е., в среднем все частоты в рабочей полосе используются одинаково часто. Если рассмотреть спектр сигнала за длительный период времени, он будет равномерным, с центром, совпадающим с частотой исходной несущей, простирающимся в ширину симметрично влево и вправо от центральной частоты несущей на полосы частот, равные половине символьной скорости.
Таким образом, для рассматриваемых протоколов ширина спектра сигнала равна символьной скорости.
Остановимся пока на этом, и посмотрим, что же предоставляет нам телефонная линия. А предоставляет она нам обязательство пропускать наши сигналы до удаленного абонента в полосе частот от 300 до 3400 герц, и, будем надеяться, без искажений. Очевидно, что модем должен выбрать такую несущую и такую символьную скорость, чтобы несущая поместилась ровно посередине между 300 и 3400, а символьная скорость была в точности равна 3400-300. Это — необходимое и достаточное условие для того, чтобы спектр сигнала модема ровно занял весь предоставляемый канал. Если он займет меньше, значит часть канала будет неиспользована, и модем сможет передать меньше информации, чем мог бы. Если он займет больше, то часть спектра будет обрезана и удаленный модем его не получит, а, стало быть, не получит и части передаваемой информации. Вообще, есть теоретический предел пропускной способности канала, который нельзя превысить никакими силами. Сколько бы мы ни старались, и как бы мы ни приспосабливали форму нашего сигнала к параметрам линии, мы не сможем передать информации больше этого теоретического предела. Таким образом, главная задача модема — так приспособиться к каналу, чтобы передать через него все, что канал может пропустить.
Продолжим теперь про модуляцию. К паре параметров сигнала — центральной частоте и ширине спектра (т.е. частоте несущей и символьной скорости) нам надо знать про третий определяющий параметр — назовем его глубиной модуляции. Хотя это не до конца правильный термин в данном применении, но сильно похож. Он говорит о том, сколько разных состояний может быть у передаваемого сигнала. Вспомним, что модем передает один символ (не букву!), какое-то время. А затем — другой символ. Символы отличаются друг от друга. Так сколько же всего может быть разных символов? Это зависит, главным образом, от того, сколько разных амплитуд и фаз мы можем передать в канал так, чтобы с противоположной стороны их еще не путали друг с другом. Иными словами, сколько градаций по амплитуде и фазе мы можем выбрать так, чтобы с той стороны они еще однозначно отличались. Как несложно посчитать, например 16 градаций по амплитуде и 16 по фазе дают 16*16=256 различных состояний сигнала, с помощью которых можно закодировать 8 битов информации. В этом случае при символьной скорости, например, в 1000 символов в секунду мы получим скорость передачи информации ровно 8000 битов в секунду. Если глубина модуляции меньше, то есть число состояний сигнала всего 32, к примеру, то мы получим 5 бит за символ, то есть 5 килобит в секунду. Если символьная скорость возрастет до 2000, это будет уже 10 килобит в секунду.
На протоколе V.32 каждый символ соответствует группе бит. При этом эта группа, очевидно, состоит из целого числа бит — от 2 до 6. А поскольку символьная скорость равняется 2400 символов в секунду, добавление очередного бита в группу (и увеличение количества используемых символов в два раза, соответственно), приводит к увеличению битовой скорости на 2400бит/с. Именно поэтому поддерживаемые V.32 скорости — от 4800 до 14400 бит/с с шагом в 2400. Протокол V.34 кодирует символы не по одному, а группами по 8 (так называемыми "кадрами отображения", mapping frames). При этом каждая группа имеет некоторые параметры (амплитудную огибающую), общие для всех 8 символов. За счет этого на один символ может приходиться "дробное" количество бит. Однако из соображений совместимости, список поддерживаемых битовых скоростей и на V.34 состоит из скоростей, кратных 2400, даже если символьная скорость выбрана не 2400, а большая. Например, известная Вам скорость 33600 бит/сек получается при передаче 79 бит на группу из 8 символов на символьной скорости 3429.
А теперь опять посмотрим на то, что нам предоставляет линия. С точки зрения увеличения числа состояний сигнала, она предоставляет нам параметр, именуемый динамическим диапазоном. То есть разницу между самым громким и самым тихим сигналом, который линия еще может пропустить без искажений. Сверху это обычно ограничивается перегрузочной способностью канала, а снизу — уровнем шумов канала. Иначе это еще называют соотношением сигнал/шум (SNR), то есть во сколько раз сигнал на приемной стороне громче шума, к нему примешиваемого. При этом помнят о том, что увеличение громкости сигнала сверх предела, допускаемого линией, невозможно.
И, наконец, еще раз про помехи. Все они сводятся к тому, что модем либо временно перестает различать сигнал, либо вовсе теряется точка привязки, то есть происходит так называемый срыв синхронизации, и модем уже не может без специальных процедур восстановления (retrain) нормально отделять ни символы друг от друга, ни понять, насколько фаза сигнала отличается от образцовой.
Теперь краткое резюме всего изложенного.
- Параметры канала (линии), предоставляемого нам, характеризуются центром и шириной полосы пропускания (в норме — 300-3400 герц), уровнем шумов и искажений, и максимальным уровнем сигнала, еще пропускаемого без заметных искажений. Сигнал/шум — это характеристика того, как сигнал прошел через канал, и что получилось на приемном конце.
- Параметры сигнала модема характеризуются центром и шириной спектра (частота несущей плюс и минус половина символьной скорости), и глубиной модуляции, то есть числом возможных градаций состояний сигнала.
- Параметры канала ограничивают в принципе скорость передачи информации с одной стороны, а модем работает тем лучше и тем быстрее ее передает, чем полнее он занимает канал, и чем ближе параметры генерируемого им сигнала совпадают с возможностями, предоставляемыми каналом.
- Кроме предыдущего пункта, важное значение имеют помехи: при прочих равных условиях, они вынуждают модем делать передаваемые символы более грубыми, и передавать их более длительное время, то есть снижать в результате скорость передачи информации.
- Запомните на будущее две простые формулы: 1. Символьная скорость умноженная на глубину модуляции есть битовая скорость. 2. Ширина канала, потребная для передачи сигнала, равна символьной скорости, при этом центр полосы пропускания канала равен частоте несущей.