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

随着云计算技术的发展,采用fpga 作为协同加速成为其发展的一个趋势,如何设计与实现fpga 片间的高速通信是该研究方向的一个热点。研究了fpga 万兆通信的物理层、mac 层的实现机制,在通信协议可靠传输方面实现了mac 层的流控以及错误包检测功能。仿真以及实际平台测试表明,该通信协议能够实现fpga 片间万兆的线速通信。
云计算服务目前在互联网上急速增长,其通过互联网来提供动态易扩展的资源。随着云计算的发展,对以太网的数据通信以及高性能计算也提出了更高的要求[1],而基于大规模的fpga 协同加速成为云计算服务的一种发展趋势[2 - 3]。因此如何设计与实现多片fpga 之间的可靠通信成为云计算研究的一个热点。文献[4 -5]对物理层和mac 层的接口进行了设计,实现了吞吐率达gbit /s级的通信速率。文献[6 -7]设计了千兆以太网全双工模式下的物理通信,包括pause 帧的收发,还实现了数据包的校验出错重传机制,但限于上层应用,对pause 帧的实现机制没有具体阐述。
文献[8 -9]基于xilinx 公司fpga 平台,在分析如何实现万兆以太网的crc32 纠错以及接收控制策略、crc 编码/校验及与千兆以太网兼容等关键问题的基础上,实现了万兆以太网mac 层控制但缺乏具体的实现方案。文献[10]采用自定义的的10 g mac,设计与实现了以太包的调度策略。
上述研究没有涉及万兆mac 层的流控以及可靠传输。基于此本文提出一种通过利用xilinx fpga 集成的万兆mac ip 核以及xaui ip 核实现fpga 片间可靠通信的方法。
1 互联系统结构 本文提出的互联系统结构如图1 所示,系统由4 片xilinx 公司的virtex6 系列的fpga xc6vlx550t -2ff1759 构成。每2 片fpga 之间都有4 路高速双向传输通道,每路运行速度均为3. 125 gbit /s,对外都有1 路10 g/20 g 的qsfp 光通信接口,线路采用8b/10b 编码,因此fpga 之间的互联通信速率为10 gbit /s。可以通过该硬件实现多级fpga 的级联通信。
2 万兆互联的物理层以及mac 层接口的设计实现 为了支持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.25 mhz。
2. 1 万兆mac 层协议
万兆mac 核是一个单速,全双工10 gbit /s 的以太网媒体控制器,实现ieee802. 3ae 万兆以太网数据的前导码过滤与增加、数据4 byte crc32 校验码的填充与验证。支持的以太数据帧长最小为64 byte,最大为1 518 byte( 可以支持jumbo frame) 。其内部结构包括发送、接收引擎,流量控制模块,管理接口和xgmii 接口,通过xgmii 接口能够很方便地连接到xaui ip 核[13]。
发送端在传输数据之前,mac 层会先发送7 byte 的同步码和1 byte 的帧首定界符,并在1 帧传送结束时填充4 byte 的crc32 校验码,如果数据长度小于46 byte,则会自动在数据字段填充pad 字符,即补0。在接收端,mac层去掉前导码和帧首定界符,并对帧进行crc32 校验。如果校验正确则向上层发送收到正确帧( rx_good_frame)信号,否则发送收到错误帧( rx_bad_frame) 信号。mac 层还具有流控的功能,实现收发双方的通信速率匹配。
2. 2 错误检测及过滤功能
xilinx 提供的万兆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 或更高速率的互联结构。

如何让智能音箱成为未来全屋智能中的必需品
Hi-Fi功率放大器电路(有BOM)
一个简单的100W逆变器电路
教大家怎么选择神经网络的超参数
Teledyne e2v推出新款500万像素规格传感器 采用小巧的有机扇出型封装
利用Xilinx FPGA 集成的万兆MAC IP 核以及XAUI IP 核实现FPGA 片间可靠通信设计
创建SQlite的方法
自从外汇管制力度加大之后,比特币价格就直线上升,“疯狂”的比特币,博傻还能持续多久
三极管的常用特性参数及工作模式
集成稳压器应用技术
怎么样才能强制重启iPhone X
使用微软Windows 7系统的旧电脑的救星上线
倍压整流电路设计与分析,多倍压电路原理解析,桥式整流电路经典演示
语音芯片的级别分类
从三个方面展开谈论高精度地图
一文看懂5G工业模组与5G芯片的区别
物通博联电表采集网关实现DLT645和Modbus RTU协议的电表数据采集与上传
数据分析工业机器人原料成本构成及主产地
海思率先完成工信部TD-LTE终端芯片CA测试 峰值下行速率220M
三星为什么会在中国凉下去?这四大原因告诉你!