Одна из стратегий состоит в том, чтобы послать в приемник отдельный сигнал часов. Отдельная линия для часов — это не сложно для компьютерных шин или коротких кабелей, в которых есть много параллельных линий, но это расточительно для большинства сетевых каналов: если бы у нас была еще одна линия, чтобы послать сигнал, то мы могли бы использовать ее, чтобы послать данные. Здесь следует исхитриться смешать сигнал часов с сигналом данных и объединить их с помощью «исключающего или» так, чтобы никакая дополнительная линия не была необходима. Результат показан на рис. 2.17, г. Часы выполняют передачу сигнала часов в каждый момент прохождения бита, таким образом, это работает на скорости два битрейта. Когда сигнал часов объединяется с уровнем 0, происходит переход низкий-к-высокому, который является просто часами. Этот переход — логический 0. Когда он объединяется с уровнем 1, инвертируется и происходит переход от высокого к низкому. Этот переход — логическая 1. Эту схему называют Манчестерским кодированием, она использовалась для классического Ethernet.
Недостаток Манчестерского кодирования в том, что из-за часов требуется вдвое большая полоса пропускания, чем для NRZ, а мы знаем, что эта полоса часто важна. Другая стратегия основана на идее, что мы должны кодировать данные, чтобы гарантировать, что в сигнале есть достаточно много переходов. Предположим, что у NRZ будут проблемы синхронизации только для долгих последовательностей нулей или единиц. Если переходы будут происходить часто, то приемнику будет легко остаться синхронизированным с поступающим потоком символов.
В качестве шага в правильном направлении, мы можем упростить ситуацию, кодируя 1 как переход и 0 как отсутствие перехода, или наоборот. Это кодирование называют NRZI( Без возвращения к нулю с инверсией). Пример показан на рис. 2.17, в. Популярный стандарт соединения компьютера с периферийными устройствами —
USB( Универсальная последовательная шина) — использует NRZI. В этом случае длинные последовательности единиц не вызывают проблему.
Конечно, длинные последовательности нулей все еще вызывают проблему, которую мы должны решить. Если бы мы были телефонной компанией, то могли бы просто потребовать, чтобы отправитель не передал слишком много нулей подряд. Более старые цифровые телефонные линии в США, названные линиями T1, действительно фактически требовали, чтобы по ним посылали не больше чем 15 последовательных нулей, чтобы работать правильно. Чтобы действительно решить проблему, мы можем разбить последовательности нулей, отображая небольшие группы битов, которые будут переданы так, чтобы группы с последовательным нулями были отображены на немного более длинные образцы, у которых нет слишком длинных последовательностей нулей.
Один из известных кодов для этого называется 4B/5B. Каждые 4 бита отображены в 5-битовый образец с заданной таблицей преобразования. Эти пять комбинаций двоичных разрядов выбраны так, чтобы никогда не встречались больше трех последовательных нулей. Отображение показано в табл. 2.4. Эта схема добавляет 25 % накладных расходов, что лучше чем 100 % при Манчестерском кодировании. Так как имеется 16 входных комбинаций и 32 выходных комбинации, некоторые из выходных комбинаций не используются. За вычетом комбинаций со слишком многими последовательными нулями остаются еще некоторые. В качестве награды мы можем использовать эти коды, не соответствующие данным, чтобы представить управляющие сигналы физического уровня. Например, иногда «11111» обозначает свободную линию, а «11000» обозначает начало фрейма.
Таблица 2.4.Отображение 4B/5B
Данные (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
Альтернативный подход, который должен заставить данные выглядеть случайными, известен как скремблирование. В этом случае, вероятно, что будут частые переходы. Скремблеробъединяет с помощью «исключающего или» данные с псевдослучайной последовательностью прежде, чем они будут переданы. Это смешивание делает данные столь же случайными, как псевдослучайная последовательность (предполагается, что они независимы от псевдослучайной последовательности). Приемник тогда применяет «исключающее или» к поступающим битам с той же самой псевдослучайной последовательностью, чтобы получить реальные данные. Для того чтобы это было практично, псевдослучайную последовательность должно быть легко создать. Обычно это доверяется простому генератору случайных чисел.
Читать дальше
Конец ознакомительного отрывка
Купить книгу