下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于FPGA 的工业以太网灵活解决方案基于FPGA 的工业以太网灵活解决方案类别:电子综合摘要:随着工业以太网的发展,工业设备制造商们为使自己的产品更具有市场竞争力, 都在寻找一种具有高性价比的解决方案。本文提出了使用FPGA 传送工业以太网协议的 设计方法,这种解决方案的灵活性在于只需用一个电路板就能实现传送不同的工业以太 网协议,并且具有开发成本低、使用周期长的特点。本文还介绍了基于FPGA 的工业以 太网的硬件IP 开发的流程以及使用LwIP 协议实现其软件IP 功能。 1 引言 现在有很多以以太网为基础的工业通信协议,并都有自己的优缺点,其中有些协议是开 源的,这让开发者可以设计出自己
2、的协议。这也意味着这些开源的协议在工业上将更加受到 欢迎,应用也更加广泛。现在还没有统一的协议,而且协议的发展影响着以太网标准的变化, 这就要求能够支持多种协议的设计方法。本文主要提出使用FPGA 来尽可能支持较多的工业 以太网协议并能支持新协议的加入和系统改进。 2 基于FPGA 的工业以太网解决方案 支持多种协议的一般的方法可以通过针对每一种协议都设计一块板卡,在需要时互相替 换来实现。但随着市场上标准的增加和发展,则需要设计出一种性价比高而且还能快速支持 新协议的解决方法。 随着以太网的不断变化,需要开发设计新的电路板,这就会使得成本加大,而且实现的 慢。然而,通过使用带有FPGA 的工
3、业以太网接口就可以解决以上的问题,使用FPGA 最主要 的好处在于它容易重新配置。 在任何时候只需要构造一个电路板和能支持任一种工业以太网 协议的硬件程序。如果要使用不同的协议或是用户改变执行命令,只需花费几秒钟根据具体 需要改写FPGA 的配置文件。这种多协议方法大大降低了开发成本,减小编码量1。 FPGA 与以太网收发器(通常为PHY)结合使用时,它可以完成所有以太网接口的功能。 PHY 和电路板中的物理层接口,数据链路层(MAC)硬件功能可由FPGA 硬件配置程序来实现; 再往上层(3 层以上)的功能是由运行在FPGA 逻辑电路配置的核心处理器上的软件实现的。 FPGA 逻辑电路是可编程
4、的,I/O 管脚支持多种协议,现有的IP 接口应用广泛,所以在现有 的应用处理器和FPGA 之间很容易实现通信信道。一般现有的处理器接口(如I2C,SPI,其他 一些本地并行总线)或系统(PCI,PCI Express,CANopen 等)都可以与FPGA 通信。 由于FPGA 硬件是可编程的,如果想把应用程序封装到FPGA 中,那么可以设计含有多个 微处理器软核。这样做的好处在于它可以减少组件数量,降低成本和功率消耗。此外,完全 基于IP 设计易于移植到新设备上,而且FPGA 的使用周期长,所以这种设计不会很快被淘汰。 对于工业以太网,设计FPGA 也可以有hub 或可以增强以太网通信的相似
5、的硬件。 FPGA 不仅可以实现处理器的复杂结构设计,而且可以实现灵活多变的接口设计,比如 简单的通信接口(如UARTS,并行I/O 等),支持新的存储器的复杂接口(如DRR2/3 等)。以 及新的通信技术(如Bluetooth,Gigabit Ethernet,PCI Express 等)构造基于FPGA 的硬件 设计。 3 构造基于FPGA 的硬件IP 设计 设计处理器和以太网 MAC 硬件看起来很难,但实际上,SOPC Builder 提供了处理器和 以太网MAC 的IP 核,这就变得简单多了。Alteras Quartus的开发环境包含SOPC Builder2,SOPC Builde
6、r 能快速并自动配置、集成和生成基于IP 的系统。 GUI 的截图(图2)中左边列表显示了可用的IP 核。若想在现使用的系统中加入IP 核, 设计者只需双击所需的IP 模块。 选定IP 模块后,会出现配置信息,可以选择相应的选项(图2 右边)。完成这些后,配 置好的IP 功能块就会出现在当前系统设计中,如图窗口的右边。该部件的地址和中断级别 可以改变,可通过GUI 修改系统内的互联结构来改变IP 部件间的连接。处理器能够快速设 计模块和高度优化系统(如图3)。 图中窗口下面显示设计的出错信息,因而开发者可以很容 易的查错纠错。 系统设计好后,设计人员点击“generate”后即生成所要求的系统
7、。该系统生成后,可 作为Quartus原理图设计编辑器的一个功能模块。 如果以后需要修改设计,设计人员只需打开SOPC Builder 使用GUI 来修改,再重新生 成系统,然后用Quartus软件重新组合,就生成了新的配置文件,这样在很短的时间内生 成了一个新的工业以太网协议的硬件设计。 4 网络协议设计 硬件 IP 通常封装作为SOPC Builder 的一个部件,它包含了MAC 和其它的所需的逻辑 电路。对于软件IP 可在经销商出购买,也可以自己通过移植LwIP 协议实现。 LwIP 是Light-weight Internet Protocol 的缩写,即轻量级网络协议。LwIP 是瑞
8、典计算机 科学院的Adam Dunkels 等开发的用于嵌入式系统的TCP/IP 协议栈5。 LwIP 实现的重点是 在保持TCP/IP 协议主要功能的基础上减少对RAM 的占用3,一般它只需要几十K Byte 的 RAM 和40K 左右的ROM 就可以运行,在嵌入式系统中应用相当广泛。在使用和移植的过 程中可根据传输数据的不同要求进行删减或增补。 在设计 LwIP 时,就要考虑到移植问题,把所有和硬件、编译器相关的部分独立出来4, 放在/src/arch 下面。若要移植,只要修改这个目录下的文件即可。 (1)与CPU或编译器相关的include 文件。在LwIP/src/arch/inclu
9、de/arch 目录下,cc.h、cpu.h、 perf.h 中有一些与CPU 或编译器相关的定义,如数据长度、字的高低位顺序等。这应该与用 户的操作系统定义的参数一致。通常,C 语言的结构体(struct)是4 字节对齐的,但是在处理 数据包的时候,LwIP 是通过结构体中不同数据的长度来读取相应的数据的,所以,一定要 在定义struct 的时候使用_packed 关键字,让编译器放弃struct 的字节对齐。 LwIP 也考虑到 了这个问题,所以,在它的结构体定义中有几个PACK_STRUCT_xxx 宏,在移植的时候添 加编译器所对应的_packed 关键字。 (2)sys_arch 操
10、作系统相关部分。sys_arch.c 中的内容是与操作系统相关的一些结构和函 数,主要可以分为四个部分: sys_sem_t 信号量。LwIP 中需要使用信号量进行通信,所以在sys_arch 中应实现信号 量结构体和处理函数: struct sys_sem_t sys_sem_new() /创建一个信号量结构 sys_sem_free() /释放一个信号量结构 sys_sem_signal() /发送信号量 sys_arch_sem_wait() /请求信号量 sys_mbox_t 消息。LwIP 使用消息队列来缓冲、传递数据报文,因此要在sys_arch 中实现消息队列结构。 sys_mb
11、ox_t 以及相应的操作函数: sys_mbox_new() /创建一个消息队列 sys_mbox_free() /释放一个消息队列 sys_mbox_post() /向消息队列发送消息 sys_arch_mbox_fetch() /从消息队列中获取消息 sys_arch_timeout 函数。LwIP 中每个与外界网络连接的线程都有自己的timeout 属性, 即等待超时时间。这个属性表现为每个线程都对应一个sys_timeout 结构体队列,它包括这 个线程的timeout 时间长度,以及超时后应调用的timeout 函数,该函数会做一些释放连接、 回收资源的工作。Timeout 结构体已
12、经在sys.h 中定义好了,而且对结构体队列的数据操作 也由LwIP 负责,我们所要实现的是如下函数: struct sys_timeouts sys_arch_timeouts(void) 这个函数的功能是返回目前正处于运行状态的线程所对应的timeout 队列指针。Timeout 队列属于线程的属性,因此是与操作系统相关的函数。 sys_thread_new 创建新线程函数。LwIP 可以是单线程运行,即只有一个tcpip 线程 (tcpip_thread),负责处理所有的TCP 或UDP 连接,各种网络程序都通过tcpip 线程与网络 交互。它也可以多线程运行,以提高效率。 (3) li
13、b_arch 中库函数。LwIP 用到8 个外部函数,这些函数通常与用户使用的系统或编 译器有关。 u16_t htons(u16_t n);/16 位数据高低字节交换 u16_t ntons(u16_t n); u32_t htonl(u32_t n);/32 位数据大小端对调 u32_t ntonl(u32_t n); int strlen(const char str); int stmcmp(const char str1,const char str2,int len); void bcopy(const void src,void dest,int len); void bzero
14、(void data,int n); 5 测试 将修改后的 LwIP 进行测试,比如移植到C/OS-II 中。先对LwIP 进行初始化,再创建TCP 或UDP 任务,然后就可以测试了,关键部分的代码和说明如下: main() OSInit(); OSTaskCreate(lwip_init_task,&task1_data,&lwip_init_stkTASK_STK_SIZE-1,0); OSTaskCreate(user_task,&task2_data,&user_stkTASK_STK_SIZE-1,1); OSStart(); 主程序中,创建了lwip_init_task 初始化LwIP 任务(优先级0)和user_task 用户任务(优先级1) 。lwip_init_task 任务中除了初始化之外, 还创建了tcpip_thread( 优先级3) 和tcpecho_thread(优先级4),实际上tcpip_thread 才是LwIP 的主线程,tcpecho_thread 线程也要依靠tcpip_thread 线程来与外界通信。 编译运行后,用 telnet 命令可以看到回显结果,说明正确运行,LwIP 移植是正确的。 6 结束语 成本低廉的 FPGA 和微处理器软核IP 使得工业以太网具有高性价比可编程解决方案
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年养花教学设计步骤
- 2025-2026学年燕子组块教学设计
- 2025-2026学年衣服鞋子名称教学设计
- 2025-2026学年我等妈妈来接教案
- 2026年教学常规管理自查报告(3篇)
- 储罐作业单位安全档案管理制度
- 应急照明灯具安装施工方案及技术措施
- 换热站设备安装施工方案及技术措施
- 非煤矿山企业矿山安全操作规程
- 临床医学超声医学诊断手册
- 农民工讨薪维权课件
- 面粉厂安全培训内容课件
- 煤矿井下喷浆安全培训课件
- 人教版物理九年级第14章第2节《热机的效率》听评课记录
- 神经外科护理小讲课
- 海外属地化员工管理制度
- 地震救援安全培训课件
- TCEC-抽水蓄能电站润滑油在线监测技术导则编制说明
- 敬业合同协议书范本下载
- 图形的平移与旋转(八大题型)原卷版-2024-2025学年北师大版八年级数学下册
- DB3210T 1181-2024高邮咸鸭蛋加工制作规程
评论
0/150
提交评论