|
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:00
|
Участник

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

|
Цитата(des00 @ Oct 25 2015, 19:10)  отсутствие возможности сделать на логике CDR на такие скорости. либо тащите клок, либо ставьте внешнюю CDR, либо освобождайте GTP Клок тащить - не вариант, я уже сказал, GTP освободить невозможно. Я думал использовать DCM_CLKGEN. Там есть интересная фича - FREEZEDCM. Если его подать, то DCM продолжает генерить сигнал даже при отсутствии входного клока. Задумка была такая. Ставлю два IODELAY2, один задерживает на T, другой - на 2T (2T = один бит). XOR их между собой и входным сигналом. Получаю некий импульс синхронно с каждым переходом. Этот импульс подаю на CLKIN DCM, а в отсутствие импульса на DCM подаю FREEZEDCM. Точнее, сначала при старте системы DCM кормлю от генератора с нужной частотой, чтобы он завёлся, а потом, когда увижу данные в канале, через BUFGMUX переключаю на работу от детектора переходов. Однако результаты симулирования отрицательные - несмотря на FREEZE DCM продолжает измерять период входного сигнала. Ну и когда потом FREEZE снимаешь, дескать, поехали работать, эта скотина считает, что новый период должен быть таким, чего DCM намерил со времён последнего импульса. Вообще, именно на такой скорости клок в логике получать и не обязательно. Вполне сгодится клок любой другой частоты, а при помощи PLL потом получу, сколько надо. Скажем, битовая скорость 950 МБит/с, 10 бит на слово, стало быть, вполне устроит восстановленная частота 95 МГц (что вполне посильно для логики общего назначения) или даже 47.5 МГц, которую на PLL разогнать до 950 МГц. Лишь бы синхронно со словом было. В общем, вполне устроит один перепад на слово. Вопрос только, как этот перепад гарантированно выделить... Ещё в ISERDES2 есть встроенный фазовый детектор, правда, я ещё не разобрался, как им пользоваться, стало быть, и не могу понять, поможет оно мне или нет.
|
|
|
|
|
Oct 25 2015, 14:16
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(Vitaly_N @ Oct 25 2015, 21:00)  Клок тащить - не вариант, я уже сказал, GTP освободить невозможно. не всегда наши желания, совпадают с нашими возможностями (с) Цитата Однако результаты симулирования отрицательные шаманство оно всегда такое. Цитата Вообще, именно на такой скорости клок в логике получать и не обязательно. Вполне сгодится клок любой другой частоты, а при помощи PLL потом получу, сколько надо. Скажем, битовая скорость 950 МБит/с, 10 бит на слово, стало быть, вполне устроит восстановленная частота 95 МГц (что вполне посильно для логики общего назначения) или даже 47.5 МГц, которую на PLL разогнать до 950 МГц. Лишь бы синхронно со словом было. В общем, вполне устроит один перепад на слово. Вопрос только, как этот перепад гарантированно выделить... нет у вас слов в канале. там летит поток бит 950Мб/с. 8б10б это всего лишь способ борьбы с постоянкой. И что бы с работать с символами 8б10б, нужно сделать эти символы из битового потока в 950МГц. Для этого нужен CDR.
--------------------
|
|
|
|
Сообщений в этой теме
Vitaly_N Clock Recovery из 8B10B Oct 25 2015, 12:08 Vitaly_N Была ещё одна идея - не восстанавливать клок, а сд... Oct 25 2015, 14:55 Timmy Цитата(Vitaly_N @ Oct 25 2015, 17:55) Был... Oct 25 2015, 15:48 des00 Цитата(Vitaly_N @ Oct 25 2015, 21:55) Был... Oct 25 2015, 16:21  Vitaly_N Цитата(des00 @ Oct 25 2015, 22:21) сигнал... Oct 25 2015, 17:09 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
|
|
|