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

10GBASE-R и rx_block_lock

Коллеги, день добрый.

 

Вожусь с запуском 10G. Долго не мог запустить, пока не сделал собственный контроллер резета при включении.

Осталась последняя проблема, не взводится сигнал rx_block_lock. Что говорит о проблеме синхронизации в PCS.

 

При этом, если 10GBASE-R включить в режим петли, то данные между собой ходят нормально. По XGMII все получаю на RX канале.

 

Может кто знает, в каком направлении двигаться, куда рыть?

Заранее спасибо за советы.

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


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

Приветствую!

...

Может кто знает, в каком направлении двигаться, куда рыть?

...

Так все просто: двигатся вперед - рыть вглубь. :)

 

Вы бы уточнили с каким FPGA работаете?

 

Удачи! Rob.

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


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

Так все просто: двигатся вперед - рыть вглубь. :)

 

Вы бы уточнили с каким FPGA работаете?

 

Удачи! Rob.

FPGA у меня Stratix V.

У меня пока единственная мысль, если работает петля, значит не работает что то за пределами стратикса. Это получает все что до SFP+ порта. Может аналоговые настройки. Я толком пока даже не знаю какой правильно стандарт PCML выставить. В спецификации SFP+ стандарта указан CML. А какой он там, не понятно. В мануалах к альтеорвским китам вообще все по разному. То 1.4 вольта, то 1.5. То вообще не pcml.

 

Так все просто: двигатся вперед - рыть вглубь. :)

это точно. Я даже будучи владельцем альтеры плотно поселился на форуме xilinx.

 

Еще добавлю. Соединяюсь я direct atach sfp+ кабелем с сетевухой Mellanox.

И все в надежде каждый раз смотрю на нее, чтобы диоды заморгали.

Изменено пользователем new123

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


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

Приветствую!

 

set_instance_assignment -name IO_STANDARD             "1.5-V PCML"    -to QSFPA_rx*
set_instance_assignment -name IO_STANDARD             "1.5-V PCML"    -to QSFPA_tx*
set_instance_assignment -name INPUT_TERMINATION       "OCT 100 OHMS"  -to QSFPA_rx*
set_instance_assignment -name OUTPUT_TERMINATION      "OCT 100 OHMS"  -to QSFPA_tx*
set_instance_assignment -name XCVR_VCCR_VCCT_VOLTAGE  "1_0V"          -to QSFPA_rx*
set_instance_assignment -name XCVR_VCCR_VCCT_VOLTAGE  "1_0V"          -to QSFPA_tx*
set_instance_assignment -name XCVR_VCCA_VOLTAGE       "3_0V"          -to QSFPA_rx*
set_instance_assignment -name XCVR_VCCA_VOLTAGE       "3_0V"          -to QSFPA_tx*
set_instance_assignment -name XCVR_TX_VOD             "50"            -to QSFPA_tx*

Вот мои руны для 10G на StratixV.

Ну и незабывайте что SFP+ надо включить на передачу соответствующим пином.

 

Удачи! Rob.

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


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

 

set_instance_assignment -name IO_STANDARD             "1.5-V PCML"    -to QSFPA_rx*
set_instance_assignment -name IO_STANDARD             "1.5-V PCML"    -to QSFPA_tx*
set_instance_assignment -name INPUT_TERMINATION       "OCT 100 OHMS"  -to QSFPA_rx*
set_instance_assignment -name OUTPUT_TERMINATION      "OCT 100 OHMS"  -to QSFPA_tx*
set_instance_assignment -name XCVR_VCCR_VCCT_VOLTAGE  "1_0V"          -to QSFPA_rx*
set_instance_assignment -name XCVR_VCCR_VCCT_VOLTAGE  "1_0V"          -to QSFPA_tx*
set_instance_assignment -name XCVR_VCCA_VOLTAGE       "3_0V"          -to QSFPA_rx*
set_instance_assignment -name XCVR_VCCA_VOLTAGE       "3_0V"          -to QSFPA_tx*
set_instance_assignment -name XCVR_TX_VOD             "50"            -to QSFPA_tx*

Вот мои руны для 10G на StratixV.

 

Удачи! Rob.

 

спасибо большое, сейчас попробую. У меня резисторы по другому называются (XCVR_IO_PIN_TERMINATION). И XCVR_TX_VOD нет.

 

Ну и незабывайте что SFP+ надо включить на передачу соответствующим пином.

 

да да, спасибо. Этот стандарт у меня уже от зубов отскакивает

 

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


Ссылка на сообщение
Поделиться на другие сайты
Ну и незабывайте что SFP+ надо включить на передачу соответствующим пином.

Удачи! Rob.

 

Еще раз, спасибо вам Rob.

Попробовал настройки. Получил все ту же 9C000001. По началу расстроился, решил прочитать еще раз про аналоговые настройки.

Наткнулся на такую заметку https://www.intel.com/content/www/us/en/pro...212013_389.html

Там явно сказано, что сопротивления оконечные включатся только после конфигурации и до этого момента лучше модуль sfp+ не вставлять.

От нечего делать решил кабель вставить спустя секунду после запуска. Сразу же выхватил 9C000002 (remote fault), но все статусы норм. Поднят rx_block_lock, rx_data_ready.

 

Я так понял теперь сетевая карта что то не может.

 

Вот теперь думаю что с этим кабелем делать. Может держать TX_DISABLE на SFP+ в LOW, пока я делаю резет трансиверов или пока rx_block_lock не встал.

Изменено пользователем new123

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


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

Приветствую!

...

Вот теперь думаю что с этим кабелем делать. Может держать TX_DISABLE на SFP+ в LOW, пока я делаю резет трансиверов или пока rx_block_lock не встал.

Мне кажется там говорят что мол пока прелюдия конфигурирования FPGA не закончена не суйте свой plug SFP - так как очень уж нежные пины в этом состоянии - сжечь статикой можете на раз.

 

Я платы на StratixV десятки раз перепрограммировал со вставленной оптикой - link поднимался без проблем.

 

Вы на симе гоняли дизайн?

 

Удачи! Rob.

 

 

 

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


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

Мне кажется там говорят что мол пока прелюдия конфигурирования FPGA не закончена не суйте свой plug SFP - так как очень уж нежные пины в этом состоянии - сжечь статикой можете на раз.

 

Я платы на StratixV десятки раз перепрограммировал со вставленной оптикой - link поднимался без проблем.

 

Вы на симе гоняли дизайн?

 

Удачи! Rob.

честно говоря нет. Только отдельными модулями. А с полным дизайном из за 10g-base корки не стартует сим.

надо тогда еще раз детально отладить, может я в своем mac что то не доделал. Он у меня тоже самописный.

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


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

Приветствую!

честно говоря нет. Только отдельными модулями. А с полным дизайном из за 10g-base корки не стартует сим.

надо тогда еще раз детально отладить, может я в своем mac что то не доделал. Он у меня тоже самописный.

Я имел ввиду сим 10GBASE-R PHY ? зацепите пару модулей друг на дружку по MGT и посмотрите как они линк поднимают. MAC тут не нужен.

Удачи! Rob.

 

 

 

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


Ссылка на сообщение
Поделиться на другие сайты
Я имел ввиду сим 10GBASE-R PHY ? зацепите пару модулей друг на дружку по MGT и посмотрите как они линк поднимают. MAC тут не нужен.

а, то есть вы предлагаете законнектить два phy друг к другу и посмотреть в симуляторе как они коннектятся? чтобы воссоздать так же. Логично =)

 

 

да, не в кабеле дело. 9C000002 начинает приходить само, спустя секунду

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


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

Приветствую!

...

да, не в кабеле дело. 9C000002 начинает приходить само, спустя секунду

Посмотрел сейчас - у меня на симе PHY поднимают линк спустя ~30 us после ресета.

 

Удачи!

 

 

 

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


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

Посмотрел сейчас - у меня на симе PHY поднимают линк спустя ~30 us после ресета.

 

Удачи!

мой стратикс при включении резетится 372мксек. + еще через ~2-3мксек он подымает последний сигнал block_lock и сразу rx_data_ready.

С секундой я конечно дал =)) я тут не засек. у меня логи пишутся в FIFO всего на 8000 слов.

Изменено пользователем new123

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


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

Приветствую!

мой стратикс при включении резетится 372мксек. + еще через ~2-3мксек он подымает последний сигнал block_lock и сразу rx_data_ready.

С секундой я конечно дал =)) я тут не засек. у меня логи пишутся в FIFO всего на 8000 слов.

Это и понятно - в симе таймауты меньше чтобы не ждать долго .

Удачи! Rob.

 

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


Ссылка на сообщение
Поделиться на другие сайты
зацепите пару модулей друг на дружку по MGT

Rob, если не сложно, не могли бы подсказать, что такое MGT? я нагуглил что это multi gigabit transceiver, но что это и как это соединить в проекте не допонял.

 

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


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

Приветствую!

Rob, если не сложно, не могли бы подсказать, что такое MGT? я нагуглил что это multi gigabit transceiver, но что это и как это соединить в проекте не допонял.
Да так и есть (в кои веки гугул прав :) )

Берете 2 корки PHY и соединяете их serial выходы в позе 69 (друг на дружку) - и наблюдаете за процессом ... :biggrin:

phy_10gbaser_s5gx #(
 .CHANNELS           (CH_NUM          ),
 .RESET_MGT_CLK_FREQ (25              ),
 .CONFIG_BUS_CLK_FREQ(25              ),
 .PHY_REF_CLK_FREQ   ("322.265625 MHz")
) i_phy_10gbaser_s5gx_a (
 .reset_mgt_clk  (clk_25         ),
 .reset_mgt_rstn (~rst_25        ),
 .phy_ref_clk    (clk_phy        ),
 .phy_mgt_clk    (clk_100        ),
 .dom_present    (1'b1           ),
 .dom_rstn       (               ),
 .ip_rstn        ({CH_NUM{1'b1}} ),
 .xgmii_clk      (a_xgmii_clk    ),
 .xgmii_clk_rdy  (a_xgmii_clk_rdy),
 .xgmii_rstn     (a_xgmii_rstn   ),
 .config_bus_clk (clk_25         ),
 .config_bus_rstn(               ),
 .xgmii_tx       (a_xgmii_tx     ),
 .xgmii_rx       (a_xgmii_rx     ),
 .serial_tx      (serial_tx),
 .serial_rx      (serial_rx      ),
 .phy_debug_out  (a_phy_debug_out)
);

phy_10gbaser_s5gx #(
 .CHANNELS           (CH_NUM          ),
 .RESET_MGT_CLK_FREQ (25              ),
 .CONFIG_BUS_CLK_FREQ(25              ),
 .PHY_REF_CLK_FREQ   ("322.265625 MHz")
) i_phy_10gbaser_s5gx_b (
 .reset_mgt_clk  (clk_25         ),
 .reset_mgt_rstn (~rst_25        ),
 .phy_ref_clk    (clk_phy        ),
 .phy_mgt_clk    (clk_100        ),
 .dom_present    (1'b1           ),
 .dom_rstn       (               ),
 .ip_rstn        ({CH_NUM{1'b1}} ),
 .xgmii_clk      (b_xgmii_clk    ),
 .xgmii_rstn     (b_xgmii_rstn   ),
 .config_bus_clk (clk_25         ),
 .config_bus_rstn(               ),
 .xgmii_tx       (b_xgmii_tx     ),
 .xgmii_rx       (b_xgmii_rx     ),
 .serial_tx      (serial_rx      ),
 .serial_rx      (serial_tx      ),
 .phy_debug_out  (b_phy_debug_out)
);

 

Удачи! Rob.

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти