0

Достоинства и недостатки манчестерского кода

Код Манчестер-II или манчестерский код получил наибольшее распространение в локальных сетях. Он также относится к самосинхронизирующимся кодам, но в отличие от кода RZ имеет не три, а только два уровня, что обеспечивает лучшую помехозащищенность.

Логическому нулю соответствует переход на верхний уровень в центре битового интервала, логической единице — переход на нижний уровень. Логика кодирования хорошо видна на примере передачи последовательности единиц или нулей. При передаче чередующихся битов частота следования импульсов уменьшается в два раза.

Информационные переходы в средине бита остаются, а граничные (на границе битовых интервалов) — при чередовании единиц и нулей отсутствуют. Это выполняется с помощью последовательности запрещающих импульсов. Эти импульсы синхронизируются с информационными и обеспечивают запрет нежелательных граничных переходов.

Изменение сигнала в центре каждого бита позволяет легко выделить синхросигнал. Самосинхронизация дает возможность передачи больших пакетов информацию без потерь из-за различий тактовой частоты передатчика и приемника.

Рисунок.7.3 Двухуровневый код Манчестер-II.

Большое достоинство манчестерского кода — отсутствие постоянной составляющей при передаче длинной последовательности единиц или нулей. Благодаря этому гальваническая развязка сигналов выполняется простейшими способами, например, с помощью импульсных трансформаторов.

Важная характеристика манчестерского кода — отсутствие у сигнала постоянной составляющей при передаче длинной последовательности единиц или нулей. Благодаря этому передатчики и приемники можно “развязать” гальванически с помощью импульсных трансформаторов.

Частотный спектр сигнала при манчестерском кодировании включает только две несущие частоты. Для десятимегабитного протокола — это 10 ММГц при передаче сигнала, состоящего из одних нулей или одних единиц, и 5 ММГц — для сигнала с чередованием нулей и единиц. Поэтому с помощью полосовых фильтров можно легко отфильтровать все другие частоты.

Достоинства манчестерского кода:

  • код является самосинхронизирующимся, так как обязательно есть переход в середине бита,
  • отсутствует постоянная составляющая в сигнале манчестерского кода, это дает возможность применять для гальванической развязки импульсные трансформаторы (гальваническую развязку выполняет сетевая плата).

Недостаток манчестерского кода:

  • как и для кода RZ требуется вдвое больше полоса пропускания, чем при использовании кода NRZ при той же скорости передачи.

Код Манчестер-II нашел применение в оптоволоконных и электропроводных сетях. Самый распространенный протокол локальных сетей Ethernet 10 Мбит/с использует именно этот код.

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Как то на паре, один преподаватель сказал, когда лекция заканчивалась – это был конец пары: "Что-то тут концом пахнет". 8410 – | 8028 – или читать все.

78.85.5.224 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Читайте также:  Изучаем работу на смартфоне

Отключите adBlock!
и обновите страницу (F5)

очень нужно

Манчестерское кодирование [1] (код Манчестер-II [2] , абсолютный биимпульсный код [3] ) — один из способов представления сигнала (иногда встречаются синонимы: линейное кодирование, [3] [4] физическое кодирование, манипуляция сигнала, модуляция, импульсно-кодовая модуляция [3] ) в соответствие с оцифрованными данными с целью передачи по каналу связи или записи на носитель информации. Манчестерское кодирование является самосинхронизирующимся за счет того, что за время передачи одного бита данных обеспечивается один переход с одного потенциала на другой, что позволяет приемнику синхронизироваться с передатчиком в течение передачи одного бита данных. Сигнал, закодированный в соответствии с манчестерским кодом, не имеет постоянного тока смещения, поэтому передающие сигнал электрические соединения, могут быть гальванически развязаны с помощью трансформатора. [5] Название происходит из университета Манчестера, где данное кодирование было использовано для хранения данных на магнитном барабане компьютера Манчестерский Марк I.

Варианты манчестерского кодирования:

  • Вариант № 1 (по Д. Е. Томасу): логический ноль кодируется перепадом напряжения с низкого уровня на верхний уровень, а логическая единица кодируется перепадом напряжения с верхнего уровня на нижний. [1]
  • Вариант № 2 (стандарт IEEE 802.4, стандарт IEEE 802.3): логический ноль кодируется перепадом напряжения с верхнего уровня на нижний, а логическая единица кодируется перепадом напряжения с низкого уровня на верхний уровень. [3][2]
  • Вариант № 3 (дифференциальное манчестерское кодирование, разностное манчестерское кодирование, [1]IEEE 802.5[1] ): логический ноль кодируется изменением состояния в начале значащего интервала, а логическая единица кодируется сохранением предыдущего уровня. [1]

Содержание

Области применения манчестерского кодирования [ править | править код ]

Манчестерское кодирование применяется:

При манчестерском кодировании гарантируется переход за передачу одного бита с одного уровня на другой, что помогает синхронизировать тактовую частоту передатчика и приёмника. Направление серединного битового перехода указывает на данные.

Отсутствие ёмкостного сопротивления, что позволяет обеспечить гальваническую развязку с помощью трансформатора. [5]

В компоненте постоянного тока кодированный сигнал не зависит от данных и, следовательно, не несет никакой информации, разрешающий сигнал для передачи по сети (например, Ethernet), которая, как правило, не передает постоянной составляющей.

Извлечение исходных данных из полученных закодированных бит (Манчестерским кодированием согласно IEEE 802.3):

Original data Clock Manchester value
= XOR

1 1 1 1 1

  • Каждый бит передается в установленный срок.
  • 0 определяет переход сигнала от низкого к высокому, 1 — от высокого к низкому.
  • Переходы, которые обозначаются 0 или 1 происходят в середине периода.
  • Переходы в начале периода являются накладными расходами и не обозначают данные. Они существуют только чтобы поместить сигнал в правильном состоянии, чтобы позволить серединный битовый переход.
  • Существование гарантированных переходов позволяет сигналу быть самосинхронизирующимся, а также позволяет приемнику правильно его выровнять; приемник может определить, существует ли смещение на половину периода бита, так как больше не будет постоянных переходов в течение каждого периода битов.
  • Цена этих преимуществ — это удвоение требований к полосе пропускания по сравнению со схемами кодирования NRZ.
Читайте также:  График функции корень третьей степени из х

Манчестерское кодирование как фазовая манипуляция [ править | править код ]

Манчестерское кодирование представляет собой частный случай двоичной фазовой манипуляции (ФМ), где данные контролируют фазу квадратной волны несущей, частота которых является скоростью передачи данных.

Соглашения для представления данных [ править | править код ]

Существует разные соглашения для представления данных согласно коду манчестера:

  • Одно из них было впервые опубликовано Д. Е. Томасом в 1949 году и этого соглашения придерживаются многие авторы (например, Эндрю Таненбаум [1] ). Оно указывает, что для бита ‘0’ уровни сигнала будут иметь перепад от низкого к высокому — с низким уровнем в первой половине интервала бита, и высоким уровнем во второй половине. Для сигнала в ‘1’ бит перепад уровней будет от высокого к низкому.
  • Другое соглашение, которого тоже придерживаются авторы (например, Уильям Сталлингс), а также стандарт IEEE 802.4 (шина с маркерным доступом) стандарт IEEE 802.3 (Ethernet). Оно утверждает, что логический ‘0’ представлен последовательностью перепадов сигнала от высокого к низкому, а логическая ‘1’ представлена последовательностью перепада сигнала от низкого к высокому.
  • Если сигнал, кодированный Манчестерским кодом инвертируется в сообщении, он преобразуется из одного соглашения в другое. Эту неоднозначность можно преодолеть с помощью дифференциального манчестерского кодирования.

Манчестерский Код – это самосинхронизирующийся двоичный код без постоянной составляющей, в котором значение каждого передаваемого бита определяется направлением смены логического уровня в середине обусловленного заранее временного интервала. Поскольку логических уровней у самой маленькой единицы информации (бит) на данный момент известно всего два (1 и 0), вариантов тут немного: либо смена 1 => 0 либо 0 => 1. Согласно общепринятым стандартам для Манчестерского кода переход от нуля к единице считается 1, а если наоборот, то 0. На самом деле последнее утверждение – это просто формальность – вопрос в том, с какой стороны посмотреть 😉 Главное, чтобы и приёмник и передатчик смотрели на жизнь одинаково.

Введите число и нажмите "Encode Manchester!":

Теперь давайте внимательно посмотрим на картинку и попробуем проанализировать и перечислить основные преимущества и недостатки преобразования данных в Манчестерский Код:

Pазмер данных увеличивается вдвое – это негативно сказывается на скорости передачи

Kоличество логических нулей всегда равно количеству логических единиц, соответственно у такого сигнала не будет постоянной составляющей – это крайне важно для электрических цепей и радиоволн

Комбинация логических уровней 11 однозначно говорит о последнем принятом 0, а комбинация 00, соответственно, говорит о 1. Таким образом после одной из них приёмник синхронизируется

Не может идти последовательно более двух одинаковых логических уровней, т.е. комбинация типа 111 или 000 невозможна

В начале данных и в конце не может быть двух одинаковых логических уровней – только 10 или 01

Сначала пишем тест

О пользе тестов можно почитать тут. В контексте решения текущей задачи будет использоваться техника Mock-объектов, поэтому для тестирования используется связка gtest (Google Test) + gmock (Google Mocking Framework). Всё это добро поставляются в исходниках, поэтому единственное требование к системе – совместимый C / C++ компилятор, например gcc g++ для Linux или Visual Studio C++ для Windows. Так выглядит простое консольное приложение, которое будет собираться вместе с тестами и запускать их:

Читайте также:  Защитный код для nokia 105

Теперь сами тесты. Более простой задачей является преобразование данных в Манчестерский Код (encode), поэтому с неё, пожалуй, и начнём:

Все тесты помещены в макрос TEST_F() . В начале теста с помощью EXPECT_CALL() необходимо установить ожидаемое поведение. В процессе преобразования 0 => 1010101010101010 и при условии, что старший бит идёт первым (MSB), ожидается последовательный вызов методов On_Man_Encode_One() и On_Man_Encode_Zero() и так восемь раз. После того, как ожидаемое поведение описано, необходимо вызвать проверяемый метод Man_Encode() . Если реальное поведение отличается от ожидаемого, в процессе выполнения тестов будет сообщено об ошибке. В конце каждого теста также выполняется проверка условия, что количество нулей равно количеству единиц.

Преобразовать данные в Манчестерский Код очень легко:

Реализация обратной задачи – декодирования данных из Манчестерского Кода в оригинальный несколько сложнее. Перед началом передачи данных необходимо синхронизироваться с приёмником сиигнала. В реализации тестов нас особо не интересует как именно приёмник синхронизируется и в какой последовательности будут вызваны(если вообще будут) On_Man_Decode_Add_1() и On_Man_Decode_Add_0() – для этой цели обозначим предварительные ожидания как testing::AtMost(1) . После синхронизации процесс декодирования можно точно спрогнозировать и описать соответствующие ожидания с помощью EXPECT_CALL() . Также как и в предыдущем случае в конце каждого теста проверяется отсутствие постоянной составляющей (количество нулей и единиц должно совпадать).

Предположительная реализация процесса декодирования Манчестерского кода:

Сборка и запуск тестов

Если Вы работаете в связке Windows + Visual Studio, необходимо выполнить следующее:

При использовании Linux + gcc g++:

Тестов много не бывает. Например, было бы неплохо добавить проверку для последовательности из двух байт и более, или проверку условия отсутствия невозможных для Манчестерского Кода комбинаций – например 111 или 000. Чем больше терпения и выдержки на этом этапе разработки – тем крепче будет сон после её сдачи в эксплуатацию.

Практика

Тесты это хорошо, но пока что всё это больше похоже на теорию – а теория без практики, как известно, скучна. Поэтому, если Вы дочитали до этого момента, милости прошу посетить следующий пост, в котором в качестве приёмника и передатчика используются два микроконтроллера, а сам процесс эмулируется в виртуальной среде, которая умеет моделировать поведение электрических цепей.

admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *