7 系列 FPGA 万兆以太网通信实现
本文介绍在 Xilinx 7 系列 FPGA 上实现万兆以太网通信的两种主流方式:10G PCS/PMA 核与 10G Ethernet Subsystem 核。基于 SerDes 的 10G 以太网采用 64B/66B 编码,串行线速率为 10.3125Gbps。
一、FPGA 实现万兆以太网
1.1 10G PCS/PMA 核
该核的用户接口为 XGMII,具体使用可参考 PG068 文档。对于光纤或 RJ45 水晶头接口(10GBASE-R 类型),内部功能结构如下:

万兆网通信采用 64B/66B 编码。发送前需对数据加扰,接收时先解扰。编码规则是在加扰后的 64bit 数据前加入 2bit 同步位(Sync),组成 66bit 数据,用于标识后续是数据帧还是控制帧。
1.1.1 以太网 XGMII 接口
这里讨论 64bit 数据位宽的 XGMII 接口。当 xgmii_txd 对应字节为控制字符时,xgmii_txc 对应的控制位为高电平;反之则为低电平。

相关时序如下:

XGMII 接口中,空闲状态为 0x07,起始状态为 0xFB,终止状态为 0xFD。

以太网帧对接 XGMII 接口的过程涉及封装控制符。一帧报文的发送流程为:添加空闲 IDLE(0x07)+ START(0xFB)+ 前导码 + SFD + MAC + ... + FCS + TERMINATE(0xFD)。ILA 截图显示如下:

控制对应的控制符为 1,在 64B/66B 编码中转换为 2bit 同步位。增加起始、结束、空闲控制符后,按转换规则处理,例如起始 S 转换为 64bit 中 MSB 字节为 0x78,空闲状态为 0x1E。
















