Перейти к содержанию
    

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 часов назад, ReFFum сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 часов назад, ReFFum сказал:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 часов назад, ReFFum сказал:

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

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

 

out = in ^ clk

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

- дребезг

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

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

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

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 часов назад, _pv сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, vladec said:

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 часов назад, _pv сказал:

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

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

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

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

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

 

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 02.08.2019 в 11:57, ReFFum сказал:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ReFFum

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Quote

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...