Tue 0 24 августа, 2017 Опубликовано 24 августа, 2017 · Жалоба В модуле 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 сигналы) динамического изменения фазы любых выходящих с нее клоков . Как понять в какую сторону и на сколько двигать, какие критерии ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 24 августа, 2017 Опубликовано 24 августа, 2017 (изменено) · Жалоба Это понятно :) Как это учитывать ? Из документации и каких-то разрозненных источников я понял, что до 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 на данный момент реализовал автоматическую калибровку на центр. Сейчас добавляю динамическую калибровку. В конкретно вашем случае динамическая подстройка нафиг не нужна. У вас положение синхроимпульса и фронтов данных известно заранее и всегда одно и то-же, поскольку зависит только от разводки платы. У меня случай несколько другой. У меня эти значения неизвестны, и всегда разные при каждом включении. Изменено 24 августа, 2017 пользователем Flip-fl0p Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Magnum 0 25 августа, 2017 Опубликовано 25 августа, 2017 · Жалоба А на какое расстояние надо передавать данные? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tue 0 25 августа, 2017 Опубликовано 25 августа, 2017 · Жалоба Да действительно 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. Та же самая история. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Magnum 0 25 августа, 2017 Опубликовано 25 августа, 2017 · Жалоба Если для rx_inclock меняю I/O Standard на 2.5V (хоть это и неправильно) А почему это неправильно? Все банки с LVDS должны от 2,5 питаться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tue 0 25 августа, 2017 Опубликовано 25 августа, 2017 · Жалоба Я говорил об установлении стандарта ввода-вывода пина в Assignment Editor. Там можно для пина задать LVDS - тогда он будет дифференциальным, а можно задать 2.5V - тогда он будет однополярным. Понятно что питание банков этих выводов будет 2.5В в обоих случаях. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Magnum 0 25 августа, 2017 Опубликовано 25 августа, 2017 · Жалоба А, невнимательно прочитал. Для LVDS, есть некоторые требования по разводке дифф. пар на плате, они все выполнены? И есть некоторые ограничения по числу LVDS линий в одном банке, если слишком много то безошибочная работа не гарантируется, об этом ква. предупреждает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться