Книга Компьютерные сети. 6-е изд. - Эндрю Таненбаум
Шрифт:
Интервал:
Закладка:
Эффективность полосы пропускания
При использовании NRZ сигнал может перескакивать между положительным и отрицательным уровнями чуть ли не каждые 2 бита (когда единицы и нули меняют друг друга). Поэтому для скорости передачи данных в B бит/с необходима полоса пропускания минимум B/2 Гц, как следует из уравнения Найквиста (2.3). Это фундаментальное ограничение, так что без дополнительной полосы пропускания NRZ не способна обеспечить большую скорость. Полоса пропускания — зачастую ограниченный ресурс, даже в случае проводных каналов. Чем выше частота сигнала, тем сильнее его затухание и ниже эффективность. Кроме того, высокочастотные сигналы требуют более быстрой электроники.
Для более эффективного использования ограниченной полосы пропускания повышается число уровней сигнала (больше двух). Например, при четырех уровнях вольтажа можно отправлять два бита сразу в виде одного символа. Такая архитектура вполне работоспособна, если поступающий сигнал достаточно мощный для различения всех четырех уровней. Скорость изменения сигнала составляет половину битрейта, так что требуется меньшая полоса пропускания.
Скорость, с которой меняется сигнал, — это скорость передачи символов (symbol rate). Необходимо отличать ее от скорости передачи в битах, или битрейта (bit rate). Битрейт равен скорости передачи символов, умноженной на количество битов в символе. Ранее скорость передачи символов называлась скоростью передачи в бодах, или бодрейтом (baud rate). Это понятие применялось в отношении работы телефонных модемов, передающих цифровые данные по телефонным линиям. В литературе термины «битрейт» и «бодрейт» часто путают.
Обратите внимание, что количество уровней сигнала не обязательно должно равняться степени двойки. Во многих случаях это не так, при этом часть уровней используется для защиты от ошибок и упрощения архитектуры приемника.
Восстановление тактового (синхронизационного) сигнала
В любой схеме преобразования битов в символы приемник должен знать, где кончается один символ и начинается следующий, чтобы правильно декодировать биты. В NRZ символы представляют собой уровни напряжения, поэтому при длинной последовательности нулей или единиц сигнал остается неизменным. Рано или поздно становится сложно различать биты (ведь 15 нулей очень похожи на 16), разве что ваш синхросигнал чрезвычайно точен.
Точный синхросигнал позволяет решить проблему, но это слишком затратно для серийного производства. Учтите, что речь идет о синхронизации битов в каналах связи, работающих на скорости во много мегабит в секунду. Отклонение тактового сигнала более чем на долю микросекунды недопустимо даже на максимально длинном отрезке. Такое решение подходит только для медленных каналов связи или коротких сообщений.
Одна из возможных стратегий — отправка на приемник отдельного синхросигнала. Еще одна тактовая линия не проблема для компьютерных шин или коротких кабелей, и так содержащих множество параллельных линий связи. Но в большинстве сетевых подключений она станет напрасной тратой ресурсов — по дополнительной линии разумнее отправлять данные. Чтобы обойтись без нее, можно воспользоваться хитростью: соединить синхросигнал с информационным, применив к ним операцию XOR («исключающее ИЛИ»). Результат представлен на илл. 2.14 (г). Уровень тактового сигнала меняется при каждой передаче бита, поэтому тактовый генератор должен работать со скоростью, вдвое превышающей битрейт. Логический «0» кодируется (с помощью XOR) тактовым переходом с низкого уровня на высокий, то есть просто самим тактовым сигналом. А при операции XOR с высоким уровнем он меняется на противоположный и происходит тактовый переход с высокого уровня на низкий. Этот переход соответствует логической «1». Такая схема, применявшаяся в классических сетях Ethernet, называется манчестерским кодированием (Manchester encoding).
Недостаток этой схемы в том, что из-за тактового генератора полоса пропускания должна быть в два раза больше по сравнению с NRZ (а мы помним, что полоса пропускания — ценный ресурс). Еще одна стратегия — закодировать данные, обеспечив достаточное количество тактовых переходов в сигнале. Ведь у схемы NRZ возникают проблемы с восстановлением тактового сигнала только в случае длинных цепочек нулей и единиц. При частых тактовых переходах синхронизировать приемник с поступающим потоком символов будет несложно.
Для начала можно упростить задачу, закодировав «1» в виде тактового перехода, а «0» — в виде его отсутствия, либо наоборот. Это вариация NRZ — инвертированный NRZ (Non-Return-to-Zero Inverted, NRZI). Пример NRZI приведен на илл. 2.14 (в). Он используется в популярном стандарте подключения периферийных устройств — USB (Universal Serial Bus, универсальная последовательная шина). При такой схеме длинные последовательности единиц не проблема.
Остается решить вопрос с длинными цепочками нулей. Телефонная компания могла бы потребовать от абонента не отправлять слишком много нулей подряд. В США старые цифровые телефонные каналы T1 (мы обсудим их далее) имели ограничение в 15 последовательных нулей. Чтобы действительно решить эту проблему, можно разбить очереди нулей. Для этого небольшие группы передаваемых битов сопоставляются так, чтобы цепочки нулей были представлены в виде чуть более длинных паттернов, в которых не так много последовательных нулей.
Популярный код, предназначенный для этой цели, — 4B/5B. Каждой группе из 4 бит соответствует 5-битный паттерн на основе фиксированной таблицы преобразования. 5-битные паттерны подобраны таким образом, что последовательности из более чем 3 нулей невозможны. Таблица соответствий приведена на илл. 2.15. Избыточность схемы составляет 25 % — это намного лучше,
Данные (4B)
Кодовое сочетание (5B)
Данные (4B)
Кодовое сочетание (5B)
0000
11110
1000
10010
0001
01001
1001
10011
0010
10100
1010
10110
0011
10101
1011
10111
0100
01010
1100
11010
0101
01011
1101
11011
0110
01110
1110
11100
0111
01111
1111
11101
Илл. 2.15. Соответствие 4B/5B
чем в случае с манчестерским кодированием (100 %). А поскольку имеется 16 входных комбинаций битов и 32 выходных, часть выходных комбинаций не используется. Даже если отбросить сочетания со слишком длинными цепочками нулей, их останется немало. В качестве бонуса можно использовать эти коды в виде управляющих сигналов физического уровня. Например, иногда «11111» обозначает свободную линию, а «11000» — начало фрейма.
Еще один метод — скремблирование (scrambling) — состоит в видимой рандомизации данных. При этом подходе вероятность появления частых тактовых переходов очень высока. В основе работы скремблера лежит операция XOR с псевдослучайной последовательностью, которая применяется к данным до их передачи. В результате данные становятся столь же случайными, как эта последовательность (при этом они не зависят от нее). Для восстановления настоящих данных приемник применяет к входящему потоку XOR с той же псевдослучайной последовательностью. Чтобы все сработало, создание последовательности должно быть очень простым. Обычно ее задают в виде начального значения простого генератора случайных чисел.
Метод скремблирования хорош тем, что не требует избыточной полосы пропускания и дополнительного времени.