工业以太网协议栈FPGAIP核的实现

上传人:s9****2 文档编号:489070577 上传时间:2022-10-16 格式:DOCX 页数:8 大小:304.60KB
返回 下载 相关 举报
工业以太网协议栈FPGAIP核的实现_第1页
第1页 / 共8页
工业以太网协议栈FPGAIP核的实现_第2页
第2页 / 共8页
工业以太网协议栈FPGAIP核的实现_第3页
第3页 / 共8页
工业以太网协议栈FPGAIP核的实现_第4页
第4页 / 共8页
工业以太网协议栈FPGAIP核的实现_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《工业以太网协议栈FPGAIP核的实现》由会员分享,可在线阅读,更多相关《工业以太网协议栈FPGAIP核的实现(8页珍藏版)》请在金锄头文库上搜索。

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

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

3、对于实时性要求高、数据传输速度要求高、稳定性要求高的设备,采用这种方案是非常好的。因此,我想根据嵌入式设备的特点,简化 TCP/IP协议栈的内容,实现嵌入式设备需要的功能,而不需要的就剔除掉。比如,不需要那么复杂的ARP管理,只需将缓存上一次有效的IP-MAC地址;如果只用 UDP议,那么就只需实现简易 ARR IP和UDP就可以了。这样不仅能节约硬件资源,同时简化了程序,简化了逻辑,提高了系统的稳定性,越简单的事物,稳定性越好。1 NET_STACK I骇概述1.1 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核配置时UD所口 TCP不能同时被包含,ICM

5、P可以和他们组合包含, 只需在配置文件中通过宏定义来加载、卸除组件,操作非常简单。7) IP核中用于缓冲接收和发送的数据的缓存区大小可以独立配置。8) 应用于IP核的网络参数可以动态在线调整。9) 此IP核能应用于交换机组成的局域网络中。1.2 IP核接口此IP核在UDP模式和在TCP模式下的顶层接口分别如下图1.1和图1.2所示,前缀为nat_的信号为需要设置的网络参数;前缀为 L3的信号为与应用层逻辑接口的信号,它遵循Avalon Stream 接口协议,其中ready信号对应的readyLatency 等于0, data信号的数据模式是大端模式,此接口在SignalTapII中捕获传输奇

6、数字节的时序图如下图1.3所示;前缀为 L1的信号为与网络芯片控制器逻辑接口的信号,它也遵循AvalonStream接口协议。:net_siacK_tc pic林ratnat_(p_addft:31. 0|L3TxUdp_rttadyLSRxU ds-validL3RxU cp_eni ptyL3RxUdp_datsI1f .0L3R xll dp_ st a rtMpadc fitL3RxUdp_enaofpacketL1 T?C_? 3lHjL1 T_empt/L1TN_datan5r.QjLlT?L_startcfpick etLefi do f jacket_1 R.x_radyi口I

7、|i|iiiiiI-iiI!inBL_ port15. U nat_m ac_a idrl47. .01 L3T)tUdp_ valid LiIiU dp._empty L3TxUdp_dBtan5.0I L37xU dp_a: arc flacket LIxU dp_endcfpacket L3RxUdp_neady Ll7x_rea dy L1Rx_vg1icL1 R?c_ferripLy L1Rxdsia15.t i_1 Rx_&tartofpac6t Li Rx_e-n def packet in stj图 1.1 NET_STACK IP核UDP英式顶层接口:nel吗F &IF MH

8、4 HiMAipiHBiriyiim* 1 ! i 11ar口i事 m mb imbm |Mini苜lapimIBelkL3Ix It p_readvj1rsiURxTc。加。natjpLatMH31 QIL3R3tlcp_emp(ynai_pcn(i5 SL3R)iTcp_aaca(i5 QJ ojL3RxTcp_startorpatKei .口L3TxTcp_vaiLaL3R t Tc p _eodo f pat KtL3T( Tc p_empl yL3Tc pJirikOnL3Tm Tcp_data 15 OjU Tx_v addL3Tx TcpatKetLlTx_ftfnply.t3T

9、xTe p endofpac ke(UT督回L3Rj( It readyL1T _fitartor packetLiix_reaUTtendof packetLiaiidL1 R.x _readyLlRxjempty1LiRxjaaiai5 5L iRitj&iariaf paciKeiLiRs_entiofpatKet1 :图1.2 NET_STACK IP 核TCP模式顶层接口图1.3 接口时序图1.3 IP核使用NET_STACK IP核使用非常简单,在应用时可以采用三种方式将此IP核集成到您的系统中:1) 采用Verilog 源码方式,将此IP核看做一个模块集成到您的系统中;2) 采用

10、原理图方式,将此 IP的顶层模块转化为原理图符号,进而集成到您的系统中;3) 采用组件方式,在 SOPC Builder或Qsys中将此IP核转化为一个组件,进而集成到您的系统中。无论采用哪种方式,在系统工程编译之前,需要做如下工作:1) 设置IP核的工作模式,UDP或TCP模式,加载/卸除Ping功能组件;2) 设置IP核内接收缓冲区和发送缓冲区RAM勺大小;3) 设置网络参数:本地物理地址nat_mac_addr、本地IP地址nat_ip_addr 和本地端口号 nat_port 。2NET_STACK I骇性能评估2.1 资源占用此IP核占用的资源类型只有逻辑资源和片内 RA晒种,下图2

11、.1和图2.2分别为IP核在UDP英式和TCP模式下在测试工程中占有的资源情 况,目标器件为 ALTERA公司的Cyclonell 系列EP2c35F484C7开发环境为 QuartusII 11.0。图2.1 NET_STACK IP核UDP模式占用资源情况图2.2 NET_STACK IP核TCP模式占用资源情况2.2 Ping 功能Ping功能属于ICMP协议,它是一个非常好用且有用的TCP/IP工具,是网络维护中最重要的一个命令,它主要的功能是检测网络的连通状况和分析网络速度。此IP核能非常方便地加载和卸除Ping功能组件,只要在 net_define.v文档中通过宏ICMP_INCL

12、UDED勺定义或取消来控制即可。在ALTERA公司器件EP2c35F484中编译,综合分析优化参数设置为 Balance ”,如下图2.3所示,只占用 229个逻辑单元,具体消耗的资 源如下图2.4所示。沁卡T 心声J &如找UM.wl w 亡加例豺gJ AM 由 Mt修用注VQM 5E btf mdistf tmless wrSiWTffl fMmRnv rwyrrfhew g erabM.OO We图2.3 QuartusII中分析综合优化参数EntityLogk CelsL edceted Logic Regrstersm 口_制0 : *p_send_i5r115(115)炉0刀Jsr

13、二I 印的1;1券ipjecv:jp_recv_tsr74电7(27)图2.4 PING组件占用资源在单板中运行包含Ping功能的IP核,且单板的IP设置为192.168.0.31 ,在上位机中运行Ping命令,界面如下图 2.3所示:图2.3 DOS界面下Ping测试2.3数据处理速度测试Cyclonell 系歹U EP2c35F484C7,测试环境:采用闭环 LOOPBAC蒯试系统,即将与应用层逻辑接口的接收信号和发送信号对应短接,器件为编译器为 QuartusII 11.0,网卡控制器为 DM9000CEP测量的时间段为 NET_STAC啜收到DM9000A_CTRLER此为网络芯片控制

14、器IP核)发送区的最后一个数据至 NET_STACK DM9000A_CTRLER:送第一个数据这段时间,下表中所有时长反映的是协议栈分析数据包的响应速度,与所用网络是 10M或100M无关。处理类型用户数据个数(字节)所用时长(clk )ARP应答-30UDP发送1020UDP发送4020UDP发送10020UDP发送40020UDP发送80020UDP发送102420UDP接收1015UDP接收4015UDP接收10015UDP接收40015UDP接收80015UDP接收102415TCP发送4025TCP发送40025TCP发送102425TCP接收4013TCP接收40013TCP接收102413从上述表中可以看出,采用UDP/TCP协议接收不同的用户数据,IP核内处理接收数据的时间是相同的,发送也一样,IP核内处理发送的数据的时间也不随用户数据个数的多少而改变。由上述可知,TCP/IP协议栈IP核与外部器件不存在直接联系,因此,它的系统时钟速率不受外部器件IO访问速率的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号