Что такое манчестер в компьютере

Обновлено: 06.07.2024

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

Код Манчестера получил свое название от его разработки в Университете Манчестера , где кодирование использовалось для хранения данных на магнитных барабанах компьютера Manchester Mark 1 .

Манчестерский код широко использовался для магнитной записи на компьютерных лентах с разрешением 1600 бит на дюйм до появления лент 6250 бит на дюйм, которые использовали более эффективную запись с групповым кодированием . Манчестерский код использовался в ранних стандартах физического уровня Ethernet и до сих пор используется в потребительских ИК- протоколах, RFID и коммуникациях ближнего поля .

СОДЕРЖАНИЕ

Функции

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

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

По словам Cisco , «манчестерское кодирование создает некоторые сложные проблемы, связанные с частотой, которые делают его непригодным для использования при более высоких скоростях передачи данных».

Существуют более сложные коды, такие как кодирование 8B / 10B , которые используют меньшую полосу пропускания для достижения той же скорости передачи данных, но могут быть менее терпимы к ошибкам частоты и дрожанию в опорных тактовых сигналах передатчика и приемника.

Кодирование и декодирование

Пример манчестерского кодирования, показывающий оба соглашения для представления данных

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

Условные обозначения для представления данных

Есть два противоположных соглашения о представлении данных.

Первый из них был впервые опубликован GE Thomas в 1949 году, за ним следуют многочисленные авторы (например, Энди Таненбаум ). Он определяет, что для бита 0 уровни сигнала будут низко-высокими (при условии физического кодирования данных по амплитуде) - с низким уровнем в первой половине битового периода и высоким уровнем во второй половине. Для 1 бита уровни сигнала будут высокими-низкими. Это также известно как код Manchester II или Biphase-L.

Второму соглашению также следуют многие авторы (например, Уильям Столлингс ), а также стандарты IEEE 802.4 (шина токенов) и версии с более низкой скоростью IEEE 802.3 (Ethernet). В нем указано, что логический 0 представлен сигнальной последовательностью высокий-низкий, а логическая 1 представлена ​​сигнальной последовательностью низкий-высокий.

Если сигнал, закодированный в манчестерском коде, инвертируется при коммуникации, он преобразуется из одного соглашения в другое. Эту неоднозначность можно преодолеть, используя дифференциальное манчестерское кодирование .

Расшифровка

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

Кодирование

Кодирование данных с использованием исключающей логики или (соглашение 802.3)
Исходные данные Часы Манчестерская ценность
0 XOR
0 знак равно 0
1 1
1 0 1
1 0

Соглашения о кодировании следующие:

  • Каждый бит передается в фиксированное время («период»).
  • A 0 выражается переходом от низкого к высокому, a переходом 1 от высокого к низкому (согласно соглашению GE Thomas - в соглашении IEEE 802.3 верно обратное).
  • Переходы, которые означают 0 или 1 происходят в середине периода.
  • Переходы в начале периода являются накладными и не означают данных.

Смотрите также

использованная литература

Эта статья включает материалы, являющиеся общественным достоянием, из документа Управления общих служб : «Федеральный стандарт 1037C» . (в поддержку MIL-STD-188 )


Из названия статьи и обложки вы уже знаете, о чем сегодня пойдет речь, так что начинаем без предисловий сразу с главного. Итак, будем осуществлять генерацию манчестерского кода при помощи контроллера STM32. Разумеется, вначале разберемся, что из себя представляет данный тип кодирования в целом. Сразу могу анонсировать следующую статью, которая будет посвящена уже декодированию того сигнала, который мы сгенерируем сегодня, так что следите за обновлениями, добавляйте в закладки и подписывайтесь на всяческие наши группы )

Манчестерский код.

Существует два основных типа кодирования:

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

К особенностям манчестерского кода я бы отнес, в первую очередь:

Манчестерский Марк I

Манчестерский код

Принцип кодирования

Генератор манчестерского кода на STM32.

По новой традиции в конце статьи я помещу не только ссылку на полный проект, но и полный код файлов под спойлерами. А пока настраиваем в STM32CubeMx все, что понадобится. В данном случае, это один из таймеров, который будет основой для всего, а также порт в режиме выхода, на который будем выводить манчестерский код. У меня выбор пал на TIM2 и PA3, само собой, можно использовать любые другие в точности также:

Настройка STM32 для работы с манчестерским кодом

Не забываем включить интерфейс SWD для отладки и внешнее тактирование. Да, кстати, у меня будет STM32F103C8 с внешним резонатором на 8 МГц. Но, как и всегда, код будет универсальным, чтобы использовать его на любом другом STM32 без малейших проблем. Настройки тактирования традиционные:

Настройки тактирования

То есть тактовая частота таймеров составляет 72 МГц. Настроим TIM2 на переполнение каждые 10 мкс. Для этого берем предделитель 72 (в CubeMx ставим 71), и период, равный 10:


При таком делителе получим частоту таймера равной:

Кроме того, включаем прерывание для таймера и генерируем код. Далее CubeMx нам не понадобится. Добавляем в проект файлы для работы с кодом Манчестер-II:

Структура проекта генератора манчестерского кода

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

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

Для структуризации данных добавляем:

Пробегаем по полям:

Сейчас пойдет ряд функций для организации кодирования. Для управления выходом добавляем:

Итак, в функции обнуляем счетчики текущего байта и бита, а также проверяем размер данных на превышение максимально возможного количества информационных байт. В случае превышения сохраняем в bytesNum максимально допустимое значение. Далее копируем информационные данные в структуру, но начиная со 2-го байта (индекс = MANCH_SYNC_BYTES_NUM):

Делаем так по той причине, что первые два передаваемых байта будут синхрополем, которое и помещаем в массив encodeData.data[].

Следующая функция возвращает текущее значение бита на основе данных структуры MANCH_Data:

Все, наконец, переходим к прерыванию таймера, в котором соберем воедино все, что было подробно обсуждено:

Все действия осуществляем при активном флаге:

Разберемся, что мы имеем в итоге с временными интервалами при текущей конфигурации.

В функцию HAL_TIM_PeriodElapsedCallback() мы попадаем каждые 10 мкс. При этом период кодирования у нас равен 100 мкс. Каждый раз заходя в callback мы инкрементируем счетчик encodeTimerCnt, что приведет к тому, что через 100 мкс его значение будет равно рассчитанному ранее значению MANCH_ENCODE_TIMER_MAX. Далее отсчитывать не требуется, поэтому обнуляем счетчик в этой части функции:

Осталась маленькая, но самая важная часть, которая осуществляет генерацию манчестерского кода:

Помните, мы обсуждали, что период виртуального тактового генератора должен быть вдвое меньше длительности бита? Так вот поэтому здесь мы проверяем счетчик на равенство двум значениям, так как этот кусок кода должен выполниться дважды за время, равное длительности передачи бита. И в этом куске получаем значение текущего исходного бита и рассчитываем значение, которое необходимо выдать на выход все по той же формуле:

И в завершение меняем значение virtTact с 0 на 1, либо с 1 на 0.

Последний байт инкрементируем в цикле, чтобы при декодировании убедиться, что не теряем посылки. Компилируем, прошиваем, запускаем, встаем осциллографом на PA3:

Результат работы программы

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

Засим откланиваюсь, в следующей статье этот же самый сигнал мы декодируем, причем этим же самым контроллером.

Манчестерский Код - это самосинхронизирующийся двоичный код без постоянной составляющей, в котором значение каждого передаваемого бита определяется направлением смены логического уровня в середине обусловленного заранее временного интервала. Поскольку логических уровней у самой маленькой единицы информации (бит) на данный момент известно всего два (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. Так выглядит простое консольное приложение, которое будет собираться вместе с тестами и запускать их:

Теперь сами тесты. Более простой задачей является преобразование данных в Манчестерский Код (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, необходимо выполнить следующее:

Windows Скриншот

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

Linux Скриншот

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

Практика

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


Кодирования Манчестер, простой и эффективный способ улучшения цифровой связи для высокоскоростных или беспроводного.

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

В стандартах кодирования Ethernet использует кодировку Манчестер.

хорошо, но не идеально

Другим примером является необходимость сочетания постоянного тока. Цифровые данные могут включать в себя длинные, непрерывные последовательности одного или нулей, а затем стандартный цифровой сигнал, используемый для передачи этих данных будет оставаться на том же напряжении в течение относительно длительного периода времени. Он преобразует сигнал данных в сигнал синхронизации данных, как показано на следующих схемах LTspice.



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

решение

Манчестер кодирование обеспечивает средство для этих двух ограничений. Это простая цифровая схема модуляции, которая делает две вещи:

гарантирует, что сигнал не всегда остается на низком логическом уровне или высокий логический уровень в течение длительного периода времени

Он преобразует сигнал данных в сигнал синхронизации данных.

отдельный тактовый сигнал не может быть применен, мы обсудим мотивацию: почему бы не просто добавить отдельный сигнал синхронизации для синхронизации? И почему мы должны быть соединены с цифровым сигналом переменного тока?

Часы, чтобы избежать

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

В других ситуациях, отдельный тактовый сигнал не может быть применен. например, Это испытывает недостаток гибкости, поскольку она требует, чтобы устройства Rx и Tx явно сконфигурированы для одной и той же скорости передачи данных, (например, один для данных и один для часов) в сложной беспроводной связи данных.

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

Это испытывает недостаток гибкости, поскольку она требует, чтобы устройства Rx и Tx явно сконфигурированы для одной и той же скорости передачи данных,.

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

Избегайте подключения постоянного тока

Со сложными системами, особенно связанных с высоким напряжением, Это не всегда легко убедиться, что общий режим напряжения передаваемого сигнала совместим с общим диапазоном в режиме приемника приемлемого. Это проблема, даже при использовании дифференциальных стандартов, таких как RS-485 . Еще одной проблемой является током в случае сбоя: прямое соединение не обеспечивает защиты от токов в результате короткого замыкания.

поэтому, переход Манчестера совмещен с краем часов, которые будут использоваться для выборки данных .

Идея кодирования Манчестер выглядит следующим образом: мы можем использовать переходы напряжение , вместо уровни растяжимый , представлять единицы и нули. Рассмотрим следующую диаграмму:


В верхней части диаграммы мы имеем цифровой стандарт интерфейса, состоящий из сигнала данных и тактового сигнала.

В нижней части диаграммы есть кодированный сигнал из Манчестера для тех же данных.

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

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

Сразу видно, что связь по переменному току проблема устранена: каждый бит требует перехода и, следовательно, сигнал данных не будет никогда при высоком низком логическом уровне или логическом в течение длительного периода времени. Это видно на следующей диаграмме, показывая стандартный цифровой сигнал 111111 дорожки и сигнал закодирован из Манчестера для одной и той же двоичной последовательности, Это было опущено для удобства тактового сигнала, поскольку это не относится к конструкции.


Это может показаться не проблема; однако, мы можем интуитивно видеть, что регулярность переходов дает информацию о том, когда сигнал данных должны быть выбран.

Выше Диаграмма также показывает нетривиальной недостаток Манчестер кодирования: скорость передачи данных уменьшается в два раза по сравнению с шириной полосы сигнала данных. Сигнал кодируется Манчестер требует перехода для каждого бита, Это означает, что в связи логические состояния Манчестер используются для передачи один стандартное состояние логического. поэтому, передавать данные с той же скоростью, что необходимо удвоить пропускную способность.

Это может показаться не проблема, соответствующий сигнал синхронизации и немного «оборудование или микропрограммное обеспечение? хорошо, если ширина полосы сигнала является ограничивающим фактором скорости, с которой данные могут быть перемещены от передатчика к приемнику, и, если он уже на максимальной скорости передачи данных,, вы не можете увеличить частоту сигнала в два раза; вместо, Вы должны уменьшить скорость передачи данных по два раза.

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

    Данные представлены с использованием переходы логический уровень, а не логические уровни.

Тактовый сигнал не должен быть послан к приемнику, так как он встроен в потоке данных модулируют.

В дополнение к устранению необходимости тактового сигнала, передаваемого, Манчестер кодирование позволяет использовать связь по переменному току, так как модулированный сигнал не остается на высоком логическом уровне или низком уровне в течение длительного периода времени. Основной недостаток Манчестер кодирования является уменьшенной скоростью передачи данных: потому что один и нули представлены с использованием переходов вместо логических уровней, теоретический.

Манчестер через Hardware

Теоретически, Это чрезвычайно легко генерировать поток данных кодируется с помощью аппаратных средств Манчестера. Разница в аналоговой схеме тщательно разработана и мощные процессоры цифровых сигналов используются для методов модуляции расширенного РЧА, Манчестер кодирование требует только ворота XOR.


Это можно легко проверить, посмотрев на временной диаграмме, показанной выше: когда часы и данные находятся на одном логическом уровне, Манчестер сигнал низкий; когда они находятся на разных логических уровнях, Манчестер сигнал имеет высокий уровень.

Я не думаю, что радикальный подход XOR бесполезно. Поиски Интернета не дают много информации, как тогда, когда два сигнала генерируется и XORizzati внутри FPGA, Это, вероятно, может работать достаточно хорошо. также, эффект синхронизации несовершенной является менее значительным, когда период данные очень велико по сравнению с длительностью глитча, так как паразитные переходы (Более высокая частота) могут быть отфильтрованы прежде, чем данные Манчестер интерпретируется приемником.

Насколько мне известно, эта техническая проблема не может быть решена, просто добавив дверь здесь или флип-флоп там. Поиски Интернета не дают много информации, Манчестер через прошивку (смотрите следующий раздел). однако, Кажется, что Харрис. Quesnell Jr. была определена для получения данных из Манчестера безошибочной без использования встроенного программного обеспечения, и вы можете прочитать его схему в патентной документации.


Это схема сообщается в патенте.

Как я уже сказал, Это не та вещь, которая может быть достигнута путем добавления пары дверей или флип-флоп. Я ценю аппаратные решения, но в этом случае, Совет для решения этой проблемы в Манчестере прошивке.

Манчестер через прошивку

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

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

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

данные Slice

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

Слайсера данных (Я знаю итальянский перевод слова не лучший, Я принимаю предложение), это преобразует шумные волны / ослабляется в виде чистой цифровой волны путем сравнения сигнала Manchester со средним значением сигнала; среднее значение извлекается с помощью фильтра RC низких частот. Если входящий сигнал выше, чем среднее значение, После резания; если входящий сигнал ниже среднего значения, насыщается до низкого логического напряжения.


Как правило, это происходит с компараторами схемами, реальная реализация должна включать в себя гистерезис не втягивается Принципиальная схема для упрощения обсуждения. Если вы планируете обрабатывать Manchester данных в микроконтроллер, можно выбрать устройство с модулем компаратора, который включает в себя программируемый гистерезис. Это было бы удобным способ, чтобы разделить поступающие данные и обеспечить результирующую форму волны непосредственно в процессор, который преобразует сигнал Manchester очищенного в нормальных данных на логическом уровне.

Декодирование через аппаратные средства

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

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

микрочип

Я нашел этот первый контур в приложении нотками Microchip.

Оно не предназначено, чтобы быть само-декодированием решения; скорее, Они представляют подход, который может быть реализован с использованием аппаратных средств, которые построили в некоторых из своих последних микроконтроллеров, а именно, конфигурируемые логические ячейки (CLC) и генератор с числовым программным управлением (ПОМНИТЕ).


Диаграмма, взяты из Microchip.

кипарис

Следующая схема кипарис и должна быть использована с PSoC 1.

всегда из приложения заметок производителя


Диаграмма, взяты из кипариса.

Оба этих реализаций интересны тем, что они не восстановить исходные данные непосредственно из переходов Манчестера, несмотря на тот факт, что Манчестер кодирование на основе переходов. скорее, использовать тот факт, что Оригинальный логический уровень всегда есть немного первый переход. Это будет понятнее, если мы посмотрим на обычное время диаграммы Манчестере:


Давайте скажем, что активный фронт тактового является нарастающий фронт. Если сигнал данных низкий по нарастающему фронту тактового сигнала, Манчестер сигнала делает переход от низкого к высокому, чтобы представить низкий логический. Если сигнал данных высока с точки зрения часов подъема, логический уровень сигнала Манчестера непосредственно перед переходом равен логического уровня исходных данных. Сигнал Манчестер имеет переходы, когда часы всегда имеет положительный фронт.

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


но даже если бы это не было. Это время основывается на том факте, что Манчестер сигнал может иметь, чтобы перейти к середине битового периода (при условии, что битовый период, начиная с передним краем оригинальных часов в горе, как в приведенных выше схемах). Откладывая на три четверти периода бита, схема гарантированно дискретизации сигнала после перехода периода центральных бит, и перед активным переходом.

Создать соответствующую задержку, легко, если получатель всегда знает битый период, который будет использоваться передатчиком, но даже если бы это не было, с помощью ссылок в статье будет рассмотрен этот вопрос в полном объеме. Вы можете найти более, чем вы когда-либо хотели знать о восстановлении Манчестерских часов в этой диссертации

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

Диаграмма, взяты из Silicon Labs.

заключение

Конечно, эта статья не будет рассеять все сомнения, что, с помощью ссылок в статье будет рассмотрен этот вопрос в полном объеме.

хорошая статья, для тех, кто действительно заинтересованы будет первым вкусом продолжать в познании этой темы. Для всех остальных это будет мысль, что не мешало бы знать, не имея необходимость дальнейшего углубления темы.

Читайте также: