本文比较轻松,只需要了解万兆网的接口变迁历史即可,不涉及代码相关内容。万兆以太网遵循IEEE 802.3ae规范,其物理传输介质只支持光纤,原因可能是线速率过高,其余介质传输距离比较短。
万兆以太网发展历程大致如下图所示,最先是XGMII接口,然后变为XAUI接口,最后变为高速串行接口。
1、XGMII接口
最初万兆以太网与千兆以太网的结构类似,FPGA并不能支持万兆以太网的编码和解码,只能通过外部的PHY芯片完成编码和解码。
如下图所示,FPGA通过XGMII接口与PHY通信,千兆网是通过RGMII或者GMII接口与PHY芯片交互数据。
XGMII接口的信号如下所示,包含32位发送/接收数据线,8位发送/接收控制线,还有发送时钟信号和接收时钟信号,总共74根线。
下图是XGMII接收数据的端口时序,这里只需要关注该接口是双沿传输数据即可,对信号走线的要求比较高。
由于时钟频率比较高,并行总线会导致信道偏斜会特别严重,对PCB的等长要求也就特别高。导致时钟频率很难提升,PCB走线长一点就可能导致通信失败。
在IEEE802.3中规定XGMII接口总线的布线长度小于7cm,无法支持二层以太网交换机跨板(通过背板)通信,导致硬件设计十分困难。
2、XAUI接口
基于上述原因,后来提出了XAUI接口。如下图所示,通过XGXS完成XGMII接口与XAUI接口的相互转换。
由上图可知,XAUI是将XGMII的8位数据线和控制线串化成一对差分数据线,比如把RXD[7:0]和RXC[0]串化后得到Lane 0的差分信号DL0_P和DL0_N。
最终把XGMII的74根信号线简化成8对差分信号线,大大降低了硬件设计难度,经过XGXS转换的XAUI接口则支持最长50cm的布线长度。
3、基于Serdes的万兆网
XAUI接口就是用串行接口替代了XGMII并行接口,随着Serdes的发展,能够在FPGA内部直接实现PHY层的设计,之后的万兆网设计变为以下结构。
其中PHY层可以使用Xilinx的GTX/GTH/GTY来实现,GTX/GTH/GTY可以构建任何高速接口协议的PHY层,还可以实现自定的PHY层协议,比较灵活。
以太网的PHY还可以使用Xilinx的上层IP实现,降低了灵活性,但设计变得简单。
如今速度等级为2的芯片GTX线速率可以达到10.3125Gbps,满足经过64B66B编码后的万兆网线速率要求。FPGA通过一对差分线连接光口,硬件设计及其简单。
PHY层的设计变得灵活,硬件设计也变得简单,由此可见Serdes技术的优势。
本文只是简要讲解万兆网口的演变,并没有各个接口和协议的细节做讲解,原因是64B66B编码、MAC层、serdes接口、IP层、UDP、ICMP、ARP等协议都在前文详解过,在讲没啥意思。
后文先用10G PCS PMA作为万兆网协议栈的PHY,实现上层协议的设计后。再将10G PCS PMA替换为GTX,实现难度最大的协议栈设计。
如果对文章内容理解有疑惑或者对代码不理解,可以在评论区或者后台留言,看到后均会回复!
如果本文对您有帮助,还请多多点赞👍、评论💬和收藏⭐!您的支持是我更新的最大动力!将持续更新工程!