《基于FPGA的高速可靠数据传输系统的实现.docx》由会员分享,可在线阅读,更多相关《基于FPGA的高速可靠数据传输系统的实现.docx(6页珍藏版)》请在第一文库网上搜索。
1、基于FPGA的高速可靠数据传输系统的实现在各种不同的场合中,人们需要将大批数据从一个设备无差错地传输到另一个设备上。对于设备间距离较近的场合,可以选择PCIE(典型距离是1530cm)或者雌(最长传输距离5m)等接口。而对于距离较远的场合,可以选择RS232、RS485、以太网等传输介质,并在此基础上,通过上层协议来保证数据的可靠性。上层协议通常用检错重传机制来实现数据的可靠传输,如正TP、TCPIPSCTP以及可靠UDP等。这些协议都必须依靠较为复杂的亚运算和内存拷贝来实现数据可靠传输的功能。比如在1inUX下,TCP/IP协议每发送一个数据包,CPU需要执行约14OOO条指令1。因此CPU
2、的工作频率、内存的读写速度、硬件I/O带宽都会影响TCP/IP的速度。一些嵌入式系统上TCP性能测试如表1所示。表1嵌入式处理曙在不同主施卜TCP传愉速度测试系统300MHzPMrPC4O5375MHzPoWrPC405A户/最大传输最大传输服务器设MT19OoO)MB/sICAT1oN称4维ARONICTECHNI觎MB学户泼送_.29.1MBs1r-123.8MB/s服WUWChAaAET.cQG125MHz客户发送126MBsJ泞BMiCmB1a加服务器接收9.6MBZs54J1血ACPU处理能力越强,TCP传输速度越高。与此同时,在最大传输单元为9000B时(即相对MTU1500包长度
3、增加6倍,包处理频度下降6倍),则传输速度大幅提高。这也从侧面说明了CPU处理能力对TCP传输速度的影响。在点对点传输和局域网传输中,往往不需要完善的路由机制和流量控制,但同样需要一种可靠的数据传输手段。传统的TCP协议依赖CPU运算的特性,使得传输速度受到限制,并且受CPU负荷变化影响而速率不稳定2。从提高传输效率和减轻对CPU的依赖两方面考虑,提出一种基于硬件实现的高速可靠数据传输方法,将CP1J从频繁的协议运算中解放出来。该方法可以在千兆以太网PHY所提供的物理层通信链路的基础上,通过编写FPGA逻辑,在硬件上实现可靠数据传输的协议,然后使用如PCIE这样的接口将数据提供给计算机系统。系
4、统结构如图1所示。PHY以太网物理层PCIEa沙IONOFE1EF黎期C次州。一vUvw.ChinaT.com口.【sScN图1简化分层网络模型一高速可靠数乙4时分感鼠患1选择重发机制提供可靠数据传输保证数据传输过程中的可靠性有多种方式,如纠错码、信息反馈和检错重发机制。选择重发是检错重发的实现方法之一,相对于等待重发和退回重发,它具有高效率的特点,因而被广泛采用。比如在TC的IP网络中,就是用检错重发机制的原理。但TCP协议中包括较为复杂的流量控制机制和拥塞控制机制,它们被设计来应对异构的、大范围的复杂网络环境。而在点对点传输的应用中,或者在任务明确、拓扑简单的局域网中,不需要复杂的路由机制
5、和流量控制,因而可以简化被广泛使用的检错重传机制,使得可靠性协议可以通过硬件实现。如图2所示,将数据可靠传输的过程概括如下:(1)待发送的数据在发送端打包,加上必要的识别信息和校验信息,存入发送端的缓存;(2)待以太网信道可用之后将数据包通过千兆以太网发送给接收方;(3)接收方收到数据包之后对内容进行校验,确认数据无误之后将识别信息通过竺K数据包反馈给发送方;(4)发送方的缓存接收识别信息后确认数据已安全抵达接收方,清空缓存等待发送下一个数据包;(5)发送方在设定的时间内没有接收到带有相应识别信息的ACK反馈,则进行重新发送,重发超过一定次数则报错。校验信息选择使用和以太网兼容的CRC32,编
6、码冗余度较低(为0.26%)。可以预见,在一般的误码率情况下(1X10-10),该方法可以实现高速的可靠传输。2可靠数据传输的硬件实现用硬件的方式实现所述的可靠传输,将会极大地降低对发送方和接收方在协议运算上对CPiJ资源的依赖,这点与TCP协议大为不同。如图3所示,相较于TCP协议,硬件协议在接收数据时数据流大大简化。内存内存(驱动层)(系统内核)协议运算TeP协议TECHNIQUECa硬件协议TCP协议的数据流:(I)网卡接收以太网数据通过PCIE以幽的方式写入上位机内存,并触发中断;(2)网络包内存拷贝进入OS协议层;(3)对网络包的协议运算,检查包头信息和CRC校验等;(4)确定无误后
7、发送ACK包;(5)将有效数据提供给上层用户。硬件协议的数据流:(1)设备卡FPGA检验数据正确性自发产生ACK回应包,将有效数据通过PC1E以DMA的方式写入上位机内存,可选择触发中断或轮询;(2)驱动层直接将数据提供给用户。发送过程与接收过程相反,情况类似,不再赘述。可见,利用FPGA实现的硬件协议省去了上位机软件协议运算和内存拷贝,直接将有效数据提供给上层用户,提高了数据传输的效率和速度,极大地减轻了CPU运算负荷,省去了对CPU的频繁中断,从而获得不依赖于CPU性能的稳定高速的可靠数据传输。这点是软件协议优化难以实现的。2.1 硬件平台设计PCIE接口设备卡,搭载XiIinXSpart
8、an6FPGA和BroadCom千兆以太网PHY4n0FPGA是设备的核心。在FPGA上部署PC1E接口模块和EIherneI接口模块,并设计内部逻辑实现数据的可靠传输。2.2 FPGA逻辑模块的设计FPGA的逻辑设计需要保证数据流的顺畅,各个模块的互联。采用硬件篁法,实现对数据的分组打包和节点间的应答握王机制,保证每个数据包正确无误地抵达目标设备。FPGA内部的逻辑结构如图4所示,其中对于数据的可靠传输是在Tx和Rx模块中的状态机控制下实现的,Ethernet模块为Xi1inx的TriModeEthernetMACCore,提供了对各种速率(10/100/1000M)的以太网PHY的支持。位
9、于逻辑核心区域的InterCOnneCt模块为多个皿之间提供了可动态配置的互联,因而为可能的网络拓扑提供支持。PCIE模块为上位机提供了访问FPGA的数据和命令通道。FPGA各个模块的说明:(1) PCIE,使用XiIinX的s6_pcic:2.41ogiCCore5o开辟两个用户地址空间,一个用于访问内部状态鹿制寄存器,另一个用于访问FPGA数据。(2) Interconnect,在内部寄存器的控制下,将各个Ethernet端口和上位机数据端口按照一定的规则互联起来,可以做到指定端口之间的转发和特定端口的收发操作。并且在业应1编码中采用参数化的风格,方便多端口的扩展。这样,在上位机控制软件的
10、配合下,可以实现多个端口之间的灵活转发,因而可以方便地组建数据传输网络。InterConneCt数据位宽可灵活配置,对于千兆网应用可配置为16位宽。该模块包括FPGA内部其他模块,时钟频率为75MHz0(3) TX模块,其他端口的转发数据或者上位机的发送数据经由InterCOnneCt传送到Tx模块中,在Tx模块的逻辑调度下以数据包为单位暂存在某一个BUffer中。每个BUffer都有独立的状态机控制。数据包在BUffer中准备好之后会在Tx模块的逻辑调度下发送至Ethernet模块,相应的Buffer状态机处于等待ACK的状态。在计数器超时后触发重传,重传一定次数依然没有正确ACK回应则报错
11、。每个TX模块中可以参数化地配置多个BUffer,通过多个BUffer的协作可以极大地提高信道利用效率。(4) RX模块,内部逻辑维护一个类似FIFO的存储结构。每当接收一个数据帧时,通过累加写指针将数据暂存入幽中,并在状态机控制下记录当前帧的目的/源地址、帧类型,序号等信息。如果是ACK帧则把相应的帧识别信息传递给TX模块;如果是需要接收的帧则在帧接收完后指示存储器数据有效,数据有效信号将促使待转发模块或者CPU接收FIFO读取该帧。Rx和Tx的以太网端口数据位宽为8位,接口时钟频率为125MHz。(5) Ethernet模块,使用XiIinX的tri_mode_ethJnac:4.61og
12、icCore6o该模块提供CRC32编码和校验.能,幕供对不同速率以太网的支持,并且对内部逻辑提供统一的数据接口。3系统性能测试为了尽可能完善地测试系统性能,从逻辑仿真和实测两方面进行测试。5.1 逻辑仿真测试逻辑仿真是利用Xi1inxISim仿真器对FPGA逻辑的行为进行仿真预测。仿真测试的优点是测试准备简单,测试方法灵活;缺点是只能仿真FPGA逻辑部分,无法仿真其他硬件。考虑到本数据传输系统的核心在FGPA上,并通过与实测数据比对,逻辑仿真可以在很大程度上真实反映系统性能。测试的是两个节点之间的点对点传输。(1)固定帧长1024B测试结果:带宽利用效率为96.4%,数据传输速度为120.5
13、MB/so(2)随机帧长测试结果:数据传输速度为99.4MB/s,带宽利用效率为79.5%o仿真波形如图5所示,rgmii_txen_A信号表明在这种情况下信道利用出现间隙。这是由于帧长度突然变良,需妻等待内部数据写入BUffe八这种特殊情况可以通过增加TxJuffer的数量来解决。(3)人为添加误码测试结果:数据传输速度为106.7MB/s,带宽利用效率为85.3%o测试帧长度为1024B,设定FPGA在发送端口随机添加误码,测试添加误码率为0.00076%0一般情况下误码率很低(平均一个误码造成一个数据包重传)。单次误码造成的等待和重传开销是一定的,因而传输速度的变化值与误码率的关系可以近
14、似看成正比关系(?驻x:传输速率比变化;?驻印误码率):?驻产1?驻e。测试时,人为添加误码率?驻e=0.00076%,?驻*=-13.8MB/s,求得k二-1.82X106MB/so由此估计,在一般情况下(即误码率为IX1OTO),传输速度变化?驻x=T.82106MB/sX10-10,为-18.2KBs,传输带宽仍接近120.5MB/so3.2实际传输测试测试两个节点间点对点传输,需要两个数据节点。节点A产生测试数据,节点B接收、校验测试数据,并通过PCIE以DMA方式发送到PC端。通过PC端软件检查并统计IOOS传输数据,接收11742592帧,共计12.024GB数据。测试结果:数据传
15、输速度为120.2MB/s;带宽利用效率为96.2%,与仿真结果(96.4%)基本持平。3.3结论根据测试结果,该硬件协议可以有效地进行可靠数据传输。在实际测试情况和可以预计的误码率情况下,顺序传输大块数据的传输速度可达到千兆以太网极限带宽125MB/s的96%,即120MBso这个数据与TCP协议在MTU9000超长帧设定下的P。WerPC405系统上的表现基本持平(平均考虑收和发),而远高于MTU1500设定下的表现。TCP协议在低处理频度下可换来更高的速度,这说明软件协议的传输速度受CPU运算影响大,易产生波动。稳定的高数据率则是硬件协议的优点所在。数据的可靠传输是一个具有普遍意义的话题。本文所阐述的在现有成熟以太网技术基础上,利用FPGA硬件实现数据的高速、可靠的传输。相较于复杂的TCP软件协议,使用硬件协议能够有效降低CPU负荷,并因此得到稳定的高速数据传输速率。本文所述的硬件平台支持多个以太网端口的扩展。节点内端口之间的可配置转发功能在板载侬的控制下可实现灵活路由。这样多个节点可以组成数据传输网络,因而为诸如高速数据采集网络、局域网传输等网络应用提供了可行方案。