FPGA 厂商开发板 Ethernet PHY/MAC 实现对比分析
1. 概述在fpga/pynq/中RFSoC-PYNQ 板卡使用Xilinxcmac_usplus v3.1作为一个集成的 100GbE 外设它把MAC PCS GT 收发器集成在一个 IP 里对外暴露 AXI-Stream512 bit数据接口。其他厂商开发板没有使用cmac_usplus而是各自使用本家工具链里功能对等的MAC/PCS/Transceiver IP再用一层 vendor-specific 的 wrapper 把接口转成同样的AXI-Stream接到共用的nv_hsb_ip/HOLOLINK_top。整体分层仍然是GT/SerDes PHY ↔ PCS ↔ MAC ↔ AXI-Stream ↔ HOLOLINK_top (RoCEv2/UDP/IP)2. 各厂商实现细节2.1 Xilinx/AMD —fpga/pynq/rfsoc-pynq核心 IPxilinx.com:ip:cmac_usplus:3.1配置CMAC_CAUI4_MODE1GT_REF_CLK_FREQ156.25USER_INTERFACEAXIS功能覆盖单 IP 集成 MAC PCS GT transceiver对外接口AXI-Stream512-bit 数据位宽输出时钟gt_txusrclk2约 322.265625 MHz参考时钟156.25 MHz 差分 refclk速率100GbE4-lane QSFP282.2 Lattice —fpga/lattice/cpnx100-eth-sensor-bridge/cpnx100PHY / PCSlatticesemi.com:ip:ten_gbe_pcs:1.3.0eth_10gb_pcs_0/eth_10gb_pcs_1MAClatticesemi.com:ip:ten_gbe_mac:1.1.0eth_10gb_macMAC-PCS 互联接口XGMII64-bit data 8-bit controlMAC 对外接口AXI-Stream64-bit 数据位宽参考时钟161.18 MHz 外部差分 refclk处理时钟156.25 MHzi_pclk速率10GbE单 lane SFP/SFPDD对应关系Xilinx 的cmac_usplus Lattice 的ten_gbe_macten_gbe_pcs两个 IP 组合而成GT SerDes 集成在 PCS IP 内部。同构设计fpga/nv_mipi_ref_design/mipi_cpnx_ref_design也使用相同的ten_gbe_macten_gbe_pcs方案。2.3 Microchip —fpga/microchip/mfp200-eth-sensor-bridgeMAC/PCSCORE10GMAC_C0Microchip 10GBase-R MAC/PCS 组合 IPSerDes/TransceiverPF_XCVR_ERM_C0PolarFire XCVR参考时钟缓冲PF_XCVR_REF_CLK_C0TX PLLPF_TX_PLL_C0内部接口CORE10GMAC_C0输出 Microchip 自己的 64-bit 系统接口O_SYS_MAC_RX_DATA、I_SYS_MAC_TX_DATA、SOP/EOP/EN/ERR等协议转换通过MAC_to_AXIS适配器将原生接口转换为 AXI-Stream对外接口AXI-Stream64-bit 数据位宽速率10GbE 单 lane对应关系CORE10GMAC_C0PF_XCVR_ERM_C0PF_TX_PLL_C0合起来覆盖cmac_usplus的 MACPCSGT 功能。2.4 Terasic / Intel —fpga/terasic/s10_sensor_bridge核心 IPIntel100G Ethernet IP在 RTL 中实例化为eth_100G#(...)见eth_100gb.v功能覆盖单 IP 集成 MAC、PCS、RS-FEC 和 4-lane transceiver等价于 Xilinxcmac_usplus的 100GbE CAUI4 模式原生接口Avalon-Streaming (AVST)协议转换wrapper 中使用avst_to_axis/axis_to_avst转成 AXI-Stream对外接口AXI-Stream512-bit 数据位宽输出时钟o_clk_pll_div64约 402.83 MHz经hif_pll二分频得到 201.4 MHz 的hif_clk参考时钟FPGA_ETH_REFCLK速率100GbE4-lane QSFP283. 共同层nv_hsb_ip无论底层 PHY/MAC 来自哪家厂商RoCEv2、UDP/IP、PTP、传感器 packetizer、RX parser等逻辑都在共用的nv_hsb_ip中实现nv_hsb_ip/top/HOLOLINK_top.svnv_hsb_ip/roce/nv_hsb_ip/eth_pkt/nv_hsb_ip/ptp/HOLOLINK_top只要求一个标准的 AXI-Stream Host Interface。因此各家板卡只需要实现PHY/MAC → AXI-Stream的 wrapper即可接入统一的 Holoscan Sensor Bridge 协议栈。4. 对照表板卡厂商等价 PHY/MAC IP速率Host 数据宽度备注pynq/rfsoc-pynqXilinx/AMDcmac_usplus v3.1100GbE512 bit单 IP 集成 MACPCSGTlattice/cpnx100-eth-sensor-bridgeLatticeten_gbe_macten_gbe_pcs10GbE64 bitMAC/PCS 分离XGMII 互联microchip/mfp200-eth-sensor-bridgeMicrochipCORE10GMAC_C0PF_XCVR_ERM_C010GbE64 bit原生接口经MAC_to_AXIS转换terasic/s10_sensor_bridgeInteleth_100G(Intel 100G Ethernet IP)100GbE512 bitAVST 经avst_to_axis转换5. 结论其他 FPGA 厂商实现cmac_usplus对应功能的方式是每一家都使用自家 EDA 工具链里的等效 Ethernet IPLatticeten_gbe_macten_gbe_pcsMicrochipCORE10GMAC_C0PF_XCVR_ERM_C0Inteleth_100G100G Ethernet IP在顶层用 wrapper 把这些 vendor-specific PHY/MAC 的差异屏蔽掉统一转换为 AXI-Stream 接口。统一的nv_hsb_ipHOLOLINK_top只看到这个标准 AXI-Stream Host Interface因此 RoCEv2 等上层协议逻辑与底层 PHY/MAC 厂商无关。6. cmac_usplus v3.1 概述cmac_usplus 概述CMAC 内核本文档提供 cmac 内核的概述。cmac 内核cmac内核是一个 RTL 自由运行内核它封装了 UltraScale 集成 100G 以太网子系统。该内核使用ap_ctrl_none作为硬件控制协议。该内核根据传递给 make 的INTERFACE、DEVICE和PADDING_MODE参数进行配置。它向用户逻辑暴露两个 512 位 AXI4-Stream 接口S_AXIS 和 M_AXIS这些接口以内核相同的频率运行内核内部集成了 CDC时钟域跨越逻辑用于将内核时钟转换为 100G 以太网子系统时钟。它还提供一个 AXI4-Lite 接口用于查看 UltraScale 集成 100G 以太网子系统的寄存器映射。UltraScale 集成 100G 以太网子系统100G 以太网子系统提供了一个集成的 100 千兆比特每秒Gbps以太网媒体访问控制器MAC、物理编码子层PCS、IEEE 802.3bj 里德-所罗门前向纠错RS-FEC以及 100GE 自动协商/链路训练AN/LTIP以支持 KR4、CR4、SR4、CWDM4、PSM4 或 ER4f 等高性能应用方案。注意自动协商/链路训练在此内核中未启用。cmac_sync该 IP 实现了 PG203 中描述的内核启动序列。frame_padding该 IP 实现可选的帧填充至 60 或 64 字节。填充模式在编译时通过PADDING_MODE参数设置具体如下模式0表示不填充模式1默认填充至 60 字节模式2填充至 64 字节。时钟域跨越UltraScale 集成 100G 以太网子系统中的 Rx 和 Tx AXI4-Stream 接口工作在 322.265625 MHz。为了适应设计中其余部分的不同频率在 Tx 路径acc_kernel_tx_cdc 和 fifo_cmac_tx和 Rx 路径fifo_cmac_rx_cdc中均包含了跨时钟域逻辑。寄存器映射UltraScale 集成 100G 以太网子系统的寄存器映射详见 PG203可通过 AXI4-Lite 接口访问。其中许多寄存器已通过 template.xml 文件方便地映射为内核参数。如果您希望访问未映射的寄存器可以使用 pynq MMIO 的读写方法。例如# 读取 CONFIGURATION_AN_ABILITY 寄存器cmac.read(0xA8)# 在 CONFIGURATION_AN_ABILITY 寄存器中设置 ctl_an_ability_1000base_kxcmac.write(0xA8,0x1)您也可以修改 template.xml 文件以添加更多寄存器。修改此文件时需谨慎确保 id 正确更改。一旦修改了 template.xml 文件您必须重新构建设计以便将这些更改包含到 xclbin 中。修改 template.xml 后请删除此文件夹中的所有 *.xo 文件。接口名称描述ap_clk主时钟ap_rst_n主低电平复位clk_gt_freerun自由运行内核时钟gt_ref_clkGT 参考时钟gt_serial_portGT 串行通道S_AXILITEAXI4-Lite 从属控制接口S_AXIS512 位 AXI4-Stream 发送接口M_AXIS512 位 AXI4-Stream 接收接口多路 100 GbE 接口与 Alveo 卡为了支持多路 100 GbE 接口和 Alveo 卡会生成略有不同的内核其内部结构和接口保持不变。但 UltraScale 集成 100G 以太网子系统的配置会根据每个接口和 Alveo 卡进行调整。这些配置详见 此处。许可证要生成使用 UltraScale 集成 100G 以太网子系统 的 xclbin 文件您需要有效的许可证。您可以按照这些步骤生成免费许可证。注意要启用自动协商/链路训练您需要单独的许可证。更多信息请参阅相关文档。修改 RS-FECRS-FEC 在 CMAC 实例中默认启用。在运行时RS-FEC 默认处于关闭状态可以通过调用 Pynq 和 C 驱动程序中的相应函数来激活。激活后RS-FEC 设置为子模式 1纠错和指示均启用。更多详情请参阅 UltraScale 集成 100G 以太网子系统 文档。注意RS-FEC 激活后会增加延迟。Copyright© 2022 Xilinx