Мы называем скорость, с которой сигнал изменяет уровень, символьной скоростью, чтобы отличить ее от понятия битрейт. Битрейт — скорость символа, умноженная на число битов в символе. Более старое название символьной скорости, особенно в контексте устройств, названных телефонными модемами, которые передают цифровые данные по телефонным линиям — бодрейт (скорость в бодах). В литературе термины битрейт и бодрейт часто путают.
Заметьте, что количество уровней сигнала не обязательно должно быть степенью двойки. Часто это не так, некоторые из уровней используются для защиты от ошибок и упрощения конструкции приемника.
Синхронизация
Для всех схем, которые кодируют биты в символы, приемник, чтобы правильно расшифровывать биты, должен знать, когда символ заканчивается и начинается следующий символ. С NRZ, в котором символы — просто уровни напряжения, несколько подряд нулей или единиц оставляют сигнал неизменным. Через некоторое время трудно отделить биты, поскольку 15 нулей очень напоминают 16 нулей, если у вас нет очень точных часов.
Точные часы помогли бы с этой проблемой, но они — дорогое решение для массового оборудования. Помните, мы распределяем биты во времени по линиям связи, которые работают на высоких скоростях (много мегабит в секунду), таким образом, часы должны были бы отклоняться меньше чем на долю микросекунды в течение долгой работы. Это могло бы быть разумно для медленных каналов или коротких сообщений, но это не общее решение.
Одна из стратегий состоит в том, чтобы послать в приемник отдельный сигнал часов. Отдельная линия для часов — это не сложно для компьютерных шин или коротких кабелей, в которых есть много параллельных линий, но это расточительно для большинства сетевых каналов: если бы у нас была еще одна линия, чтобы послать сигнал, то мы могли бы использовать ее, чтобы послать данные. Здесь следует исхитриться смешать сигнал часов с сигналом данных и объединить их с помощью «исключающего или» так, чтобы никакая дополнительная линия не была необходима. Результат показан на рис. 2.17, г. Часы выполняют передачу сигнала часов в каждый момент прохождения бита, таким образом, это работает на скорости два битрейта. Когда сигнал часов объединяется с уровнем 0, происходит переход низкий-к-высокому, который является просто часами. Этот переход — логический 0. Когда он объединяется с уровнем 1, инвертируется и происходит переход от высокого к низкому. Этот переход — логическая 1. Эту схему называют Манчестерским кодированием, она использовалась для классического Ethernet.
Недостаток Манчестерского кодирования в том, что из-за часов требуется вдвое большая полоса пропускания, чем для NRZ, а мы знаем, что эта полоса часто важна. Другая стратегия основана на идее, что мы должны кодировать данные, чтобы гарантировать, что в сигнале есть достаточно много переходов. Предположим, что у NRZ будут проблемы синхронизации только для долгих последовательностей нулей или единиц. Если переходы будут происходить часто, то приемнику будет легко остаться синхронизированным с поступающим потоком символов.
В качестве шага в правильном направлении, мы можем упростить ситуацию, кодируя 1 как переход и 0 как отсутствие перехода, или наоборот. Это кодирование называют NRZI (Без возвращения к нулю с инверсией). Пример показан на рис. 2.17, в. Популярный стандарт соединения компьютера с периферийными устройствами —
USB (Универсальная последовательная шина) — использует NRZI. В этом случае длинные последовательности единиц не вызывают проблему.
Конечно, длинные последовательности нулей все еще вызывают проблему, которую мы должны решить. Если бы мы были телефонной компанией, то могли бы просто потребовать, чтобы отправитель не передал слишком много нулей подряд. Более старые цифровые телефонные линии в США, названные линиями T1, действительно фактически требовали, чтобы по ним посылали не больше чем 15 последовательных нулей, чтобы работать правильно. Чтобы действительно решить проблему, мы можем разбить последовательности нулей, отображая небольшие группы битов, которые будут переданы так, чтобы группы с последовательным нулями были отображены на немного более длинные образцы, у которых нет слишком длинных последовательностей нулей.