ZCU111/ZynqMP/Zynq ultrascale+ RFSoC/MPSoC 調試SFP網口1000BASE-X(DAC)


參考內容
https://github.com/Xilinx-Wiki-Projects/ZCU102-Ethernet
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/478937213/MPSoC+PS+and+PL+Ethernet+Example+Projects#Using-PS-GEM-through-EMIO

PL與PS架構

image
注意: Si570產生的時鍾通過USER_MGT_CLOCK輸入到系統中
image
如果使用默認的Si570的輸入, 會導致IP核並不運行, 具體表現為demo工程中的狀態指示燈不會點亮.

ZYNQMP核設置

創建工程時, 從ZCU111開發板創建, 包含了默認的ZYNQMP核的配置, 下面記錄了需要更改的配置

接口設置

image

  • GPIO中使能EMIO
  • 使用GEM0驅動器, 輸出到EMIO中
  • 取消ZCU111工程默認使能的接口, 包括URAT1

時鍾設置

  • Output clk → LPD clk → PL Fabric clk 設置向PL輸出時鍾為50MHz(這個時鍾為1G/2.5G Ethernet PCS/PMA or SGMII提供獨立時鍾, 如下圖不同的independent_clock_bufg對應IP工作在1G模式或者2.5G模式)
    independent_clock_bufg 時鍾速率

PS-PL交互設置

image

Hardware工程

主要參考下面這個工程
https://github.com/Xilinx-Wiki-Projects/ZCU102-Ethernet/tree/main/2019.1/ps_emio_eth_1g

Block Design

照抄demo工程即可, 因為IP生成需要根據rfsoc的型號, 所以並不可以直接改變demo工程的芯片型號.

約束

# sfp0 zcu111
set_property PACKAGE_PIN Y35 [get_ports sfp_txp]
set_property PACKAGE_PIN Y36 [get_ports sfp_txn]
set_property PACKAGE_PIN AA38 [get_ports sfp_rxp]
set_property PACKAGE_PIN AA39 [get_ports sfp_rxn]
set_property PACKAGE_PIN G12 [get_ports {sfp_tx_dis[0]}]
set_property IOSTANDARD LVCMOS18 [get_ports {sfp_tx_dis[0]}]

# gt clk
set_property PACKAGE_PIN V31 [get_ports gtrefclk_in_clk_p]
set_property PACKAGE_PIN V32 [get_ports gtrefclk_in_clk_n]
create_clock -name gt_ref_clk -period 6.4 [get_ports gtrefclk_in_clk_p]

set_property IOSTANDARD LVCMOS18 [get_ports *_led]
set_property PACKAGE_PIN AR13 [get_ports xcvr_rst_done_led]
set_property PACKAGE_PIN AP13 [get_ports {link_status_led[0]}]
set_property PACKAGE_PIN AR16 [get_ports {link_sync_led[0]}]
set_property PACKAGE_PIN AP16 [get_ports {pcs_clk_led[0]}]
set_property PACKAGE_PIN AN16 [get_ports {pl_reset_led[0]}]
set_property PACKAGE_PIN AN17 [get_ports {mdc_clk_led[0]}]
set_property PACKAGE_PIN AV15 [get_ports {gmii_rx_clk_led[0]}]

幾點說明:

  • gtrefclk_in 需要配置到專用輸入上, 見第一章
  • set_property IOSTANDARD LVCMOS18 [get_ports *_led] 這是一個小技巧, 這樣就不用每一個led都寫電平約束了.
  • xdc文件不支持行尾注釋, 所有注釋必須獨占一行!!!

Petalinux工程

使用ZCU102工程默認的即可. 但是需要導入ZCU111的HDF,如果是自己創建的project,需要將demo工程的project-spec merge到新的工程里面!!

petalinux-config --get-hw-description <path-to-sdk>
petalinux-build

測試

debug leds

image

  1. 使用SFP-DAC線與主機SFP接口直連(不知道為什么1000Base-T的接口無法正常工作,請看 @SFP網口調試sgmii)
  2. 使用跳線帽短接zSFP0_Disable
  3. leds
LED[n] LED Name Status
LED7 gmii_rx_clk_led 快速閃爍
LED6 mdc_clk_led 慢速閃爍
LED5 pl_reset_led 長滅
LED4 長滅
LED3 pcs_clk_led 快速閃爍
LED2 link_sync_led 常亮
LED1 link_status_led 常亮
LED0 xcvr_rst_done_led 常亮

啟動u-boot

image

內核啟動

image
其中的 unable to generate target frequency: 125 MHz 是由於ps輸入時鍾非125MHz的整數關系, 所以時鍾有誤差, 可以忽略.

互ping測試

與主機設置相同網段的IP即可測試網絡.
右側: 主機 192.168.30.2
左側: zynqmp 192.168.30.100
image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM