Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Последовательный высокоскоростной интерфейс
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам
Dmitriyspb
Приветствую специалистов и тех, кто просто зашел полюбопытствовать! biggrin.gif

Ситуация следующая. Есть физически 4 провода = 2 дифференциальной пары (LVDS стандарт). Задача: Организовать максимально возможную высокоскоростную передачу (полный дуплекс). Т.е. получается две линии Tx и Rx.
---------------------------------------------------------------------------------------------
Передача организовывается между двумя платами по средствам объединительной платы (кросс-плата).
Стоит отметить платы имеют свои тактовые генераторы. Т.е. передача и прием - процессы асинхронные друг относительно друга.
---------------------------------------------------------------------------------------------
Данные необходимо передавать структуированно, т.е. в соответствии с каким-либо протоколом.
---------------------------------------------------------------------------------------------
Этот интерфейс будет реализован на FPGA (Xilinx).
---------------------------------------------------------------------------------------------

Есть опыт реализации подобных интерфейсов дедовским способом (т.е. все придумываем сами в том числе и протокол и потом долго и упорно тестируем и ловим уйму баг, потом снова тестируем и снова ловим баги .... и в какой-то момент мне кажется что этот процесс стремиться к бесконечности (ИМХО) wacko.gif ).
Чтобы повторно не идти по этому пути прошу совета у опытных людей. Подскажите пожалуйста стандартный последовательный интерфейс, который мог бы мне помочь. Спасибо.

vladec
Если Xilinx, то может Aurora?
Dmitriyspb
Цитата(vladec @ May 18 2015, 09:24) *
Если Xilinx, то может Aurora?


Возможно. Буду читать. На первый взгляд подходит
Lmx2315
Можете ещё на сериалайзеры посмотреть, типа таких : http://www.symmetron.ru/news/maxim-MAX9257A.shtml.
Или других.
Dmitriyspb
Цитата(Lmx2315 @ May 18 2015, 10:41) *
Можете ещё на сериалайзеры посмотреть, типа таких : http://www.symmetron.ru/news/maxim-MAX9257A.shtml.
Или других.


Спасибо. Но у меня условие, что реализация на FPGA(Xilinx). Это не мой вариант к сожалению. А вообще интересная "вещица" laughing.gif
Krys
Цитата(vladec @ May 18 2015, 13:24) *
Если Xilinx, то может Aurora?
А она разве не требует обязательно использования гигабитных трансиверов? Автор, Вас устраивает сделать это на гигабитрых трансиверах? Тогда Аврора - самое то, мы как раз на ней делаем обмены все. Даже в оптику заталкиваем.
О каких вообще скоростях идёт речь? Если о гигабитах - то только на этих трансиверах и остаётся гигабитных. Если сотни мегабит - то есть ещё варианты...
Какая плисина то у Вас?
Dmitriyspb
Цитата(Krys @ May 19 2015, 14:35) *
А она разве не требует обязательно использования гигабитных трансиверов? Автор, Вас устраивает сделать это на гигабитрых трансиверах?
Какая плисина то у Вас?

Трансиверы на борту имеются на сколько мне удалось разобраться.
Zynq 7020 SOC CLG400 - тип кристалла

Цитата(Krys @ May 19 2015, 14:35) *
О каких вообще скоростях идёт речь?

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

Цитата(Krys @ May 19 2015, 14:35) *
Если сотни мегабит - то есть ещё варианты...

А какие еще могут быть варианты для скоростей пониже?
Krys
да просто подать на SerDes с линий LVDS. Тоже до гигабита протолкнуть можно, но это при наличии линии синхронизации или CDR. А у Вас без всего этого может мегабит 300 получится с оверсемплингом. Только какой протокол сверху налепить?... А нужен ли он вообще? Пуляй да пуляй данные. Ну 8B/10B не помешает для байтовой синхронизации и ещё нескольких полезных бонусов.
Dmitriyspb
Цитата(Krys @ May 20 2015, 08:35) *
да просто подать на SerDes с линий LVDS. Тоже до гигабита протолкнуть можно, но это при наличии линии синхронизации или CDR. А у Вас без всего этого может мегабит 300 получится с оверсемплингом. Только какой протокол сверху налепить?... А нужен ли он вообще? Пуляй да пуляй данные. Ну 8B/10B не помешает для байтовой синхронизации и ещё нескольких полезных бонусов.


Глянул я об SerDes на просторах интернета и в общем стало ясно. Это все можно, но тогда нужно использовать самописные интерфейсы, либо чей-то готовый, либо отдельную микруху (это исключено) . Тем более CDR необходим совершенно точно. У Xilinx это Aurora и другого он не знает и не умеет.

Вот сделал скрин из САПРа Xilinx. Т.е. Xilinx в разделе последовательных интерфейсов предлагает Aurora
Нажмите для просмотра прикрепленного файла
dm.pogrebnoy
Какая скорость нужна? Мы делали подобие UART на обычных LVDS линиях. На частоте 300 МГц тактовой ЕМНИП скорость передачи около 90 МБит/с получалась.
Dmitriyspb
Цитата(dm.pogrebnoy @ May 20 2015, 10:04) *
Какая скорость нужна? Мы делали подобие UART на обычных LVDS линиях. На частоте 300 МГц тактовой ЕМНИП скорость передачи около 90 МБит/с получалась.

см пост №7

Цитата(dm.pogrebnoy @ May 20 2015, 10:04) *
Мы делали подобие UART на обычных LVDS линиях. На частоте 300 МГц тактовой ЕМНИП скорость передачи около 90 МБит/с получалась.

Вот UART сюда применять не хочется больше всего. CDR нужен. Полный дуплекс 1 TX и 1 RX ---> CDR. Если самому на основе UART делать, тогда манчестер и т.д. и т.п даже и не хочется все расписывать.. wacko.gif
dm.pogrebnoy
Просто в Zynq020 гигабитных трансиверов нету. А то, что тактовые разные на обоих платах, так UART тем и хорош, что имеет некоторую толерантность к этому. PLLкой можно сформировать нужные частоты. Кстати частоту можно поднять, 300 МГц это как ориентир, Artix7 (на котором сделан Zynq) тянет и больше. Так же можно воспользоваться встроенными SERDES, тогда еще паралелльный интерфейс практически сразу можно получить.
Krys
Цитата(Dmitriyspb @ May 20 2015, 13:53) *
Это все можно, но тогда нужно использовать самописные интерфейсы, либо чей-то готовый, либо отдельную микруху (это исключено)
А что Вы под интерфейсами понимаете? Чем Вас пугает "самописные"? Подумаешь сигнал подать на SerDes, ну ещё пропустить через IDELAY, немного делов.

Цитата(Dmitriyspb @ May 20 2015, 13:53) *
Тем более CDR необходим совершенно точно
Почему совершенно точно? Если без него, то можно несколько сотен мегабит всё равно получить...


Цитата(Dmitriyspb @ May 20 2015, 13:53) *
Тем более CDR необходим совершенно точно. У Xilinx это Aurora и другого он не знает и не умеет
Дак получается, если пишут, что плисина не имеет гигабитных трансиверов, то и CDR в ней нет. Так что не годится Вам такой вариант. Остаётся на сердесах?
krux
если вам надо прям всё готовенькое, то
http://www.xilinx.com/products/intellectua...to1gbsxpcs.html
работает через SelectIO-LVDS тоже
Krys
Да, весчь! Надо запомнить для себя...
Dmitriyspb
Цитата(dm.pogrebnoy @ May 20 2015, 12:08) *
Просто в Zynq020 гигабитных трансиверов нету.

Точно подметили. Тогда либо 15, либо 30 камень.

Цитата(dm.pogrebnoy @ May 20 2015, 12:08) *
Так же можно воспользоваться встроенными SERDES,

Вы имеете ввиду Core generator?

Цитата(Krys @ May 20 2015, 12:15) *
А что Вы под интерфейсами понимаете? Чем Вас пугает "самописные"? Подумаешь сигнал подать на SerDes, ну ещё пропустить через IDELAY, немного делов.


Я видать недопонимаю, что из себя представляет SerDes на Xilinx? Я так понимаю это Core Generator его создает. Поясните пожалуйста.


Цитата(Krys @ May 20 2015, 12:15) *
Почему совершенно точно? Если без него, то можно несколько сотен мегабит всё равно получить...

Можно я не буду писать.....тут словами долго и не понятно crying.gif


Цитата(Krys @ May 20 2015, 12:15) *
Дак получается, если пишут, что плисина не имеет гигабитных трансиверов, то и CDR в ней нет.

Поставим ту, которя имеет 30-ую
dm.pogrebnoy
SERDES это полезная штука, есть около каждой ножки ввода вывода. В Core Generator для нее ничего нету, просто в HDL берете примитив из библиотеки и используете. Читать UG471.
Кстати, в отличие от Altera, SERDES от Xilinx может работать в DDR режиме.
Krys
Цитата(Dmitriyspb @ May 20 2015, 18:11) *
Я видать недопонимаю, что из себя представляет SerDes на Xilinx?
Вот тут описывается: http://www.xilinx.com/support/documentatio...versampling.pdf
В двух словах: это аппаратные блоки, преобразующие последовательный поток в параллельный. Ну и наоборот. Т.е. элементарные сдвиговые регистры с некоторой обвязкой. На них подаются (на приём) последовательные данные с ног LVDS, производится подстройка задержки (на аппаратных блоках задержки, задаваемой из пользовательской логики).
Dmitriyspb
Цитата(Krys @ May 20 2015, 15:22) *
Вот тут описывается: http://www.xilinx.com/support/documentatio...versampling.pdf
В двух словах: это аппаратные блоки, преобразующие последовательный поток в параллельный. Ну и наоборот. Т.е. элементарные сдвиговые регистры с некоторой обвязкой. На них подаются (на приём) последовательные данные с ног LVDS, производится подстройка задержки (на аппаратных блоках задержки, задаваемой из пользовательской логики).


Спасибо. Теперь стало все яснее.

Тут дело повернулось в сторону самодельного интерфейса (как я уже понял) на основе SERDES. Т.к. отладочные модули куплены на 7020, так что и боевые решили по аналогии использовать.

Думаю, что вопрос исчерпан. Всех благодарю за помощь. Узнал много полезного. bb-offtopic.gif
doom13
Приветствую.
Необходимо что-то похожее, но для Cyclone V GX (подробности тут).
Буду рад совету.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.