|
Clock Recovery из 8B10B |
|
|
|
Oct 25 2015, 12:08
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 30-11-07
Пользователь №: 32 839

|
Передо мной стоит задача связать два девайса по одному каналу. Из чипа выходит LVDS и в другой чип входит LVDS. Предполагаю использовать Xilinx Spartan 6 и не использовать GTP (уже занято). Кодирование в канале планирую использовать 8B10B. Передатчик до 950 Мбит/с я уже сделал (это потому что speed grade -2), тут всё просто. А вот с приёмом проблема. XAPP1064 я, разумеется, читал, но вот в чём проблема - я не хочу тащить второй канал для передачи клока. Вот прям очень сильно не хочу - это настолько усложняет реализацию, что лишает всю затею смысла. Короче, считайте, что канал даден свыше только один, и это не обсуждается. (Было бы два - сделал бы, как в XAPP1064, и вопроса бы не было.) Так что очень хочется обойтись одним каналом. Соответственно вопрос - подскажите, пожалуйста, что тут можно придумать, ну или аргументированно объясните, что задача нерешаемая, чтоб я зря время не тратил! Пожалуйста!
(Вариант снизить скорость, скажем, до 125 Мбит/с - это решаемо, но это неинтересно. Надо больше. Чем больше - тем лучше.)
|
|
|
|
|
 |
Ответов
|
Oct 25 2015, 14:55
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 30-11-07
Пользователь №: 32 839

|
Была ещё одна идея - не восстанавливать клок, а сдвигать данные. Скажем, и на приёмнике и на передатчике генерятся примерно одинаковые частоты. Очевидно, они слегка различаются. Так вот, с точки зрения приёмника мы видим сигнал с медленно плывущей (относительно клока в приёмнике) фазой. Почему бы нам не попытаться эту фазу постоянно компенсировать за счёт регулирования задержки на IODELAY2? Ну да, с какой-то периодичностью мы будем выпадать из синхронизации, тут тогда вопрос возникает - как часто это будет происходить? Скажем, если я возьму кварцы с малым начальным разбросом частоты, то я могу надеяться, что различие частот будет не более 10 в минус 5, а значит, приёмник будет сбиваться не чаще чем примерно 1 раз на 100 килобит.
|
|
|
|
|
Oct 25 2015, 16:21
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Vitaly_N @ Oct 25 2015, 21:55)  Была ещё одна идея - не восстанавливать клок, а сдвигать данные. Скажем, и на приёмнике и на передатчике генерятся примерно одинаковые частоты. Очевидно, они слегка различаются. Так вот, с точки зрения приёмника мы видим сигнал с медленно плывущей (относительно клока в приёмнике) фазой. Почему бы нам не попытаться эту фазу постоянно компенсировать за счёт регулирования задержки на IODELAY2? Ну да, с какой-то периодичностью мы будем выпадать из синхронизации, тут тогда вопрос возникает - как часто это будет происходить? Скажем, если я возьму кварцы с малым начальным разбросом частоты, то я могу надеяться, что различие частот будет не более 10 в минус 5, а значит, приёмник будет сбиваться не чаще чем примерно 1 раз на 100 килобит. сигнал управления у вас будет пила с восходящим или нисходящим наклоном, т.к. линия задержки у вас ограниченна, то на краях возникает перескок +- символ. Что вызовет проскальзывание бита -> выход из синхронизации. В итоге вам придется делать что-то вроде TDMA модема - на передатчике сделать короткие пакеты и вставить между ними паузы. на приемнике входить в синхронизм в начальный момент времени и ловить пакет. Но это будет не 950 мегабит, как вы просили в первом посте.
--------------------
|
|
|
|
|
Oct 25 2015, 17:09
|
Участник

Группа: Участник
Сообщений: 47
Регистрация: 30-11-07
Пользователь №: 32 839

|
Цитата(des00 @ Oct 25 2015, 22:21)  сигнал управления у вас будет пила с восходящим или нисходящим наклоном, т.к. линия задержки у вас ограниченна, то на краях возникает перескок +- символ. Что вызовет проскальзывание бита -> выход из синхронизации. В итоге вам придется делать что-то вроде TDMA модема - на передатчике сделать короткие пакеты и вставить между ними паузы. на приемнике входить в синхронизм в начальный момент времени и ловить пакет. Но это будет не 950 мегабит, как вы просили в первом посте. Ну ведь получится же? Ну пусть не 950 мегабит, но хотя бы 800 - всё лучше, чем 125... Цитата(Timmy @ Oct 25 2015, 21:48)  Только потребуется ревизия чипов, где исправлены грубые ошибки в IODELAY2. А поподробнее можно? Были какие-то errata? И есть ещё одна идея - при помощи IODELAY2 сдвигать себе референсный клок. При этом потеряем не бит входного потока, а такт клока, который, по большому счёту не жалко., потому что он информации не несёт в отличие от входного потока данных. Уповаем на то, что при делении на D и на М потеря одного клока окажется не смертельной, а частота PLL резко не уползёт и не выпадет из захвата с потоком данных. Или уползёт?
|
|
|
|
Сообщений в этой теме
Vitaly_N Clock Recovery из 8B10B Oct 25 2015, 12:08 des00 Цитата(Vitaly_N @ Oct 25 2015, 19:08) арг... Oct 25 2015, 13:10 Vitaly_N Цитата(des00 @ Oct 25 2015, 19:10) отсутс... Oct 25 2015, 14:00  des00 Цитата(Vitaly_N @ Oct 25 2015, 21:00) Кло... Oct 25 2015, 14:16 Timmy Цитата(Vitaly_N @ Oct 25 2015, 17:55) Был... Oct 25 2015, 15:48 Zig Подобные решения (приём данных без восстановления ... Oct 25 2015, 19:38 Vitaly_N Цитата(Zig @ Oct 26 2015, 01:38) Подобные... Oct 26 2015, 05:26  des00 Цитата(Vitaly_N @ Oct 26 2015, 12:26) А н... Oct 26 2015, 06:35   Vitaly_N Цитата(des00 @ Oct 26 2015, 12:35) http:/... Oct 26 2015, 11:38 AndreiUS У Xilinx'а есть такое ядро как 1000BASE-X SGMI... Oct 25 2015, 20:08 des00 Цитата(Vitaly_N @ Oct 26 2015, 00:09) Ну ... Oct 26 2015, 01:56 Vitaly_N Посмотрел XAPP224. Это, правда, старая аппликуха, ... Nov 19 2015, 05:20
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|