基于现场可编程硬件Spartan-6 FPGA的 千兆UDP/IP硬件协议栈的实现外文翻译资料

 2022-09-29 10:22:37

英语原文共 6 页,剩余内容已隐藏,支付完成后下载完整资料


基于现场可编程硬件Spartan-6 FPGA的

千兆UDP/IP硬件协议栈的实现

摘要

本论文提出了一种基于FPGA的高速UDP/IP硬件协议栈实现的方法,不仅可以解决FPGA与外围设备的通信问题,还可以集成为一个网络节点。物理层与FPGA之间的连接接口直接使用了现成的支持BASE-T标准的集成千兆以太网收发器Marvell 88E1111。链路层则是以三代Xilinx以太网MAC为核心。传输层和网络层应该采用可以支持专用的FPGA模块的全新的结构,千兆数据通信同理。在连接的PC上会有负责发送和接收数据的软件程序,它也可以在MATLAB上利用DSP系统工具箱实现。与之前的作品相比,该系统明显速度快很多,适用于基于FPGA的数据流应用程序。布局路由原理仿真和实际测试都证实了该系统的有效性。

关键词:FPGA,现场可编程门阵列,UDP/IP协议栈,网络接口,千兆网,TCP

1.前言

设计一个通信链路或者网络节点必须考虑一些问题。在选择实现平台时,速度(带宽)是其中一个非常关键的因素。通用处理器、FPGA和ASIC是比较重要可以选择的选项。选择技术(以太网、USB2.0作为PCIe或RapidIO)和标准或协议(TCP,UDP等)也强烈依赖于应用程序。

A.速度

互联网的增长速度迅速增加,这就要求更高的网络速度,意味着对带宽更高的需求。这个问题可以借由新视觉传播媒介得到解决,但是它们并不总是适用或者可行。同样,当选定了一个主处理器时,其与外围设备的通信问题不应该使系统过载。换句话说,通用处理器的性能是一个问题,也就是说,处理器可以与否取决与其速度快慢。利用ASIC或者FPGA等现场可编程门阵列实现网络节点解决这个问题似乎有前途。利用ASIC实现UDP/IP或者TAP/IP堆栈一般不优先选择,是因为其成本高、原型制造耗费时间的因素。当然,与FPGA实现相比,后者通常性能更高、功耗更低。FPGA有一些属性,使他们更具优势。他们内在的并行结构,成本相对较低,生产时间短和可编程门阵列使他们在通信的解决方案和处理算法上更具优势。

B.技术

设计通信链路或者网络节点需要重点考虑的问题是标准和技术的选择。USB2.0可以提供大约500Mb/s的传输速率,但它不适用于许多应用程序,也不适用于电缆比较长的情况。更高版本的USB3.0或者USB3.1可以提供更高的带宽,但它们不总能与主控系统兼容。其他标准选择还包括PCIe,RapidIO和以太网。其中,以太网(IEEE802.3-2008标准定义)似乎更可取。对于很多应用程序而言,速度足够快,成本足够低,可以实现,只要有一台电脑,几乎都是可以应用的。目前,它广泛应用在局域网(LAN)和标准广泛区域网络(WANs)中。用于FPGA-PC连接技术中,PCIe是最快的,但是有一些缺点不可避免。过去,即使是一个简单的点对点通信,都需要增加很多额外的电路系统的总体成本。此外,还需要一个独立的处理器单元来实现网络堆栈。而目前,FPGA可以非常简单且经济地实现网络硬件协议栈。

C.协议

协议不仅选择硬件平台(例如FPGA),选择互联技术(例如千兆以太网协议),还被选择在上层运行(实现网络和传输)。考虑到协议和标准,在设计堆栈之前需要考虑几个点。在某些用法中,精度的要求很高。但是在其他大部分时候,精度并不那么重要,丢包在某种程度上是可以接受的。大多数时候,在数据流的应用程序中,比如实时图像处理系统,至关重要的是输入界面能够提供几个千兆比特的带宽,一些字节的丢失也是可以接受的。这些系统进程传输速度至少30帧每秒,假设每个像素的真彩色用24位标示,对于640*480的图像,所需的带宽至少921600个基点。当分辨率和刷屏频率更高时,基点值会更大。

UDP协议,在服务器和客户端之间没有任何特有的协议机制,看起来似乎是一个不可靠的协议。另一方面,TCP是一个面向连接的协议,它通过发送和接收标志确认重发和超时与否。与UDP相比,TCP提供了一个安全、无错系统。尽管UDP不适用于某些应用程序中,在某些情况下,UDP还是首选。根据文献5,由于UDP协议是面向事务的协议,它非常适合简单的查询响应协议,例如DNS。而且由于UDP是无连接的,它很适用于流媒体网络电视和视频会议等应用。不仅如此,比较少的传输延迟使得这个网络协议在实时处理的应用程序中很占优势,比如VoIP和在线游戏等。与TCP使用及实现相比,UDP结构的实现需要使用的资源更少。事实上,由于TCP协议的复杂性,需要占用更多的资源和空间。此外,与UDP较短的报头相比,TCP的长报头拖慢了协议的效率。因此,在资源及速度占重要位置的应用程序中,UDP协议是首选。

本设计就是在高速的系统中,选择UDP作为有效的通信协议、FPGA作为强大的实现平台、以太网作为低成本且高速度的技术,设计并实现网络堆栈。对于FPGA需要高速接入一个基于以太网的系统,本设计提出的FPGA通信系统都很有效。这主要适用于需要直接实现FPGA与外部设备高速数据通信的熊中。同时,该设计可以被视为一个完全独立的具备发送数据和接收数据包能力的网络节点或者网络设备。

在TCP网络的层次结构模型如图1所示,从特定的应用程序(图1中的源PC)发送一个数据包给客户机那边的网络(目的地PC),以PDU(分组数据单元)形式生成的数据被层层封装,加入各层的数据头。封装好的数据传递给下一层。当数据到达物理层时,就会通过共享介质编码并传输。每个PDU包含上层协议信息。从共享介质接收数据包是一个反向的过程。

图1 TCP网络的层次结构模型

有一些层在TCP/IP模型中负责数据传输和接收。关于各层及相关信息全面的说明见参考文献7-11.构建协议栈意味着需要设计一个硬件可以根据自己特定的协议在各层中传输数据。

本文的结构如下:第二节综述了以前硬件协议栈的实现方法,并指出本设计与之不同的地方。第三节阐明了设计的结构。第四节展现了实验结果,最后的结论安排在第五节。

2.过往作品

参考文献15的作品是FPGA实现网络堆栈的首次作品。其中,校验单元是用循环冗余校验实现的,这是在系统中最复杂的计算部分。基于16位的校验及计算的设计是有预见性的。这种FPGA设计创建了较长的关键路径,限制了电路的最大频率。在参考文献16中,实现了UDP/IP核,工作速度很快,对于100Mb/s甚至1000Mb/s的要求也没有问题。然而,无论是UDP还是ARP协议其校验能力都值得质疑。参考文献16的另外一个版本是参考文献2,这个版本达到更快的速度,依赖于嵌入在PC-FPGA核中的通信模块,速度更快,但资源消耗也更多。

参考文献3提出了三种不同的UDP/IP核。第一个不包括额外的ARP、ICMP和TCP RARP通道块。第二个支持ARP协议。这个UDP/IP核速度不能超过100Mb/s。但第三个核以更多的FPGA资源消耗和更少的最大值频率为代价,提供了高灵活性和额外的服务。

参考文献17在Spartan-3E FPGA实现了UDP/IP堆栈。该设计包括ARP服务,但它的吞吐率最高为100Mb/s。参考文献18也提出了另外一种基于FPGA的完整的TCP/IP堆栈架构,提供了多样性的服务,是一个完整的网络节点。然而,在37.5MHz情况下,资源占用率很高(SCV8000占20%),不适用于多核并行工作的环境。

参考文献19提出了基于嵌入式的堆栈实现。在这个设计中,Linux操作系统运行在一个PowerPC嵌入式处理器的方法是不可取的,因为只有一些特定的高成本FPGA是附带专用核心处理模块的。由于占用空间的限制和速度限制,嵌入式软件的解决方案不利于构建网络节点,整体吞吐量会局限于牵引总线时钟,额外的过载处理器也带来高价值的资源消费。基于PPC的设计典型见参考文献20,基于Xilinx Microblaze的设计见参考文献21,这也是两种嵌入式解决方案。

3.拟议的UDP/IP堆栈的实现

就目前的工作而言,主要有两种不同的实现方法。第一,包含ARP协议但没有UDP数据校验,本设计实现的系统是基于这个版本的。第二,包含UDP校验和错误检测。

尽管ARP协议需要额外的支持资源,但它使通信更加可行和实用。在系统的MAC地址非手动设置的情况下,使用ARP协议是至关重要的。比如,MATLAB是一个在PC端可以与FPGA通信的应用程序,发送方和接收方IP地址设置可以手动使用DSP系统工具箱,然而,FPGA需要使用可以获得MAC地址的ARP协议。

拟议的设计是考虑了资源、成本、性能和节能后的解决办法,侧重的两个方面如下。首先,设计主要针对经常大量数据通信、数据丢包在某些程度上可以接受的数据流应用程序。主要目标是设计小巧且快速。他可以实现完整的TCP堆栈,并可以覆盖各种各样的服务和协议。然而,对于这样的应用程序,它们并不必要。其次,设计的错误检测到,但不可更正(这是UDP本质),用户应用程序可以修改数据。

A.整体架构

总体架构的设计框图如图2。它由几个子模块共同组成。物理层通过BASE-T标准的外接芯片实现。Marvell Alaska PHY可以作为网络通信接口,可以达到10100或者1000Mb/s的速度。PHY连接以太网电缆是通过Halo HFJ11-1 G01E RJ-45接口连接的。由IEEE802.3规范定义的GMII在三模情况下可以利用。当使用GMII界面时,FPGA逻辑电路的FPGA IO模块需要满足时序要求。在不同的Xilinx设备中,GMII接收器逻辑是不同的,但在他们之间变送器接口几乎都是相同的。参考文献13完整地讨论过各种不同设备。GMII发射接口工作在传输速度为1Gbs的模式下,用户需要提供125MHz时钟给全局时钟和主控核、客户端逻辑和GMII_TX_CLK输出端口。后者率先反向使用ODDR原始最大化设置和保存时间。其他输出信号则经由Double-Data-Data组件调用寄存器的时钟,同时,数据和其他控制信号也已传达到。在Spartan-6上实现GMII接收机包括几个IODELAY2块和一个用来产生时钟路由延迟的BUFIO2块。IODELAY2块调整准备时间并保持IOB转向的时间。延迟取决于工艺路线的设计。

图2 UDP协议栈的整体架构

Xilinx可以提供高功能和多种操作模式给三模以太网MAC核。该核配置为全双工(速度快于半双工模式)模式可以达到最小的额资源消耗,完全适用于数据流的应用程序。GMII接口完全由一个8位Picoblaze单片机管理。核在UDP协议层使用64位配置向量配置代替MDIO接口模块。TEMAC操作和功能详见参考文献13。

本地客户端接口主要由两个参数化FIFO组成。一个处理接收任务,另一个处理发送任务。DCM是Spartan-6 FPGA专用的时钟管理器。2.5V差分振荡器给FPGA提供200MHz的全局时钟。DCM首先提供一个125MHz的参考时钟(GTX时钟),然后TEMAC提供给Picoblaze模块一个50MHz时钟。

拟议的核是由两个完全独立的单元组成的,发射单元和接收单元。当接收单元接收到ARP请求数据包时,通知发射机并尽快发送回复信号。UDP/IP图解示意图如图3.

图3 UDP结构图

传输由TX控制器实现。它控制发送数据的优先级和需要发送的ARP种类(请求或应答、广播)。RX控制器处理TX控制器、应用程序接口和本地连接FIFO。这些控制器主要用于控制整个核的全局操作。

ARP发射机由FSM、两个简单的用来存储数据的45字节的分布式RAM以及其他基本的逻辑块组成。这个模块是管线设计的。ARP发射机当输出线空闲可以更新数据时,开始发送数据,TX控制器发出请求,与此同时,本地连接TX FIFO准备好了接收数据。

IP发射机具体如图4。它由几部分组成:一个控制单元管理所有数据的发送操作,即控制校验计算器计算UDP校验和;一个BRAM FIFO用于存储校验和计算过程产生的数据;一个ROM用于存储数据报头;还有一个多路复用器用于选择哪些数据应该传播即负载,数据报头或者校验和字节等。用户可以简单的修改ROM或者改变IP地址、有效载荷的长度等等。RAM是FPGA BRAM专用的双端口RAM。考虑到以太网帧的长度限于1538,最大载荷为1500字节(1472字节的数据,20字节的IP报头和UDP的8个字节头),设置其大到足够容纳2048字节的数据。双端口RAM使用一个共同的时钟进行独立的读和写操作。BRAM直接连接到控制单元,为读写操作提供使能信号。BRAM在规定时间内发送数据流到多路复用器。

多路复用器主要工作是,从控制单元来的信号、BRAM输入信号、ROM和校验和寄存器中选择数据。如此运行,数据流可以准确地按照协议下载到本地连接FIFO。

发射机的控制器包括一些子模块,最主要的是FSM。FSM控制计时、输入输出信号、协调BRAM和ROM,选择合适的信号多路复合器,与上层和下层握手。这是一个有7个状态的有限状态机,16个转换途径,5个输入接口,9个输出接口和1个同步复位。它是由FPGA LUTs基于热门编码实现的。

当没有需要发送的数据时,发射机单元处于闲置状态。当应用程序发出发送信息的请求时,状态开始转换,核开始缓存进来的数据。与此同时,校验和单元计算传入数据包的校验和。当整个数据缓存结束后,控制器插叙本地连接接口数据传输是否可行,并通过接收确认信号开启下一个传输的状态。为了这样,第一个报头字节和载荷会放进本地连接接口的TX FIFO中。可能会出现这样的情况,其他不同或者相同的应用程序正在传输一个数据包,在这种情况下,发射机发送数据到本地连接接口的同时可以接收传入的载荷,这得益于BRAM是双端口。因为有效载荷的长度是固定的,传输将早于数据接收完成。因此,在剩下的数据到达之前、完成校验和计算之前,控制器会一直等待,完成后,他将开始发送数据头。数据传输和计算校验和是并行

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[150269],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。