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

Ethernet 10G/1G

Всем привет!

Появилась задача сделать модуль поддерживающий оба режима работы на 1 и 10G. По отдельности-то я с этими модулями работал, но вместе нет. Схема такая с sfp на плисину приходит дифпара данных(две TX/RX) и I2C шина. задача - прочитать по I2C что за sfp вставлена и подстроить трансиверы. Проблема заключается в том, что каждое ядро ксайлинкса pcs/pma 10 и 1 уже содержит внутри себя трансиверы, drp-то у них есть, но данные я все равно получается с них(трансиверов) не получу если перенастрою не в тот режим, в котором данные pcs/pma должен работать. Вынести трансиверы наружу и сделать переключение потоков то на одно ядро то на другое так же, как я понимаю, не получится, так как это блэк боксы.

Подскажите с какой стороны подступиться к данной задаче?

Заранее спасибо!

 

http://www.xilinx.com/support/documentatio...g-switching.pdf нашел кое какую инфу, поспешил с вопросом

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


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

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

 

...

равно получается с них(трансиверов) не получу если перенастрою не в тот режим, в котором данные pcs/pma должен работать. Вынести трансиверы наружу и сделать переключение потоков то на одно ядро то на другое так же, как я понимаю, не получится, так как это блэк боксы.

...

Вынести наружу трансиверы несложно - как для 1G так и для 10G. Блэк боксами там только сами pcs/pma корки, а все остальное прекрасно правится ручками если надо.

 

Успехов! Rob

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


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

Раз уж написал сюда вопрос< хотел бы за одно спросить про использование блэк-боксов. Убираю я значит xci файлы из проекта(например тот на который ссылку я написал в начале) и добавляю только верилоговские файлы.

В этих файлах фигурируют строчки:

(* CORE_GENERATION_INFO = "gig_ethernet_pcs_pma_0,gig_ethernet_pcs_pma_v14_3,{x_ipProduct=Vivado 2014.4,x_ipVendor=xilinx.com,x_ipLibrary=ip,x_ipName=gig_ethernet_pcs_pma,x_ipVe
rsion=14.3,x_ipCoreRevision=1,x_ipLanguage=VERILOG,x_ipSimLanguage=MIXED,c_elabor
ation_transient_dir=.,c_component_name=gig_ethernet_pcs_pma_0,c_family=kintex7,c_
is_sgmii=true,c_use_transceiver=true,c_use_tbi=false,c_use_lvds=false,c_has_an=fa
lse,c_has_mdio=false,c_has_ext_mdio=false,c_sgmii_phy_mode=false,c_dynamic_switch
ing=true,c_transceiver_mode=A,c_sgmii_fabric_buffer=true,c_1588=0,gt_rx_byte_widt
h=1,C_EMAC_IF_TEMAC=true,C_PHYADDR=1,EXAMPLE_SIMULATION=0,c_support_level=false,c
_sub_core_name=gig_ethernet_pcs_pma_0_gt,c_transceivercontrol=false,c_xdevicefami
ly=xc7k325t,c_gt_dmonitorout_width=8}" *)
(* X_CORE_INFO = "gig_ethernet_pcs_pma_v14_3,Vivado 2014.4" *)

Это что получается, если я работаю в 16.3 я не смогу подключить этот зашифрованный файл? Или для чего тут вообще эта версия? Я-то просто хотел вырвать этот блэк бокс и вставить в свой проект, но вивадо ругается, что не может с этим файлом работать. Выход-то я нашел - сгенерить блэк-бокс новой версии и подсунуть в проект меняя описанные строчки на

(* CORE_GENERATION_INFO = "one_gig_eth_pcs_pma,gig_ethernet_pcs_pma_v16_0_0,{x_ipProduct=Vivado 2016.3,x_ipVendor=xilinx.com,x_ipLibrary=ip,x_ipName=gig_ethernet_pcs_pma,x_ipVe
rsion=16.0,x_ipCoreRevision=0,x_ipLanguage=VERILOG,x_ipSimLanguage=MIXED,c_elabor
ation_transient_dir=.,c_component_name=one_gig_eth_pcs_pma,c_family=kintex7,c_arc
hitecture=kintex7,c_is_sgmii=true,c_enable_async_sgmii=false,c_enable_async_lvds=
false,c_enable_async_lvds_rx_only=false,c_use_transceiver=true,c_use_tbi=false,c_
is_2_5g=false,c_use_lvds=false,c_has_an=false,characterization=false,c_has_mdio=f
alse,c_has_ext_mdio=false,c_sgmii_phy_mode=false,c_dynamic_switching=true,c_sgmii
_fabric_buffer=true,c_1588=0,gt_rx_byte_width=1,C_EMAC_IF_TEMAC=true,EXAMPLE_SIMU
LATION=0,c_support_level=false,c_RxNibbleBitslice0Used=false,c_tx_in_upper_nibble
=1,c_TxLane0_Placement=DIFF_PAIR_0,c_TxLane1_Placement=DIFF_PAIR_1,c_RxLane0_Plac
ement=DIFF_PAIR_0,c_RxLane1_Placement=DIFF_PAIR_1,c_sub_core_name=one_gig_eth_pcs
_pma_gt,c_transceiver_type=GTXE2,c_gt_type=GTH,c_rx_gmii_clk_src=TXOUTCLK,c_trans
ceivercontrol=false,c_gtinex=false,c_xdevicefamily=xc7k325t,c_gt_dmonitorout_widt
h=8,c_gt_drpaddr_width=9,c_gt_txdiffctrl_width=4,c_gt_rxmonitorout_width=7,c_num_
of_lanes=1,c_refclkrate=125,c_drpclkrate=50,c_gt_loc=X0Y0,c_refclk_src=clk0,c_ena
ble_tx_userclk_reset_port=false}" *)
(* X_CORE_INFO = "gig_ethernet_pcs_pma_v16_0_0,Vivado 2016.3" *)

НО если мне нужно будет перейти на следующую версию Vivado мне надо будет это руками все переделывать что ли?

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


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

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

 

Эти строчки на синтез не влияют, их можно и удалить.

 

А вот что касается использования сорцов старых версий корок то тут просто надо правильно добавить все требуемые файлы.

В Vivado сейчас обычно все модули корки пакую в один файл */hdl/*_rfs.v/sv.vhd (_rfs - Ready For Synthesis) и если там все требуемые файлы то компилируется все без проблем.

Но бывает так что внутри корки используется библиотеки типа proc_common_v* (в частности для VHDL), или другие корки старых версий, а в новой Vivado либы с требуемой версией уже нет. Поэтому тут либо обновлятся на все новое либо использовать старые корки как BB нетлисты.

 

Удачи! Rob.

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


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

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

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

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

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

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

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

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

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

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