Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: 10GBASE-R и rx_block_lock
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
new123
Коллеги, день добрый.

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

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

Может кто знает, в каком направлении двигаться, куда рыть?
Заранее спасибо за советы.
RobFPGA
Приветствую!
Цитата(new123 @ Jul 31 2018, 17:10) *
...
Может кто знает, в каком направлении двигаться, куда рыть?
...
Так все просто: двигатся вперед - рыть вглубь. sm.gif

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

Удачи! Rob.
new123
Цитата(RobFPGA @ Jul 31 2018, 17:18) *
Приветствую!
Так все просто: двигатся вперед - рыть вглубь. sm.gif

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

Удачи! Rob.

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

Цитата(RobFPGA @ Jul 31 2018, 17:18) *
Так все просто: двигатся вперед - рыть вглубь. sm.gif

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

Еще добавлю. Соединяюсь я direct atach sfp+ кабелем с сетевухой Mellanox.
И все в надежде каждый раз смотрю на нее, чтобы диоды заморгали.
RobFPGA
Приветствую!

CODE
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.
new123
Цитата(RobFPGA @ Jul 31 2018, 18:28) *
Приветствую!

CODE
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 нет.

Цитата(RobFPGA @ Jul 31 2018, 18:28) *
Ну и незабывайте что SFP+ надо включить на передачу соответствующим пином.


да да, спасибо. Этот стандарт у меня уже от зубов отскакивает
new123
Цитата(RobFPGA @ Jul 31 2018, 18:28) *
Ну и незабывайте что 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 не встал.
RobFPGA
Приветствую!
Цитата(new123 @ Jul 31 2018, 20:49) *
...
Вот теперь думаю что с этим кабелем делать. Может держать TX_DISABLE на SFP+ в LOW, пока я делаю резет трансиверов или пока rx_block_lock не встал.
Мне кажется там говорят что мол пока прелюдия конфигурирования FPGA не закончена не суйте свой plug SFP - так как очень уж нежные пины в этом состоянии - сжечь статикой можете на раз.

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

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

Удачи! Rob.


new123
Цитата(RobFPGA @ Jul 31 2018, 21:26) *
Приветствую!
Мне кажется там говорят что мол пока прелюдия конфигурирования FPGA не закончена не суйте свой plug SFP - так как очень уж нежные пины в этом состоянии - сжечь статикой можете на раз.

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

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

Удачи! Rob.

честно говоря нет. Только отдельными модулями. А с полным дизайном из за 10g-base корки не стартует сим.
надо тогда еще раз детально отладить, может я в своем mac что то не доделал. Он у меня тоже самописный.
RobFPGA
Приветствую!
Цитата(new123 @ Jul 31 2018, 21:31) *
честно говоря нет. Только отдельными модулями. А с полным дизайном из за 10g-base корки не стартует сим.
надо тогда еще раз детально отладить, может я в своем mac что то не доделал. Он у меня тоже самописный.
Я имел ввиду сим 10GBASE-R PHY ? зацепите пару модулей друг на дружку по MGT и посмотрите как они линк поднимают. MAC тут не нужен.
Удачи! Rob.


new123
Цитата(RobFPGA @ Jul 31 2018, 21:38) *
Я имел ввиду сим 10GBASE-R PHY ? зацепите пару модулей друг на дружку по MGT и посмотрите как они линк поднимают. MAC тут не нужен.

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


да, не в кабеле дело. 9C000002 начинает приходить само, спустя секунду
RobFPGA
Приветствую!
Цитата(new123 @ Jul 31 2018, 21:52) *
...
да, не в кабеле дело. 9C000002 начинает приходить само, спустя секунду
Посмотрел сейчас - у меня на симе PHY поднимают линк спустя ~30 us после ресета.

Удачи!


new123
Цитата(RobFPGA @ Jul 31 2018, 22:43) *
Приветствую!
Посмотрел сейчас - у меня на симе PHY поднимают линк спустя ~30 us после ресета.

Удачи!

мой стратикс при включении резетится 372мксек. + еще через ~2-3мксек он подымает последний сигнал block_lock и сразу rx_data_ready.
С секундой я конечно дал =)) я тут не засек. у меня логи пишутся в FIFO всего на 8000 слов.
RobFPGA
Приветствую!
Цитата(new123 @ Jul 31 2018, 22:56) *
мой стратикс при включении резетится 372мксек. + еще через ~2-3мксек он подымает последний сигнал block_lock и сразу rx_data_ready.
С секундой я конечно дал =)) я тут не засек. у меня логи пишутся в FIFO всего на 8000 слов.
Это и понятно - в симе таймауты меньше чтобы не ждать долго .
Удачи! Rob.
new123
Цитата(RobFPGA @ Jul 31 2018, 21:38) *
зацепите пару модулей друг на дружку по MGT

Rob, если не сложно, не могли бы подсказать, что такое MGT? я нагуглил что это multi gigabit transceiver, но что это и как это соединить в проекте не допонял.
RobFPGA
Приветствую!
Цитата(new123 @ Aug 1 2018, 10:24) *
Rob, если не сложно, не могли бы подсказать, что такое MGT? я нагуглил что это multi gigabit transceiver, но что это и как это соединить в проекте не допонял.
Да так и есть (в кои веки гугул прав sm.gif )
Берете 2 корки PHY и соединяете их serial выходы в позе 69 (друг на дружку) - и наблюдаете за процессом ... biggrin.gif
CODE

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.
new123
Цитата(RobFPGA @ Aug 1 2018, 10:46) *
Берете 2 корки PHY и соединяете их serial выходы в позе 69 (друг на дружку) - и наблюдаете за процессом ... biggrin.gif

елки, все так просто. Сейчас заценим
new123
Цитата(RobFPGA @ Aug 1 2018, 10:46) *
Берете 2 корки PHY и соединяете их serial выходы в позе 69 (друг на дружку)

а у вас нормально компилит такую конструкцию? Вожусь несколько часов.
Выдает для TX выхода.
CODE
Info: Can be connected to I port of stratixv_io_obuf WYSIWYG


Ну и для RX наоборот. Я так понял, он просит физически назначить трансивер на tx_serial и rx_serial
Lmx2315
Цитата(new123 @ Aug 1 2018, 14:17) *
а у вас нормально компилит такую конструкцию? Вожусь несколько часов.

..мне кажется такое подойдёт только для симуляции.
new123
Цитата(Lmx2315 @ Aug 1 2018, 14:22) *
..мне кажется такое подойдёт только для симуляции.

я тоже так думаю, но чтобы просимулировать, нужно пройти Analys/Synthesis, иначе симулятор не запускает главный дизайн.
Я наверное что то не знаю.
Lmx2315
Цитата(new123 @ Aug 1 2018, 14:25) *
я тоже так думаю, но чтобы просимулировать, нужно пройти Analys/Synthesis, иначе симулятор не запускает главный дизайн.
Я наверное что то не знаю.

я обычно в ActivHDL симулирую, в нём я замыкал выходы гигабитных трансиверов на входы - проблем не было.
RobFPGA
Приветствую!
Цитата(new123 @ Aug 1 2018, 14:25) *
я тоже так думаю, но чтобы просимулировать, нужно пройти Analys/Synthesis, иначе симулятор не запускает главный дизайн. ...
Я пользую ModelSim но не пользуюсь скриптами Qu для запуска симуляции.
У меня свой скрипт для компиляции библиотек и парсинга и компиляции qip файлов.

Удачи! Rob.
new123
Цитата(RobFPGA @ Aug 1 2018, 15:40) *
У меня свой скрипт для компиляции библиотек и парсинга и компиляции qip файлов.

понятно, я так и подумал
Flip-fl0p
Цитата
У меня свой скрипт для компиляции библиотек и парсинга и компиляции qip файлов.

А не поделитесь ? bb-offtopic.gif
Либо если не сложно, расскажите методику, как определить какие нужно компилировать библиотеки если используются различные модули, сгенерированные мегавизардом.
andrew_b
Цитата(Flip-fl0p @ Aug 1 2018, 15:46) *
А не поделитесь ? bb-offtopic.gif
Либо если не сложно, расскажите методику, как определить какие нужно компилировать библиотеки если используются различные модули, сгенерированные мегавизардом.

Все симуляционные бибилиотеки лежат в $QUARTUS_ROOTDIR/eda/sim_lib. В большинстве случаев нужны только 220*.vhd и altera_mf*.vhd.
new123
Я этот момент изучения написания скриптов для modelsim откладываю уже 7 месяц. И сейчас временно решил отложить. Это я чувствую минимум мне на неделю.
Буду бороться с 9C000002. Как говорят в мануалах xilinx - вы должны помочь удаленному устройству завестить, буду помогать =))
RobFPGA
Приветствую!

Ничего особенного - поделка выходного дня - рекурсивно разбираем по строкам qip файл создаем список -
{тип библиотека исходник куда_копировать_если_хочется}
Все возможные варианты не покрывает так что годится как заготовка для буратино допиливания.

Ну а дальше идем по списку и в зависимосли от типа делаем vlog/vcom в заданную библиотеку

CODE
# parsing Altera .qip|.sip files. Creating list of source files for the IP core.
proc qip_export {fname {out_lib "work"} {out_dir "./out"} } {
# fname - input qip file
# out_lib - name of library if library not defined in the qip
# out_dir - destination folder

puts ">>> qip_export: file:$fname -> lib:$out_lib -> out:$out_dir"

set fname [file normalize $fname]
set qip_dir [file dirname $fname]
puts "Export qip source file:\n qip : $fname\n qip_dir: $qip_dir\n out : $out_dir"

set fi [open $fname "r"]
set lines [split [read $fi] "\n"]
close $fi

set qip_list [list]
set out_list [list]
set ::quartus(qip_path) $qip_dir

foreach line $lines {
puts ">>$line"
if {[regexp -- {^\#} $line]} {
continue
}

if {![regexp -- {^\s*set_global_assignment\s+.*?-name\s+(\w+)\s+((?:\[.+?\])|(?:\".+\")|(?:\$.+))} $line -> kind path_cmd]} {
continue
}
set in_fname [rel_name [subst $path_cmd] $qip_dir]
set ip_name [file rootname [file tail $in_fname]]

set src_fname [lexnormalize [file join $qip_dir $in_fname]]
set out_fname [file join $out_dir $in_fname]

if {![regexp -- {-library\s+((?:\"\w+\")|(?:\w+))} $line -> lib_name]} {
set lib_name $out_lib
}
set lib_name [string map {\" {}} $lib_name]

switch $kind {
"QIP_FILE" {
lappend qip_list $src_fname
}
"VERILOG_FILE" -
"VHDL_FILE" -
"SYSTEMVERILOG_FILE" {
lappend out_list [list $kind $lib_name $src_fname $out_fname]

puts "qip_export:\n $kind\n $lib_name\n $in_fname\n $src_fname\n $out_fname"
}

default {
#puts ">>"
}
}
}
# recursive process included QIP
foreach qip_file $qip_list {
lappend out_list {*}[qip_export $qip_file $out_lib "$out_dir/$ip_name"]
}

return $out_list
}


Удачи! Rob.
new123
Цитата(RobFPGA @ Jul 31 2018, 18:28) *
Вот мои руны для 10G на StratixV.
Ну и незабывайте что SFP+ надо включить на передачу соответствующим пином.

Rob, если не сложно, еще вопрос по стандартам. А вы ставили стандарт для TX_Disable? Я смотрел в альтеровских китах стоят 1.8V
У себя я ничего не ставил. Работает в 2.5v. В принципе вроде попадает в стандарт SFP+, но вдруг я передачу не включаю.

Очень похоже на то, что я своей передачей не могу противоположную сторону завести. В петле передача точно работала
RobFPGA
Приветствую!
Цитата(new123 @ Aug 1 2018, 19:14) *
Rob, если не сложно, еще вопрос по стандартам. А вы ставили стандарт для TX_Disable? Я смотрел в альтеровских китах стоят 1.8V
У себя я ничего не ставил. Работает в 2.5v. В принципе вроде попадает в стандарт SFP+, но вдруг я передачу не включаю.

Очень похоже на то, что я своей передачей не могу противоположную сторону завести. В петле передача точно работала
Контроль в SFP+ это обычные TTL - 2.5 или 1.8 стандарт зависит от того какое питание на банке куда эти сигналы заведены.
У меня они все "2.5 V"

Удачи! Rob.
new123
Цитата(RobFPGA @ Aug 2 2018, 11:18) *
Приветствую!
Контроль в SFP+ это обычные TTL - 2.5 или 1.8 стандарт зависит от того какое питание на банке куда эти сигналы заведены.
У меня они все "2.5 V"

Удачи! Rob.

спасибо. Я тоже мультиметром полазил с разными стандартами. Они действительно в допуске все SFP+
Пока пробую петлю кабелем уже сделать, посмотреть, что у меня не заводится. Все таки думаю, что TX канала не работает.
new123
Соединил кабелем у себя два порта sfp+ и решил попробовать погонять данные. Ходят отлично.
Получается я не выполняю какой то пунктик стандарта, что сторонняя сетевуха не может завестись. Придется погрузиться наверное в скрипты Rob'а, и смотреть как симулятор подымает сеть и общается.
new123
Всем спасибо, особенно Rob, что помогали. Вопрос решен, сетка поднялась с другой сетевухой. Видать первая не держит -R стандарт
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.