Перейти к содержанию
    

ArriaV, native transceiver, external pll, режим CDR

На нескольких платах потребовалось завести все имеющиеся трансиверы (независимы). Для этой цели выбрал режим native с external pll в базовой конфигурации. Написал простейшую обвязку из логики сброса, подстройки и начальной синхронизации ну и генератора ПСП. В качестве CDR клока подаю входной клок на специальную ногу. Т. к. разные концы трансивера находятся на разных платах, то при отсутствии на входе сигнала rx_is_lockedtodata запускается сброс и начинается начальная синхронизация. Ну и, соответственно, в случае, если трансиверы питаются от одного генератора опорной частоты, после начальной синхронизации все работает стабильно, ошибок нет. Но если соединяю две платы (генераторы опорной частоты разные), то через некоторое время падает rx_is_lockedtodata.

Соответственно вопрос - я неправильно понимаю логику работы CDR (я считал, что этот блок из входного потока данных благодаря кодированию 8b/10b выделяет опорную частоту -всегда)? Получается, что для правильной работы требуется периодически заново синхронизироваться?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Да я просто документацию, похоже, читать не умею. Как я понял CDR работает сначала с опорной частотой и только потом подстраивается под входной поток данных, после этого сигнал rx_is_lockedtoref становится неактуальным (для контроля работы и перезапуска приемопередатчика я его использовал), а в качестве контрольного сигнала нужно использовать rx_is_lockedtodata. После этапа отладки, если все будет стабильно работать отпишусь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

После этапа отладки, если все будет стабильно работать отпишусь.

Стабильно не работает. В случае передачи непрерывной последовательности синхросимволов BC все работает без сбоев, при попытке вставить в передачу обычные данные периодически возникают ошибки - rx_errdetect. Изменение скважности и периодичности синхроимпульсов на ситуацию не влияет - в последнем случае передавал последовательно 32 синхроимпульса и 32 слова данных, после подстройки стабильно вываливается ошибка через 2^20 тактов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я может глупость спрошу: а скрамблер там вставить не надо?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я может глупость спрошу: а скрамблер там вставить не надо?

Да, похоже, мелочь какую-то и упустил. Что за скрамблер?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

скрамблер из вашего потока данных делает поток, в котором единицы/нули идут с равной вероятностью.

Соответственно блоку cdr будет легче получить опорную частоту.

Скрамблер ставите на выходе.

На входе дескрамблер.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

скрамблер из вашего потока данных делает поток, в котором единицы/нули идут с равной вероятностью.

Соответственно блоку cdr будет легче получить опорную частоту.

Скрамблер ставите на выходе.

На входе дескрамблер.

Для этих вроде целей используется кодирование 8b/10b, для определения границ слова используется синхрослово BC, которое кодируется в 17С и последовательно передается по линии.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У вас выбран режим Standart PCS? И там установлены галки Enable TX 8/10 и Enable RX 8/10?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У вас выбран режим 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?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

По симптомам походит на скремблеронедостаточность. Нужно понимать что если включен 8b/10b, то скорость данных 1Гб/с, а выходной поток после кодирования будет уже 1.25Гб/с и частоты задавать соответственно.

При использовании скремблера (без кодера 8b/10b) можно получить полную скорость 1.25Гб/с.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А кто-нибудь знает, в каком документе описаны требования к частотам, являющимся опорными для трансиверов ну и максимальное отклонение в ppm при работе CDR (помимо документа io switching characteristics)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...