max-i-mum 0 13 декабря, 2010 Опубликовано 13 декабря, 2010 · Жалоба Подскажите, плиз, кто работал с 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-ки в этом диапазоне? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 14 декабря, 2010 Опубликовано 14 декабря, 2010 · Жалоба Берете LVDS заводите на Fast Input Registers, клок - на source-synchronous PLL и все. Правда Циклон не потянет 480 МГц (если вы только не поставите С6), и придется сделать на входе триггеры DDR, а частоту 240, что тоже не является проблемой. Как PLL, сконфигурированная на конкретную частоту поведет себя на других частотах - вопрос, но PLL можно по ходу дела переконфигурировать. Проблема одна - у Cyclone-IV максимальная входная частота PLL 472.5 МГц. Поэтому проще будет поставить внешнюю PLL (например от National) с двумя выходами: один выход отправить на ресивер, а другой (деленый пополам) - на Циклон. А еще проще возможно было бы просто использовать внутренний ресивер в Cyclone-IV GX. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
max-i-mum 0 14 декабря, 2010 Опубликовано 14 декабря, 2010 · Жалоба Спасибо, прошляпил я что циклон не может принять 480MHz. Сбило с толку что квартус позволил так сконфигурировать LVDS приемник. И если я правильно понял, то в циклоне сделать LVDS приемник (не DDR) базирующийся на внешнем изменяемом клоке невозможно? только танцы с бубном в виде внешнего PLL ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 15 декабря, 2010 Опубликовано 15 декабря, 2010 · Жалоба Даже если принять самый жесткий вариант, при котором - PLL при изменении внешней частоты будет тихо впадать в маразм, не теряя lock - сигнала о том, что внешняя частота изменилась, нет Все остается возможным. Надо завести в FPGA постоянную максимально высокую частоту (от генератора) и с ее помощью считать примерно период входной частоты. При его изменении переконфигурировать и сбрасывать основную PLL. Вот и все. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 17 декабря, 2010 Опубликовано 17 декабря, 2010 · Жалоба Извините, если не очень въехал в Ваш вопрос. Но мне пока не видится проблемы: клок подаём на сдвиговый регистр, на его вход - с пинов данных. ПЛЛ не требуется. Десериализовать легче, чем сериализовать. Т.к. деление частоты - операция чисто цифровая. А умножение - с привлечением аналоговых устройств (ГУН и т.п., не считая цифровый ПЛЛ). Соответственно при изменении частоты не будет никаких проблем, т.к. всё останется полностью синхронным. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 17 декабря, 2010 Опубликовано 17 декабря, 2010 · Жалоба Извините, если не очень въехал в Ваш вопрос. Но мне пока не видится проблемы: клок подаём на сдвиговый регистр, на его вход - с пинов данных. ПЛЛ не требуется.Если бы все было так просто - не делали бы в FPGA быстрых аппаратных десериализаторов, да не изобретали бы source syncronous mode для PLL. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Cordroy 0 17 декабря, 2010 Опубликовано 17 декабря, 2010 · Жалоба Но мне пока не видится проблемы: клок подаём на сдвиговый регистр, на его вход - с пинов данных. ПЛЛ не требуется. На вход сдвигового регистра подается клок умноженый на N. Для этого и нужен ПЛЛ, причем чтобы держал фазу 0 (или сколько требуется) между принятым и умноженым клоком. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
max-i-mum 0 17 декабря, 2010 Опубликовано 17 декабря, 2010 · Жалоба На вход сдвигового регистра подается клок умноженый на N. Для этого и нужен ПЛЛ, причем чтобы держал фазу 0 (или сколько требуется) между принятым и умноженым клоком. Не, ничего умножать не нужно, клок приходит высокочастотный, его поделить нужно чтобы получить клок десериализованных данных. Вопрос в том делать это ПЛЛ-кой (и при изменении частоты клока перегружать ПЛЛ-ку с новыми параметрами), или на логике ? По ходу ещё вопрос возник: если LVDS приемник (сгенерённый визардом) делать с внешней PLL то он предупреждает что к паралельному выходу нужно подцепить регистры-защёлки. Разве он сам внутри их не должен ставить ? И каким НЧ клоком их тактировать (сдвиг фазы ноль, или 180 гадусов)? в описании нарисованны регистры тактируемые инверсным клоком. P.S. совсем уже запутался: в доках сказано что для циклона десериализатор генерится на логике, и вместе с тем обещают чуть ли не 800 мегабит в секунду по LVDS входу. Разве не запредельная частота для циклона получается ? как это они с 800MHz данными то оперируют ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 18 декабря, 2010 Опубликовано 18 декабря, 2010 · Жалоба Не, ничего умножать не нужно, клок приходит высокочастотный, его поделить нужно чтобы получить клок десериализованных данных.Ну вот, значит, я правильно понял постановку задачи. Вопрос в том делать это ПЛЛ-кой (и при изменении частоты клока перегружать ПЛЛ-ку с новыми параметрами), или на логике ?Я бы сделал на логике. Делить - не умножать. Куда проще. если LVDS приемник (сгенерённый визардом) делать с внешней PLL то он предупреждает что к паралельному выходу нужно подцепить регистры-защёлки. Разве он сам внутри их не должен ставить ? Ну видимо всё зависит от замысла разработчиков. Если говорят, что не должен - значит не должен. Если в автомобиле нет багажника, то это был замысел разработчиков. И они ничего не должны. И это не значит, что они забыли приделать к кузову багажник. И каким НЧ клоком их тактировать (сдвиг фазы ноль, или 180 гадусов)? в описании нарисованны регистры тактируемые инверсным клоком.Я бы тактировал клоком с нулевым сдвигом, т.к. это вписывается в концепцию синхронного дизайна. А если 180 градусов - то формально это уже другой клоковый домен. Со всеми вытекающими. А вообще, покажите, пожалуйста, где "предупреждает" и где "нарисованы". P.S. совсем уже запутался: в доках сказано что для циклона десериализатор генерится на логике, и вместе с тем обещают чуть ли не 800 мегабит в секунду по LVDS входу. Разве не запредельная частота для циклона получается ? как это они с 800MHz данными то оперируют ? Покажите, что написано где. Может, неправильно поняли. Недавно делал SerDes на спартане 3А. Там тоже в какой-то доке рассказывали байку, что прокачивают 600 Мбит/с через LVDS и с использованием DDR клока. Планируем завести их схему хотя бы на 300 Мбит/с. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LV26 0 18 декабря, 2010 Опубликовано 18 декабря, 2010 · Жалоба Недавно делал SerDes на спартане 3А. Там тоже в какой-то доке рассказывали байку, что прокачивают 600 Мбит/с через LVDS и с использованием DDR клока. Планируем завести их схему хотя бы на 300 Мбит/с. А в чем проблема-то? Ясное дело что придется играться с DCM, BUFIO, IDDR и т.п. + констрейнтить все это правильно. Недавно чуть голову не сломал с RGMII. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 18 декабря, 2010 Опубликовано 18 декабря, 2010 · Жалоба Ясное дело что придется играться с DCM, BUFIO, IDDR и т.п. + констрейнтить все это правильно. Недавно чуть голову не сломал с RGMII. Именно в этом и проблема :) Что на автомате это всё не пойдёт. Только ручками исхитряться. Но ой как неохота этим заниматься. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tvv 0 18 декабря, 2010 Опубликовано 18 декабря, 2010 · Жалоба Подскажите, плиз, кто работал с 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МГц) и, проверенно, реально работает - не сомневайтесь! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryR 0 20 декабря, 2010 Опубликовано 20 декабря, 2010 · Жалоба совсем уже запутался: в доках сказано что для циклона десериализатор генерится на логике, и вместе с тем обещают чуть ли не 800 мегабит в секунду по LVDS входу. Разве не запредельная частота для циклона получается ? как это они с 800MHz данными то оперируют ? Как 400 МГц DDR. Не запредельная. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tvv 0 20 декабря, 2010 Опубликовано 20 декабря, 2010 · Жалоба Как 400 МГц DDR. Не запредельная. Все работает в соответствии с описанием: таблица 1-31 на странице 1-22. В чем вопрос собственно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
max-i-mum 0 20 декабря, 2010 Опубликовано 20 декабря, 2010 · Жалоба Все работает в соответствии с описанием: таблица 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, .....) у ПЛЛ-ек получились разные, так что не всё равно какую частоту на ПЛЛ подавать (при одинаковых коэфициентах умножения/деления но для разных входных частот создаются разные ПЛЛ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться