Региональное кодирование оптических дисков
- 1 year ago
- 0
- 0
Манче́стерское коди́рование , код Манчестер-II , абсолютный биимпульсный код (иногда применяются синонимы : линейное кодирование , физическое кодирование , манипуляция сигнала , модуляция , импульсно-кодовая модуляция ) — один из способов кодирования двоичным цифровым сигналом исходных двоичных данных для передачи по одному двухуровневому каналу связи или записи на носитель информации .
Сигнал, закодированный манчестерским кодом, является самосинхронизирующимся, то есть для передачи данных не требуется дополнительная линия передачи тактовых импульсов за счет того, что за время передачи одного бита данных, независимо от того, 1 это или 0, обеспечивается один переход с одного уровня на другой, что позволяет приемнику синхронизировать свой внутренний тактовый генератор или таймер с тактовым генератором (таймером) передатчика.
Сигнал, закодированный в соответствии с манчестерским кодом, не имеет постоянной составляющей даже в случае передачи длинных последовательностей из нулей и единиц, поэтому передающие сигнал электрические соединения могут быть гальванически развязаны , например, с помощью трансформатора .
Название кодирования происходит из университета Манчестера , где такое кодирование было впервые использовано для хранения данных на магнитном барабане компьютера Манчестерский Марк I .
Существуют разные соглашения для кодирования отдельных битов манчестерским кодом:
Уровень
тактового импульса |
Бит
данных |
Уровень
манчестерского кода по IEEE 802.3 |
Уровень
манчестерского кода по Томасу |
---|---|---|---|
0
|
0
|
0
|
1
|
1
|
1
|
0
|
|
1
|
0
|
1
|
0 |
1
|
0
|
1
|
Кодирование манчестерского кода относительно простое — производится логической операцией « ИСКЛЮЧАЮЩЕЕ ИЛИ » (сложение по модулю два, XOR ) над текущим кодируемым битом и битом тактового генератора, в случае кодирования по IEEE 802.3 (примеры на псевдокоде ):
Выход := Бит_данных XOR Тактовый_генератор;
или с инвертированием при кодировании по Томасу:
Выход := NOT(Бит_данных XOR Тактовый_генератор);
Возможна как аппаратная, так и программная реализация кодировщика.
При аппаратной реализации используется тактовый генератор со скважностью 2 и периодом повторения, равным периоду кодирования, регистр сдвига из которого на каждом периоде выталкивается кодируемый бит данных и логического элемента « ИСКЛЮЧАЮЩЕЕ ИЛИ ».
При программной реализации создаётся виртуальный тактовый генератор с помощью программного таймера с длительностью выдержки, равной половине периода:
ЕСЛИ таймер_половина_периода сработал, ТО перезапустить таймер; Тактовый_генератор := Тактовый_генератор XOR 1; КОНЕЦ ЕСЛИ;
Возможна и предпочтительнее реализация тактового генератора по прерываниям аппаратного таймера.
Далее для формирования окончательного выходного кода производится операция « ИСКЛЮЧАЮЩЕЕ ИЛИ » с битом данных, например, выдвинутом из регистра, где находится текущее кодируемое слово.
При декодировании возможны два варианта:
Далее все уровни и фронты описаны применительно к соглашению о кодировании по IEEE 802.3, при соглашении по Г. Е. Томасу все уровни и фронты заменяются на инверсные.
В первом случае при декодировании вначале производится битовая синхронизация — определяется середина периода. Для этого декодировщик следит за фронтами и спадами сигнала, два соседних перепада разного направления, разделенные 1 периодом, являются признаком последовательно идущих 0 и 1 или 1 и 0 в потоке данных, причём, если первый из этих перепадов нарастающий (фронт), а второй — падающий (спад), то это означает, что в потоке данных это комбинация двух битов 1 и 0 или 0, 1 в случае спада-фронта, также, второй из этих перепадов указывает на середину периода кодирования. В битовый поток декодированных данных записывается комбинация из двух этих битов. Далее декодировщик выжидает время, примерно равное 3/4 периода, и начинает следить за возникновением перепада, при появлении перепада, если это спад, это означает, что очередной бит данных 0, и 1 — фронте [ что? ] . Одновременно по этому же перепаду перезапускается таймер выдержки 3/4 периода и далее процесс повторяется.
Начало проверки прихода перепада через 3/4 периода выбрано из соображений помехоустойчивости, так например, в результате джиттера и/или расплывания (удлинения) перепадов, аддитивных помех в линиях передачи моменты возникновения перепадов колеблются относительно идеализированного случая, с другой стороны, при соседних одинаковых битах в потоке данных перепады происходят на границе между двумя периодами передачи одинаковых битов и проверка возникновения перепада должна производиться после моментов границ тактов.
Также, по приходе каждого информационного перепада имеется возможность измерить длительность периода вспомогательным таймером и подстроить, при необходимости, длительность выдержки таймера в 3/4 периода. Это позволяет отследить медленные изменения периода кодировщика, например, колебания скорости протяжки магнитной ленты при считывании с накопителей на магнитной ленте или разную скорость протяжки рукой человека карточки с магнитной полоской.
Для облегчения битовой синхронизации блоки данных в манчестерском коде, особенно при хранении их на магнитных носителях, обычно предваряются достаточно длинной синхропоследовательностью 1010101…
Достижение битовой синхронизации недостаточно для приёма потока информационных битов, так как во многих случаях неизвестно начало информационного блока в потоке неразличимых битов, например, при считывании данных с магнитного дискового накопителя. Поэтому дополнительно применяют синхронизацию по слову синхронизации.
Кодировщик при кодировании в начале информационного блока вставляет двоичное слово синхронизации или сигнатуру синхронизации , которая должна быть известна декодировщику. Для начала синхронизации блока декодировщик постоянно сравнивает последовательность битов в сдвиговом регистре после каждого сдвига, длина этого регистра равна длине сигнатуры, в который на каждом периоде вдвигается очередной бит, с заданным словом синхронизации. Совпадение слова в регистре сдвига и сигнатуры или её инверсии является признаком начала информационного блока и далее декодировщик интерпретирует поток битов как информационные. Длина слова синхронизации в разных системах различна, но обычно не менее 2 байтов, в протоколе Ethernet , например, длина сигнатуры принята равной 56 битов.
В информационном потоке не должно встречаться слово синхронизации, или, по крайней мере, вероятность такого появления должна быть пренебрежимо малой. Чем длиннее сигнатура, тем меньше вероятность её существования в информационном потоке. С другой стороны, сигнатура не несёт полезной информации и длинная сигнатура снижает скорость передачи информации. Если сигнатура короткая, то информационный поток перед кодированием проверяется на случайное присутствие последовательности битов, совпадающей с сигнатурой, и при необходимости информационный блок перекодируется для исключения сигнатуры, либо после достижения синхронизации по началу блока данных декодировщик игнорирует попадающиеся сигнатуры в блоке данных до окончания приёма всего блока.
Также используется вариант синхронизации информационного блока с помощью заведомо невозможного в манчестерском коде длительностей низкого и высокого уровней (0 и 1). В «правильном» коде эта длительность не может быть более периода, если в начале блока вставить, например, два периода низкого уровня и два периода высокого уровня, то такое событие не вводит постоянную составляющую в сигнал и указывает на начало информационного блока. По ГОСТ 52070-2003 синхронизация блока производится в течение 3 периодов — первые 1,5 периода на линии удерживается высокий уровень и остальные 1,5 периода — низкий. Возможны и другие варианты синхронизации, например, сигналом по линии сброса и др.
В многих случаях заранее неизвестно, сколько раз полученный кодированный сигнал подвергался логической инверсии при передаче, например, в сетях Ethernet кодированный сигнал может проходить через многочисленные узлы с оборудованием различных изготовителей, которое может в любой момент заменяться, или в случае чтения одной и той же магнитной ленты с данными на разных моделях накопителей на магнитной ленте. Поэтому при синхронизации начала блока данных по сигнатуре почти всегда проверяется совпадение потока данных с сигнатурой и её побитовой инверсией. Если найдена инверсная сигнатура, то все последующие принятые биты данных инвертируются, и оставляются без изменений в случае нахождения неинвертированной сигнатуры. Отсюда следует, что при такой синхронизации непринципиально по какому соглашению исходно была произведена кодировка — по Томасу или по IEEE 802.3.
При априори неизвестном периоде кодирования декодировщик первоначально измеряет этот период измерением времени между соседними перепадами. Так как моменты перепадов реальных сигналов колеблются во времени из-за джиттера, помех, нерегулярных программных задержек в программном кодировщике и т. д. недостаточно измерить только несколько пар соседних перепадов. Поэтому при измерении периода и половины периода по потоку данных обычно накапливают некоторую статистику .
В правильном коде с не слишком большим джиттером гистограмма измерений будет состоять из двух групп выборок (рисунок 4), причём чем меньше джиттер, тем у́же будут группы на гистограмме. Первая группа отвечает длительности 1/2 периода, вторая — целому периоду. По результатам статистической обработки полученной гистограммы определяется период и его значению настраивается внутренний тактовый генератор декодировщика или его интервальный таймер.
Вычисление оценки периода по результатам измерений периодов и при необходимости половины периода производится по формуле среднего арифметического взвешенного .
и выбираются так, чтобы например, по рисунку мкс и мкс.
По аналогичному методу определяется усреднённое по статистической совокупности значение половины периода
После определения периода дальнейшее декодирование не отличается от описанного выше декодирования с заранее известным периодом.
В первых бытовых компьютерах, например, Sinclair ZX80 , « Электроника БК-0010 », ZX Spectrum в качестве внешнего накопителя использовались бытовые магнитофоны. В этих компьютерах кодирование и декодирование манчестерского кода при обмене с магнитофоном производилось программно.
В современных системах программное кодирование и декодирование применяется редко, и эти функции возлагаются на специализированные микросхемы или фунциональные блоки в составе других микросхем, например, в микроконтроллерах , микропроцессорах .
Выпускается ряд специализированных микросхем для кодирования и декодирования манчестерского кода, например:
Так как на каждый бит данных происходит по две смены уровня сигнала, это приводит к тому, что спектр манчестерского кода занимает вдвое бо́льшую полосу частот по сравнению, например, с кодом NZR ( Non-zero return , переход без возврата к нулю).
Сравнение спектров манчестерского кода и NZR приведено на рисунке. Так как манчестерский код не имеет постоянной составляющей (в случае его кодирования разнополярными равными по модулю уровнями), спектральная плотность мощности манчестерского кода равна нулю на нулевой частоте, в отличие от кода NZR, всегда при любых уровнях имеющего постоянную составляющую, и его спектр имеет конечную спектральную мощность на нулевой частоте.
Максимум спектральной мощности манчестерского кодирования приходится на частоту, равную частоте битрейта .
Манчестерское кодирование можно рассматривать как частный случай двоичной фазовой манипуляции (ФМ), в которой данные управляют фазой прямоугольной волны несущей, частота которых является битрейтом.
Наличие двух гарантированных переходов при передаче 1 бита позволяет сигналу быть самосинхронизирующимся , что позволяет приемнику (декодеру) правильно настроиться на скорость передачи. Для передачи не требуется дополнительная линия для передачи синхросигнала. Также в поток битов данных не нужно вставлять стартовые и стоповые биты, как например, в протоколах RS-232 и RS-485, из-за чего плотность данных в общем потоке битов кода приближается к 100 % (например, для кода NRZ 1-8-0 она равна 80 %).
Независимо от конкретного потока битов сигнал манчестерского кодирования не содержит постоянной составляющей, если значения верхнего и нижнего уровней равны по модулю. Это облегчает построение гальванической развязки с помощью трансформатора и чтение-запись на магнитные носители.
Для передачи манчестерского кода требуется вдвое большая полоса пропускания канала (ширина канала), по сравнению, например, NRZ-кодированием .
Предъявляет повышенные требования к стабильности фронтов во времени — низкому джиттеру. Существуют другие способы кодирования, например, код 8B/10B имеет более узкую полосу частот, но более требователен к уменьшению джиттера.
Манчестерское кодирование применяется:
{{
citation
}}
:
Неизвестный параметр
|access - date=
игнорируется (
справка
)
;
Проверьте значение
|url=
(
справка
)