一、FPGA 实现万兆以太网
本文介绍使用 10G 以太网核和 10G PCS/PMA 核两种方式实现的万兆网通信。基于 SerDes 实现 10G 以太网通信采用 64B/66B 编码方式,串行线速率为 10.3125Gbps。
1.1 10G PCS/PMA 核
关于该核的使用,参考 PG068;此核的用户接口为 XGMII。对于光纤或者 RJ45 水晶头的接口(10GBASE-R 类型),内部功能结构包含 PCS 和 PMA 模块。
万兆网通信采用 64B/66B 编码。64B/66B 编码在发送前需要对数据加扰,在接收数据时也要先对数据解扰。64B/66B 编码:在加扰后的 64bit 数据前加入 2bit 的同步位(Sync)组成 66bit 数据,同步位表示该 64bit 数据是数据帧还是控制帧。
1.1.1 以太网 XGMII 接口
这里讨论 64bit 数据位宽的 XGMII 接口。xgmii_txd 对应字节为控制字符时,xgmii_txc 对应的控制位为高电平;在 xgmii_txd 对应字节为数据字符时,xgmii_txc 对应的控制位为低电平。
相关时序中,空闲状态为 0x07、起始状态为 0xFB、终止状态为 0xFD。
以太网帧对接 XGMII 接口的过程如下:
- 以太网帧结构包含前导码、SFD、MAC 地址、数据及 FCS。
- XGMII 接口中一帧报文的封装发送:添加控制符,空闲 IDLE(0x07)+ START(0xFB)+ 前导码 + SFD + MAC + ...... + FCS + TERMINATE(0xFD)。
- 控制对应的控制符为 1,后续在 64B/66B 编码中转换为 2bit 同步位(Sync)。
- 增加起始、结束、空闲控制符后,按照转换规则处理,例如起始 S 转换为 64bit 中 MSB 字节为 0x78;空闲状态为 64bit 中 MSB 字节为 0x1E。
- 最后,将上述 64bit 的接口数据经加扰,送到 10G PCS/PMA 核的 XGMII 接口。
- 用户接收到 XGMII 接口数据,按上述逆过程解析网络帧。
1.1.2 MDIO 接口
本部分只有一些场景会用到,具体寄存器描述见 PG068 的 Configuration Vector 描述。MDIO 接口是该核的寄存器配置接口,类似于千兆网 PHY 的寄存器配置。
1.1.3 10G PCS/PMA 核
该核需要 license,核页面显示仅适用于 7 系列 FPGA。核配置页面可选择不启用 MDIO 接口。关于该核的时钟、复位部分的使用可参考其 example。
1.1.4 万兆网开发
借助例化上述 GT 核后,可按照设计图开发编码实现 PCS 相关功能。对于发送帧功能,用户端的帧数据,封装起始、结束、空闲码后,经加扰后,结合同步字段,经变速箱 Gearbox,并串转换等,最终经电路传送出去;对于接收,是上述过程的逆操作。
开发过程主要涉及:帧数据按照上节内容封装与解封、同步字段的增添与解析、加解扰。其中帧数据的封装与解析按照以太网协议进行即可。具体网络协议,用户根据具体需要封装、解析即可,比如 UDP、TCP、FTP 等。
1.2 10G Ethernet Subsystem 核实现万兆网
该核的用户数据接口为 AXIS,此处不再详细介绍。此方式是实现万兆网通信最快捷的方法,需要 license。开发按照以太网协议对网络帧进行解析与封装即可。
核配置界面选择 10GBASE-R 类型,64bit 的 AXIS 数据接口。AXI-Lite 配置接口时钟范围选择,可根据需求启用流控。DRP 及状态接口页主要用于监控。时间戳功能可选择是否启用。时钟及复位选择集成核内外。多通道的万兆网通信使用核方式与 UltraScale/+ 系列不同。关于时钟及复位的使用,可参考其 example。
二、万兆网功能测试
本文针对 UDP 协议栈测试,UDP 相关协议原理与千兆、万兆、40G/50G、100G 以太网的 UDP 协议栈实现原理相同,只是用户数据位宽、CRC 检验的实现难易不同。
2.1 ARP 及 Ping 功能
通过 ping 下位机测试 arp 及 ping 应答功能。工程实现中,向对端发包前,先查询 ARP 列表,查询无果则 ARP 寻址后再发包;对于一些明确的场景,也可以省略 ARP 寻址。
2.2 巨型帧
不同的网卡、路由器等支持的最大 MTU 不同,但都支持 46~1500 字节。为了实现长数据包的传输,产生了巨型帧。
对于多级路由的网络包传输,为了避免中间路由节点的设备丢弃,采用巨帧分片处理:巨帧拆分成多包,利用 IP 层的头部分片及偏移字段区分数据的完整性和顺序。分片的首包保持帧结构的完整字段,MTU 最大 1500 字节;其他分片包在网络帧结构中去除了 UDP 的头部字段。


