




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、冉冉红日的博客工业以太网协议栈FPGA IP核的实现随着物联网的广泛应用,在嵌入式系统中,越来越多的设备、传感器使用工业以太网作为通信媒介,因为工业以太网有着速度与安全可靠双重优势。在较高端设备中,由于存在如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就可以了。这样不仅能节约硬件资源,同时简化了程序,简化了逻辑,提高了系统的稳定性,越简单的事物,稳定性越好。1 NET_STACK IP核概述1.1
4、0; IP核功能简介1) 此IP核支持TCP/IP协议栈中的ARP(简化)、IP、UDP、TCP(简化)、ICMP-Ping协议,覆盖协议栈中的网络接口层、网际层和传输层,能应用于10/100/1000Mbps网络系统中。2) 此IP核中只处理ARP应答,不发送ARP请求;只有一个MAC-IP对缓冲区,即只保存上次接收到的来自主机的ARP请求中的MAC
5、-IP对。3) IP协议支持IP首部长度为20,协议类型为IPV4,不支持分片、选项等功能,发送IP包中的TTL值固定为64。4) TCP协议支持TCP首部长度为20,不支持SACK、窗等选项功能,单次传输最大净负荷数据为1460字节。5) 此IP核支持完整的UDP协议,单次传输最
6、大净负荷数据为1472字节。6) 在IP核配置时UDP和TCP不能同时被包含,ICMP可以和他们组合包含,只需在配置文件中通过宏定义来加载、卸除组件,操作非常简单。7) IP核中用于缓冲接收和发送的数据的缓存区大小可以独立配置。8) 应用于IP核的网络参数可以动态在线调整。9)
7、160; 此IP核能应用于交换机组成的局域网络中。1.2 IP核接口此IP核在UDP模式和在TCP模式下的顶层接口分别如下图1.1和图1.2所示,前缀为nat_的信号为需要设置的网络参数;前缀为L3的信号为与应用层逻辑接口的信号,它遵循Avalon Stream接口协议,其中ready信号对应的readyLatency等于0,data信号的数据模式是大端模式,此接口在SignalTapII中捕获传输奇数字节的时序图如下图1.3所示;前缀为L1的
8、信号为与网络芯片控制器逻辑接口的信号,它也遵循Avalon Stream接口协议。图1.1 NET_STACK IP核UDP模式顶层接口图1.2 NET_STACK IP核TCP模式顶层接口图1.3 接口时序图1.3 IP核使用NET_STACK IP核使用非常简单,在应用时可以采用三种方式将此IP核集成到您的系统中:1) 采用Verilog源码方式,将此IP核看做一个模块集成到您的系统中;2)
9、160; 采用原理图方式,将此IP的顶层模块转化为原理图符号,进而集成到您的系统中;3) 采用组件方式,在SOPC Builder或Qsys中将此IP核转化为一个组件,进而集成到您的系统中。无论采用哪种方式,在系统工程编译之前,需要做如下工作:1) 设置IP核的工作模式,UDP或TCP模式,加载/卸除Ping功能组件
10、;2) 设置IP核内接收缓冲区和发送缓冲区RAM的大小;3) 设置网络参数:本地物理地址nat_mac_addr、本地IP地址nat_ip_addr和本地端口号nat_port。2 NET_STACK IP核性能评估2.1
11、资源占用此IP核占用的资源类型只有逻辑资源和片内RAM两种,下图2.1和图2.2分别为IP核在UDP模式和TCP模式下在测试工程中占有的资源情况,目标器件为ALTERA公司的CycloneII系列EP2C35F484C7,开发环境为QuartusII 11.0。 图2.1 NET_STACK IP核UDP模式占用资源情况 图2.2 NET_STACK IP核TCP模式占用资源情况 2.2 Ping功能Ping功能属于ICMP协议,它是一个非常好用且有用的TCP/IP工具,是网络维护中最重要的一个命令,它主要
12、的功能是检测网络的连通状况和分析网络速度。此IP核能非常方便地加载和卸除Ping功能组件,只要在net_define.v文档中通过宏ICMP_INCLUDED的定义或取消来控制即可。在ALTERA公司器件EP2C35F484中编译,综合分析优化参数设置为“Balance”,如下图2.3所示,只占用229个逻辑单元,具体消耗的资源如下图2.4所示。图2.3 QuartusII中分析综合优化参数 图2.4 PING组件占用资源在单板中运行包含Ping功能的IP核,且单板的IP设置为,在上位机中运行Ping命令,界面如下图2.3所示:图2.3 DOS界面下Ping测试2.3
13、160; 数据处理速度测试测试环境:采用闭环LOOPBACK测试系统,即将与应用层逻辑接口的接收信号和发送信号对应短接,器件为CycloneII系列EP2C35F484C7,编译器为QuartusII 11.0,网卡控制器为DM9000CEP,测量的时间段为NET_STACK接收到DM9000A_CTRLER(此为网络芯片控制器IP核)发送区的最后一个数据至NET_STACK向DM9000A_CTRLER发送第一个数据这段时间,下表中所有时长反映的是协议栈分析数据包的响应速度,与所用网络是10M或100M无关。处理类型用户数据个数(字节)所用时长(clk)AR
14、P应答-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核与外部器件不存在直接联系,
15、因此,它的系统时钟速率不受外部器件IO访问速率的影响,只与FPGA器件的速度等级以及IP核内部结构有关,根据公式1可以计算出本文中的TCP/IP协议栈IP核的数据处理速率。 S =(M×)/(N×Tclk)
16、160; (式1) 结合上述表中数据,M 取值为1024,Tclk取值为10ns(系统时钟为100MHz),N 取最大值为20,计算得到S 约为40960Mbps,远大于目前千兆网的数据传输速率。因此,此TCP/IP协议栈IP核不仅可以适用于目前100/1000M网络系统,而且还可以适用于未来的10G网络系统。2.4 100M网络净负荷测速测试环境:器件为CycloneII系列EP2C35F484C7,系统时钟为100MHz,网卡控制器为DM9000CEP,
17、上位机通过发送命令控制含此IP核的单板,让单板连续发送多个数据包,同时记录发送数据包的时间,以此来测量网络的上行净负荷速率,测试结果如下表所示。 协议类型最大净负荷最小速率最大速率UDP1472字节32.1Mbps76.9MbpsTCP1460字节21.6Mbps35.7Mbps2.5 网络拓扑结构此IP核能应用于交换机组成的局域网络,测试实物图如下图2.4所示。 图2.4 局域网络通信测试2.6 最高时钟频率在ALTERA公司的CycloneII系
18、列EP2C35F484C7器件,QuartusII 11.0开发环境中的TimeQuest Timing Analyzer组件下测试得到的IP核系统时钟clk最高为122.05MHz。注:如果需要更高的时钟频率,可以在牺牲资源面积的前提下将系统时钟clk进一步提高。3 参数更改此IP核在应用过程中有如下参数需要修改:1) 工作模式,默认值:UDP模式;2)
19、60; 接收和发送缓冲区RAM的大小,默认值:接收和发送RAM大小都为512×2字节;3) 网络参数,默认值:MAC=01-02-03-04-05-06,PORT=1024。3.1 更改工作模式IP核中包含三个组件:ICMP-Ping组件、UDP组件、TCP组件,在实际应用中需要使用哪些功能,则在net_define.v文件中包含这个组件的宏,其中UDP
20、组件和TCP组件不能同时使用。例如:要使用Ping功能和UDP通信,则在net_define.v文件将代码修改为:/= Protocol Included =/define ICMP_INCLUDED 1 define UDP_INCLUDED 1 / UDP和TCP只能选择一个/define TCP_INCLUDED 13.2
21、60; 更改RAM大小此IP核中的发送通道和接收通道具有独立的数据缓冲区RAM,可以分别进行更改其大小,更改的步骤如下:步骤一:使用QuartusII中的MegaWizard Plug-in Manager进行RAM参数设置,设置细节请参看工业以太网协议栈NET_STACK IP核技术设计文档中的章节2.2的内容。步骤二:更改net_define.v中的RBW和/或TBW的值,此值须和步骤一中设置的参数值一致。3.3 更改网络参数此IP核中的网络参数有本地MAC地址、本地IP地址、本地端口号
22、,当需要更改其中任意一个或多个时,只需在net_stack_top实例化的时候,在接口中赋值即可。例如,想要将网络参数设置为:MAC地址为01-60-6E-11-02-0F,IP地址为,本地端口号为6800,则接口参数设置为:.nat_ip_addr (32'hC0A8001F
23、160; ), .nat_port (16'h1A90
24、160; ), .nat_mac_addr (48'h01606E11020F ), 在上一篇博文中,介绍了如何在F
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 魅力女性的课件
- 济南市2024-2025学年八年级上学期语文月考测试试卷
- 高速路安全知识培训心得
- 高速业务知识培训课件要求
- 医院保洁、中央运输服务方案
- 高血压基本知识培训总结课件
- 建设项目可行性研究技术服务合同
- 抽水蓄能电站移民安置监理评估合同
- 电脑培训知识付费平台课件
- 电脑主机知识培训课件
- 会计从业资格基础知识汇总
- 项目干系人管理评估
- 保险行业纳税筹划案例分析
- 私立民办高中学校项目建议书
- 比亚迪汽车发展史
- 茶与健康 第二讲 茶成分课件
- 手术部位标识
- 项目总结ppt范文
- 医院体检中心现状与五年发展规划
- 高中思想政治-人教版新教材必修1第四课第一框:中国特色社会主义进入新时代教学设计学情分析教材分析课后反思
- 不错!我真的很不错
评论
0/150
提交评论