Jump to content
    

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

То есть передающее устройство помимо стартовых и стоповых битов передаёт сначала какую-то постоянную последовательность? Есть смысл залезть в datasheet сериалайзера за этой последовательностью?

Можно взять пример проекта и попробовать например SerialLite или любой другой промоделировать

Share this post


Link to post
Share on other sites

То есть передающее устройство помимо стартовых и стоповых битов передаёт сначала какую-то постоянную последовательность? Есть смысл залезть в datasheet сериалайзера за этой последовательностью?

Не знаю, как работает данный сериалайзер, наверное стоит. Для всех ядер на базе трансиверов есть "ручной" режим выравнивания слова на основе тестовой последовательности если используется half duplex (про старт/стоп биты не встречал, тут наверное свой word aligner придётся сделать). Для АЦП с последовательным LVDS интерфейсом (например ADS6445) используется метод выравнивания на основе тестовой последовательности (для этого есть режим, когда АЦП гонит на линии тестовые данные по которым синхронизируется приёмник).

 

Расскажите, что за сериалайзер используется?

Share this post


Link to post
Share on other sites

Скорее всего TC использует чтото типа DS92LV18.

Тогда вообще хз, как его синхронизировать с приёмником.

 

Share this post


Link to post
Share on other sites

Не знаю, как работает данный сериалайзер, наверное стоит. Для всех ядер на базе трансиверов есть "ручной" режим выравнивания слова на основе тестовой последовательности если используется half duplex (про старт/стоп биты не встречал, тут наверное свой word aligner придётся сделать). Для АЦП с последовательным LVDS интерфейсом (например ADS6445) используется метод выравнивания на основе тестовой последовательности (для этого есть режим, когда АЦП гонит на линии тестовые данные по которым синхронизируется приёмник).

 

Расскажите, что за сериалайзер используется?

Сериалайзер DS92LV18. И да, спасибо Вам, что отзываетесь.

 

Тогда вообще хз, как его синхронизировать с приёмником.

В datasheet я обнаружил такое понятие, как sync pattern. То есть последовательность для синхронизации, как я понял. Так вот она представляет собой "a fixed pattern with 9-bits of data high followed by 9-bits of data low".

 

Да и ещё на сериалайзер приходит sync, который к тому же приходит на десериалайзер. Судя по всему, когда sync = 0 с выходов идёт фиксированная последовательность 9 нулей 9 единиц. А когда sync = 1, на выход идут данные.

Share this post


Link to post
Share on other sites

Да и ещё на сериалайзер приходит sync, который к тому же приходит на десериалайзер. Судя по всему, когда sync = 0 с выходов идёт фиксированная последовательность 9 нулей 9 единиц. А когда sync = 1, на выход идут данные.

Тогда немного понятнее (бегло просмотрел доку и не заметил, какая последовательность используется для синхронизации). Для выравнивания слова используете последовательность FFC00, когда поймаете переходите в рабочий режим. Какое ядро на базе трансивера подойдёт лучше - смотрите доку (немного смущает разрядность слова 20 бит, но, думаю, можно будет подобрать параметры ядра).

 

Да и ещё на сериалайзер приходит sync, который к тому же приходит на десериалайзер. Судя по всему, когда sync = 0 с выходов идёт фиксированная последовательность 9 нулей 9 единиц. А когда sync = 1, на выход идут данные.

Наоборот, 1 - sync pattern.

 

Share this post


Link to post
Share on other sites

Тогда немного понятнее (бегло просмотрел доку и не заметил, какая последовательность используется для синхронизации). Для выравнивания слова используете последовательность FFC00, когда поймаете переходите в рабочий режим. Какое ядро на базе трансивера подойдёт лучше - смотрите доку (немного смущает разрядность слова 20 бит, но, думаю, можно будет подобрать параметры ядра).

 

 

Наоборот, 1 - sync pattern.

Так вот у меня как раз проблема в выборе ядра. Какую документацию посоветуете посмотреть?

Share this post


Link to post
Share on other sites

Так вот у меня как раз проблема в выборе ядра. Какую документацию посоветуете посмотреть?

xcvr_user_guide

Если железо есть, то тут можно и опытным путём пойти.

Думаю, можете Custom PHY смотреть и не прогадаете. Глянул доку - ширина слова в 20 бит есть, так что должно работать.

Share this post


Link to post
Share on other sites

xcvr_user_guide

Если железо есть, то тут можно и опытным путём пойти.

Думаю, можете Custom PHY смотреть и не прогадаете. Глянул доку - ширина слова в 20 бит есть, так что должно работать.

А в этом случае не могли бы прояснить следующий момент: Ширина слова 20 бит, а word alignment в этом случае либо 7, либо 10 бит. Почему так? Да и в datasheet на сериалайзер указан 18 битный фиксированный код для синхронизации. Как быть?

Share this post


Link to post
Share on other sites

А в этом случае не могли бы прояснить следующий момент: Ширина слова 20 бит, а word alignment в этом случае либо 7, либо 10 бит. Почему так? Да и в datasheet на сериалайзер указан 18 битный фиксированный код для синхронизации. Как быть?

18+start+stop = 20, итого Ваше синхрослово 20 бит, после приёма в рабочем режиме будете два крайних выбрасывать.

 

Из вышеуказанной доки для Custom PHY:

Word Alignment Parameters

The word aligner restores word boundaries of received data based on a predefined alignment pattern. This

pattern can be 7, 8, 10, 16, 20, or 32 bits long. The word alignment module searches for a programmed

pattern to identify the correct boundary for the incoming stream.

Share this post


Link to post
Share on other sites

18+start+stop = 20, итого Ваше синхрослово 20 бит, после приёма в рабочем режиме будете два крайних выбрасывать.

 

Из вышеуказанной доки для Custom PHY:

Ага, с этим разобрался. А вот при конфигурации ядра, когда выбираешь ширину слова 20 бит, он предлагает word alignment либо 7, либо 10 бит. Или мне стоит выбрать режим 10 бит и задать все единицы?

Share this post


Link to post
Share on other sites

Ага, с этим разобрался. А вот при конфигурации ядра, когда выбираешь ширину слова 20 бит, он предлагает word alignment либо 7, либо 10 бит. Или мне стоит выбрать режим 10 бит и задать все единицы?

Да, какая-то ерунда получается, в доке одно написано, а GUI ядра не даёт выставить нужные настройки (QII v14.0). Возможно более новая версия QII поможет или можно попробовать сгенерить ядро, а потом вручную задать нужные параметры для топ модуля.

Share this post


Link to post
Share on other sites

Да, какая-то ерунда получается, в доке одно написано, а GUI ядра не даёт выставить нужные настройки (QII v14.0). Возможно более новая версия QII поможет или можно попробовать сгенерить ядро, а потом вручную задать нужные параметры для топ модуля.

А если решать задачу немного другого характера: есть ацп, выход которого последовательный дифференциальный с фреймовой синхронизацией. Разрядность ацп 16-битная. В этом случае легче? И нужна ли фиксированная последовательность для синхронизации?

Share this post


Link to post
Share on other sites

А если решать задачу немного другого характера: есть ацп, выход которого последовательный дифференциальный с фреймовой синхронизацией. Разрядность ацп 16-битная. В этом случае легче? И нужна ли фиксированная последовательность для синхронизации?

Я бы сказал, что это более правильный вариант, данные АЦП попадают в FPGA без "посредников". В данном случае для приёма данных с АЦП используется ядро ALT_LVDS RX. Режим синхронизации будет необходим при старте. По SPI (может какой другой интерфейс для чтения/записи регистров АЦП) загоняете АЦП в режим синхронизации, выбираете sync pattern, его ловите на стороне FPGA (сдвигаете принятое слово пока не совпадёт с sync pattern) и переходите в рабочий режим.

 

Если железо ещё только проектируется, то я бы остановился на данном варианте, ещё можно попробовать АЦП с более новым JSD204B.

Share this post


Link to post
Share on other sites

Я бы сказал, что это более правильный вариант, данные АЦП попадают в FPGA без "посредников". В данном случае для приёма данных с АЦП используется ядро ALT_LVDS RX. Режим синхронизации будет необходим при старте. По SPI (может какой другой интерфейс для чтения/записи регистров АЦП) загоняете АЦП в режим синхронизации, выбираете sync pattern, его ловите на стороне FPGA (сдвигаете принятое слово пока не совпадёт с sync pattern) и переходите в рабочий режим.

 

Если железо ещё только проектируется, то я бы остановился на данном варианте, ещё можно попробовать АЦП с более новым JSD204B.

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

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...