Jump to content
    

Передача большого потока

Железо уже оговорено, к сожалению. Вы упомянули про altlvds-rx. А если скорость порядка 800 Mbps, разве altlvds-rx адекватно будет воспринимать данные?

Для CV заявлено (cv_51001.pdf), но надо ещё в какой доке глянуть:

875 Mbps LVDS receiver and 840 Mbps LVDS transmitter
, но для Вашего случая оно не подходит, если только ставить "правильный" АЦП.

Share this post


Link to post
Share on other sites

Для CV заявлено (cv_51001.pdf), но надо ещё в какой доке глянуть:

, но для Вашего случая оно не подходит, если только ставить "правильный" АЦП.

А ситуация с асинхронным кодом патовая? Может у Вас есть ещё какие мысли?

 

На самом деле стоит две задачи:

В первом случае принять сигнал с сериалайзера, т.е. организовать десериалайзер.

Во втором случае будет необходимо принять сигнал с АЦП lts 2193.

Первая задача вроде как промежуточная.

 

Также для отладки всего этого есть в наличии отладочная плата Cyclone V GX Starter Kit

Share this post


Link to post
Share on other sites

Я так и не понял, железо уже есть или можно ещё что-то менять? Если железо есть, то пробуйте использовать ядро Custom PHY, в GUI ставте для SYNC PATTERN настройки, которые оно позволяет выбрать, а в топ модуле подправте вручную и пробуйте скомпилить.

 

Во втором случае будет необходимо принять сигнал с АЦП lts 2193.

Если правильно понял, что АЦП это LTC2193, то никакой внешний сериалайзер не нужен, заводите сигналы прямо на FPGA и используете ядро ALT_LVDS RX. Клоки - на клоковую ногу FPGA (которую можно протянуть до PLL), достаточно будет DATA CLOCK OUT.

Share this post


Link to post
Share on other sites

Я так и не понял, железо уже есть или можно ещё что-то менять? Если железо есть, то пробуйте использовать ядро Custom PHY, в GUI ставте для SYNC PATTERN настройки, которые оно позволяет выбрать, а в топ модуле подправте вручную и пробуйте скомпилить.

 

 

Если правильно понял, что АЦП это LTC2193, то никакой внешний сериалайзер не нужен, заводите сигналы прямо на FPGA и используете ядро ALT_LVDS RX. Клоки - на клоковую ногу FPGA (которую можно протянуть до PLL), достаточно будет DATA CLOCK OUT.

Железо выбрано. Сейчас колдую над custom PHY. При чем я отошёл от сериалайзера и подаю на вход просто последовательность единиц с генератора импульсов, при этом решил попробовать режим bitslip. Вывел его на кнопку, при нажатии код смещается, как я понял, так и должно быть. Но все идёт нормально только до 8ого бита, потом код скачет вверх, пропуская много позиций.

Хотелось бы, конечно, проверить режим с выравниванием слова по последовательности, но я не располагаю таким генератором, с которого я подаю сначала синхро-последовательность, а потом какой-то код.

Share this post


Link to post
Share on other sites

Попробовал в топ модуле подправить, компилятор ругается.

Возможно ещё что-то завязано на эти параметры.

 

Да, именно. Прошу прощения.

Тогда тут не нужен внешний трансивер. Для приёма достаточно завести все сигналы АЦП в FPGA (линии данных канала АЦП для 4-line mode и тактовую АЦП DATA CLOCK OUT) и при максимальной частоте тактирования АЦП 125 MHz получится всего 500 Mbps на линию. Для 800 Mbps от канала АЦП можно использовать 2-line mode (а если FPGA держит приведённые выше характеристики, то будет достаточно и 1-line mode).

PS:

ALT_LVDS вполне подходит.

Share this post


Link to post
Share on other sites

Возможно ещё что-то завязано на эти параметры.

 

 

Тогда тут не нужен внешний трансивер. Для приёма достаточно завести все сигналы АЦП в FPGA (линии данных канала АЦП для 4-line mode и тактовую АЦП DATA CLOCK OUT) и при максимальной частоте тактирования АЦП 125 MHz получится всего 500 Mbps на линию. Для 800 Mbps от канала АЦП можно использовать 2-line mode (а если FPGA держит приведённые выше характеристики, то будет достаточно и 1-line mode).

PS:

ALT_LVDS вполне подходит.

А в этом случае, не проясните ли мне почему в altlvds_rx максимальный возможный фактор дессериализации равен 10? Как я понимаю, чтобы принять 16битную последовательность нужно поставить каскадно два приёмника по 8 бит

Share this post


Link to post
Share on other sites

А в этом случае, не проясните ли мне почему в altlvds_rx максимальный возможный фактор дессериализации равен 10? Как я понимаю, чтобы принять 16битную последовательность нужно поставить каскадно два приёмника по 8 бит

У Вашего АЦП есть режимы 4-line/2-line/1-line mode, где фактор десериализации будет соответственно 4/8/16 (вот только 16 выбрать не получится, тут только если делать свой приёмник). Используйте 4-line mode, чтоб можно было работать на максимальной частоте тактирования АЦП.

 

Share this post


Link to post
Share on other sites

У Вашего АЦП есть режимы 4-line/2-line/1-line mode, где фактор десериализации будет соответственно 4/8/16 (вот только 16 выбрать не получится, тут только если делать свой приёмник). Используйте 4-line mode, чтоб можно было работать на максимальной частоте тактирования АЦП.

Так вот задача то и заключается в принятии сигнала по 1 линии.

Share this post


Link to post
Share on other sites

Так вот задача то и заключается в принятии сигнала по 1 линии.

Если учесть, что согласно даташиту на ALTLVDS_RX:

In Cyclone series, the SERDES circuitry is always implemented in logic cells.

то, как вариант, можно попробовать сделать свой приёмник для Вашего случая. Когда-то давно делал такое, а потом нашёл ALTLVDS_RX, который работает намного лучше. В настоящей системе используется ALTLVDS_RX, который принимает 800 Mbps с одной линии, так что пробуйте.

Share this post


Link to post
Share on other sites

Если учесть, что согласно даташиту на ALTLVDS_RX:

 

то, как вариант, можно попробовать сделать свой приёмник для Вашего случая. Когда-то давно делал такое, а потом нашёл ALTLVDS_RX, который работает намного лучше. В настоящей системе используется ALTLVDS_RX, который принимает 800 Mbps с одной линии, так что пробуйте.

Буду пробовать, только жаль что на отладочной плате высокочастотные выводы железно завязаны на аппаратные высокоскоростные трансиверы. Не могли бы прояснить ещё один момент: как я понимаю в altlvds_rx на пин inclock я завожу свою фреймовую частоту?

 

Немного не по теме, но хочу поделиться: был на семинаре, так вот там упоминался интерфейс jesd204b. Знакомы с ним? Это чисто моё любопытство)

Share this post


Link to post
Share on other sites

Буду пробовать, только жаль что на отладочной плате высокочастотные выводы железно завязаны на аппаратные высокоскоростные трансиверы. Не могли бы прояснить ещё один момент: как я понимаю в altlvds_rx на пин inclock я завожу свою фреймовую частоту?

Если хотите использовать вход трансивера, то тут altlvds_rx прицепить не получится. Мне кажется, что должен быть способ настроить Custom PHY для Вашего случая. Сами заложили в своём устройстве соединение между FPGA через трансиверы в режиме half duplex и предполагал использовать Custom PHY (по документации всё должно работать, но железа пока ещё нет, а так проект скомпилился, не помню, правда, какие настройки для шины данных там задавал). На inclock заводится либо frame clock либо bit clock (можно оба, но это избыточно), если только один АЦП на плате, то разницы нет, если несколько и надо будет их все синхронизировать - тогда bit clock. Заводится на ногу, которую можно забросить на PLL.

Немного не по теме, но хочу поделиться: был на семинаре, так вот там упоминался интерфейс jesd204b. Знакомы с ним? Это чисто моё любопытство)

У нас DDS с этим интерфейсом используется, но запускал его коллега.

Share this post


Link to post
Share on other sites

jesd204b - это готовый стандарт. Использую его в AD9656. Написал сам. Если бы была ПЛИС 5 серии - поставил бы ядро альтеровское.

Share this post


Link to post
Share on other sites

jesd204b - это готовый стандарт. Использую его в AD9656. Написал сам. Если бы была ПЛИС 5 серии - поставил бы ядро альтеровское.

И в какую нынче цену такое ядро?

 

Если хотите использовать вход трансивера, то тут altlvds_rx прицепить не получится. Мне кажется, что должен быть способ настроить Custom PHY для Вашего случая. Сами заложили в своём устройстве соединение между FPGA через трансиверы в режиме half duplex и предполагал использовать Custom PHY (по документации всё должно работать, но железа пока ещё нет, а так проект скомпилился, не помню, правда, какие настройки для шины данных там задавал). На inclock заводится либо frame clock либо bit clock (можно оба, но это избыточно), если только один АЦП на плате, то разницы нет, если несколько и надо будет их все синхронизировать - тогда bit clock. Заводится на ногу, которую можно забросить на PLL.

 

У нас DDS с этим интерфейсом используется, но запускал его коллега.

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...