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

Проектирование LVDS на ПЛИС Altera

В модуле ALT_LVDS_RX в режиме с внутренним PLL, порт rx_inclock - это опорная частота PLL. В режиме внешнего PLL (external PLL) порт rx_inclock - частота дессерилизации

 

Это понятно :)

 

(учитывайте в каком режиме работает ALT_LVDS_RX. В режиме DDR или SDR. Если в режиме DDR - то частота дессерилизации соответственно в 2 раза ниже).

 

Как это учитывать ? Из документации и каких-то разрозненных источников я понял, что до Cyclone 5 DDR использовался, начиная с Cyclone 5 там аппаратный SERDES, без DDR. Так ли это ?

 

Вот если бы у вас стояла задача соединить два Cyclone 5 по LVDS, вы бы делали это через ALTLVDS_TX/RX ? tx_outclock выдавать вообще надо ? Или если на приемном конце разгоняем PLL в ALTLVDS_RX (в режиме External PLL или нет, неважно) от какой-то своей частоты (не tx_outclock от передатчика), то можно и не выдавать tx_outclock ? Тогда получается что принимаемые данные не привязаны ни к какой частоте, ничто не разграничивает байты. Как приемник будет понимать когда защелкивать сериализированные данные, чтобы это было надежно ?

 

Про rx_channel_data_align да, понятно что он делает bit-slip, сдвигает биты в байте. А как добиваться в приемнике верного защелкивания самого бита (это все без DPA ибо Cyclone5) ? Ну вот есть у PLL (если делаем ALTLVDS_RX в режиме External PLL) возможность (pll_phase_en, pll_updn, pll_cntsel сигналы) динамического изменения фазы любых выходящих с нее клоков . Как понять в какую сторону и на сколько двигать, какие критерии ?

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


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

Это понятно :)

 

 

 

Как это учитывать ? Из документации и каких-то разрозненных источников я понял, что до Cyclone 5 DDR использовался, начиная с Cyclone 5 там аппаратный SERDES, без DDR. Так ли это ?

 

Вот если бы у вас стояла задача соединить два Cyclone 5 по LVDS, вы бы делали это через ALTLVDS_TX/RX ? tx_outclock выдавать вообще надо ? Или если на приемном конце разгоняем PLL в ALTLVDS_RX (в режиме External PLL или нет, неважно) от какой-то своей частоты (не tx_outclock от передатчика), то можно и не выдавать tx_outclock ? Тогда получается что принимаемые данные не привязаны ни к какой частоте, ничто не разграничивает байты. Как приемник будет понимать когда защелкивать сериализированные данные, чтобы это было надежно ?

 

Про rx_channel_data_align да, понятно что он делает bit-slip, сдвигает биты в байте. А как добиваться в приемнике верного защелкивания самого бита (это все без DPA ибо Cyclone5) ? Ну вот есть у PLL (если делаем ALTLVDS_RX в режиме External PLL) возможность (pll_phase_en, pll_updn, pll_cntsel сигналы) динамического изменения фазы любых выходящих с нее клоков . Как понять в какую сторону и на сколько двигать, какие критерии ?

Да действительно DDR нигде не применяется. Нашёл вот такое видео: https://www.youtube.com/watch?v=02lgfcxSjQA

Если бы 2 платы было я бы применял ALTLVDS_TX, и ALTLVDS_RX. Частотой tx_outclock я бы запускал PLL приёмника ALTLVDS_RX. В вашем случае разрабатывается плата, подсчитываются задержки на выходе, и и задаются правильные констрейны. И настраивается проект как везде советуют. По сути Вы просто настраиваете проект так, чтобы данные автоматически защелкивались по центру. Более подробно смотрите AN433 https://www.altera.com/en_US/pdfs/literature/an/an433.pdf

А вот автоматически подстроиться на центр окна Sample window - задача далеко не тривиальная, особенно на cyclone V. Я как раз занимаюсь сейчас вплотную этой задачей https://electronix.ru/forum/index.php?showtopic=142289 на данный момент реализовал автоматическую калибровку на центр. Сейчас добавляю динамическую калибровку. В конкретно вашем случае динамическая подстройка нафиг не нужна. У вас положение синхроимпульса и фронтов данных известно заранее и всегда одно и то-же, поскольку зависит только от разводки платы. У меня случай несколько другой. У меня эти значения неизвестны, и всегда разные при каждом включении.

Изменено пользователем Flip-fl0p

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


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

Да действительно DDR нигде не применяется.

...

Частотой tx_outclock я бы запускал PLL приёмника ALTLVDS_RX.

 

Я так и делал вначале. И почему-то rx_inclock приемной ПЛИС, на который заведен tx_outclock передающей ПЛИС оказывается в два раза выше, чем ожидаю (показывал на картинке на третьей странице в данной теме). Для rx_inclock и tx_outclock I/O Standard в назначении пинов задаю как LVDS.

Если для rx_inclock меняю I/O Standard на 2.5V (хоть это и неправильно), то частота становится нормальной, ожидаемой, не в два раза выше. Для tx_outclock (который выдается из ALTLVDS_TX, если выбрана конфигурация без внешней PLL) поменять I/O Standard на 2.5V не могу, почему-то Квартус 15.0 на этапе Ассемблера крашится (возникает какая-то ошибка)

 

А на какое расстояние надо передавать данные?

 

Расстояние небольшое, около 2см. Тут дело не в расстоянии, а в необходимой высокой скорости передачи. GXB-трансиверы исчерпались для другого.

 

Вчера попробовал не 600Мбит/с, а 300. Та же самая история.

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


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

Если для rx_inclock меняю I/O Standard на 2.5V (хоть это и неправильно)

А почему это неправильно? Все банки с LVDS должны от 2,5 питаться.

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


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

Я говорил об установлении стандарта ввода-вывода пина в Assignment Editor. Там можно для пина задать LVDS - тогда он будет дифференциальным, а можно задать 2.5V - тогда он будет однополярным. Понятно что питание банков этих выводов будет 2.5В в обоих случаях.

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


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

А, невнимательно прочитал. Для LVDS, есть некоторые требования по разводке дифф. пар на плате, они все выполнены? И есть некоторые ограничения по числу LVDS линий в одном банке, если слишком много то безошибочная работа не гарантируется, об этом ква. предупреждает.

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


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

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

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

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

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

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

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

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

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

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