基于FPGA的TCP/IP协议数据传输研究

2017-12-21 10:44鲁睿其欧先锋
成都工业学院学报 2017年4期
关键词:电路板IP地址数据包

鲁睿其,欧先锋,b

(湖南理工学院 a.信息与通信工程学院;b.复杂系统优化与控制 湖南省普通高等学校重点实验室,湖南 岳阳 414006)

基于FPGA的TCP/IP协议数据传输研究

鲁睿其a,欧先锋a,b

(湖南理工学院 a.信息与通信工程学院;b.复杂系统优化与控制 湖南省普通高等学校重点实验室,湖南 岳阳 414006)

通过FPGA来实现TCP/IP协议栈以及以太网MAC控制器,不仅具有FPGA本身功耗低、面积小、可靠性高的优点,还可以达到非常高的数据处理速度,从而提升整个系统的性能。采用Mentor制版软件设计一款基于Spartan6 系列FPGA的PCB板,根据TCP/IP协议采用Verilog HDL和VHDL语言编写数据输入输出模块程序代码,基于ISE测试工具进行硬件和软件测试,完成整个系统的性能测试。系统硬件和软件测试结果表示本设计系统性能良好,能够进行数据高速的传输,且不占用CPU资源,系统性能良好,运行稳定可靠。

现场可编程门阵列;TCP/IP协议;数据传输

计算机网络已经成为信息时代主要的信息传输方式,一般采用TCP/IP协议进行数据传输。传统TCP/IP协议是基于CPU(Central Processing Unit,中央处理器)软件实现的[1]。但CPU并不是专门针对TCP/IP协议设计的,因此它处理协议的能力不强、效率不高;TCP/IP协议是通过对数据进行打包和拆包的方式来实现网络的连接,如果这些过程都用软件来实现,就会占用大量的CPU资源,浪费存储空间及产生大量功耗,使其性价比很低[2],从而影响整个系统的性能,导致广阔的带宽资源得不到充分的利用。随着技术的发展,处理器的速度增长符合Moore规则,每18个月增长一倍。网络带宽的增长速度符合Gilder规则,每9~12个月就增长一倍[3],由此可见CPU数据处理速度的增长已经远远落后于网络带宽的增长速度。面对不断增长的网络带宽的数据处理速度,传统基于CPU实现TCP/IP协议的方式,已经越来越不能满足现在的需求[4]。

在国外,用微控制单元(Microcontroller Unit,MCU)或嵌入式系统来实现TCP/IP协议的技术已经比较成熟。国内这两年来也推出了部分基于51系列的TCP/IP协议解决方案。但单片机的程序空间有限,运算速度也很有限[5]。因此,设计出一种新的基于现场可编程门阵列(Field-Programmable Gate Array,FPGA)实现TCP/IP协议的方式,就可以解决MCU处理TCP/IP协议低速率的问题。

通过FPGA来实现TCP/IP协议栈以及以太网MAC控制器,不仅FPGA本身具有功耗低、面积小、可靠性高的优点,它还具有非常高的数据处理速度。当此芯片应用在嵌入式系统中时,可以将原本属于主CPU的这部分工作由额外的硬件电路完成,从而减轻了CPU的负担,并加速网络处理的能力,提高系统的性能。比如在工业控制方面,使用这样的TCP/IP芯片系统,可以实现远程控制、远程抄表等一系列功能。当此芯片应用在一些无需操作系统的系统中,也能够实现网络的高速连接功能,这样可以在很多便携式无操作系统电子产品比如MP3、MP4以及三网合一的数字机顶盒上实现高速上网功能[6]。

1 硬件电路介绍

硬件电路的基本设计目标是实现TCP/IP协议在电路板和计算机间的数据传输,基本模块包括:Spartan6 FPGA数据处理模块、光纤传输模块、电源模块和时钟模块等,其中FPGA采用的是Xilinx 公司的Spartan6系列的XC6SLX75T。

硬件电路采用8层PCB板设计,基于Mentor Graphics公司的Expedition PCB工具完成电路板的设计。本文设计的电路板通过电源接口连接到外部电源3.3 V直接供电,并且通过电源转换芯片MAX8505得到1.2 V供给电路板其他模块。时钟信号是由特定的25MHZ时钟芯片提供,并且通过时钟转换芯片转换得到125MHZ传送给Spartan6芯片和光纤模块。Spartan6芯片和光纤模块根据TCP/IP协议的原理进行数据传输。

2 软件系统设计——TCPCP/IP核

基于FPGA的TCP/IP核能够实现发送数据的协议打包和接收数据的协议解包,根据数据要求并行发送和接收。结合TCP/IP协议分层参考模型的特点,TCP/IP核总体结构如图1所示。

其中:COM5402是一个完全使用VHDL硬件描述语言编写完成的TCP/IP协议栈;WRPC是一个开源的、用VHDL硬件描述语言编写的、能够提供精确时间的以太网MAC核;Interface是一个接口逻辑转换程序,用来连接COM5402与WRPC之间具备传数功能的以太网接口。

2.1 COM-5402模块

COM-5402的原理框图如图2所示。从图2可知其包含TCP协议和UDP协议的数据发送与接收。

图2 COM-5402的原理框图

2.2 WRPC模块

WRPC本质上是一个MAC核,图3为WRPC的总体框图,PHY是FPGA的GTP的差分信号线的接口模块,WRF是用户自定义的接口模块,包括数据的发送和核数据的接收两部分。

2.3 COM-5402和WRPC INTERFACE实现

由于COM-5402和WRPC端口不能兼容,于是需要编写一个接口逻辑使两者实现无缝连接。图4为Interface的原理框图。其中“Src”和“Snk”端口与WRPC连接,“MAC_RX”和“MAC_TX”端口与COM5402连接。由于WRPC的数据传输长度为16位,COM5402的数据传输长度为8位,所以需要两个FIFO进行数据传输时的长度转换。其中:FIFO1是16位输入,8位输出;FIFO2是8位输入,16位输出。

图3 WRPC的总体框图

图4 Interface的原理框图

3 系统测试

3.1 系统的软件仿真

软件仿真流程如图5所示。

图5 软件仿真流程图

根据软件仿真流程图可知,仿真的路径主要有两条:

1)从COM5402模块的MAC_RX端发数,通过3个连接数据包建立连接后,COM5402模块的TCP_TX端产生数据,数据传输到MAC模块的PHY_TX端(TCP_TX=>MAC_TX=>Snk_i=>PHY_TX)。如图6所示。

图6联合仿真波形图1(TCP_TX=>MAC_TX=>Snk_i=>PHY_TX)

2)从MAC模块的PHY_RX端发数,接收的数据首先传输到COM5402模块的MAC端,通过3个连接数据包建立连接后,数据传输到COM5402模块的TCP_RX端(PHY_RX=>Src_o=>MAC_RX=>TCP_RX)。如图7、8、9所示。

图7 联合仿真波形图2(PHY_RX=> Src_o)

图8 联合仿真波形图3(PHY_RX=> Src_o)

图9 联合仿真波形图4(MAC_RX=>TCP_RX)

3.2 系统的硬件调试

如图10所示搭建测试环境。自协商成功,通过JTAG链烧写WRPC自带的UDP传输数据包的程序进入FPGA,打开Wireshark抓包软件观测发送和接收数据包的结果。测试结果如图11所示。其中PC的IP地址设置为192.168.0.12,网关设置为192.168.0.1。电路板的IP地址设置为192.168.0.100,网关设置为192.168.0.1。从图11可以观测到当电路板向PC机进行一次ARP确认后,电路板开始不断地向电脑发送UDP数据包。因此说明整个系统的硬件设计无问题。

图10 系统测试环境

图11 UDP协议抓包实验结果

3.3 系统的软硬件联调

测试步骤:

1)系统配置

系统硬件搭建完毕,接通电源自协商成功后,通过JTAG链将TCP/IP协议程序烧写进FPGA,再进行系统配置,主要包括电路板IP地址和MAC地址以及端口号的配置。本系统同时用到静态配置和动态配置,静态配置指在COM5402的配置端口直接赋值;动态配置是通过USB串口输入,将值赋给COM5402的配置端口。

IP设置由串口写入,建立连接以后依次输入如下指令:

Init erase

Init add ip set x.x.x.x

Init add sfp detect

Init add sfp match

Init add calibration

Init add mode slave

Init add ptp start

IP设置成功后PC端运行CMD,输入指令ping x.x.x.x检验。

为了方便结果说明,本实验展示都是将电脑IP地址设置为192.168.37.114,电路板IP地址设置为192.168.37.115,MAC地址设置为00-1a-a9-c4-ad-0b,端口号设置为8000。

2)ARP调试

在DOS界面下输入PING 192.168.37.115(电路板IP地址),输入回车键。电脑会发送此IP地址的ARP广播包,通过Wireshark抓包工具来观测ARP应答包回馈给电脑,同时观测到ICMP数据包PING通电路板IP地址,如图12所示。此外在DOS编程环境下输入指令arp-a查看电脑的MAC地址缓存表,可以检测到电脑已经识别了电路板的MAC地址和IP地址,如图13所示。

图12 ARP数据包检测

图13 DOS环境下验证电路板MAC地址

3)三次握手

在TCP层完成三次握手,如图14所示。帧1和帧2表示一次ARP握手,帧3、帧4和帧5表示TCP连接的三次握手,说明系统连接成功。

图14 三次握手信号图

4)数据包回环测试

当验证系统可以连接后,可以根据功能需求对C++程序进行相应的修改后再运行,比如需要PC向FPGA发送数据,那么就将C++程序修改成发送数据的程序;需要FPGA向PC发送数据,那么就将C++程序修改为接受数据即可。最后打开Wireshark抓包软件进行数据包的抓取分析。图15是128 Byte的数据包回环测试,具体实现方法是电脑每隔1 ms发送长度为128 Byte的数据给电路板,电路板收到后立即再将数据原封不动地回馈给电脑。其目的是验证系统是否双向连通。

5)数据传输

以太网帧最小长度为64 Byte,减去包头54 Byte和帧尾4 Byte的CRC校验位后,FPGA向PC传输最小数据长度为6 Byte,如图16所示。同样由于最大帧长度不超过1 518 Byte,减去包头54 Byte和帧尾4 Byte的CRC校验位后,传输数据最大长度为1 460 Byte,如图17所示。

图15 128 Byte的数据包回环测试

图16 FPGA向PC传送最小数据长度

图17 FPGA向PC传输数据的最大长度

6)TCP/IP性能测试

性能指标主要包括吞吐量,稳定性等。电路板向电脑发送固定间隔时间和固定长度的数据包,电脑根据一定时间内接收数据包计算吞吐量,且长时间的测试判断是否丢包来检测稳定性。图18是系统测试的吞吐量结果图。其中FPGA向电脑发送最大速率的数据,并且数据是每过8 bit就加1的方式一直累加的方式一直传输。部分数据可以如图19所示。

图18 系统吞吐量测试

图19 数据包部分数据展示

4 结语

在软件方面,根据TCP/IP协议相关知识设计了整个系统的软件流程框架,编写了各个模块VHDL代码,对每个模块的代码进行了综合和功能仿真。

在硬件方面,根据软件流程的需要,设计并制作了硬件电路,完成了硬件初步调试。

根据软件仿真和硬件调试的结果进行系统联调,并结合相关C++程序和抓包工具联合测试整个系统的相关性能。结果表明系统的性能良好,运行可靠,满足项目需求。

[1]陈维良,赵俊超,魏少军.TCP/IP协议的ASIC设计与实现[J].微电子学,2002,32(2):97-101.

[2]MACLEAN R A,BARVICK S E.An outboard processor for high performance implementation of transport layer protocols[C]//Global Telecommunications Conference, 1991. GLOBECOM ‘91.’Countdown to the New Millennium. Featuring a Mini-Theme on: Personal Communications Services. IEEE, 1992:1728-1732.

[3] MARKATOS E P.Speeding up TCP/IP:faster processors are not enough[C]//Performance, Computing, and Communications Conference, 2002.IEEE International.IEEE,2002:341-345.

[4] 陈勇.Internet与TCP/IP协议及其新进展[J].现代计算机,1997(3):38-40.

[5]STEVENS W R.TCP/IP详解 卷1:协议[M].范建华,译.北京:机械工业出版社,2000.

[6]WRIGHT G.R,STEVENS W R.TCP/IP详解卷2:实现[M].陆雪莹,蒋慧,译.北京:机械工业出版社,2000.

ResearchonTCP/IPProtocolDataTransmissionbasedonFPGA

LURuiqia,OUXianfenga,b

(a. College of Information & Communication Engineering; b.Key Laboratory of Optimization & Control for Complex Systems, Hunan Institute of Science and Technology, Yueyang 414006, China)

Using FPGA to realize the TCP/IP protocol stack and Ethernet MAC controller not only has the advantages of low power consumption, small size and high reliability, but also has very high data processing speed and improve the performance of the system. In this paper, a PCB of FPGA based on Spartan6 series was designed using Mentor plate-making software. Then, Verilog HDL and VHDL language was used to write the program codes of data input and output module according to TCP / IP protocol. Finally, the hardware and software testing using ISE testing tools was done and the performance testing of the entire system was completed. Tests results show that the performance of system is good and has reached the basic design requirements, and the system is able to carry out high-speed data transmission and runs stable and reliable.

Field-Programmable Gate Array; TCP/IP protocol; data transmission

10.13542/j.cnki.51-1747/tn.2017.04.001

2017-10-30

国家自然科学基金(51704115);湖南省自然科学基金(2017JJ3099);湖南省科技计划项目(2016TP1021);湖南省教育厅项目(16C0723)

鲁睿其(1988—),女,助教,硕士,研究方向:硬件开发、电子通信。

欧先锋(1983—),男,讲师,博士,研究方向:图像处理/视频压缩编码及传输,电子邮箱:ouxf@hnist.edu.cn。

TN919

A

2095-5383(2017)04-0001-05

猜你喜欢
电路板IP地址数据包
二维隐蔽时间信道构建的研究*
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
铁路远动系统几种组网方式IP地址的申请和设置
SmartSniff
IP地址切换器(IPCFG)
废旧手机电路板中不同金属回收的实验研究
基于SNMP的IP地址管理系统开发与应用
96 芯插接电路板控制系统的故障设置装置设计
公安网络中IP地址智能管理的研究与思考
废弃电路板拆解技术研究现状及展望