核电子-本科毕业设计论文-_第1页
核电子-本科毕业设计论文-_第2页
核电子-本科毕业设计论文-_第3页
核电子-本科毕业设计论文-_第4页
核电子-本科毕业设计论文-_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

XXXXXXX大学本科毕业论文题目基于由FPGA实现的TCP/IP协议的网络传输性能测试英文NetworktransmissionperformancetestofTCP/IPprotocoltransmissionperformancebasedonFPGA院系物理学院近代物理系姓名XXXXXX学号XXXXXXXX导师XXXXXXXXXXXXX)XXXXX日期二〇一五年六月中国科学技术大学本科生毕业论文致谢谨向我的导师XXXX和XXXX致以最诚挚的谢意和崇高的敬意。在他们的悉心指导下,本论文才得以顺利完成。XXX老师与XXX老师严谨的科研态度、渊博的知识和诲人不倦的教学态度深深影响了我。感谢XXXX师兄和XXXXXX师兄的悉心指导,本设计基于两位师兄设计的硬件,没有师兄的帮助和指导就不会有本设计。两位师兄在我毕业设计过程以及论文的写作过程中都给与了最为有效和无私的帮助,在此我要表示深深的谢意。感谢近代物理系的XXXX老师,在我毕业设计过程中热情的对我提供了帮助;感谢XXXX师兄、XXXXX师兄、XXXX兄在各个方面对我的指导;感谢实验室的各位同学,感谢一路走来,所有关心和支持我的朋友们,有了你们的陪伴,生活变得更加精彩。目录摘要 5Abstract 5第一章绪论 61.1课题的研究背景和意义 61.2研究内容 71.3论文结构 71.4本章小结 8第二章背景知识介绍 82.1TCP协议简介 82.1.1网络分层 82.1.2什么是TCP协议 92.1.3TCP协议下数据传输的结构 102.1.4TCP连接建立和终止的过程。 122.2网络性能测试的概念 152.3COM5402介绍 162.3.1原理框图介绍 162.3.2接口图介绍 182.4FPGA程序的开发流程 22第三章测试部分功能需求和设计目标 243.1TCP协议栈的测试需求 243.2测试部分的设计目标 25第四章方案设计 254.1测试方案的设计 254.1.1测试部分与整体的结构关系 254.1.2测试的具体流程设计 264.2测试方案的仿真 274.3本章小结 28第五章测试结果及分析 285.1测试的硬件环境 285.2测试用到的PC端软件介绍 305.3测试流程和结果 315.4结果分析 34第六章总结和展望 346.1总结 346.2展望 35结语 35参考文献 35附件一:test源码与bench源码 36附件二测试模块配置说明 49附件三:使用超级终端配置硬件连接说明: 50附件四:约束文件(ucf) 51基于由FPGA实现TCP/IP协议的网络性能测试摘要核电子学核电子学方法中国科学技术大学出版社是一门近代电子技术和计算机技术应用于核辐射探测及核信号分析的交叉学科,它作为电子学学科的一个分支有其本身的特点,主要处理物理实验中的电脉冲,要求有较高的测量精度,尤其常常需要及时快速的处理大量的信息。因此核电子学技术的一个重要的过程是将各种探测器产生的各类信息传输到计算机进行分析处理,本文即核电子学方法中国科学技术大学出版社不同的设备和系统之间进行通信需要遵循一定的标准,在信息时代,以太数据传输能力得到了长足而且迅速的发展和应用,而以太网的传输一般采用两种标准协议:TCP协议和UDP协议。其中TCP协议具有传输数据可靠的特点,尤其在物理试验中,需要可靠的数据传输能力,因此TCP协议也在物理实验尤其是高能物理实验领域有着广泛的应用。本文即是在这样的背景下,主要工作是介绍基于FPGA实现TCP协议的方式,介绍TCP协议建立、传输的过程及相关的背景知识,在TCP协议标准下进行数据传输并测试其传输性能。关键词:TCP/IP通信FPGA传输性能测试AbstractNuclearElectronicsisamodernelectronictechnologyandcomputertechnologyisappliedtonuclearradiationdetectionandnuclearsignalanalysisofcrossdisciplinary,itasabranchofElectronicssubjecthasitsowncharacteristics,mainlyprocessingphysicsexperimentofelectricpulse,highmeasurementaccuracy,especiallyoftenneedtimelyandfastprocessingoflargeamountsofinformation.Asanimportantprocessofnuclearelectronicstechnology,theinformationtransmittedfromvariousdetectorstothecomputerisanalyzedandprocessed.Thisthesisisthetransmissionofthisinformation..Betweenthedifferentequipmentandsystemstocommunicatetheneedtofollowcertainstandards,intheinformationage,Ethernetdatatransmissioncapacityhasbeengreatandrapiddevelopmentandapplication,andEthernettransmissiongenerallyusetwostandardprotocols:TCPprotocolandUDPprotocol.TheTCPprotocolwithreliabledatatransmissioncharacteristics,especiallyinthephysicaltestandneedreliabledatatransmissioncapability,soTCPprotocolalsoinexperimentalphysicsespeciallywidelyappliedthefieldofhighenergyphysicsexperiment.Thisarticleisinthisbackground,themainworkistheFPGAbasedimplementationofTCPprotocolinTCPestablishment,transmissionprocess,intheTCPprotocolstandardsweredatatransmissionandtotestthetransmissionperformance.Keywords:TCP/IPcommunicationFPGAtransmissionperformancetest第一章绪论1.1课题的研究背景和意义当今世界是信息化的时代,数据、信息无时无刻不在高速的传输。以太传输扮演着核心的角色,作为以太网传输的标准协议TCP和UDP协议,研究它们的实现和性能有着重要的意义。可以说,只要一个设备添加一个网络接口并且实现这些协议就可以将之接入到网络中去,实现数据的传输等功能。TCP协议要比UDP来得可靠,因为其实现的方式添加了相应的检查机制。如TCP协议进行有效数据传输前需要进行多次握手建立连接,结束传输后也需要多次握手断开连接,在传输过程中还有超时重传和捎带确认等机制用于保证数据包的有效传输。TCP协议的这些优点使得其更广泛的应用于可靠数据传输领域,当然包含我们常见的核电子学实验的数据传输过程。不过这同时也说明了实现TCP协议需要消耗更多的资源,过程也更加复杂了。实现TCP协议栈传统的方法是由通过运行在CPU上的软件实现路后兵.LuHoubing在FPGA中实现嵌入式TCP/IP通信协议栈[期刊论文]-单片机与嵌入式系统应用2014(11),的确,软件实现TCP协议更加简单,但是也同时以为着路后兵.LuHoubing在FPGA中实现嵌入式TCP/IP通信协议栈[期刊论文]-单片机与嵌入式系统应用2014(11)FPGAFPGA现状和发展趋势王红等电子与封装第七卷第七期(Field-ProgrammableGateArray),它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。它几乎综合了可编程器件的一切优点,具有集成度高、速度快、功耗低、IP库丰富、价格低等优势。因此通过FPGA来实现TCP/IP协议栈以及以太网MAC控制器,功耗低、速度快、面积小、可靠性高的优点,还可以解放更多的CPU资源,提高系统的整体性能。而且这样的TCPFPGA现状和发展趋势王红等电子与封装第七卷第七期1.2研究内容正如前文提到的,使用FPGA实现TCP协议有着传输性能高、节省CPU资源等特点。本文所做的主要工作就是在于测试了一款使用com5402SOFT实现的TCP协议栈的性能,com5402SOFTCOM-5402SOFTIP/TCP/UDP/ARP/PINGPROTOCOLSTACK,VHDLSOURCECODE是一款通用的网络协议设计栈(使用硬件描述语言(VHDL)实现),支持1GBPS吞吐量低成本系列COM-5402SOFTIP/TCP/UDP/ARP/PINGPROTOCOLSTACK,VHDLSOURCECODE我做的工作主要在于设计测试方案,这一测试方案使用VHDLCircuitDesignwithVHDLVolneiA.Pedroni著乔庐峰王志功等译电子工业出版社CircuitDesignwithVHDLVolneiA.Pedroni著乔庐峰王志功等译电子工业出版社当然文章中也介绍了关于网络协议、TCP、FPGA开发、com5402的背景知识。1.3论文结构本文分为六章,第一章为绪论,介绍了网络的意义和建立起网络的基础——TCP协议,分析了FPGA实现TCP/IP协议的优点,阐述了论文的选题背景与意义,研究的主要内容及其组织结构。第二章为背景知识介绍,包括TCP协议介绍、网络性能测试的概念和测量方式、com5402SOFT的原理和结构、FPGA程序的开发流程XilinxFPGAXilinxFPGA开发实用教程(第二版)徐文波田耘编著清华大学出版社第三章为测试部分功能需求和设计目标第四章为测试方案的设计和仿真。第五章为测试结果及分析。第六章为总结与展望部分,分析了设计中的功能和不足,并且提出了进一步优化方案的设想。1.4本章小结TCP协议是互联网应用非常广泛的成熟的数据传输协议,具有带宽高、传输可靠等优点。在现代高能物理实验中,越来越多的实验采用TCP协议传输数据。本课题主要是对基于FPGA实现的TCP/IP协议栈的传输性能测试,主要设计位于FPGA内的测试模块。主要工作内容是用VHDL语言编写测试程序,完成TCP协议栈最大传输带宽、传输效率等性能的测试。FPGA开发环境为XilinxISE14.4。第二章背景知识介绍2.1TCP协议简介2.1.1网络分层为了减少网络设计的复杂性,大多数网络都采用分层结构。对于不同的网络,层的数量、名字、内容和功能都不尽相同。在相同的网络中,一台机器上的第N层与另一台机器上的第N层可利用第N层协议进行通信,协议基本上是双方关于如何进行通信所达成的一致。OSI参考模型是ISO的建议,它是为了使各层上的协议国际标准化而发展起来的。OSI参考模型全称是开放系统互连参考模型(OpenSystemInterconnectionReferenceModel)。这一参考模型共分为七层:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,其中物理层(PhysicalLayer)主要是处理机械的、电气的和过程的接口,以及物理层下的物理传输介质等。数据链路层(DataLinkLayer)的任务是加强物理层的功能,使其对网络层显示为一条无错的线路。网络层(NetworkLayer)确定分组从源端到目的端的路由选择。路由可以选用网络中固定的静态路由表,也可以在每一次会话时决定,还可以根据当前的网络负载状况,灵活地为每一个分组分别决定。传输层(TransportLayer)从会话层接收数据,并传输给网络层,同时确保到达目的端的各段信息正确无误,而且使会话层不受硬件变化的影响。通常,会话层每请求建立一个传输连接,传输层就会为其创建一个独立的网络连接。但如果传输连接需要一个较高的吞吐量,传输层也可以为其创建多个网络连接,让数据在这些网络连接上分流,以提高吞吐量。而另一方面,如果创建或维持一个独立的网络连接不合算,传输层也可将几个传输连接复用到同一个网络连接上,以降低费用。除了多路复用,传输层还需要解决跨网络连接的建立和拆除,并具有流量控制机制。会话层(SessionLayer)允许不同机器上的用户之间建立会话关系,既可以进行类似传输层的普通数据传输,也可以被用于远程登录到分时系统或在两台机器间传递文件。表示层(PresentationLayer)用于完成一些特定的功能,这些功能由于经常被请求,因此人们希望有通用的解决办法,而不是由每个用户各自实现。应用层(ApplicationLayer)中包含了大量人们普遍需要的协议。不同的文件系统有不同的文件命名原则和不同的文本行表示方法等,不同的系统之间传输文件还有各种不兼容问题,这些都将由应用层来处理。此外,应用层还有虚拟终端、电子邮件和新闻组等各种通用和专用。2.1.2什么是TCP协议TCP(TransmissionControlProtocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。在互联网协议族(Internetprotocolsuite)中,TCP层是位于IP层之上,应用层之下的中间层。TCP/IP起源于上世纪60年代末美国政府资助的一个分组交换网络项目,直到90年代已经发展成为计算机之间最常应用的组网模式。它是一个开放的系统,因为该协议族的定义及实现方式是可以公开得到的,相应的TCP协议族也就形成了Internet的组网基础。((美)W.RichardStevens著TCP/IPIllustratedVolume1:TheProtocolsChinaMachinePress不过TCP/IP协议并不依赖于任何特定的计算机硬件或操作系统,由于提供了开放的协议标准,即使不考虑Internet,TCP/IP协议也获得了广泛的支持。所以TCP/IP协议成为一种联合各种硬件和软件的实用系统。用户能够使用以太网(Ethernet)、令牌环网(TokenRingNetwork)、拨号线路(Dial-upline)、X.25网以及所有的网络传输硬件。TCP/IP这个协议家族的两个核心协议,包括TCP(传输控制协议)和IP(网际协议),为这个家族中最早通过的标准。由于在网络通讯协议普遍采用分层的结构,当多个层次的协议共同工作时,类似计算机科学中的堆栈,因此又被称为TCP/IP协议栈。2.1.3TCP协议下数据传输的结构所谓面向连接的,是指在彼此通信前要先建立连接。同时这种点对点的连接表明了TCP不支持多播和广播(美)W.RichardStevens著(美)W.RichardStevens著TCP/IPIllustratedVolume1:TheProtocolsChinaMachinePress协议格式图2.1:TCP数据包结构图2.2:TCP包首部结构字段说明:16位源端口号:指建立连接(或发送数据)的端口号16位目的端口号:指连接另一端(或接受数据)的端口号32位序号:发送的字节序号,如果是新建立的连接,则第一个包的seq为0,否则为上一个数据包的确认序号。同一个包中的序号和确认序号是不同的。32位确认序号:等于接收到数据包的序号seq+数据包的长度len。同时告诉对端,下一个数据包的开头字节序号。4位首部长度:TCP包首部的长度。URG:紧急指针有效。它使一端可以告诉另一端有些具有某种方式的“紧急数据”已经放置在普通的数据流中。另一端被通知这个紧急数据已被放置在普通数据流中,由接收方决定如何处理。URG比特被置1,并且一个16bit的紧急指针被置为一个正的偏移量,该偏移量必须与TCP首部中的序号字段相加,以便得出紧急数据的最后一个字节的序号。注意:TCP的紧急方式不是带外数据(out-of-banddata)。紧急方式有什么作用呢?两个最常见的例子是Telnet和Rlogin。当交互用户键入中断键时,另一个例子是FTP,当交互用户放弃一个文件的传输时。如果在接收方处理第一个紧急指针之前,发送方多次进入紧急方式会发生什么情况呢?在数据流中的紧急指针会向前移动,而其在接收方的前一个位置将丢失。接收方只有一个紧急指针,每当对方有新的值到达时它将被覆盖。这意味着如果发送方进入紧急方式时所写的内容对接收方非常重要,那么这些字节数据必须被发送方用某种方式特别标记。我们将看到Telnet通过在数据流中加入一个值为255的字节作为前缀来标记它所有的命令。ACK:确认序号有效PSH:接收方应尽快将这个报文段交给应用层。发送方使用PUSH标志通知接收方将所收到的数据全部提交给接收进程。这里的数据包括与PUSH一起传送的数据以及接收方TCP已经为接收进程收到的其他数据(还在TCP的缓冲区中)。RST:重置连接SYN:同步信号,用于发起一个连接FIN:发端完成发送任务,关闭连接16位窗口大小:TCP的流量控制由连接的每一端通过声明的窗口大小来提供。窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的字节。窗口大小是一个16bit字段,因而窗口大小最大为65535字节。16位校验和:检验和覆盖了整个的TCP报文段:TCP首部和TCP数据。16位紧急指针:只有当URG标志置1时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。选项:部分可选配置,主要有以下几种:图2.3可选配置类型每个选项的开始是1字节kind字段,说明选项的类型。kind字段为0和1的选项仅占1个字节。其他的选项在kind字节后还有len字节。它说明的长度是指总长度,包括kind字节和len字节。2.1.4TCP连接建立和终止的过程。TCP连接的建立:TCP协议通过三个报文段完成连接的建立,即三次握手。如图2.10所示。整个流程如下:(1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。(2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。(3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。图2.4TCP建立连接过程TCP连接的终止:终止一个连接需要四次挥手。如图2.11所示。整个流程如下:(1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。(2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。(3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。(4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。图2.5TCP终止连接的过程TCP状态转换图如2.12所示,各个状态说明如下:1、LISTEN:表示监听TCP端口的连接请求。2、SYN-SENT:表示发送连接请求之后,等待是否有符合的连接请求。3、SYN-RECEIVED:表示收到和发送一个连接请求后,等待对方连接请求的确认。4、ESTABLISHED:表示一个打开的连接。5、FIN-WAIT-1:表示等待远程TCP连接中断请求或之前的连接中断请求的确认。6、FIN-WAIT-2:表示远程TCP等待连接中断请求。7、CLOSE-WAIT:表示等待自本地用户发送来的连接中断请求。8、CLOSING:表示远程TCP对连接中断的确认。9、LAST-ACK:表示发送至远程TCP的连接中断请求的确认。10、TIME-WAIT:表示等待足够时间来确保远程TCP接收连接中断请求的确认。11、CLOSED:表示无任何连接状态。图2.6TCP状态转换图2.2网络性能测试的概念在构建或管理一个网络系统时我们不仅仅需要关注网络是否接通,也要考虑其整体的性能。考虑到性能的问题。自然会想到如何用合适的手段去测试网络的性能。基于基于Iperf的网络性能测量研究张白,宋安军电脑科学与技术Vol.5,No.36,December2009,pp.10227-10229网络性能可以采用以下方式定义:网络性能是对一系列对于运营商有意义的,并可用于系统设计、配置、操作和维护的参数进行测量所得到的结果。可见,网络性能是与终端性能以及用户的操作无关的,是网络本身特性的体现。可以由一系列的性能参数来描述,也可以由网络性能测量工具来测量。网络性能参数即网络性能测量的五项指标,包括:可用性;响应时间;网络利用率;网络吞吐量;网络带宽容量。网络性能测量方法有两类:主动测量和被动测量,这两种方法的作用和特点不同,主动测量是在选定的测量点上利用测量工具有目的地主动产生测量流量"注入网络"并根据测量数据流的传送情况来分析网络的性能,主动测量的优点是对测量过程的可控性比较高,灵活机动,易于进行端到端的性能测量,缺点是注入的测量流量会改变网络本身的运行情况,使得测量的结果与实际情况存在一定的偏差。而且测量流量还会增加网络负担主动测量在性能参数的测量中应用十分广泛。目前大多数测量系统都涉及到主动测量。被动测量是指在链路或设备,如路由器、交换机等。上利用测量设备对网络进行监测而不需要产生多余流量的测量方法。被动测量的优点在于理论上它不产生多余流量,不会增加网络负担。其缺点在于被动测量基本上是基于对单个设备的监测,很难对网络端到端的性能进行分析。并且可能实时采集的数据量过大"另外还存在用户数据泄漏等安全性和隐私问题。被动测量非常适合用来进行流量测量本次测试采用的是主动测量方式,主要测试可用性和网络吞吐量。2.3COM5402介绍COM-5402SOFTIP/TCP/UDP/ARP/PINGPROTOCOLSTACK,VHDLSOURCECODECOM-5402SOFTIP/TCP/UDP/ARP/PINGPROTOCOLSTACK,VHDLSOURCECODE2.3.1原理框图介绍图3.2为COM5402的原理框图。各个模块的具体说明如下:1、“PACKETPARSING”模块:它的功能是解析从MAC端接收到的数据包并且高效的取出相关关键信息给多个协议。2、“ARPREPLY”模块:它的功能是检测到MAC端发送过来的ARP请求后,重新组装一个以太网数据包作为该ARP请求包的响应数据包,然后将其反馈回给MAC端。3、“PINGREPLY”模块:它的功能是检测到MAC端发送过来的ICMP请求后,重新组装一个以太网数据包作为该ICMP请求包的ping响应数据包,然后将其反馈回给MAC端。4、“ROUTINGTABLE”模块:它是一个共享的路由表,其中存储多达128个IP地址以及与它们相关的48位的MAC地址和一个可刷新的时间戳。5、“ARPREQUEST”模块:它的功能是产生一个ARP请求广播数据包给外界设备。6、“UDP_RX”模块:它的功能是验证接收到的UDP帧是否有效并且提取数据包中的数据。当不断接收数据时,由于验证帧的有效性是在动态中执行的,所以验证有效性的确认信息是在包的结尾才能看到。一旦收到无效的数据包时,数据包会被丢弃,并且发送错误信息回馈到源端7、“TCP_SERVER”模块:它是TCP协议的核心,支持多个并行TCP数据流的连接。它本质上将TCP状态机处理成一个TCP服务器。系统开始启动时一直监听从远程TCP客户端到来的连接请求,建立或者关断连接并且可以在连接建立以后开始管理数据流控制。8、“STREAMTOPACKETS”模块:它的功能是将一个连续的数据流分割成许多数据包进行传输。这种传输方式会在以最大数据包大小传输或者超时等待新数据流的时候触发。这个组件被设计成与“UDP_TX”模块无缝对接。9、“UDP_TX”模块:它的功能是将数据打包封装成一个UDP帧,这个UDP帧可以从任意端口寻址到任意目标端口或IP。不考虑源或者目的UDP端口的数量。10、“PACTETSTOSTREAM”模块:它的功能是将接收到的有效数据包重新组装成一个数据流并且可以丢弃掉无效的数据包。数据包的有效性在每个包的结尾会被确认。这个组件被设计成与“UDP_RX”模块无缝对接。11、“TCP_RXBUF”模块:它的功能是将几个不同的TCP接收流多路分用。它不包含任何的弹性缓冲区。因为一般来说,如果应用程序需要弹性缓冲区时用户就会实例化相应的弹性缓冲区。数据位是按照顺序接收的,没有空白或者回溯的数据。12、“TCP_TXBUF”模块:它的功能是把TCP发送的载荷数据储存到每个独立的弹性缓冲区中,每个缓冲区对应一个传输流。缓冲区的大小在综合前是可以配置的,一般等于16KbitsRAM块的大小的整数倍,整数倍的值可以设置为1、2、4和8。13、“TCP_TX”模块:它规定了TCP发送帧格式并且在条件成熟时将数据按要求打包好发送到MAC端。14、“Arbitration”模块:它是一个裁决程序,会根据当前系统网络环境和数据的紧急程度将各种数据报进行队列排序,是数据包能够有条不紊地发送到MAC端。图2.7COM5402的原理框图2.3.2接口图介绍图3.3为COM5402的顶层接口图,主要分为MAC接口和用户接口。其中MAC接口又分为时钟接口、MAC发送接口、MAC接收接口和配置接口。用户接口又分为TCP/IP数据流接口、UDP接收数据流/帧接口和UDP发送数据流/帧接口。具体接口定义如下:1、CLK:时钟输入接口。对于COM5402而言,所有的信号都同步于用户选择的时钟CLK。同时为了保证具有1Gbps的吞吐量,需要的时钟频率最小要达到125MHz。2、ASYNC_RESET:异步复位输入接口。高电平有效,即为1时系统复位。并且COM5402最新的版本已经将其改变为同步复位。3、MAC_TX_DATA(7:0):MAC发送数据输出接口。长度为8bit。意思是在一个有效时钟周期内将8bit数据发送出去。4、MAC_TX_DATA_VALID:MAC发送数据有效位输出接口。意思是当MAC_TX_DATA的数据发送出去的同时,其值一直为1,否则为0。5、MAC_TX_EOF:MAC发送数据结束标志位输出接口。意思是当MAC_TX_DATA发送最后一个字节的数据的同时,其值变为1,并且在下个时钟上升沿到来时变为0。6、MAC_TX_CTS:MAC发送数据开始标志位输入接口。意思是COM5402在准备发送MAC_TX_DATA数据的一开始,要先判断该端口的值是否为1,如果为1,才可以发送数据;如果为0,则会处于等待状态,直到该端口变1为止。7、MAC_RX_DATA(7:0):MAC接收数据输入接口。长度为8bit。意思是在一个有效时钟周期内接收8bit数据进来。8、MAC_RX_DATA_VALID:MAC接收数据有效位输入接口。意思是当MAC_RX_DATA的数据接收进来的同时,其值一直为1,否则为0。9、MAC_RX_SOF:MAC接收数据开始标志位输入接口。意思是当MAC_RX_DATA端接收第一个字节数据的同时,其值变为1,并且在下一个有效时钟上升沿到来时变为0。10、MAC_RX_EOF:MAC接收数据结束标志位输入接口。意思是当MAC_RX_DATA端接收最后一个字节数据的同时,其值变为1,并且在下一个有效时钟上升沿到来时变为0。11、MAC_ADDR(47:0):MAC地址输入接口。长度为48位。12、IPv4_ADDR(31:0):IP地址输入接口。长度为32位。13、SUBNET_MASK(31:0):子网掩码输入接口。长度为32位。14、GATEWAY_IP(31:0):网关输入接口。长度为32位。15、TCP_RX_DATA(7:0):TCP接收数据输出接口。长度为8位。意思是在一个有效时钟周期内将从MAC端接收到的8bit数据发送出去。16、TCP_RX_DATA_VALID:TCP接收数据有效位输出接口。意思是当TCP_RX_DATA的数据发送出去的同时,其值一直为1,否则为0。17、TCP_RX_RTS:TCP接收数据开始标志位输出接口。意思是当TCP_RX_DATA发送第一个字节数据的同时,其值变为1,然后一直保持,直到整个断开连接。18、TCP_RX_CTS:TCP接收数据开始标志位输入接口。意思是COM5402在准备发送TCP_RX_DATA数据的一开始,要先判断该端口的值是否为1,如果为1,才可以发送数据;如果为0,则会处于等待状态,直到该端口变1为止。19、TCP_TX_DATA(7:0):TCP发送数据输入接口。长度为8位。意思是在一个有效时钟周期内接收8bit数据进来。20、TCP_TX_DATA_VALID:TCP发送数据有效位输入接口。意思是当TCP_TX_DATA的数据接收进来的同时,其值一直为1,否则为0。21、TCP_TX_CTS:TCP发送数据开始标志位输出接口。意思是COM5402在准备接收TCP_TX_DATA数据的一开始,要先判断该端口的值是否为1,如果为1,才可以接收数据;如果为0,则会处于等待状态,直到该端口变1为止。22、UDP_RX_DATA(7:0):UDP接收数据输出接口。长度为8位。意思是在一个有效时钟周期内将从MAC端接收到的8bit数据发送出去。23、UDP_RX_DATA_VALID:UDP接收数据有效位输出接口。意思是当UDP_RX_DATA的数据发送出去的同时,其值一直为1,否则为0。24、UDP_RX_SOF:UDP接收数据开始标志位输出接口。意思是当UDP_RX_DATA发送第一个字节数据的同时,其值变为1,并且在下一个有效时钟上升沿到来时变为0。25、UDP_RX_EOF:UDP接收数据结束标志位输出接口。意思是当UDP_RX_DATA发送最后一个字节数据的同时,其值变为1,并且在下一个有效时钟上升沿到来时变为0。26、UDP_RX_DEST_PORT_NO:UDP接收目的主机的端口值输入接口。长度为16位。27、UDP_TX_DATA(7:0):UDP发送数据输入接口。意思是在一个有效时钟周期内接收8bit数据进来。28、UDP_TX_DATA_VALID:UDP发送数据有效位输入接口。意思是当UDP_TX_DATA的数据接收进来的同时,其值一直为1,否则为0。29、UDP_TX_SOF:UDP发送数据开始标志位输入接口。意思是当UDP_TX_DATA接收第一个字节数据的同时,其值变为1,并且在下一个有效时钟上升沿到来时变为0。30、UDP_TX_EOF:UDP发送数据结束标志位输入接口。意思是当UDP_TX_DATA接收最后一个字节数据的同时,其值变为1,并且在下一个有效时钟上升沿到来时变为0。31、UDP_TX_ACK:UDP发送数据回馈确认输出接口。意思是UDP_TX_DATA接收第一个字节数据的前一个时钟上升沿到来时,其值变为1,并且在下一个有效时钟上升沿到来时变为0。32、UDP_TX_NAK:UDP发送数据禁止接收输出接口。意思是当该端口值为1时,UDP_TX_DATA不能接收数据进来,直到该端口值为0为止。33、UDP_TX_DEST_IP_ADDR:UDP发送目的主机IP值输入接口。长度为128位。34、UDP_TX_DEST_PORT_NO:UDP发送目的主机端口值输入接口。长度为16位。35、UDP_TX_SOURCE_PORT_NO:UDP发送源主机端口值输入接口。长度为16位。36、UDP_TX_CTS:UDP发送数据开始标志位输出接口。COM5402在准备接收UDP_TX_DATA数据的一开始,要先判断该端口的值是否为1,如果为1,才可以接收数据;如果为0,则会处于等待状态,直到该端口变1为止。图2.8COM5402接口图2.4FPGA程序的开发流程1.功能定义/器件选型在FPGA设计项目开始之前,必须有系统功能的定义和模块的划分,另外就是要根据任务要求,如系统的功能和复杂度,对工作速度和器件本身的资源、成本、以及连线的可布性等方面进行权衡,选择合适的设计方案和合适的器件类型。一般都采用自顶向下的设计方法,把系统分成若干个基本单元,然后再把每个基本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接使用EDA元件库为止。2.设计输入设计输入是将所设计的系统或电路以开发软件要求的某种形式表示出来,并输入给EDA工具的过程。常用的方法有硬件描述语言(HDL)和原理图输入方法等。原理图输入方式是一种最直接的描述方式,在可编程芯片发展的早期应用比较广泛,它将所需的器件从元件库中调出来,画出原理图。这种方法虽然直观并易于仿真,但效率很低,且不易维护,不利于模块构造和重用。更主要的缺点是可移植性差,当芯片升级后,所有的原理图都需要作一定的改动。目前,在实际开发中应用最广的就是HDL语言输入法,利用文本描述设计,可以分为普通HDL和行为HDL。普通HDL有ABEL、CUR等,支持逻辑方程、真值表和状态机等表达方式,主要用于简单的小型设计。而在中大型工程中,主要使用行为HDL,其主流语言是VerilogHDL和VHDL。这两种语言都是美国电气与电子工程师协会(IEEE)的标准,其共同的突出特点有:语言与芯片工艺无关,利于自顶向下设计,便于模块的划分与移植,可移植性好,具有很强的逻辑描述和仿真功能,而且输入效率很高。除了这IEEE标准语言外,还有厂商自己的语言。也可以用HDL为主,原理图为辅的混合设计方式,以发挥两者的各自特色。3.功能仿真功能仿真也称为前仿真是在编译之前对用户所设计的电路进行逻辑功能验证,此时的仿真没有延迟信息,仅对初步的功能进行检测。仿真前,要先利用波形编辑器和HDL等建立波形文件和测试向量(即将所关心的输入信号组合成序列),仿真结果将会生成报告文件和输出信号波形,从中便可以观察各个节点信号的变化。如果发现错误,则返回设计修改逻辑设计。常用的工具有ModelTech公司的ModelSim、Sysnopsys公司的VCS和Cadence公司的NC-Verilog以及NC-VHDL等软件。4.综合优化所谓综合就是将较高级抽象层次的描述转化成较低层次的描述。综合优化根据目标与要求优化所生成的逻辑连接,使层次设计平面化,供FPGA布局布线软件进行实现。就目前的层次来看,综合优化(Synthesis)是指将设计输入编译成由与门、或门、非门、RAM、触发器等基本逻辑单元组成的逻辑连接网表,而并非真实的门级电路。真实具体的门级电路需要利用FPGA制造商的布局布线功能,根据综合后生成的标准门级结构网表来产生。为了能转换成标准的门级结构网表,HDL程序的编写必须符合特定综合器所要求的风格。由于门级结构、RTL级的HDL程序的综合是很成熟的技术,所有的综合器都可以支持到这一级别的综合。常用的综合工具有Synplicity公司的Synplify/SynplifyPro软件以及各个FPGA厂家自己推出的综合开发工具。5.综合后仿真综合后仿真检查综合结果是否和原设计一致。在仿真时,把综合生成的标准延时文件反标注到综合仿真模型中去,可估计门延时带来的影响。但这一步骤不能估计线延时,因此和布线后的实际情况还有一定的差距,并不十分准确。目前的综合工具较为成熟,对于一般的设计可以省略这一步,但如果在布局布线后发现电路结构和设计意图不符,则需要回溯到综合后仿真来确认问题之所在。在功能仿真中介绍的软件工具一般都支持综合后仿真。6.实现与布局布线布局布线可理解为利用实现工具把逻辑映射到目标器件结构的资源中,决定逻辑的最佳布局,选择逻辑与输入输出功能链接的布线通道进行连线,并产生相应文件(如配置文件与相关报告),实现是将综合生成的逻辑网表配置到具体的FPGA芯片上,布局布线是其中最重要的过程。布局将逻辑网表中的硬件原语和底层单元合理地配置到芯片内部的固有硬件结构上,并且往往需要在速度最优和面积最优之间作出选择。布线根据布局的拓扑结构,利用芯片内部的各种连线资源,合理正确地连接各个元件。目前,FPGA的结构非常复杂,特别是在有时序约束条件时,需要利用时序驱动的引擎进行布局布线。布线结束后,软件工具会自动生成报告,提供有关设计中各部分资源的使用情况。由于只有FPGA芯片生产商对芯片结构最为了解,所以布局布线必须选择芯片开发商提供的工具。7.时序仿真时序仿真,也称为后仿真,是指将布局布线的延时信息反标注到设计网表中来检测有无时序违规(即不满足时序约束条件或器件固有的时序规则,如建立时间、保持时间等)现象。时序仿真包含的延迟信息最全,也最精确,能较好地反映芯片的实际工作情况。由于不同芯片的内部延时不一样,不同的布局布线方案也给延时带来不同的影响。因此在布局布线后,通过对系统和各个模块进行时序仿真,分析其时序关系,估计系统性能,以及检查和消除竞争冒险是非常有必要的。在功能仿真中介绍的软件工具一般都支持综合后仿真。8.板级仿真与验证板级仿真主要应用于高速电路设计中,对高速系统的信号完整性、电磁干扰等特征进行分析,一般都以第三方工具进行仿真和验证。9.芯片编程与调试设计的最后一步就是芯片编程与调试。芯片编程是指产生使用的数据文件(位数据流文件,BitstreamGeneration),然后将编程数据下载到FPGA芯片中。其中,芯片编程需要满足一定的条件,如编程电压、编程时序和编程算法等方面。逻辑分析仪(LogicAnalyzer,LA)是FPGA设计的主要调试工具,但需要引出大量的测试管脚,且LA价格昂贵。目前,主流的FPGA芯片生产商都提供了内嵌的在线逻辑分析仪(如XilinxISE中的ChipScope、AlteraQuartusII中的SignalTapII以及SignalProb)来解决上述矛盾,它们只需要占用芯片少量的逻辑资源,具有很高的实用价值。第三章测试部分功能需求和设计目标3.1TCP协议栈的测试需求测试部分所需要完成的基本功能1.打开/关闭测试程序测量系统通过网线与计算机互联,从而在计算机来看,测量电子学系统属于挂载于计算机系统的硬件,需要通过驱动程序将硬件注册于操作系统后才可以操作和控制该硬件。2.设置测试参数测试参数包括:硬件系统的地址、硬件系统的测试通道选择、测试时发送数据包的大小、测试时发送数据包的间隔。这些设置都是通过向硬件给定地址写入数据(为32bits数值)来完成的。3.复位清空复位控制是通过向硬件指定地址写入特定数据实现,这是一个测试软件所必须具备的功能。4.数据统计和分析数据分析是指对采集得到的数据进行离线分析,测试测量系统是否达到设计目标。3.2测试部分的设计目标考虑到进一步提高软件的易操作性,在本毕业设计中对测试部分提出了如下的需求:完成第一节中所要求的全部功能软件实现方式简便,方便分析。软件功能易于扩充界面友好,易于操作上述目标中第一点为对协议栈的测试需求,之后三点则是对测试部分的附加要求。第四章方案设计4.1测试方案的设计4.1.1测试部分与整体的结构关系测试模块、com5402、PC端的结构关系如图:PC接收部分测试部分PC接收部分测试部分TCP/IP协议栈图4.1结构示意图更加详细的结构表示如下图:图4.2系统硬件设计框图图中所示的interface、wrPC、sfp等部分为为了实现TCP协议通信而存在的硬件系统配置,由于本人所做的工作主要是测试性能,所以并不过多的设计所测试主体的设计细节,在这里就不再赘述。4.1.2测试的具体流程设计本文介绍的测试主要包括两个部分,第一是网络带宽的测试,第二为TCP发包测试,主要用来验证TCP的通信过程和通信格式。第一部分测试的主要思想是:在测试部分编写代码,不断向PC端发送数据,每8ns发送一个数据位为8位的数据包,其发送的速率为1000mbit/s远远超出了TCP的传输性能,通过在PC上统计接收到的数据速率来确定该TCP协议栈的网络传输带宽。在文章的2.2节提到过,这属于主动测量方式。由于在电路板的FPGA芯片内部实现测试程序的难度要远高于在PC机上实现,所以采用电路板主动向PC端发送测试数据。第二部分测试的主要思想是:通过PC上的C++程序发送命令给测试部分,要求其打开或者关闭测试程序,并且确定发包的时间间隔和包的大小。并在PC端设置相应的软解抓取这些数据包,离线分析其数据包的格式和发送方式是否和测试部分发送的理论数据相一致。其中测试一、二部分的代码见附件一。可以看出,测试一所实现的功能很直白,就是通过测试程序以最大的速度给通过TCP协议通道给PC机发包,这个速度超出了本身所实现的TCP协议栈的传输带宽,也就能够通过PC上的统计数据方便的得到TCP协议栈的网络传输带宽的性能指标。测试二是本文所做的主要工作,测试方案更加复杂,主要是在于板子和PC机的交互通信,这个时候PC机和板子上的测试程序分别相当于客户端和服务端,客户端通过向服务端提交测试的命令,服务端对其进行回应并且按照其指令进行测试。其中测试命令为40位,前八位用来区别是开关命令还是数据格式命令,接下来的16位在前八位是数据格式命令时候有效,代表着测试程序发送的数据包的大小,后十六位代表数据包发送的时间间隔。见下表:控制指令寄存器地址(8bit)数据(16bit)数据(16bit)功能1000000106-1460(十进制/单位为Byte,即每增加1相当于增加1Byte)0-12500(十进制/单位为8ns,即每增加1相当于增加8ns)PCB选择发送6-1460Byte长度的数据包,并且包与包的间隔时间范围是0-100us。20000000100000000000000000000000000000001启动测试程序30000000100000000000000000000000000000000关闭测试程序具体的测试说明见附件二。总结说来电路板上的测试部分所实现的功能为:接受并且执行PC端的控制命令,实现测试程序的开启和关闭以及调整其测试行为。4.2测试方案的仿真如图所示:图4.3FPGA上运行的程序部分图中展示的是在电路板FPGA上运行的程序,其中测试部分为名为:“Inst_TCP_TEST-TCP_TEST-Behavioral”的

温馨提示

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

评论

0/150

提交评论