Maverick_ 17 December 16, 2015 Posted December 16, 2015 · Report post То есть передающее устройство помимо стартовых и стоповых битов передаёт сначала какую-то постоянную последовательность? Есть смысл залезть в datasheet сериалайзера за этой последовательностью? Можно взять пример проекта и попробовать например SerialLite или любой другой промоделировать Quote Share this post Link to post Share on other sites More sharing options...
doom13 0 December 16, 2015 Posted December 16, 2015 · Report post То есть передающее устройство помимо стартовых и стоповых битов передаёт сначала какую-то постоянную последовательность? Есть смысл залезть в datasheet сериалайзера за этой последовательностью? Не знаю, как работает данный сериалайзер, наверное стоит. Для всех ядер на базе трансиверов есть "ручной" режим выравнивания слова на основе тестовой последовательности если используется half duplex (про старт/стоп биты не встречал, тут наверное свой word aligner придётся сделать). Для АЦП с последовательным LVDS интерфейсом (например ADS6445) используется метод выравнивания на основе тестовой последовательности (для этого есть режим, когда АЦП гонит на линии тестовые данные по которым синхронизируется приёмник). Расскажите, что за сериалайзер используется? Quote Share this post Link to post Share on other sites More sharing options...
RobFPGA 99 December 16, 2015 Posted December 16, 2015 · Report post Приветствую! Скорее всего TC использует чтото типа DS92LV18. Успехов! Rob. Quote Share this post Link to post Share on other sites More sharing options...
doom13 0 December 16, 2015 Posted December 16, 2015 · Report post Скорее всего TC использует чтото типа DS92LV18. Тогда вообще хз, как его синхронизировать с приёмником. Quote Share this post Link to post Share on other sites More sharing options...
Алексей_1990 0 December 16, 2015 Posted December 16, 2015 · Report post Не знаю, как работает данный сериалайзер, наверное стоит. Для всех ядер на базе трансиверов есть "ручной" режим выравнивания слова на основе тестовой последовательности если используется 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, на выход идут данные. Quote Share this post Link to post Share on other sites More sharing options...
doom13 0 December 16, 2015 Posted December 16, 2015 · Report post Да и ещё на сериалайзер приходит sync, который к тому же приходит на десериалайзер. Судя по всему, когда sync = 0 с выходов идёт фиксированная последовательность 9 нулей 9 единиц. А когда sync = 1, на выход идут данные. Тогда немного понятнее (бегло просмотрел доку и не заметил, какая последовательность используется для синхронизации). Для выравнивания слова используете последовательность FFC00, когда поймаете переходите в рабочий режим. Какое ядро на базе трансивера подойдёт лучше - смотрите доку (немного смущает разрядность слова 20 бит, но, думаю, можно будет подобрать параметры ядра). Да и ещё на сериалайзер приходит sync, который к тому же приходит на десериалайзер. Судя по всему, когда sync = 0 с выходов идёт фиксированная последовательность 9 нулей 9 единиц. А когда sync = 1, на выход идут данные. Наоборот, 1 - sync pattern. Quote Share this post Link to post Share on other sites More sharing options...
Алексей_1990 0 December 16, 2015 Posted December 16, 2015 · Report post Тогда немного понятнее (бегло просмотрел доку и не заметил, какая последовательность используется для синхронизации). Для выравнивания слова используете последовательность FFC00, когда поймаете переходите в рабочий режим. Какое ядро на базе трансивера подойдёт лучше - смотрите доку (немного смущает разрядность слова 20 бит, но, думаю, можно будет подобрать параметры ядра). Наоборот, 1 - sync pattern. Так вот у меня как раз проблема в выборе ядра. Какую документацию посоветуете посмотреть? Quote Share this post Link to post Share on other sites More sharing options...
doom13 0 December 16, 2015 Posted December 16, 2015 · Report post Так вот у меня как раз проблема в выборе ядра. Какую документацию посоветуете посмотреть? xcvr_user_guide Если железо есть, то тут можно и опытным путём пойти. Думаю, можете Custom PHY смотреть и не прогадаете. Глянул доку - ширина слова в 20 бит есть, так что должно работать. Quote Share this post Link to post Share on other sites More sharing options...
Алексей_1990 0 December 16, 2015 Posted December 16, 2015 · Report post xcvr_user_guide Если железо есть, то тут можно и опытным путём пойти. Думаю, можете Custom PHY смотреть и не прогадаете. Глянул доку - ширина слова в 20 бит есть, так что должно работать. А в этом случае не могли бы прояснить следующий момент: Ширина слова 20 бит, а word alignment в этом случае либо 7, либо 10 бит. Почему так? Да и в datasheet на сериалайзер указан 18 битный фиксированный код для синхронизации. Как быть? Quote Share this post Link to post Share on other sites More sharing options...
doom13 0 December 16, 2015 Posted December 16, 2015 · Report post А в этом случае не могли бы прояснить следующий момент: Ширина слова 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. Quote Share this post Link to post Share on other sites More sharing options...
Алексей_1990 0 December 17, 2015 Posted December 17, 2015 · Report post 18+start+stop = 20, итого Ваше синхрослово 20 бит, после приёма в рабочем режиме будете два крайних выбрасывать. Из вышеуказанной доки для Custom PHY: Ага, с этим разобрался. А вот при конфигурации ядра, когда выбираешь ширину слова 20 бит, он предлагает word alignment либо 7, либо 10 бит. Или мне стоит выбрать режим 10 бит и задать все единицы? Quote Share this post Link to post Share on other sites More sharing options...
doom13 0 December 17, 2015 Posted December 17, 2015 · Report post Ага, с этим разобрался. А вот при конфигурации ядра, когда выбираешь ширину слова 20 бит, он предлагает word alignment либо 7, либо 10 бит. Или мне стоит выбрать режим 10 бит и задать все единицы? Да, какая-то ерунда получается, в доке одно написано, а GUI ядра не даёт выставить нужные настройки (QII v14.0). Возможно более новая версия QII поможет или можно попробовать сгенерить ядро, а потом вручную задать нужные параметры для топ модуля. Quote Share this post Link to post Share on other sites More sharing options...
Алексей_1990 0 December 18, 2015 Posted December 18, 2015 · Report post Да, какая-то ерунда получается, в доке одно написано, а GUI ядра не даёт выставить нужные настройки (QII v14.0). Возможно более новая версия QII поможет или можно попробовать сгенерить ядро, а потом вручную задать нужные параметры для топ модуля. А если решать задачу немного другого характера: есть ацп, выход которого последовательный дифференциальный с фреймовой синхронизацией. Разрядность ацп 16-битная. В этом случае легче? И нужна ли фиксированная последовательность для синхронизации? Quote Share this post Link to post Share on other sites More sharing options...
doom13 0 December 18, 2015 Posted December 18, 2015 · Report post А если решать задачу немного другого характера: есть ацп, выход которого последовательный дифференциальный с фреймовой синхронизацией. Разрядность ацп 16-битная. В этом случае легче? И нужна ли фиксированная последовательность для синхронизации? Я бы сказал, что это более правильный вариант, данные АЦП попадают в FPGA без "посредников". В данном случае для приёма данных с АЦП используется ядро ALT_LVDS RX. Режим синхронизации будет необходим при старте. По SPI (может какой другой интерфейс для чтения/записи регистров АЦП) загоняете АЦП в режим синхронизации, выбираете sync pattern, его ловите на стороне FPGA (сдвигаете принятое слово пока не совпадёт с sync pattern) и переходите в рабочий режим. Если железо ещё только проектируется, то я бы остановился на данном варианте, ещё можно попробовать АЦП с более новым JSD204B. Quote Share this post Link to post Share on other sites More sharing options...
Алексей_1990 0 December 18, 2015 Posted December 18, 2015 · Report post Я бы сказал, что это более правильный вариант, данные АЦП попадают в FPGA без "посредников". В данном случае для приёма данных с АЦП используется ядро ALT_LVDS RX. Режим синхронизации будет необходим при старте. По SPI (может какой другой интерфейс для чтения/записи регистров АЦП) загоняете АЦП в режим синхронизации, выбираете sync pattern, его ловите на стороне FPGA (сдвигаете принятое слово пока не совпадёт с sync pattern) и переходите в рабочий режим. Если железо ещё только проектируется, то я бы остановился на данном варианте, ещё можно попробовать АЦП с более новым JSD204B. Железо уже оговорено, к сожалению. Вы упомянули про altlvds-rx. А если скорость порядка 800 Mbps, разве altlvds-rx адекватно будет воспринимать данные? Quote Share this post Link to post Share on other sites More sharing options...