利用Xilinx FPGA 集成的万兆MAC IP 核以及XAUI IP 核实现FPGA 片间可靠通信设计_第1页
利用Xilinx FPGA 集成的万兆MAC IP 核以及XAUI IP 核实现FPGA 片间可靠通信设计_第2页
利用Xilinx FPGA 集成的万兆MAC IP 核以及XAUI IP 核实现FPGA 片间可靠通信设计_第3页
利用Xilinx FPGA 集成的万兆MAC IP 核以及XAUI IP 核实现FPGA 片间可靠通信设计_第4页
利用Xilinx FPGA 集成的万兆MAC IP 核以及XAUI IP 核实现FPGA 片间可靠通信设计_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

利用XilinxFPGA集成的万兆MACIP核以及XAUIIP核实现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]采用自定义的的10GMAC,设计与实现了以太包的调度策略。上述研究没有涉及万兆MAC层的流控以及可靠传输。基于此本文提出一种通过利用XilinxFPGA集成的万兆MACIP核以及XAUIIP核实现FPGA片间可靠通信的方法。1互联系统结构本文提出的互联系统结构如图1所示,系统由4片Xilinx公司的Virtex6系列的FPGAxc6vlx550t-2ff1759构成。每2片FPGA之间都有4路高速双向传输通道,每路运行速度均为3.125Gbit/s,对外都有1路10G/20G的QSFP光通信接口,线路采用8B/10B编码,因此FPGA之间的互联通信速率为10Gbit/s。可以通过该硬件实现多级FPGA的级联通信。2万兆互联的物理层以及MAC层接口的设计实现为了支持FPGA之间的万兆通信,物理层采用Xilinx公司提供的XAUIIP,MAC层采用Xilinx公司的万兆以太MACIP实现传输协议的CRC32校验码的填充与检测,如图2所示。在MAC层之上增加了MAC控制模块,该模块通过FIFO接口简化了应用层的设计,并采用流量控制以及错误检测功能实现数据的10G线速可靠传输。XAUIIP核配合Xilinx的RocketIOGTX实现XGMII总线与10G物理通道的转换[11]。GTX收发器实现高速串行收发器的数据缓冲、通道绑定、接收端时钟恢复以及发送预加重等功能[12]。XAUIIP核的XGMII总线包括32位的双速率和64位的单速率接口,由于本文的XGMII总线在FPGA内部,因此采用单速率的XGMII总线接口,系统工作时钟频率为156.25MHz。2.1万兆MAC层协议

万兆MAC核是一个单速,全双工10Gbit/s的以太网媒体控制器,实现IEEE802.3ae万兆以太网数据的前导码过滤与增加、数据4byteCRC32校验码的填充与验证。支持的以太数据帧长最小为64byte,最大为1518byte(可以支持Jumboframe)。其内部结构包括发送、接收引擎,流量控制模块,管理接口和XGMII接口,通过XGMII接口能够很方便地连接到XAUIIP核[13]。发送端在传输数据之前,MAC层会先发送7byte的同步码和1byte的帧首定界符,并在1帧传送结束时填充4byte的CRC32校验码,如果数据长度小于46byte,则会自动在数据字段填充PAD字符,即补0。在接收端,MAC层去掉前导码和帧首定界符,并对帧进行CRC32校验。如果校验正确则向上层发送收到正确帧(rx_good_frame)信号,否则发送收到错误帧(rx_bad_frame)信号。MAC层还具有流控的功能,实现收发双方的通信速率匹配。2.2错误检测及过滤功能

Xilinx提供的万兆MAC控制器对接收到的错误数据并不进行处理,仅仅给出数据CRC32校验是否正确。为了提供物理层的可靠传输,需要在此基础上增加接收错误帧过滤模块,如果接收到的是校验错误帧,则需过滤掉该帧。本文采用基于双端口数据RAM以及帧信息FIFO的存储机制实现错误包的过滤,如图3所示。接收存储控制模块若检测到万兆MACIP接收端口收到的数据rx_valid(rx_data_valid_o!=8’h0)有效,则把该数据缓存到双口数据RAM中去。然后检测rx_valid是否小于8个时钟节拍,如果小于8个时钟节拍,则不用判断rx_good_frame以及rx_bad_frame,因为此时接收到的帧肯定错误(小于万兆以太协议的最小64byte),回到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.25MHz。通过快写慢读操作来验证流控模块,如图7所示。最终实验结果表明能正常过滤错误以太包,并确保通信速率达到了10Gbit/s。用复位来模拟掉电操作,最终测试结果表明该系统在正常传输过程中若发送端或接收端突然掉电,上电后双方仍能重新正常通信。4结论本文实现了万兆MAC层发送、接收、流控以及错误帧过滤的设计。并且使用Xilinx的Virtex-6系列FPGA器件进行布局布线后进行板级测试验证。结果表明,系统可以在156.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论