Передаваемая по линии связи информация обычно подвергается специальному кодированию, которое способствует более надежной передаче информации. Это приводит к дополнительным аппаратурным затратам на кодирование на передающем конце и декодирование на приемном конце и увеличивает стоимость адаптеров сети, но преимущества кодирования все же перевешивают.
Наиболее часто в локальных сетях используются следующие коды передачи информации (рис. 1.15).
Рис. 1.15. Наиболее распространенные коды передачи информации
NRZ (Non Return to Zero — без возврата к нулю) — простейший код, представляющий собой практически обычный цифровой сигнал (правда, может быть преобразована на обратную полярность или изменены уровни, соответствующие нулю и единице). К несомненным достоинствам кода NRZ относятся его очень простая реализация (исходный сигнал не надо ни кодировать на передающем конце, ни декодировать на приемном конце), а также минимальная среди других кодов требуемая при данной скорости передачи пропускная способность линии связи. Пример: наиболее частое изменение сигнала в сети будет при непрерывном чередовании единицы и нуля, то есть 1010101010 ... , поэтому при скорости передачи в 10 Мбит/с (длительность одного бита 100 нс) частота изменения сигнала и соответственно требуемая пропускная способность линии составит 5 МГц (рис. 1.16: период равен двум битам информации: 10).
Рис. 1.16. Скорость передачи и пропускная способность линии (код NRZ)
Самый большой недостаток данного кода — отсутствие синхросигнала информации, позволяющего приемнику синхронизовать прием информации из сети с передачей ее передатчиком. То есть в данном случае приемник может выбирать данные из сети не в нужный момент, если его частота приема несколько отличается от частоты передачи (часто говорят об уходе часов приемника). Особенно это критично для больших блоков (пакетов) информации (1—2 килобайта и более). Здесь не помогает и кварцевый генератор. К концу принимаемого пакета теряется взаимная синхронизация передачи и приема, следовательно, возможна потеря данных. В принципе можно было бы ввести вторую линию связи для синхросигнала (рис. 1.17). Но при этом длина линии связи увеличивается в 2 раза, количество приемников и передатчиков также увеличивается в 2 раза. При большой длине сети и большом количестве абонентов это оказывается невыгодным. Поэтому код NRZ используется только для передачи короткими пакетами (обычно до 1 Кбита). Для синхронизации начала приема пакета используется стартовый служебный бит, чей уровень отличается от пассивного состояния линии связи (например, пассивное состояние линии при отсутствии передачи — 0, стартовый бит — 1). Наиболее известное применение кода NRZ — стандарт RS232-C, последовательный порт персонального компьютера, который вполне может использоваться для организации небольших и медленных локальных сетей. Передача информации в нем ведется байтами (8 бит), сопровождаемыми стартовым и стоповым битами.
Рис. 1.17. Последовательная передача данных с синхросигналом (стробом)
2. RZ (Return to Zero — с возвратом к нулю) — этот трехуровневый код получил такое название потому, что после значащего уровня сигнала в первой половине передаваемого бита информации следует возврат к некоему "нулевому" уровню (например, соответствующему нулевому потенциалу). Переход к нему происходит в середине бита. Логическому нулю таким образом соответствует положительный импульс, логической единице — отрицательный (или наоборот). Особенностью кода RZ является то, что в центре бита всегда есть переход (положительный или отрицательный), следовательно, из этого кода приемник может выделить синхроимпульс (строб). То есть здесь возможна привязка не только к началу пакета, как в случае кода NRZ, но и к каждому отдельному биту, поэтому рассинхронизации не произойдет даже при очень длинных пакетах. Такие коды, несущие в себе строб, получили название самосинхронизирующихся. Недостаток кода RZ состоит в том, что требуется вдвое большая полоса пропускания канала при тойже скорости передачи по сравнению с NRZ (так как здесь на 1 бит приходится 2 изменения уровня напряжения). Для скорости передачи информации 10 Мбит/с требуется пропускная способность линии 10 МГц. Наиболее часто код RZ используется в оптоволоконных сетях.
Правда, в них нет положительных и отрицательных уровней сигнала, поэтому используется три уровня: отсутствие света, "слабый" свет, "сильный" свет. Это очень удобно: даже когда нет передачи информации, свет все равно есть, что позволяет легко определить целостность оптоволоконной линии связи (рис. 1.18).
Рис. 1.18. Использование кода RZ в оптоволоконных сетях
3. Код Манчестер-II или манчестерский код получил наибольшее распространение в сетях, использующих электрические кабели. Он также относится к самосинхронизирующимся кодам, но в отличие от кода RZ имеет не три, а только два уровня, что способствует его лучшей помехозащищенности. Логическому нулю соответствует положительный переход в центре бита (то есть первая половина битового интервала — низкий уровень, вторая половина — высокий), логической единице соответствует отрицательный переход в центре бита (или наоборот). Обязательное наличие перехода в центре бита позволяет легко выделить синхросигнал, что дает возможность передавать информацию сколь угодно большими пакетами без потерь из-за рассинхронизации. Допустимое расхождение часов приемника и передатчика может достигать 25%. Как и в случае кода RZ, здесь требуется пропускная способность линии в два раза выше, чем при использовании NRZ. Для скорости передачи 10 Мбит/с требуется полоса пропускания 10 МГц.
Большое достоинство манчестерского кода — отсутствие постоянной составляющей в сигнале (половину времени сигнал положительный, другую половину — отрицательный). Это дает возможность применять для гальванической развязки импульсные трансформаторы. При этом не требуется дополнительного источника питания для линии связи (как в случае использования оптронной развязки), резко уменьшается влияние низкочастотных помех, которые не проходят через трансформатор, легко решается проблема согласования. Частотный спектр сигнала при манчестерском кодировании включает в себя только две частоты: при скорости передачи 10 Мбит/с это 10 МГц (соответствует передаваемой цепочке из одних нулей или одних единиц) и 5 МГц (соответствует последовательности из чередующихся нулей и единиц: 1010101010 ...). Поэтому с помощью простейших полосовых фильтров можно легко отфильтровать все другие частоты (помехи, наводки).
Так же как и в случае кода RZ, при манчестерском кодировании очень просто определить, идет передача или нет, то есть детектировать занятость сети. Для этого достаточно контролировать, есть ли изменение сигнала в течение битового интервала или нет. Код Манчестер-II используется как в электрических кабелях, так и в оптоволоконных. В самой распространенной локальной сети Ethernet используется именно этот код. А теперь кратко остановимся на проблеме дешифрации кодов RZ и Манчестер-II. Задача дешифрации состоит в том, чтобы выделить из кода данные и строб (синхросигнал). Сначала посмотрим, как можно дешифровать Манчестер-II. Нетрудно заметить (рис. 1.15), что в сигнале с манчестерским кодированием существуют два вида переходов (фронтов сигнала): информационные (в середине битовых интервалов) и граничные (на границе битовых интервалов). Задача дешифрации сводится, видимо, к тому, чтобы разделить эти два вида переходов, отсечь граничные и далее работать уже только с информационными.
Простейший путь для этого — формирование по переходу любой полярности (из высокого уровня в низкий и из низкого уровня в высокий) запрещающего импульса длительностью больше половины битового интервала, но меньше целого битового интервала, например, 0,75 от длительности битового интервала (рис. 1.19). При этом, конечно, надо обеспечить, чтобы первым переходом в пакете всегда был информационный. А затем все очень просто: после первого перехода пакета мы запрещаем поступление входного сигнала (реакцию на него) на время 3/4 Т. Затем снова разрешаем реакцию на любой переход и т.д. Этот сигнал запрета (нижний на рис. 1.19) может использоваться в качестве строба данных, а данными может служить сам входной сигнал в коде Манчестер-II (правда, придется несколько задержать строб относительно данных). Конкретные аппаратурные решения будут рассмотрены в следующих главах.
Рис. 1.19. Принцип дешифрации кода Манчестер-II
Для дешифрации кода RZ придется различать три уровня сигнала, для чего можно использовать два компаратора напряжения, имеющие пороги срабатывания вблизи центрального уровня с обеих сторон от него. Из выходных сигналов этих компараторов легко получить сигнал данных и строб. Конкретные аппаратурные решения данного дешифратора также будут рассмотрены в следующей главе.
Существуют и более сложные коды, например код 4В/5В, используемый в высокоскоростной оптоволоконной локальной сети FDDI. При ее создании был достигнут компромисс между кодом NRZ с одной стороны и кодами Манчестер-II и RZ с другой стороны. Сигнал в сети должен был содержать синхроэлементы, быть самосинхронизирующимся, но в то же время он не должен был требовать вдвое большей полосы, чем NRZ. Выход был найден в добавлении на каждые четыре информационные бита пятого (синхробита) по определенным правилам. То есть любая комбинация из четырех бит заменяется на 5-битовую в передатчике и преобразуется обратно в 4 бита в приемнике (таблица 1.1). Синхронизация при этом получается в 5 раз реже, чем в манчестерском коде и в RZ, поэтому требуемая полоса пропускания оказывается всего в 1,25 раза больше, чем при использовании NRZ: для скорости 100 Мбит/с — 62,5 МГц, а не 100 МГц (при манчестерском коде).
Таблица 1.1. Код 4В/5В
Помимо рассмотренных здесь в локальных сетях используются и другие коды, например, такой, в котором логической единице соответствует один импульс на битовом интервале, а логическому нулю — два импульса на битовом интервале. Применяются также различные методы модуляции: амплитудной, частотной и фазовой. Но подробное описание всех возможных кодов заняло бы слишком много места.