Jump to content

    

Какие существуют способы декодирования Манчестерского кода?

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

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

Какие еще существуют способы декодирования?

Share this post


Link to post
Share on other sites

Нарисуйте эпюры вашего (Манчестер II) с тем что в них закодировано.

А то мало-ли кто как называет...

 

Какую частоту обоработки/информации вы хотели бы?

Share this post


Link to post
Share on other sites
6 часов назад, ReFFum сказал:

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

Не обязательно. Я на Амеге128-16 МГц параллельно декодировал 32 канала манчестерского кода скорости 1200 бод. На полубитовый интервал было 8 выборок, по-моему.

Share this post


Link to post
Share on other sites
12 часов назад, ReFFum сказал:

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

Какие еще существуют способы декодирования?

Может быть и существуют какие то крутые "радиотехнические" методы декодирования с использованием ФАПЧ для восстановления тактовой, но обычные "рабоче-крестьянские" методы предполагают именно стробирование обычно на не менее чем 12 - 16 кратных частотах, с дальнейшим распознаванием единиц и нулей по длительности тактовых интервалов (иногда с учетом предыдущих значений). 

Share this post


Link to post
Share on other sites
12 часов назад, ReFFum сказал:

Какие еще существуют способы декодирования?

Манчестер 2 есть "свёртка" битового потока данных с несущей (клоком) по исключающему ИЛИ (XOR). Для кодирования просто прогоняете сигнал синхронно с клоком:

 

out = in ^ clk

 

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

Share this post


Link to post
Share on other sites

Позвольте я вставлю свои 5 копеек

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

Если вход одиночный и чистенький - без дребезга, без искажений фаз и т.п.,

То ответ Вам дал dxp.

В противном случае (реальная жизнь, кхе-кхе) нужно отслеживать:

 - разницу скоростей и/или джиттер - до +-25% от идеального синхросигнала

- дребезг

- фазовые искажения

- еще какую-нибудь бяку типа режима передачи в синхро бите (запрос-ответ)

Кроме как счетчиками (несколькими) не решить.

В реале хватает частоты х8-х16 от входной.

Еще хороший вариант - применить специализированные микросхемы приемопередатчиков.

Это снимет много головных болей :biggrin:

Data Delay Devices, HOLT INTEGRATED CIRCUITS к примеру.

Share this post


Link to post
Share on other sites

без х8/х16 частоты, и ФАПЧей для восстановления клоков, есть ещё рабоче-крестьянские методы с задержкой на 1.5 такта.

http://ww1.microchip.com/downloads/en/appnotes/01470a.pdf

баловства ради, подключал msp430g2553 (у них клоки SPI от клоков ядра полностью отвязаны и могут быть какие угодно) к 10МБитному езернету используя

74hc74, 74hc86, и пару RC цепочек в качестве декодера манчестера, даже как-то работало.

 

Share this post


Link to post
Share on other sites
14 часов назад, _pv сказал:

даже как-то работало.

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

Share this post


Link to post
Share on other sites
1 hour ago, vladec said:

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

если фронты дрожжат на +-25% от периода (чтобы метод декодирования с задержкой на 1.5 такта перестал работать нормально), то это явно не у приёмника проблемы.

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

Share this post


Link to post
Share on other sites
19 часов назад, _pv сказал:

если фронты дрожжат на +-25% от периода (чтобы метод декодирования с задержкой на 1.5 такта перестал работать нормально), то это явно не у приёмника проблемы.

Да, фронты дрожат, но к сожалению, чаще всего решение этой проблемы падает на приёмник...

В 31.07.2019 в 21:20, _pv сказал:

без х8/х16 частоты, и ФАПЧей для восстановления клоков, есть ещё рабоче-крестьянские методы с задержкой на 1.5 такта.

http://ww1.microchip.com/downloads/en/appnotes/01470a.pdf

 

 

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

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

Посему что-то толковое подсказать не представляется возможным.

Share this post


Link to post
Share on other sites

Мне нужно сделать приемник SPDIF. Но я задал общий вопрос. Ведь есть протоколы, использующие Манчестерский код, со скоростями 100 Мб/с. Например, какие-то варианты Fast Ethernet. Очевидно, что в них нельзя использовать oversampling x8/x16. Используется что-то другое. Мне стало интересно, что?

Share this post


Link to post
Share on other sites

манчестер в езернете закончился на 10MБитах.

а готовые spdif приёмники чем не устраивают?

тем более что в каких-то stm32 вроде бы i2s дополнительно умел spdif кодировать/декодировать.

Share this post


Link to post
Share on other sites
В 02.08.2019 в 11:57, ReFFum сказал:

Используется что-то другое. Мне стало интересно, что?

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

Share this post


Link to post
Share on other sites

ReFFum

со скоростями 100 Мб/с. Например, какие-то варианты Fast Ethernet.

Там полноценные цифровые модемы с АЦП, синхронизаторами, эквалайзерами и т. п. Большая передискретизация не является необходимой.

Share this post


Link to post
Share on other sites
Quote

а готовые spdif приёмники чем не устраивают?

Мне нужно сделать SPDIF приемник для Altera(Intel) Cyclone-IV. В IP я не нашел SPDIF-приемника. На сайте был Application Note, но он не доспупен для скачивания сейчас. Если Вам не трудно, подскажите готовые реализации SPDIF. 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now