|
Восстановление данных, Как думаете получится? |
|
|
|
Oct 12 2007, 07:10
|
Участник

Группа: Новичок
Сообщений: 57
Регистрация: 18-05-07
Пользователь №: 27 804

|
Входной поток со скоростью 270Мбит/с. Кодировка 8В/10В. Если я подам на вход DCM тактовый сигнал с частотой 270 МГц, а на вход CLKFB данные, и на выходе триггер, тактируемый CLK180, то по идее данные должны восстанавливаться и одновременно тактовый сигнал будет подстраиваться под частоту потока данных. Смоделировал в ModelSim вроде работает, но будет ли это работать в железе? И еще вопрос - как определить начало прихода данных?
|
|
|
|
|
Oct 12 2007, 08:34
|
Узкополосный широкополосник
     
Группа: Свой
Сообщений: 2 316
Регистрация: 13-12-04
Из: Moscow
Пользователь №: 1 462

|
Цитата(Shumok @ Oct 12 2007, 11:10)  Входной поток со скоростью 270Мбит/с. Кодировка 8В/10В. Если я подам на вход DCM тактовый сигнал с частотой 270 МГц, а на вход CLKFB данные, и на выходе триггер, тактируемый CLK180, то по идее данные должны восстанавливаться и одновременно тактовый сигнал будет подстраиваться под частоту потока данных. Смоделировал в ModelSim вроде работает, но будет ли это работать в железе? И еще вопрос - как определить начало прихода данных? В ModelSim заложена очень упрощенная модель DCM'а. В реальности DCM - это полноценная петля ФАПЧ (точнее две ФАПЧ), имеющая как минимум фазовый детектор, интегрирующую цепочку и ГУН. Принцип работы ФАПЧ - это подстройка частоты ГУНа к частоте входного сигнала (в DCM). Так к чему будет подстраиваться частота DCM, если нет обратной связи? Возможны два варианта: либо частота DCM настроится на крайние частоты, либо DCM определит сбой и вообще отключит ГУН. Подавать на вход CLKIN поток 8B/10B также не имеет смысла т.к. в общем случае он псевдослучайный без выраженной спектральной составляющей на частоте 270M.
|
|
|
|
|
Oct 12 2007, 08:43
|
Участник

Группа: Новичок
Сообщений: 57
Регистрация: 18-05-07
Пользователь №: 27 804

|
Цитата(rloc @ Oct 12 2007, 11:34)  В ModelSim заложена очень упрощенная модель DCM'а. В реальности DCM - это полноценная петля ФАПЧ (точнее две ФАПЧ), имеющая как минимум фазовый детектор, интегрирующую цепочку и ГУН. Принцип работы ФАПЧ - это подстройка частоты ГУНа к частоте входного сигнала (в DCM). Так к чему будет подстраиваться частота DCM, если нет обратной связи? Возможны два варианта: либо частота DCM настроится на крайние частоты, либо DCM определит сбой и вообще отключит ГУН. Подавать на вход CLKIN поток 8B/10B также не имеет смысла т.к. в общем случае он псевдослучайный без выраженной спектральной составляющей на частоте 270M. Жаль конечно, значит придется делать как в xapp224. В принципе там все ясно, но есть одно но... Частота тактового генератора приемника и информационного потока будут в любом случае отличаться и современем это приведет к ошибке при выделении информации. Так вот хотелось бы как то время от времени синхронизироваться с информационным потоком.
|
|
|
|
|
Oct 12 2007, 09:11
|
Узкополосный широкополосник
     
Группа: Свой
Сообщений: 2 316
Регистрация: 13-12-04
Из: Moscow
Пользователь №: 1 462

|
Цитата(Shumok @ Oct 12 2007, 12:43)  Жаль конечно, значит придется делать как в 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.
|
|
|
|
|
Oct 12 2007, 10:32
|
Участник

Группа: Новичок
Сообщений: 57
Регистрация: 18-05-07
Пользователь №: 27 804

|
Цитата(rloc @ Oct 12 2007, 12:11)  А на что Вам код 8B/10B? Как раз для того, чтобы корректировать ошибки. Цитата из xapp224: Это если один из символов в байте ошибочный. А если мы примем на один бит больше или наоборот один пропустим? А это вполне вероятно при разных частотах. Ну если на один больше это ладно - можно выкинуть и добить следующим, а если пропустим ? Куда его добивать? Или можно отследить место где пропущен?
|
|
|
|
|
Oct 12 2007, 10:35
|
Участник

Группа: Новичок
Сообщений: 20
Регистрация: 13-10-06
Пользователь №: 21 281

|
Цитата(Shumok @ Oct 12 2007, 11:43)  Жаль конечно, значит придется делать как в xapp224. В принципе там все ясно, но есть одно но... Частота тактового генератора приемника и информационного потока будут в любом случае отличаться и современем это приведет к ошибке при выделении информации. Так вот хотелось бы как то время от времени синхронизироваться с информационным потоком. У Alterы года 2 назад был открытый проект - ASI интерфейс. Это теже 270MB/s последовательные данные с 8В/10В кодеком. Там прием осуществлялся на эквивалентной 3х270 или 5х270 MHz. Делается, соответствено, 3 или 5 выборок и по мажоритарному принципу выбирается достоверная. Проверял - работает.
|
|
|
|
|
Oct 12 2007, 11:04
|
Участник

Группа: Новичок
Сообщений: 57
Регистрация: 18-05-07
Пользователь №: 27 804

|
Цитата(alex5991 @ Oct 12 2007, 13:35)  У Alterы года 2 назад был открытый проект - ASI интерфейс. Это теже 270MB/s последовательные данные с 8В/10В кодеком. Там прием осуществлялся на эквивалентной 3х270 или 5х270 MHz. Делается, соответствено, 3 или 5 выборок и по мажоритарному принципу выбирается достоверная. Проверял - работает. А где этот открытый проект можно глянуть? Подскажите буду признателен.
|
|
|
|
|
Oct 12 2007, 13:35
|
Участник

Группа: Новичок
Сообщений: 20
Регистрация: 13-10-06
Пользователь №: 21 281

|
Цитата(Shumok @ Oct 12 2007, 14:04)  А где этот открытый проект можно глянуть? Подскажите буду признателен. Пойщу у себя, найду дам знать. Но на сайте Altera можно найти документацию, там принцип неплохо описан. http://www.altera.com/products/ip/iup/addi.../m-alt-asi.htmlПочитайте.
|
|
|
|
|
Oct 12 2007, 13:43
|
Участник

Группа: Новичок
Сообщений: 57
Регистрация: 18-05-07
Пользователь №: 27 804

|
Цитата(DmitryR @ Oct 12 2007, 16:25)  Это вряд ли, потому что частота небольшая, приемная 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
|
|
|
|
|
Oct 12 2007, 17:30
|
Узкополосный широкополосник
     
Группа: Свой
Сообщений: 2 316
Регистрация: 13-12-04
Из: Moscow
Пользователь №: 1 462

|
Цитата(Shumok @ Oct 12 2007, 14:32)  Это если один из символов в байте ошибочный. А если мы примем на один бит больше или наоборот один пропустим? А это вполне вероятно при разных частотах. Ну если на один больше это ладно - можно выкинуть и добить следующим, а если пропустим ? Куда его добивать? Или можно отследить место где пропущен? Похоже Вы еще не до конца разобрались. Поток, который идет с декодирующей схемы (см. Figure 6 из xapp224) нужно подавать на 10-битный сдвиговый регистр. Причем в подавляющем большинстве случаев в этот регистр нужно будет задвигать по 1 биту за такт, и иногда либо пропускать, либо задвигать сразу 2 бита за такт (надеюсь, как это делать, объяснять не надо). Как только накапливается 10 бит, подаете на вход схемы декодера 8B/10B, и получаете на выходе 8 бит. Для того, чтобы все это корректно работало, на странице 7 в разделе "Lock Requirements" подробно расписано, как частота появления ошибочного бита связана с разностью частот приемника и передатчика. Плюс прилагается еще исходный код, чтобы можно было это проверить на практике. Люблю Xilinx, всегда очень грамотно и понятно расписывают свои приложения.
|
|
|
|
|
Oct 12 2007, 19:03
|
Участник

Группа: Новичок
Сообщений: 57
Регистрация: 18-05-07
Пользователь №: 27 804

|
Цитата(rloc @ Oct 12 2007, 20:30)  Похоже Вы еще не до конца разобрались. Поток, который идет с декодирующей схемы (см. Figure 6 из xapp224) нужно подавать на 10-битный сдвиговый регистр. Причем в подавляющем большинстве случаев в этот регистр нужно будет задвигать по 1 биту за такт, и иногда либо пропускать, либо задвигать сразу 2 бита за такт (надеюсь, как это делать, объяснять не надо). Как только накапливается 10 бит, подаете на вход схемы декодера 8B/10B, и получаете на выходе 8 бит. Для того, чтобы все это корректно работало, на странице 7 в разделе "Lock Requirements" подробно расписано, как частота появления ошибочного бита связана с разностью частот приемника и передатчика. Плюс прилагается еще исходный код, чтобы можно было это проверить на практике. Люблю Xilinx, всегда очень грамотно и понятно расписывают свои приложения. Спасибо за помощь. Просто у меня мягко говоря проблемы с английским (я французский изучал), а на русском такой инфы не нашел. Поэтому такие туповатые вопросы и возникают  Буду дальше разбираться.
|
|
|
|
|
Oct 12 2007, 19:58
|
Участник

Группа: Новичок
Сообщений: 57
Регистрация: 18-05-07
Пользователь №: 27 804

|
Цитата(rloc @ Oct 12 2007, 22:14)  Посмотрите, как Xilinx делает 1Gb Ethernet, можете кодер и декодер 8b/10b взять оттуда, или все остальное. Выудил из последнего IP1 для ISE v9.2i (расширение .rar потом удалить). [attachment=14404:attachment] Благодарю. Декодер 8B/10B я сгенерировал в CoreGenerator. А остальное гляну. Цитата(Shumok @ Oct 12 2007, 22:54)  Благодарю. Декодер 8B/10B я сгенерировал в CoreGenerator. А остальное гляну. Еще один глупый вопрос. Что со скачаным файлом делать. Просто удалить .rar? А что это получится за файл?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|