реклама на сайте
подробности

 
 
4 страниц V  « < 2 3 4  
Reply to this topicStart new topic
> Проектирование LVDS на ПЛИС Altera, проектирование канала LVDS на Cyclone3
Tue
сообщение Aug 24 2017, 12:34
Сообщение #46


Частый гость
**

Группа: Свой
Сообщений: 161
Регистрация: 7-09-05
Из: Москва
Пользователь №: 8 340



Цитата(Flip-fl0p @ Aug 24 2017, 10:26) *
В модуле ALT_LVDS_RX в режиме с внутренним PLL, порт rx_inclock - это опорная частота PLL. В режиме внешнего PLL (external PLL) порт rx_inclock - частота дессерилизации


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

Цитата(Flip-fl0p @ Aug 24 2017, 10:26) *
(учитывайте в каком режиме работает 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 сигналы) динамического изменения фазы любых выходящих с нее клоков . Как понять в какую сторону и на сколько двигать, какие критерии ?
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Aug 24 2017, 13:36
Сообщение #47


Местный
***

Группа: Участник
Сообщений: 394
Регистрация: 11-06-13
Пользователь №: 77 140



Цитата(Tue @ Aug 24 2017, 15:34) *
Это понятно sm.gif



Как это учитывать ? Из документации и каких-то разрозненных источников я понял, что до 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 - Aug 24 2017, 13:39
Go to the top of the page
 
+Quote Post
Magnum
сообщение Aug 25 2017, 05:56
Сообщение #48


Местный
***

Группа: Свой
Сообщений: 209
Регистрация: 26-05-05
Пользователь №: 5 397



А на какое расстояние надо передавать данные?
Go to the top of the page
 
+Quote Post
Tue
сообщение Aug 25 2017, 06:21
Сообщение #49


Частый гость
**

Группа: Свой
Сообщений: 161
Регистрация: 7-09-05
Из: Москва
Пользователь №: 8 340



Цитата(Flip-fl0p @ Aug 24 2017, 16:36) *
Да действительно 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 на этапе Ассемблера крашится (возникает какая-то ошибка)

Цитата(Magnum @ Aug 25 2017, 08:56) *
А на какое расстояние надо передавать данные?


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

Вчера попробовал не 600Мбит/с, а 300. Та же самая история.
Go to the top of the page
 
+Quote Post
Magnum
сообщение Aug 25 2017, 06:34
Сообщение #50


Местный
***

Группа: Свой
Сообщений: 209
Регистрация: 26-05-05
Пользователь №: 5 397



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

А почему это неправильно? Все банки с LVDS должны от 2,5 питаться.
Go to the top of the page
 
+Quote Post
Tue
сообщение Aug 25 2017, 07:35
Сообщение #51


Частый гость
**

Группа: Свой
Сообщений: 161
Регистрация: 7-09-05
Из: Москва
Пользователь №: 8 340



Я говорил об установлении стандарта ввода-вывода пина в Assignment Editor. Там можно для пина задать LVDS - тогда он будет дифференциальным, а можно задать 2.5V - тогда он будет однополярным. Понятно что питание банков этих выводов будет 2.5В в обоих случаях.
Go to the top of the page
 
+Quote Post
Magnum
сообщение Aug 25 2017, 08:10
Сообщение #52


Местный
***

Группа: Свой
Сообщений: 209
Регистрация: 26-05-05
Пользователь №: 5 397



А, невнимательно прочитал. Для LVDS, есть некоторые требования по разводке дифф. пар на плате, они все выполнены? И есть некоторые ограничения по числу LVDS линий в одном банке, если слишком много то безошибочная работа не гарантируется, об этом ква. предупреждает.
Go to the top of the page
 
+Quote Post

4 страниц V  « < 2 3 4
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd September 2017 - 05:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.03365 секунд с 7
ELECTRONIX ©2004-2016