|
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-ки в этом диапазоне?
|
|
|
|
3 страниц
1 2 3 >
|
 |
Ответов
(1 - 31)
|
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, .....) у ПЛЛ-ек получились разные, так что не всё равно какую частоту на ПЛЛ подавать (при одинаковых коэфициентах умножения/деления но для разных входных частот создаются разные ПЛЛ)
|
|
|
|
|
Dec 20 2010, 07:51
|
Группа: Новичок
Сообщений: 9
Регистрация: 4-05-06
Пользователь №: 16 781

|
Цитата(Krys @ Dec 18 2010, 09:03)  А вообще, покажите, пожалуйста, где "предупреждает" и где "нарисованы".  на счёт инверсного клока alt_lvds_user_guideстраница 3 Цитата(DmitryR @ Dec 20 2010, 13:23)  Для того, чтобы расчитать множители. Прочитайте про реконфигурацию PLL - входная частота там действительно внутри нигде не хранится. Т.е. я правильно Вас понимаю, что сгенерив ПЛЛ на деление входного клока 100МГц пополам, и подав на вход ПЛЛ 50МГц клок - я получу на выходе свои 25? надёжные ?
Сообщение отредактировал max-i-mum - Dec 20 2010, 07:46
|
|
|
|
|
Dec 20 2010, 08:09
|
Профессионал
    
Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770

|
Цитата(max-i-mum @ Dec 20 2010, 13:51)  Т.е. я правильно Вас понимаю, что сгенерив ПЛЛ на деление входного клока 100МГц пополам, и подав на вход ПЛЛ 50МГц клок - я получу на выходе свои 25? надёжные ? Нет, вы понимаете неправильно. Дело в том, что задавая эти множители необходимо поддерживать частоту VCO PLL в определенных пределах. То есть, чем ниже входная частота, тем выше необходимо задавать M. То есть если для некоторой входной частоты вам визард насчитал M/N как, допустим, 12/10 - сокращать эту дробь до 6/5 нельзя (как правило). Вобщем там в визарде есть VCO freq - поиграйтесь с разными коэффицентами и посмотрите.
|
|
|
|
|
Dec 20 2010, 08:29
|
Группа: Новичок
Сообщений: 9
Регистрация: 4-05-06
Пользователь №: 16 781

|
Цитата(DmitryR @ Dec 20 2010, 15:09)  Нет, вы понимаете неправильно. Дело в том, что задавая эти множители необходимо поддерживать частоту VCO PLL в определенных пределах. То есть, чем ниже входная частота, тем выше необходимо задавать M. То есть если для некоторой входной частоты вам визард насчитал M/N как, допустим, 12/10 - сокращать эту дробь до 6/5 нельзя (как правило). Вобщем там в визарде есть VCO freq - поиграйтесь с разными коэффицентами и посмотрите. Понял, СПАСИБО!
|
|
|
|
|
Dec 20 2010, 12:43
|
Частый гость
 
Группа: Свой
Сообщений: 172
Регистрация: 8-10-04
Пользователь №: 824

|
Цитата(max-i-mum @ Dec 20 2010, 13:20)  спасиб, не обратил внимания что клок DDR (в 2 раза медленее). Получается что сдвиговый регистр в LVDS приемнике циклона (а в циклоне он реализуется просто на обычной логике) может работать на частоте 437.5 МГц? А более 800Mbs получается за счёт DDR модулей в I/O правильно ? Не совсем (или совсем нет  ) на обычной логике (лично мне безрукому) такую частоту не задать ни какими констрейнами. Думаю что входные регистры лвдс не обычная логика. Попробуйте задать на входе 12бит, например для AD9228, я не смог. Но можно задать 6 бит, поставить битрейт 12*Fclock и частоту Fclock, и собрать слово на полупериоде. У меги больше возможностей, чем кажется. Цитата(max-i-mum @ Dec 20 2010, 13:20)  Всё правильно видеосенсор :-) с 16 выходами данных, 1- синхронизация и клок. На счёт синхронизации Вы имеете вииду bitslip control (rx_data_align) ? Тоже склоняюсь к использованию визарда altlvds, тем более в первый раз. CMOSIS На 2Mp или 4? Цитата(max-i-mum @ Dec 20 2010, 13:20)  Частоту задаю я сам (всё о ней знаю), а сенсор уже выдает данные в нужной фазе со своим клоком (но частота та, что я задал). На счёт "PLL ничего про Вашу входную частоту не знает, а все делает на делении и умножении простых чисел" не согласен, иначе зачем он её спрашивает в визарде ? Кроме того провел эксперимент: сделал две ПЛЛ с одинаковыми коэфициентами умножения/деления но разными частотами, и посмотрел advanced настройки. Так вот разные внутренние параметры (VCO phase tap for M counter, VCO post scale counter, .....) у ПЛЛ-ек получились разные, так что не всё равно какую частоту на ПЛЛ подавать (при одинаковых коэфициентах умножения/деления но для разных входных частот создаются разные ПЛЛ) Тут Вам уже все ответили.
|
|
|
|
|
Dec 21 2010, 09:45
|
Частый гость
 
Группа: Свой
Сообщений: 172
Регистрация: 8-10-04
Пользователь №: 824

|
Цитата(max-i-mum @ Dec 20 2010, 13:20)  Частоту задаю я сам (всё о ней знаю), а сенсор уже выдает данные в нужной фазе со своим клоком (но частота та, что я задал). На счёт "PLL ничего про Вашу входную частоту не знает, а все делает на делении и умножении простых чисел" не согласен, иначе зачем он её спрашивает в визарде ? Кроме того провел эксперимент: сделал две ПЛЛ с одинаковыми коэфициентами умножения/деления но разными частотами, и посмотрел advanced настройки. Так вот разные внутренние параметры (VCO phase tap for M counter, VCO post scale counter, .....) у ПЛЛ-ек получились разные, так что не всё равно какую частоту на ПЛЛ подавать (при одинаковых коэфициентах умножения/деления но для разных входных частот создаются разные ПЛЛ) Как запасной "аэродром" посмотрите этот чип, spi завсегда легче программить, чем мегу. И не забудте отписать результат, пожалуйста.
|
|
|
|
|
Dec 21 2010, 17:05
|
Группа: Новичок
Сообщений: 9
Регистрация: 4-05-06
Пользователь №: 16 781

|
Цитата(tvv @ Dec 20 2010, 18:43)  CMOSIS На 2Mp или 4?  Угадали, CMOSIS  , только custom Цитата(tvv @ Dec 21 2010, 15:45)  Как запасной "аэродром" посмотрите этот чип, spi завсегда легче программить, чем мегу. И не забудте отписать результат, пожалуйста.  спасибо посмотрю, как в железе запущу - отпишусь
|
|
|
|
|
Jul 31 2014, 12:20
|
Группа: Новичок
Сообщений: 5
Регистрация: 16-03-11
Пользователь №: 63 656

|
Здравствуйте. Кто работал с матрицей CMOSIS CMV4000 подскажите. Подскажите ,с какого момента (относительно чего?) начинать десериализацию данных на контрольном выходе (OUTCTR). Картинку и импульсы синхронизации в принципе получил, но нарушен порядок разрядов.
|
|
|
|
|
Aug 2 2014, 14:05
|
Группа: Новичок
Сообщений: 5
Регистрация: 16-03-11
Пользователь №: 63 656

|
Непонятно как определить положение IDLE. Необходимо определить момент когда начинать десериализацию, чтобы точно попасть в самый первый бит. Даташит
|
|
|
|
|
Aug 2 2014, 14:13
|

Гуру
     
Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329

|
Цитата(blackk @ Aug 2 2014, 16:05)  Непонятно как определить положение IDLE. Праграф 4.6 TRAINING DATA: Цитата ...The control channel does not send a training pattern, because it is used to send control information at all time. Word alignment can be done on this channel when the sensor is idle (not exposing or sending image data). In this case all bits of the control word are zero, except for bit [9] (= 0010 0000 0000 or 512 decimal)... И ниже этого текста Figure 33: Training pattern location in the data and control channels.
|
|
|
|
|
Aug 5 2014, 11:17
|
Группа: Новичок
Сообщений: 5
Регистрация: 16-03-11
Пользователь №: 63 656

|
Получается что IDLE в нормально режиме работы появляется только в самом начале, после запуска матрицы? И в этот момент нужно отловить первый бит для десериализации?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|