您的位置首页>互联网>

利用Xilinx FPGA 集成的万兆MAC IP 核以及XAUI IP 核实现FPGA 片间可靠通信设计

导读 大家好,我是极客范的本期栏目编辑小友,现在为大家讲解利用Xilinx FPGA 集成的万兆MAC IP 核以及XAUI IP 核实现FPGA 片间可靠通信...

大家好,我是极客范的本期栏目编辑小友,现在为大家讲解利用Xilinx FPGA 集成的万兆MAC IP 核以及XAUI IP 核实现FPGA 片间可靠通信设计问题。

随着云计算技术的发展,使用FPGA作为协同加速是一种趋势。如何设计和实现FPGA芯片之间的高速通信是该研究方向的一个热点。研究了FPGA万兆通信物理层和MAC层的实现机制,从通信协议可靠传输的角度实现了MAC层的流量控制和误包检测功能。实际平台测试表明,该通信协议可以实现FPGA芯片间10M线速通信。

云计算服务在互联网上快速增长,通过互联网提供动态的、可扩展的资源。随着云计算的发展,对以太网数据通信和高性能计算提出了更高的要求[1],基于大规模FPGA的协同加速成为云计算服务的发展趋势[2-3]。因此,如何设计和实现多FPGA之间的可靠通信成为云计算研究的热点。文献[4-5]设计了物理层和媒体访问控制层的接口,实现了吞吐量高达千兆比特/秒级的通信速率。文献[6-7]设计了千兆以太网全双工模式下的物理通信,包括暂停帧的发送和接收,还实现了校验错误数据包的重传机制。但是由于上层应用,暂停帧的实现机制没有详细阐述。

文献[8-9]基于Xilinx的FPGA平台,在分析如何实现CRC32纠错、接收控制策略、CRC编码/校验以及与千兆以太网兼容的基础上,实现了万兆以太网的MAC层控制,但没有具体的实现方案。文献[10]利用定制的10 G MAC设计并实现了以太网数据包的调度策略。

以上研究不涉及万兆MAC层的流量控制和可靠传输。基于此,本文提出了一种利用Xilinx FPGA集成万兆MAC IP核和XAUI IP核实现FPGA芯片间可靠通信的方法。

1互联系统结构

本文提出的互联系统架构如图1所示。该系统由Xilinx公司Virtex6系列的4个FPGA xc6vlx550t -2ff1759组成。两个FPGAs之间有4个高速双向传输通道,每个通道的运行速度为3。125 gbit/s,并且有一个10 G/20 G的带8B/10B编码的QSFP光通信接口,因此FPGA之间的互联通信速率为10 Gbit /s,多级FPGA的级联通信可以通过这个硬件实现。

20gb互联物理层和媒体访问控制层接口的设计与实现

为了支持FPGA之间的万兆通信,物理层采用Xilinx公司提供的XAUI IP,MAC层采用Xilinx公司提供的万兆以太网MAC IP,对传输协议的CRC32校验码进行填充和检测,如图2所示。在MAC层之上增加了MAC控制模块,通过FIFO接口简化了应用层的设计,利用流量控制和检错功能实现10 G线速下数据的可靠传输。

XAUI IP核与Xilinx的Rocket IO GTX合作,实现了XGMII总线与10 G物理通道的转换[11]。GTX收发器实现了高速串行收发器的数据缓冲、通道绑定、接收器时钟恢复和传输预加重功能[12]。XAUI IP核的XGMII总线包括32位双速率接口和64位单速率接口。由于本文中的XGMII总线是在FPGA中,所以采用了单速率的XGMII总线接口,系统的工作时钟频率为156.25mhz。

210兆位媒体访问控制层协议

万兆MAC核心是单速、全双工的10 Gbit /s以太网媒体控制器,可以过滤和增加IEEE802的前导码。3ae 10千兆以太网数据,并填写和验证4字节CRC32校验码。支持的最小以太网数据帧长度为64字节,最大长度为1 518字节(可以支持巨型帧)。其内部结构包括发送和接收引擎、流量控制模块、管理接口和XGMII接口,可轻松连接到XAUI IP核[13]。

在传输数据之前,MAC层会先发送一个7字节的同步码和一个1字节的帧头定界符,并在1帧传输结束时填写一个4字节的CRC32校验码。如果数据长度小于46字节,数据字段将自动填充PAD字符,即零填充。在接收端,媒体访问控制层删除前导码和帧头定界符,并对帧执行CRC32检查。如果检查正确,发送rx_good_frame信号到上层,否则发送rx_bad_frame信号。媒体访问控制层还具有流量控制功能,可以匹配发送方和接收方之间的通信速率。

2.2错误检测和过滤功能

XIX提供的10M MAC控制器不处理接收到的错误数据,只给出数据CRC32是否校验正确。为了在物理层提供可靠的传输,需要在此基础上增加接收错误帧的过滤模块。

块,如果接收到的是校验错误帧,则需过滤掉该帧。本文采用基于双端口数据RAM 以及帧信息FIFO 的存储机制实现错误包的过滤,如图3 所示。接收存储控制模块若检测到万兆MAC IP 接收端口收到的数据rx_valid( rx_data_valid_o! = 8’h0) 有效,则把该数据缓存到双口数据RAM 中去。然后检测rx_valid 是否小于8 个时钟节拍,如果小于8 个时钟节拍,则不用判断rx_good_frame 以及rx_bad_frame,因为此时接收到的帧肯定错误( 小于万兆以太协议的最小64 byte) ,回到IDLE 状态。如果rx_valid 持续有效时钟大于8 个时钟节拍,则在帧尾检测是否有rx_good_frame 或者rx_bad_frame; 如果是bad 帧,不作处理回到IDLE 状态,如果是good 帧,则将该帧存放RAM 的起始地址和帧长信息写入帧信息FIFO,并返回IDLE状态。如果在帧尾没有检测到good 或者bad 信息,则等待; 若等到good 信息则把该帧长以及起始地址写入帧信息FIFO,并返回IDLE 状态,若等到bad 信息则直接回到IDLE 状态,其状态机如图4 所示。

读取控制模块若检测到帧信息FIFO 有数据,则表示双口数据RAM 中已经存储了正确的以太帧,从帧信息FIFO 中获取接收到帧的地址与长度,并把接收到的数据存储到用户控制端口的接收FIFO 中。由于采用存储校验机制,因此接收端相对发送端有一定的延迟,最大延迟为最长以太帧的存储时间。

2. 3 流量控制模块以及接收FIFO 缓冲区深度设计为了解决发送FPGA 与接收FPGA 通信速率的不匹配,需要在MAC 层增加流控功能,即当接收FIFO 裕量小于预设的安全值,向发送方发送暂停( Pause) 帧,告知发送方停止发送数据一段时间。发送方接收到暂停帧以后,停止数据的发送,若暂停期间没有接收到新的Pause 帧,则继续本次数据通信,若暂停期间接收到新的暂停帧,则从当前时刻增加新的暂停时间。

 

3 系统性能测试

在Xilinx 公司的ISE 开发环境中进行代码综合、映射及布局布线,综合结果测试表明,本设计的工作频率可以达到156. 25 MHz。通过快写慢读操作来验证流控模块,如图7 所示。最终实验结果表明能正常过滤错误以太包,并确保通信速率达到了10 Gbit /s。用复位来模拟掉电操作,最终测试结果表明该系统在正常传输过程中若发送端或接收端突然掉电,上电后双方仍能重新正常通信。

4 结论

本文实现了万兆MAC 层发送、接收、流控以及错误帧过滤的设计。并且使用Xilinx 的Virtex-6 系列FPGA器件进行布局布线后进行板级测试验证。结果表明,系统可以在156. 25 MHz 时钟频率正常工作,接收和发送带宽均可接近10 Gbit /s。但随着社会的发展,人们对通信速率的要求越来越高,在不久的将来, 10 Gbit /s 的通信速率将不能满足人们的需求,所以对高速互联的研究将永无止境,下一步可以提高互联通信速率,进一步研究20 Gbit /s、40 Gbit /s 或更高速率的互联结构。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。