工业以太网协议详情栈FPGAIP核的实现.doc

上传人:夺命阿水 文档编号:12946 上传时间:2022-06-27 格式:DOC 页数:8 大小:292KB
返回 下载 相关 举报
工业以太网协议详情栈FPGAIP核的实现.doc_第1页
第1页 / 共8页
工业以太网协议详情栈FPGAIP核的实现.doc_第2页
第2页 / 共8页
工业以太网协议详情栈FPGAIP核的实现.doc_第3页
第3页 / 共8页
工业以太网协议详情栈FPGAIP核的实现.doc_第4页
第4页 / 共8页
工业以太网协议详情栈FPGAIP核的实现.doc_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《工业以太网协议详情栈FPGAIP核的实现.doc》由会员分享,可在线阅读,更多相关《工业以太网协议详情栈FPGAIP核的实现.doc(8页珍藏版)》请在课桌文档上搜索。

1、word工业以太网协议栈FPGAIP核的实现随着物联网的广泛应用,在嵌入式系统中,越来越多的设备、传感器使用工业以太网作为通信媒介,因为工业以太网有着速度与安全可靠双重优势。在较高端设备中,由于存在如DSP、ARM之类的处理器,指令代码运行处理速度很快,再有OS进展管理,此时将以太网网卡芯片驱动程序和协议栈参加进来,比拟简单方便,易于设备管理和功能更改,这种方案已经应用的非常成熟了。在某些低端设备中,只有单片机作为处理器,如果还是像上述那样实现以太网的话,单片机的负荷势必会大大增加,对于与单片机相连的设备的实时性控制就会大大降低。因此,在要参加以太网通信的设备中选用单片机作为处理器不是一种好方

2、案。除了单片机、DSP、ARM外,还有一种处理器也被广泛应用,那就是FPGA。现在FPGA的功能越来越多,片资源也越来越多。像新出的ALTERA FPGA部就已有ARM硬核,在ALTERA的所有系列中都能实现软核CPU,此CPU的运行速度相比一般的单片机来说还要更快些。但如果用它来管理TCP/IP协议栈,我觉得也就会像单片机一样,负载过重,就像让一个10岁的小孩挑50斤的担子一样。此外,我个人觉得,软核CPU毕竟没有单片机稳定,在FPGA系统中,让软核CPU只做管理就好了,而像以太网协议栈的这样独立性强,又比拟复杂的工作就由一个IP核来实现。虽然这样的IP核实现起来不容易,但对于实时性要求高、

3、数据传输速度要求高、稳定性要求高的设备,采用这种方案是非常好的。因此,我想根据嵌入式设备的特点,简化TCP/IP协议栈的容,实现嵌入式设备需要的功能,而不需要的就剔除掉。比如,不需要那么复杂的ARP管理,只需将缓存上一次有效的IP-MAC地址;如果只用UDP协议,那么就只需实现简易ARP、IP和UDP就可以了。这样不仅能节约硬件资源,同时简化了程序,简化了逻辑,提高了系统的稳定性,越简单的事物,稳定性越好。1NET_STACK IP核概述IP核功能简介1)此IP核支持TCP/IP协议栈中的ARP简化、IP、UDP、TCP简化、ICMP-Ping协议,覆盖协议栈中的网络接口层、网际层和传输层,能

4、应用于10/100/1000Mbps网络系统中。2)此IP核中只处理ARP应答,不发送ARP请求;只有一个MAC-IP对缓冲区,即只保存上次接收到的来自主机的ARP请求中的MAC-IP对。3)IP协议支持IP首部长度为20,协议类型为IPV4,不支持分片、选项等功能,发送IP包中的TTL值固定为64。4)TCP协议支持TCP首部长度为20,不支持SACK、窗等选项功能,单次传输最大净负荷数据为1460字节。5)此IP核支持完整的UDP协议,单次传输最大净负荷数据为1472字节。6)在IP核配置时UDP和TCP不能同时被包含,ICMP可以和他们组合包含,只需在配置文件过宏定义来加载、卸除组件,操

5、作非常简单。7)IP核中用于缓冲接收和发送的数据的缓存区大小可以独立配置。8)应用于IP核的网络参数可以动态在线调整。9)此IP核能应用于交换机组成的局域网络中。IP核接口此IP核在UDP模式和在TCP模式下的顶层接口分别如如下图和图所示,前缀为nat_的信号为需要设置的网络参数;前缀为L3的信号为与应用层逻辑接口的信号,它遵循Avalon Stream接口协议,其中ready信号对应的readyLatency等于0,data信号的数据模式是大端模式,此接口在SignalTapII中捕获传输奇数字节的时序图如如下图所示;前缀为L1的信号为与网络芯片控制器逻辑接口的信号,它也遵循Avalon S

6、tream接口协议。图1.1 NET_STACK IP核UDP模式顶层接口图1.2 NET_STACK IP核TCP模式顶层接口图接口时序图IP核使用NET_STACK IP核使用非常简单,在应用时可以采用三种方式将此IP核集成到您的系统中:1)采用Verilog源码方式,将此IP核看做一个模块集成到您的系统中;2)采用原理图方式,将此IP的顶层模块转化为原理图符号,进而集成到您的系统中;3)采用组件方式,在SOPC Builder或Qsys中将此IP核转化为一个组件,进而集成到您的系统中。无论采用哪种方式,在系统工程编译之前,需要做如下工作:1)设置IP核的工作模式,UDP或TCP模式,加载

7、/卸除Ping功能组件;2)设置IP核接收缓冲区和发送缓冲区RAM的大小;3)设置网络参数:本地物理地址nat_mac_addr、本地IP地址nat_ip_addr和本地端口号nat_port。2NET_STACK IP核性能评估资源占用此IP核占用的资源类型只有逻辑资源和片RAM两种,如下图和图分别为IP核在UDP模式和TCP模式下在测试工程中占有的资源情况,目标器件为ALTERA公司的CycloneII系列EP2C35F484C7,开发环境为。图2.1 NET_STACK IP核UDP模式占用资源情况图2.2 NET_STACK IP核TCP模式占用资源情况Ping功能Ping功能属于IC

8、MP协议,它是一个非常好用且有用的TCP/IP工具,是网络维护中最重要的一个命令,它主要的功能是检测网络的连通状况和分析网络速度。此IP核能非常方便地加载和卸除Ping功能组件,只要在文档过宏ICMP_INCLUDED的定义或取消来控制即可。在ALTERA公司器件EP2C35F484中编译,综合分析优化参数设置为“Balance,如如下图所示,只占用229个逻辑单元,具体消耗的资源如如下图所示。图2.3 QuartusII中分析综合优化参数图2.4 PING组件占用资源在单板中运行包含Ping功能的IP核,且单板的IP设置为,在上位机中运行Ping命令,界面如如下图所示:图2.3 DOS界面下

9、Ping测试数据处理速度测试测试环境:采用闭环LOOPBACK测试系统,即将与应用层逻辑接口的接收信号和发送信号对应短接,器件为CycloneII系列EP2C35F484C7,编译器为,网卡控制器为DM9000CEP,测量的时间段为NET_STACK接收到DM9000A_CTRLER此为网络芯片控制器IP核发送区的最后一个数据至NET_STACK向DM9000A_CTRLER发送第一个数据这段时间,下表中所有时长反映的是协议栈分析数据包的响应速度,与所用网络是10M或100M无关。处理类型用户数据个数字节所用时长clkARP应答-30UDP发送1020UDP发送4020UDP发送10020UD

10、P发送40020UDP发送80020UDP发送102420UDP接收1015UDP接收4015UDP接收10015UDP接收40015UDP接收80015UDP接收102415TCP发送4025TCP发送40025TCP发送102425TCP接收4013TCP接收40013TCP接收102413从上述表中可以看出,采用UDP/TCP协议接收不同的用户数据,IP核处理接收数据的时间是一样的,发送也一样,IP核处理发送的数据的时间也不随用户数据个数的多少而改变。由上述可知,TCP/IP协议栈IP核与外部器件不存在直接联系,因此,它的系统时钟速率不受外部器件IO访问速率的影响,只与FPGA器件的速度

11、等级以与IP核部结构有关,根据公式1可以计算出本文中的TCP/IP协议栈IP核的数据处理速率。S =M/NTclk(式1)结合上述表中数据,M 取值为1024,Tclk取值为10ns系统时钟为100MHz,N 取最大值为20,计算得到S 约为40960Mbps,远大于目前千兆网的数据传输速率。因此,此TCP/IP协议栈IP核不仅可以适用于目前100/1000M网络系统,而且还可以适用于未来的10G网络系统。100M网络净负荷测速测试环境:器件为CycloneII系列EP2C35F484C7,系统时钟为100MHz,网卡控制器为DM9000CEP,上位机通过发送命令控制含此IP核的单板,让单板连

12、续发送多个数据包,同时记录发送数据包的时间,以此来测量网络的上行净负荷速率,测试结果如下表所示。协议类型最大净负荷最小速率最大速率UDP1472字节TCP1460字节网络拓扑结构此IP核能应用于交换机组成的局域网络,测试实物图如如下图2.4所示。局域网络通信测试最高时钟频率在ALTERA公司的CycloneII系列EP2C35F484C7器件,开发环境中的TimeQuest Timing Analyzer组件下测试得到的IP核系统时钟clk最高为。注:如果需要更高的时钟频率,可以在牺牲资源面积的前提下将系统时钟clk进一步提高。3参数更改此IP核在应用过程中有如下参数需要修改:1)工作模式,默

13、认值:UDP模式;2)接收和发送缓冲区RAM的大小,默认值:接收和发送RAM大小都为5122字节;3)网络参数,默认值:MAC=01-02-03-04-05-06,PORT=1024。更改工作模式IP核中包含三个组件:ICMP-Ping组件、UDP组件、TCP组件,在实际应用中需要使用哪些功能,如此在文件中包含这个组件的宏,其中UDP组件和TCP组件不能同时使用。例如:要使用Ping功能和UDP通信,如此在文件将代码修改为:/= Protocol Included =/define ICMP_INCLUDED1define UDP_INCLUDED1/ UDP和TCP只能选择一个/define

14、TCP_INCLUDED1更改RAM大小此IP核中的发送通道和接收通道具有独立的数据缓冲区RAM,可以分别进展更改其大小,更改的步骤如下:步骤一:使用QuartusII中的MegaWizard Plug-in Manager进展RAM参数设置,设置细节请参看工业以太网协议栈NET_STACK IP核技术设计文档中的章节的容。步骤二:更改中的RBW和/或TBW的值,此值须和步骤一中设置的参数值一致。更改网络参数此IP核中的网络参数有本地MAC地址、本地IP地址、本地端口号,当需要更改其中任意一个或多个时,只需在net_stack_top实例化的时候,在接口中赋值即可。例如,想要将网络参数设置为:

15、MAC地址为01-60-6E-11-02-0F,IP地址为,本地端口号为6800,如此接口参数设置为:.nat_ip_addr(32hC0A8001F),.nat_port(16h1A90),.nat_mac_addr(48h01606E11020F),在上一篇博文中,介绍了如何在FPGA中实现UDP、ARP、IP子协议与其使用,经过调试、应用后,发现有些地方是可以改良的,比如在接收通道上,对于IP、UDP子协议的分析,首部的分析可以在网络接口层中就解析出来,然后再在IP、UDP模块中检测判断,这样不仅可以加快分析处理的速度,而且可以简化结构、逻辑编写。在实际应用中,除了UDP被广泛使用外,T

16、CP也常常被应用在嵌入式系统中。开始一想到TCP的管理,就感觉很复杂,如果在FPGA中实现,肯定不容易,也就没有再细想下去。后来静下心来,仔细阅读了TCP协议,对TCP状态跳转图进展分析,发现其实不是那么复杂,可以简化,去掉一些复杂功能,只保存最根本的结构,就可以用于一些网络结构简单的嵌入式系统中。TCP协议之所以复杂,是因为它考虑的很全面,像分片、滑动窗、流量监控等等,它覆盖面很宽,可以满足很多情况的应用,但其最根本的也就是管理连接、发送应答、出错超时重发,重点是看重其是面向连接的,应用层不需要对数据传输进展维护,同时它分为客户端和服务器两种情况。而对于一些网络结构简单的系统,比如PC机与单

17、板是直连,或中间只有一个路由器,网络上的数据很“规整,没有无用的数据传输,单板侧作为一个服务器端,接收PC机客户端的访问,然后应答相应的数据,以实现PC机对单板的监控和数据传输。经过分析,我将TCP协议简化为:首部长度固定,只支持FIN、SYN、ACK功能选项,只作为服务器,一次只负责一个数据包的管理即缓冲区中只保存一个数据包,只有待此包发送正确后才能接收新的数据包。然后,按照上述第一段中提到的结构,采用Verilog HDL语言,在FPGA中实现了作为服务器功能的TCP传输功能。经过对时序的分析、修改,再调试,终于在原有TCP/IP协议栈IP核中添加了TCP传输功能,不过出错自恢复功能还不完善,如果出现网络错误,需要从复位开始,重新连接才可以恢复正常。TCP传输功能还需要在实际应用中锤炼,得到进一步完善。8 / 8

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号