реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> ArriaV, native transceiver, external pll, режим CDR
bogaev_roman
сообщение Aug 8 2017, 07:59
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 026
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



На нескольких платах потребовалось завести все имеющиеся трансиверы (независимы). Для этой цели выбрал режим native с external pll в базовой конфигурации. Написал простейшую обвязку из логики сброса, подстройки и начальной синхронизации ну и генератора ПСП. В качестве CDR клока подаю входной клок на специальную ногу. Т. к. разные концы трансивера находятся на разных платах, то при отсутствии на входе сигнала rx_is_lockedtodata запускается сброс и начинается начальная синхронизация. Ну и, соответственно, в случае, если трансиверы питаются от одного генератора опорной частоты, после начальной синхронизации все работает стабильно, ошибок нет. Но если соединяю две платы (генераторы опорной частоты разные), то через некоторое время падает rx_is_lockedtodata.
Соответственно вопрос - я неправильно понимаю логику работы CDR (я считал, что этот блок из входного потока данных благодаря кодированию 8b/10b выделяет опорную частоту -всегда)? Получается, что для правильной работы требуется периодически заново синхронизироваться?
Go to the top of the page
 
+Quote Post
Magnum
сообщение Aug 9 2017, 10:34
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 26-05-05
Пользователь №: 5 397



Нет, что-то неправильно настроили, всё должно работать. Конечно для наглядности и понимания было бы неплохо схемку всей установке.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Aug 9 2017, 10:59
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 026
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(Magnum @ Aug 9 2017, 13:34) *
Нет, что-то неправильно настроили, всё должно работать. Конечно для наглядности и понимания было бы неплохо схемку всей установке.

Да я просто документацию, похоже, читать не умею. Как я понял CDR работает сначала с опорной частотой и только потом подстраивается под входной поток данных, после этого сигнал rx_is_lockedtoref становится неактуальным (для контроля работы и перезапуска приемопередатчика я его использовал), а в качестве контрольного сигнала нужно использовать rx_is_lockedtodata. После этапа отладки, если все будет стабильно работать отпишусь.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Aug 15 2017, 11:20
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 026
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(bogaev_roman @ Aug 9 2017, 13:59) *
После этапа отладки, если все будет стабильно работать отпишусь.

Стабильно не работает. В случае передачи непрерывной последовательности синхросимволов BC все работает без сбоев, при попытке вставить в передачу обычные данные периодически возникают ошибки - rx_errdetect. Изменение скважности и периодичности синхроимпульсов на ситуацию не влияет - в последнем случае передавал последовательно 32 синхроимпульса и 32 слова данных, после подстройки стабильно вываливается ошибка через 2^20 тактов.
Go to the top of the page
 
+Quote Post
novartis
сообщение Aug 15 2017, 11:33
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 363
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845



я может глупость спрошу: а скрамблер там вставить не надо?
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Aug 15 2017, 11:49
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 026
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(novartis @ Aug 15 2017, 14:33) *
я может глупость спрошу: а скрамблер там вставить не надо?

Да, похоже, мелочь какую-то и упустил. Что за скрамблер?
Go to the top of the page
 
+Quote Post
novartis
сообщение Aug 15 2017, 11:55
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 363
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845



скрамблер из вашего потока данных делает поток, в котором единицы/нули идут с равной вероятностью.
Соответственно блоку cdr будет легче получить опорную частоту.
Скрамблер ставите на выходе.
На входе дескрамблер.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Aug 15 2017, 12:07
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 026
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(novartis @ Aug 15 2017, 14:55) *
скрамблер из вашего потока данных делает поток, в котором единицы/нули идут с равной вероятностью.
Соответственно блоку cdr будет легче получить опорную частоту.
Скрамблер ставите на выходе.
На входе дескрамблер.

Для этих вроде целей используется кодирование 8b/10b, для определения границ слова используется синхрослово BC, которое кодируется в 17С и последовательно передается по линии.
Go to the top of the page
 
+Quote Post
novartis
сообщение Aug 15 2017, 12:13
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 363
Регистрация: 9-10-09
Из: Свердловский регион
Пользователь №: 52 845



У вас выбран режим Standart PCS? И там установлены галки Enable TX 8/10 и Enable RX 8/10?
Я с таким режимом не работал...
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Aug 15 2017, 12:39
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 026
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(novartis @ Aug 15 2017, 15:13) *
У вас выбран режим Standart PCS? И там установлены галки Enable TX 8/10 и Enable RX 8/10?

Да, я к сожалению не могу прикрепить настройки трансивера, попробую так описать главное:
Код
        .tx_enable                       (1),
        .rx_enable                       (1),
        .enable_std                      (1),
        .data_path_select                ("standard"),
        .channels                        (6),
        .bonded_mode                     ("xN"),
        .data_rate                       ("1250 Mbps"),
        .pma_width                       (10),
        .tx_pma_clk_div                  (1),
        .pll_reconfig_enable             (0),
        .pll_external_enable             (1),
        .pll_data_rate                   ("1250 Mbps"),
        .pll_type                        ("CMU"),
        .pma_bonding_mode                ("xN"),
        .plls                            (1),
        .pll_select                      (0),
        .pll_refclk_cnt                  (1),
        .pll_refclk_select               ("0"),
        .pll_refclk_freq                 ("125.0 MHz"),
        .pll_feedback_path               ("internal"),
        .cdr_reconfig_enable             (0),
        .cdr_refclk_cnt                  (1),
        .cdr_refclk_select               (0),
        .cdr_refclk_freq                 ("125.0 MHz"),
        .rx_ppm_detect_threshold         ("1000"),
        .rx_clkslip_enable               (0),
        .std_protocol_hint               ("basic"),
        .std_pcs_pma_width               (10),
        .std_low_latency_bypass_enable   (0),
        .std_tx_pcfifo_mode              ("register_fifo"),
        .std_rx_pcfifo_mode              ("register_fifo"),
        .std_rx_byte_order_enable        (0),
        .std_rx_byte_order_mode          ("manual"),
        .std_rx_byte_order_width         (9),
        .std_rx_byte_order_symbol_count  (1),
        .std_rx_byte_order_pattern       ("0"),
        .std_rx_byte_order_pad           ("0"),
        .std_tx_byte_ser_enable          (0),
        .std_rx_byte_deser_enable        (0),
        .std_tx_8b10b_enable             (1),
        .std_tx_8b10b_disp_ctrl_enable   (0),
        .std_rx_8b10b_enable             (1),
        .std_rx_rmfifo_enable            (0),
        .std_rx_rmfifo_pattern_p         ("00000"),
        .std_rx_rmfifo_pattern_n         ("00000"),
        .std_tx_bitslip_enable           (1),
        .std_rx_word_aligner_mode        ("sync_sm"),
        .std_rx_word_aligner_pattern_len (10),
        .std_rx_word_aligner_pattern     ("17c"),
        .std_rx_word_aligner_rknumber    (3),
        .std_rx_word_aligner_renumber    (1),
        .std_rx_word_aligner_rgnumber    (3),
        .std_rx_run_length_val           (31),
        .std_tx_bitrev_enable            (0),
        .std_rx_bitrev_enable            (0),
        .std_tx_byterev_enable           (0),
        .std_rx_byterev_enable           (0),
        .std_tx_polinv_enable            (0),
        .std_rx_polinv_enable            (0)

Цитата
Я с таким режимом не работал...

А у Вас с какими настройками стабильно работало в режиме CDR?
Go to the top of the page
 
+Quote Post
Magnum
сообщение Aug 15 2017, 15:18
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 26-05-05
Пользователь №: 5 397



По симптомам походит на скремблеронедостаточность. Нужно понимать что если включен 8b/10b, то скорость данных 1Гб/с, а выходной поток после кодирования будет уже 1.25Гб/с и частоты задавать соответственно.
При использовании скремблера (без кодера 8b/10b) можно получить полную скорость 1.25Гб/с.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Aug 18 2017, 12:47
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 026
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



А кто-нибудь знает, в каком документе описаны требования к частотам, являющимся опорными для трансиверов ну и максимальное отклонение в ppm при работе CDR (помимо документа io switching characteristics)?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th November 2017 - 03:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01318 секунд с 7
ELECTRONIX ©2004-2016