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

Восстановление данных

Входной поток со скоростью 270Мбит/с. Кодировка 8В/10В.

Если я подам на вход DCM тактовый сигнал с частотой 270 МГц, а на вход CLKFB данные, и на выходе триггер, тактируемый CLK180, то по идее данные должны восстанавливаться и одновременно тактовый сигнал будет подстраиваться под частоту потока данных. Смоделировал в ModelSim вроде работает, но будет ли это работать в железе? И еще вопрос - как определить начало прихода данных?

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


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

Я что-то не понял. Допустим, на вход идет поток данных 001100110011..., т.е. частота на CLKFB получится вдвое ниже, чем на CLKIN. Хотите сказать, что DCM не потеряет LOCK?

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


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

Входной поток со скоростью 270Мбит/с. Кодировка 8В/10В.

Если я подам на вход DCM тактовый сигнал с частотой 270 МГц, а на вход CLKFB данные, и на выходе триггер, тактируемый CLK180, то по идее данные должны восстанавливаться и одновременно тактовый сигнал будет подстраиваться под частоту потока данных. Смоделировал в ModelSim вроде работает, но будет ли это работать в железе? И еще вопрос - как определить начало прихода данных?

В ModelSim заложена очень упрощенная модель DCM'а. В реальности DCM - это полноценная петля ФАПЧ (точнее две ФАПЧ), имеющая как минимум фазовый детектор, интегрирующую цепочку и ГУН. Принцип работы ФАПЧ - это подстройка частоты ГУНа к частоте входного сигнала (в DCM). Так к чему будет подстраиваться частота DCM, если нет обратной связи? Возможны два варианта: либо частота DCM настроится на крайние частоты, либо DCM определит сбой и вообще отключит ГУН. Подавать на вход CLKIN поток 8B/10B также не имеет смысла т.к. в общем случае он псевдослучайный без выраженной спектральной составляющей на частоте 270M.

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


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

В ModelSim заложена очень упрощенная модель DCM'а. В реальности DCM - это полноценная петля ФАПЧ (точнее две ФАПЧ), имеющая как минимум фазовый детектор, интегрирующую цепочку и ГУН. Принцип работы ФАПЧ - это подстройка частоты ГУНа к частоте входного сигнала (в DCM). Так к чему будет подстраиваться частота DCM, если нет обратной связи? Возможны два варианта: либо частота DCM настроится на крайние частоты, либо DCM определит сбой и вообще отключит ГУН. Подавать на вход CLKIN поток 8B/10B также не имеет смысла т.к. в общем случае он псевдослучайный без выраженной спектральной составляющей на частоте 270M.

Жаль конечно, значит придется делать как в xapp224. В принципе там все ясно, но есть одно но...

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

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


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

Жаль конечно, значит придется делать как в xapp224. В принципе там все ясно, но есть одно но...

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

А на что Вам код 8B/10B? Как раз для того, чтобы корректировать ошибки.

Цитата из xapp224:

If the received data is coded in some method such as 8b/10b, this will not be a problem, because an adequate number of transitions will exist.

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


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

А на что Вам код 8B/10B? Как раз для того, чтобы корректировать ошибки.

Цитата из xapp224:

Это если один из символов в байте ошибочный. А если мы примем на один бит больше или наоборот один пропустим? А это вполне вероятно при разных частотах. Ну если на один больше это ладно - можно выкинуть и добить следующим, а если пропустим ? Куда его добивать? Или можно отследить место где пропущен?

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


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

Жаль конечно, значит придется делать как в xapp224. В принципе там все ясно, но есть одно но...

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

 

У Alterы года 2 назад был открытый проект - ASI интерфейс. Это теже 270MB/s последовательные данные с 8В/10В кодеком. Там прием осуществлялся на эквивалентной 3х270 или 5х270 MHz. Делается,

соответствено, 3 или 5 выборок и по мажоритарному принципу выбирается достоверная. Проверял - работает.

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


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

У Alterы года 2 назад был открытый проект - ASI интерфейс. Это теже 270MB/s последовательные данные с 8В/10В кодеком. Там прием осуществлялся на эквивалентной 3х270 или 5х270 MHz. Делается,

соответствено, 3 или 5 выборок и по мажоритарному принципу выбирается достоверная. Проверял - работает.

А где этот открытый проект можно глянуть? Подскажите буду признателен.

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


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

Это если один из символов в байте ошибочный. А если мы примем на один бит больше или наоборот один пропустим? А это вполне вероятно при разных частотах.

Это вряд ли, потому что частота небольшая, приемная PLL будет успевать нормально подстраиваться под девиацию частоты передатчика. Вот если бы частота была раз в пять хотя бы побольше - там да, лишние/выпавшие биты встречаются.

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


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

А где этот открытый проект можно глянуть? Подскажите буду признателен.

 

Пойщу у себя, найду дам знать.

Но на сайте Altera можно найти документацию, там принцип неплохо описан.

 

http://www.altera.com/products/ip/iup/addi.../m-alt-asi.html

 

Почитайте.

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


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

Это вряд ли, потому что частота небольшая, приемная PLL будет успевать нормально подстраиваться под девиацию частоты передатчика. Вот если бы частота была раз в пять хотя бы побольше - там да, лишние/выпавшие биты встречаются.

Из xapp 224

As discussed, the local clock will probably be a bit faster or slower than the incoming clock/data stream, and therefore, there will be clock cycle where the received data is either invalid (local clock faster) or two data bits will be required (local clock slower).

и

In an actual system, these events occur continuously

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


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

Это если один из символов в байте ошибочный. А если мы примем на один бит больше или наоборот один пропустим? А это вполне вероятно при разных частотах. Ну если на один больше это ладно - можно выкинуть и добить следующим, а если пропустим ? Куда его добивать? Или можно отследить место где пропущен?

Похоже Вы еще не до конца разобрались. Поток, который идет с декодирующей схемы (см. Figure 6 из xapp224) нужно подавать на 10-битный сдвиговый регистр. Причем в подавляющем большинстве случаев в этот регистр нужно будет задвигать по 1 биту за такт, и иногда либо пропускать, либо задвигать сразу 2 бита за такт (надеюсь, как это делать, объяснять не надо). Как только накапливается 10 бит, подаете на вход схемы декодера 8B/10B, и получаете на выходе 8 бит. Для того, чтобы все это корректно работало, на странице 7 в разделе "Lock Requirements" подробно расписано, как частота появления ошибочного бита связана с разностью частот приемника и передатчика. Плюс прилагается еще исходный код, чтобы можно было это проверить на практике. Люблю Xilinx, всегда очень грамотно и понятно расписывают свои приложения.

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


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

Похоже Вы еще не до конца разобрались. Поток, который идет с декодирующей схемы (см. Figure 6 из xapp224) нужно подавать на 10-битный сдвиговый регистр. Причем в подавляющем большинстве случаев в этот регистр нужно будет задвигать по 1 биту за такт, и иногда либо пропускать, либо задвигать сразу 2 бита за такт (надеюсь, как это делать, объяснять не надо). Как только накапливается 10 бит, подаете на вход схемы декодера 8B/10B, и получаете на выходе 8 бит. Для того, чтобы все это корректно работало, на странице 7 в разделе "Lock Requirements" подробно расписано, как частота появления ошибочного бита связана с разностью частот приемника и передатчика. Плюс прилагается еще исходный код, чтобы можно было это проверить на практике. Люблю Xilinx, всегда очень грамотно и понятно расписывают свои приложения.

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

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


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

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

Посмотрите, как Xilinx делает 1Gb Ethernet, можете кодер и декодер 8b/10b взять оттуда, или все остальное. Выудил из последнего IP1 для ISE v9.2i (расширение .rar потом удалить).

 

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


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

Посмотрите, как Xilinx делает 1Gb Ethernet, можете кодер и декодер 8b/10b взять оттуда, или все остальное. Выудил из последнего IP1 для ISE v9.2i (расширение .rar потом удалить).

Благодарю. Декодер 8B/10B я сгенерировал в CoreGenerator. А остальное гляну.

 

Благодарю. Декодер 8B/10B я сгенерировал в CoreGenerator. А остальное гляну.

Еще один глупый вопрос. Что со скачаным файлом делать. Просто удалить .rar? А что это получится за файл?

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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