|
LVDS receiver, с изменяемой частотой в Cyclone III, Cyclone IV |
|
|
|
Dec 13 2010, 11:00
|
Группа: Новичок
Сообщений: 9
Регистрация: 4-05-06
Пользователь №: 16 781

|
Подскажите, плиз, кто работал с LVDS приемниками.
Есть сенсор с LVDS выходами (17 пар + клок пара), нужно его подключить к третьему или четвёртому циклону. десериализация в 10 бит, и lvds не ddr-овские (т.е. данные с частотой клока) Засада в том, что частота клока и данных может менятся от 50 до 480MHz Раньше с LVDS дела не имел, и появились вопросы: 1) если сгенерить lvds receiver со встроенным PLL, то там частота задается жестко. Если задать 480MHz то будет ли приемник нормально работать на меньших частотах? 2) если генерить lvds receiver с внешним PLL, то ему клок нужен в 2 раза медленнее (т.е. ddr) как это можно обойти и привязаться к реальному клоку ? 3) а вообще реализовать в Cyclone lvds receiver который бы работал на разных частотах можно ?
И ещё: как по опыту, стоит ли использовать циклоновский PLL в качестве генератора клока для сенсора в диапазоне 50 - 480MHz? если нет, то какие есть внешние перестраиваемые PLL-ки в этом диапазоне?
|
|
|
|
|
Dec 14 2010, 16:55
|
Группа: Новичок
Сообщений: 9
Регистрация: 4-05-06
Пользователь №: 16 781

|
Спасибо, прошляпил я что циклон не может принять 480MHz. Сбило с толку что квартус позволил так сконфигурировать LVDS приемник. И если я правильно понял, то в циклоне сделать LVDS приемник (не DDR) базирующийся на внешнем изменяемом клоке невозможно? только танцы с бубном в виде внешнего PLL ?
|
|
|
|
|
Dec 17 2010, 09:50
|
Участник

Группа: Свой
Сообщений: 65
Регистрация: 13-09-10
Из: Israel
Пользователь №: 59 464

|
Цитата(Krys @ Dec 17 2010, 08:23)  Но мне пока не видится проблемы: клок подаём на сдвиговый регистр, на его вход - с пинов данных. ПЛЛ не требуется. На вход сдвигового регистра подается клок умноженый на N. Для этого и нужен ПЛЛ, причем чтобы держал фазу 0 (или сколько требуется) между принятым и умноженым клоком.
|
|
|
|
|
Dec 17 2010, 11:07
|
Группа: Новичок
Сообщений: 9
Регистрация: 4-05-06
Пользователь №: 16 781

|
Цитата(Cordroy @ Dec 17 2010, 15:50)  На вход сдвигового регистра подается клок умноженый на N. Для этого и нужен ПЛЛ, причем чтобы держал фазу 0 (или сколько требуется) между принятым и умноженым клоком. Не, ничего умножать не нужно, клок приходит высокочастотный, его поделить нужно чтобы получить клок десериализованных данных. Вопрос в том делать это ПЛЛ-кой (и при изменении частоты клока перегружать ПЛЛ-ку с новыми параметрами), или на логике ? По ходу ещё вопрос возник: если LVDS приемник (сгенерённый визардом) делать с внешней PLL то он предупреждает что к паралельному выходу нужно подцепить регистры-защёлки. Разве он сам внутри их не должен ставить ? И каким НЧ клоком их тактировать (сдвиг фазы ноль, или 180 гадусов)? в описании нарисованны регистры тактируемые инверсным клоком. P.S. совсем уже запутался: в доках сказано что для циклона десериализатор генерится на логике, и вместе с тем обещают чуть ли не 800 мегабит в секунду по LVDS входу. Разве не запредельная частота для циклона получается ? как это они с 800MHz данными то оперируют ?
|
|
|
|
|
Dec 18 2010, 03:03
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
Цитата(max-i-mum @ Dec 17 2010, 20:07)  Не, ничего умножать не нужно, клок приходит высокочастотный, его поделить нужно чтобы получить клок десериализованных данных. Ну вот, значит, я правильно понял постановку задачи. Цитата(max-i-mum @ Dec 17 2010, 20:07)  Вопрос в том делать это ПЛЛ-кой (и при изменении частоты клока перегружать ПЛЛ-ку с новыми параметрами), или на логике ? Я бы сделал на логике. Делить - не умножать. Куда проще. Цитата(max-i-mum @ Dec 17 2010, 20:07)  если LVDS приемник (сгенерённый визардом) делать с внешней PLL то он предупреждает что к паралельному выходу нужно подцепить регистры-защёлки. Разве он сам внутри их не должен ставить ? Ну видимо всё зависит от замысла разработчиков. Если говорят, что не должен - значит не должен. Если в автомобиле нет багажника, то это был замысел разработчиков. И они ничего не должны. И это не значит, что они забыли приделать к кузову багажник. Цитата(max-i-mum @ Dec 17 2010, 20:07)  И каким НЧ клоком их тактировать (сдвиг фазы ноль, или 180 гадусов)? в описании нарисованны регистры тактируемые инверсным клоком. Я бы тактировал клоком с нулевым сдвигом, т.к. это вписывается в концепцию синхронного дизайна. А если 180 градусов - то формально это уже другой клоковый домен. Со всеми вытекающими. А вообще, покажите, пожалуйста, где "предупреждает" и где "нарисованы". Цитата(max-i-mum @ Dec 17 2010, 20:07)  P.S. совсем уже запутался: в доках сказано что для циклона десериализатор генерится на логике, и вместе с тем обещают чуть ли не 800 мегабит в секунду по LVDS входу. Разве не запредельная частота для циклона получается ? как это они с 800MHz данными то оперируют ? Покажите, что написано где. Может, неправильно поняли. Недавно делал SerDes на спартане 3А. Там тоже в какой-то доке рассказывали байку, что прокачивают 600 Мбит/с через LVDS и с использованием DDR клока. Планируем завести их схему хотя бы на 300 Мбит/с.
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
Dec 18 2010, 05:25
|

Lazy
     
Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76

|
Цитата(Krys @ Dec 18 2010, 09:03)  Недавно делал SerDes на спартане 3А. Там тоже в какой-то доке рассказывали байку, что прокачивают 600 Мбит/с через LVDS и с использованием DDR клока. Планируем завести их схему хотя бы на 300 Мбит/с. А в чем проблема-то? Ясное дело что придется играться с DCM, BUFIO, IDDR и т.п. + констрейнтить все это правильно. Недавно чуть голову не сломал с RGMII.
--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
|
|
|
|
|
Dec 18 2010, 19:34
|
Частый гость
 
Группа: Свой
Сообщений: 172
Регистрация: 8-10-04
Пользователь №: 824

|
Цитата(max-i-mum @ Dec 13 2010, 17:00)  Подскажите, плиз, кто работал с LVDS приемниками.
Есть сенсор с LVDS выходами (17 пар + клок пара), нужно его подключить к третьему или четвёртому циклону. десериализация в 10 бит, и lvds не ddr-овские (т.е. данные с частотой клока) Засада в том, что частота клока и данных может менятся от 50 до 480MHz Раньше с LVDS дела не имел, и появились вопросы: 1) если сгенерить lvds receiver со встроенным PLL, то там частота задается жестко. Если задать 480MHz то будет ли приемник нормально работать на меньших частотах? 2) если генерить lvds receiver с внешним PLL, то ему клок нужен в 2 раза медленнее (т.е. ddr) как это можно обойти и привязаться к реальному клоку ? 3) а вообще реализовать в Cyclone lvds receiver который бы работал на разных частотах можно ?
И ещё: как по опыту, стоит ли использовать циклоновский PLL в качестве генератора клока для сенсора в диапазоне 50 - 480MHz? если нет, то какие есть внешние перестраиваемые PLL-ки в этом диапазоне? Если я правильно догодался (что стоит описать все сразу, не мучая телепатов), то у Вас 16 входов данные, один контрольный и клок. (Очень похоже на выход видеосенсора  ) По контрольному сигналу летит слово синхронизации, оно или описано в даташите, или задается через, например, spi. Вам придется подгонять чтение данных по фазе к входному быстрому клоку так, чтобы на выходе параллельной 10битной шины, попасть в нулевой бит. Все это проще сделать на altlvds! В ней уже все сделано и нет нужды изобретать велосипед. Кроме того, вы никакими констрейнами не вытятите времянку до десятков пикосекунд, а lvds это гарантирует, при правильной разводке (а неправильно фиттер не даст разложить). Другой вопрос, как меняется частота входного клока, если плавно и непредсказуемо для альтеры, это один дурдом, (не понятно, в принципе, зачем так делать) если параметрически и Вы этот момент контролируете, то делаете асинхронный сброс pll и все дела. Частота жестко не задается, жестко задается отношение битрейта к частоте! PLL ничего про Вашу входную частоту не знает, а все делает на делении и умножении простых чисел. Отношение битрейта к клоку определяет как разложены Ваши сигналы друг к другу. 800Mb это в ддр (400МГц) и, проверенно, реально работает - не сомневайтесь!
|
|
|
|
|
Dec 20 2010, 06:33
|
Частый гость
 
Группа: Свой
Сообщений: 172
Регистрация: 8-10-04
Пользователь №: 824

|
Цитата(DmitryR @ Dec 20 2010, 12:02)  Как 400 МГц DDR. Не запредельная. Все работает в соответствии с описанием: таблица 1-31 на странице 1-22. В чем вопрос собственно?
|
|
|
|
|
Dec 20 2010, 07:20
|
Группа: Новичок
Сообщений: 9
Регистрация: 4-05-06
Пользователь №: 16 781

|
Цитата(tvv @ Dec 20 2010, 12:33)  Все работает в соответствии с описанием: таблица 1-31 на странице 1-22. В чем вопрос собственно? спасиб, не обратил внимания что клок DDR (в 2 раза медленее). Получается что сдвиговый регистр в LVDS приемнике циклона (а в циклоне он реализуется просто на обычной логике) может работать на частоте 437.5 МГц? А более 800Mbs получается за счёт DDR модулей в I/O правильно ? Цитата(tvv @ Dec 19 2010, 01:34)  Если я правильно догодался (что стоит описать все сразу, не мучая телепатов), то у Вас 16 входов данные, один контрольный и клок. (Очень похоже на выход видеосенсора  ) По контрольному сигналу летит слово синхронизации, оно или описано в даташите, или задается через, например, spi. Вам придется подгонять чтение данных по фазе к входному быстрому клоку так, чтобы на выходе параллельной 10битной шины, попасть в нулевой бит. Все это проще сделать на altlvds! В ней уже все сделано и нет нужды изобретать велосипед. Кроме того, вы никакими констрейнами не вытятите времянку до десятков пикосекунд, а lvds это гарантирует, при правильной разводке (а неправильно фиттер не даст разложить). Другой вопрос, как меняется частота входного клока, если плавно и непредсказуемо для альтеры, это один дурдом, (не понятно, в принципе, зачем так делать) если параметрически и Вы этот момент контролируете, то делаете асинхронный сброс pll и все дела. Частота жестко не задается, жестко задается отношение битрейта к частоте! PLL ничего про Вашу входную частоту не знает, а все делает на делении и умножении простых чисел. Отношение битрейта к клоку определяет как разложены Ваши сигналы друг к другу. 800Mb это в ддр (400МГц) и, проверенно, реально работает - не сомневайтесь! Всё правильно видеосенсор :-) с 16 выходами данных, 1- синхронизация и клок. На счёт синхронизации Вы имеете вииду bitslip control (rx_data_align) ? Тоже склоняюсь к использованию визарда altlvds, тем более в первый раз. Частоту задаю я сам (всё о ней знаю), а сенсор уже выдает данные в нужной фазе со своим клоком (но частота та, что я задал). На счёт "PLL ничего про Вашу входную частоту не знает, а все делает на делении и умножении простых чисел" не согласен, иначе зачем он её спрашивает в визарде ? Кроме того провел эксперимент: сделал две ПЛЛ с одинаковыми коэфициентами умножения/деления но разными частотами, и посмотрел advanced настройки. Так вот разные внутренние параметры (VCO phase tap for M counter, VCO post scale counter, .....) у ПЛЛ-ек получились разные, так что не всё равно какую частоту на ПЛЛ подавать (при одинаковых коэфициентах умножения/деления но для разных входных частот создаются разные ПЛЛ)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|