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

Подскажите, плиз, кто работал с 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-ки в этом диапазоне?

 

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


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

Берете LVDS заводите на Fast Input Registers, клок - на source-synchronous PLL и все. Правда Циклон не потянет 480 МГц (если вы только не поставите С6), и придется сделать на входе триггеры DDR, а частоту 240, что тоже не является проблемой. Как PLL, сконфигурированная на конкретную частоту поведет себя на других частотах - вопрос, но PLL можно по ходу дела переконфигурировать. Проблема одна - у Cyclone-IV максимальная входная частота PLL 472.5 МГц. Поэтому проще будет поставить внешнюю PLL (например от National) с двумя выходами: один выход отправить на ресивер, а другой (деленый пополам) - на Циклон.

 

А еще проще возможно было бы просто использовать внутренний ресивер в Cyclone-IV GX.

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


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

Спасибо, прошляпил я что циклон не может принять 480MHz.

Сбило с толку что квартус позволил так сконфигурировать LVDS приемник.

И если я правильно понял, то в циклоне сделать LVDS приемник (не DDR) базирующийся на внешнем изменяемом клоке невозможно?

только танцы с бубном в виде внешнего PLL ?

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


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

Даже если принять самый жесткий вариант, при котором

- PLL при изменении внешней частоты будет тихо впадать в маразм, не теряя lock

- сигнала о том, что внешняя частота изменилась, нет

Все остается возможным. Надо завести в FPGA постоянную максимально высокую частоту (от генератора) и с ее помощью считать примерно период входной частоты. При его изменении переконфигурировать и сбрасывать основную PLL. Вот и все.

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


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

Извините, если не очень въехал в Ваш вопрос. Но мне пока не видится проблемы: клок подаём на сдвиговый регистр, на его вход - с пинов данных. ПЛЛ не требуется. Десериализовать легче, чем сериализовать. Т.к. деление частоты - операция чисто цифровая. А умножение - с привлечением аналоговых устройств (ГУН и т.п., не считая цифровый ПЛЛ). Соответственно при изменении частоты не будет никаких проблем, т.к. всё останется полностью синхронным.

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


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

Извините, если не очень въехал в Ваш вопрос. Но мне пока не видится проблемы: клок подаём на сдвиговый регистр, на его вход - с пинов данных. ПЛЛ не требуется.
Если бы все было так просто - не делали бы в FPGA быстрых аппаратных десериализаторов, да не изобретали бы source syncronous mode для PLL.

 

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


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

Но мне пока не видится проблемы: клок подаём на сдвиговый регистр, на его вход - с пинов данных. ПЛЛ не требуется.

 

На вход сдвигового регистра подается клок умноженый на N. Для этого и нужен ПЛЛ, причем чтобы держал фазу 0 (или сколько требуется) между принятым и умноженым клоком.

 

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


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

На вход сдвигового регистра подается клок умноженый на N. Для этого и нужен ПЛЛ, причем чтобы держал фазу 0 (или сколько требуется) между принятым и умноженым клоком.

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

Вопрос в том делать это ПЛЛ-кой (и при изменении частоты клока перегружать ПЛЛ-ку с новыми параметрами), или на логике ?

 

По ходу ещё вопрос возник:

если LVDS приемник (сгенерённый визардом) делать с внешней PLL то он предупреждает что к паралельному выходу нужно подцепить регистры-защёлки.

Разве он сам внутри их не должен ставить ?

И каким НЧ клоком их тактировать (сдвиг фазы ноль, или 180 гадусов)? в описании нарисованны регистры тактируемые инверсным клоком.

 

P.S.

совсем уже запутался: в доках сказано что для циклона десериализатор генерится на логике, и вместе с тем обещают чуть ли не 800 мегабит в секунду по LVDS входу.

Разве не запредельная частота для циклона получается ? как это они с 800MHz данными то оперируют ?

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


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

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

Вопрос в том делать это ПЛЛ-кой (и при изменении частоты клока перегружать ПЛЛ-ку с новыми параметрами), или на логике ?
Я бы сделал на логике. Делить - не умножать. Куда проще.

если LVDS приемник (сгенерённый визардом) делать с внешней PLL то он предупреждает что к паралельному выходу нужно подцепить регистры-защёлки.

Разве он сам внутри их не должен ставить ?

Ну видимо всё зависит от замысла разработчиков. Если говорят, что не должен - значит не должен. Если в автомобиле нет багажника, то это был замысел разработчиков. И они ничего не должны. И это не значит, что они забыли приделать к кузову багажник.

И каким НЧ клоком их тактировать (сдвиг фазы ноль, или 180 гадусов)? в описании нарисованны регистры тактируемые инверсным клоком.
Я бы тактировал клоком с нулевым сдвигом, т.к. это вписывается в концепцию синхронного дизайна. А если 180 градусов - то формально это уже другой клоковый домен. Со всеми вытекающими.

 

А вообще, покажите, пожалуйста, где "предупреждает" и где "нарисованы".

 

 

P.S.

совсем уже запутался: в доках сказано что для циклона десериализатор генерится на логике, и вместе с тем обещают чуть ли не 800 мегабит в секунду по LVDS входу.

Разве не запредельная частота для циклона получается ? как это они с 800MHz данными то оперируют ?

Покажите, что написано где. Может, неправильно поняли. Недавно делал SerDes на спартане 3А. Там тоже в какой-то доке рассказывали байку, что прокачивают 600 Мбит/с через LVDS и с использованием DDR клока. Планируем завести их схему хотя бы на 300 Мбит/с.

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


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

Недавно делал SerDes на спартане 3А. Там тоже в какой-то доке рассказывали байку, что прокачивают 600 Мбит/с через LVDS и с использованием DDR клока. Планируем завести их схему хотя бы на 300 Мбит/с.

 

А в чем проблема-то?

Ясное дело что придется играться с DCM, BUFIO, IDDR и т.п.

+ констрейнтить все это правильно. Недавно чуть голову не сломал с RGMII.

 

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


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

Ясное дело что придется играться с DCM, BUFIO, IDDR и т.п.

+ констрейнтить все это правильно. Недавно чуть голову не сломал с RGMII.

Именно в этом и проблема :) Что на автомате это всё не пойдёт. Только ручками исхитряться. Но ой как неохота этим заниматься.

 

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


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

Подскажите, плиз, кто работал с 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МГц) и, проверенно, реально работает - не сомневайтесь!

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


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

совсем уже запутался: в доках сказано что для циклона десериализатор генерится на логике, и вместе с тем обещают чуть ли не 800 мегабит в секунду по LVDS входу.

Разве не запредельная частота для циклона получается ? как это они с 800MHz данными то оперируют ?

Как 400 МГц DDR. Не запредельная.

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


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

Как 400 МГц DDR. Не запредельная.

Все работает в соответствии с описанием: таблица 1-31 на странице 1-22. В чем вопрос собственно?

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


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

Все работает в соответствии с описанием: таблица 1-31 на странице 1-22. В чем вопрос собственно?

спасиб, не обратил внимания что клок DDR (в 2 раза медленее).

Получается что сдвиговый регистр в LVDS приемнике циклона (а в циклоне он реализуется просто на обычной логике) может работать на частоте 437.5 МГц?

А более 800Mbs получается за счёт DDR модулей в I/O правильно ?

 

Если я правильно догодался (что стоит описать все сразу, не мучая телепатов), то у Вас 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, .....) у ПЛЛ-ек получились разные, так что не всё равно какую частоту на ПЛЛ подавать

(при одинаковых коэфициентах умножения/деления но для разных входных частот создаются разные ПЛЛ)

 

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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