基于FPGA的TCP IP协议设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于FPGA的TCP/IP协议设计与实现
摘要:以FPGA(现场可编程逻辑门阵列)为控制中心,实现了网络接口芯片的时序控制,进而搭建一种百兆以太网的高速数据传输平台。实践证明,此平台具有良好的接口扩展性,更便于同计算机进行连接。此外,此平台拥有较高的数据吞吐率,能够达到接近100Mb/s 的以太网极限吞吐率。
关键词:FPGA;以太网;TCP/IP协议;DM9000
0、引言
随着网络通信技术的飞速发展,越来越多的测试仪器需要将大量数据传送给终端计算机进行解析处理,抑或从PC机传送大量数据给相应设备。现在常用的数据传输方式(usb、总线)中,虽说数据传输的速率较快(可达400Mb/s),但是传输距离过短成为其不可避免的缺点。而百兆以太网中点对点间的数据传送距离可达100m,如果借助交换机或者路由器等设备可以实现更远距离传输。本文以FPGA 为基础,在硬件上完成简化的TCP/IP协议栈,用来获取必须的协议处理机能,实现三态以太网嵌入式系统设计。
1、系统硬件设计
该系统以Altera公司的EPIC12型FPGA芯片作为中心控制单元,另外还需两片作为缓存数据用的SRAM,以太网接口芯片采用DM9000。系统具体硬件框图如图1所示。
DM9000是一款全集成、功能强大、性价比高的快速以太网MAC
控制器。该芯片拥有一个通用处理器接口、10/1()()PHY、EEPROM 和16kB的SRAM。DM9000支持8位、16位以及32位的接口访问内部存储器,可以支持不同型号的处理器。该芯片的PHY协议层接口完全可以使用10MBps下的3/4/5类非屏蔽双绞线和100MBps下的5类非屏蔽双绞线,很好地对应IEEE 802.3u规范。DM9000实现以太网媒体介质访问层(MAC)和物理层(PHY)的功能,其中包含MAC数据帧的组装/拆分与发送接收、地址的识别、CRC编码/校验、MLT-3编码器、接收噪声抑制、输出脉冲形成、超时重传、链路完整性测试、信号极性检测与纠正等。
2、TCP/IP协议实现
2.1 TCP/IP协议
TCP/IP协议就是传输控制协议/互联网协议,它是一个真正实际的开放性通信协议规范,其开放式的特点使得计算机之间都可以通过此协议来完成数据的交换,而不管这些设备拥有不同的物理特性或者各自运行着不同的系统。
与其它网络协议相同,TCP/IP协议的开发也是分不同层次进行的。与ISO开发的OSI模型相比,TCP/IP的四层模型显得更为灵活,原因在于它着重强调功能分布而不是功能层次的划分。
ARP协议负责IP地址与MAC地址之间的转换工作,IP协议实现网络层数据的封装工作以及路由功能,而TCP和UDP是运输层的协议,主要完成传输数据的封装、实现可靠稳定传送以及流量的监控。ICMP是报文控制协议,它是一种辅助性协议,所具有的Ping功能可
以用来诊断网络性能。在一个正常通信过程中,ARP/IP协议是必需的,而TCP/UDP实现一种即可。在FPGA用硬件完成ARP\P和UDP 比较简单,而TCP协议在连接时的握手机制、数据发送接收的校验机制以及流量的控制,实现起来较为复杂,因此从系统的复杂度来考虑,本文并没有实现TCP/IP协议,实现了相对较为简单的UDP协议。
2.2 系统模块构成
本系统的协议栈功能由网络控制模块、数据接收解析模块、ARP 应答发送模块、Ping应答发送模块、UDP发送模块和调度模块构成。每个模块间相互的接口联系如图3所示。
因为每个模块都有分时访问DM9000接口总线的要求,所以必须要有一个调度模块执行中心控制工作,利用开始与结束信号来同步。在接受到中断信号时,调度模块只有在总线空闲状态时才会开启接收模块,接收模块解析完MAC层数据包后会发送对应的请求讯号:ARP 应答请求、Ping应答请求,此时必需的应答参数也会输出。在总线空闲时,调度模块会依据请求信号开启对应的应答模块进行工作。接收模块在收到已定义端口UDP数据包后将有效数据写入SRAM中,供其它的应用模块使用。
2.3 DM9000接口控制
DM9000内部存储器由物理层寄存器、链路层寄存器和数据缓冲三部分组成,与该芯片进行的所有数据交换作都必须通过此三部分寄存器来完成。为遵循DM9000接口时序规范,接口逻辑需分层设计,I/O读写模块位于最底层,第二层为物理寄存器读写,接下来是链路
层寄存器读写模块,而最上层是初始化模块,主要完成接口芯片内物理寄存器与链路寄存器的初始化工作,比如MAC地址、中断设置以及数据包过滤条件等等。
3、实验结果及系统性能分析
3.1 接收处理能力
在计算机端编写一死循环程序,用来发送有效数据大小为 1 400Byte的UDP数据包。当PC端的发送软件运行后,网络传输速率可以达到98Mb/s,利用Ethereal能够看出,相邻的UDP数据包的间隔为10tLs~200tLs。图4为抓取的FPGA引脚信号波形,通道1为DM9000接收的中断信号,通道2为FPGA接收处理开始及结束信号。
3.2 发送处理能力
如果系统以最大速率发送含有1400比特的UDP数据包,传送速率可以达到98Mb/s。因为UDP未设计流量监控与确认功能,所以在编写应用软件的时候需要特别注意,必须加大Socket的缓冲区大小以及增加数据处理的速率,不然会出现数据丢失的现象。
3.3 系统扩展能力
因为本套系统的网络模块均是在FPGA上来实现的,占用的芯片资源很少,所以本系统可以与一些具体的应用模块在FPGA上共同实现,具体的应用模块可以利用本套系统来实现自身数据的发送或接收。如果利用FPGA中多余的芯片资源来搭建一些常用的总线接口,并且同本系统连接起来,即可以构成一个基于以太网的数据接口转发单元。