基于fpga的嵌入式网络接口控制器设计
2016-01-18王辉
王辉
摘要:近年来,网络技术发展迅速,且为推动社会各个生产生活领域的发展做出了较大贡献,而工业以太网技术的出现也使得其进一步融入到控制系统网络中的控制层与设备层。为了进一步促进以太网技术的发展,该文以基于fpga的嵌入式网络接口控制器作为主要研究对象,通过对嵌入式网络接口控制器的工作原理进行简要阐述,进而对基于fpga的嵌入式网络接口控制器的硬件和软件平台展开了全面的设计和分析。
关键词:fpga;嵌入式网络接口;板级支持包
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)33-0025-02
对传统的控制系统进行分析可知,其在信息层大都以以太网为主,而在设备层与控制层则选取不同的现场总线支持局域网联网。而随着工业以太网技术的产生与发展,以太网也由传统的信息层逐渐渗透到了控制层与设备层。在此背景下,将以微控制器和微处理作为硬件核心的嵌入式网络接口控制器融入到数控机床、机械手等工业设备中,并促使其与以太网形成有效连接,提高设备的控制效率,已成为当前工业以太网领域需要着重开展的关键工作。
1 嵌入式网络接口控制器工作原理
对嵌入式网络接口控制器进行分析可知,其选用的是DM9000E芯片为主控制器,以此来实现接口数据信息同上层以太网的数据交换,并以32位微处理器s3c2410与嵌入式Linux系统为基础实现协议与数据处理,而后,将经处理的数据下传至底层的设备终端,同时,将来自底层设备终端的数据进行处理并实现协议,在经由DM900E芯片传至互联网中[1]。
2 基于fpga的嵌入式网络接口控制器硬件设计
2.1 fpga简介
设计中的核心控制器fpga选取Altrea公司的EP2C8Q208C8型号fpga为主,其是Altera CycloneⅡ系列器件的关键组成部分,其应用主要集中在终端市场,如计算机、工业以及汽车等相关领域。fpga中的锁相环以及全局时钟网络和逻辑单元的个数分别为2、8和8256,此外,还具有36个M4K RAM与138个I/O端口,具有成本低、性能高、低功耗与强扩展等诸多优势。但由于其内部的块随机存储器,即BlockRam的容量并不能够满足VxWorks以及Linux等操作系统对存储空间的需求,故引入一32MB的Flash作为映像与引导程序的主要存储模块,同时,以256MB的新生代内存标准DDR2提供程序运行空间,另引入1个RS232通讯接口和GPIO以供调试[2]。
2.2 Temac设计
首先,对Temac,即三态以太网媒体访问控制器进行设计,Temac的原语包括了一对10/100/1000MB的以太网Mac,而对Virtex系列器件进行分析可知,其所含有的以太网mac模块数大都为4个,故其完全符合IEEE802.3规范。对以太网Mac的模块结构进行设计,以对外接口的类型为依据,可将其接口模块划分为物理接口、客户端接口以及控制接口,且每一个Mac还具备一可选管理的数据I/O接口,利用此接口能够实现对物理层中管理寄存器以及以太网Mac本身的物理接口管理寄存器的访问[3]。
其次,为了提高设计的全面性和可靠性,以跳线选择的方式将以太网Mac的物理接口划分为GMⅡ(密码设备应用接口)与SGMⅡ(串行千兆位煤质独立接口),当选择GMⅡ接口时,外部的88E1111-RCJ配置寄存器为物理层芯片,而选择SGMⅡ接口时,则可减少Temac同外部物理层接口的接线数量,利用脉冲编码调制/物理媒介适配层模块,即PCS/PMA同RocketIO收发器共同工作,从而为Temac提供GBIC或是小型的SFP光纤收发器所具备的全部功能,从而有效防止1000Base-X网络在应用过程中所需外部物理层芯片而造成结构和数据冗余的问题[4]。还需说明的是,为了进一步简化设计并为后续片上系统集成奠定基础,还应引入PLB控制总线,所引入的PLB_Temac总线核中具有大小可调的先入先出队列与直接内存存取引擎,从而使嵌入式的PowerPc系统构建得以进一步简化。
2.3片上系统集成设计
在片上系统的定制方面,其核心工作即系统主频的设计,并实现对质量、数据Cache大小和外部数据指令的选配,其外设IP包括了DDR2协议标准下的控制接口IP以及外部Flash与GPIO接口IP和PLB_Temac网络接口IP。在Flash单元模块方面,需对其类型与读写时间进行设计,并视情况引入调试用串口Uart16550,以供调试。同时,还需对DCM即时钟管理模块与FPGA的Ram区域进行设置,以分别实现时钟管理和.boot文件的存放功能。在外设方面,以PLB总线与PPC通信地址的统一分配共同实现,并将DDR2的内存空间地址分至初始状态0×0。
对DDR2协议标准下的控制器进行设计,其采用XPS生产的Memory Controller模块,并对DDR2的芯片厂商以及芯片内存大小与容纳数据位数等进行设计,还需说明的是,除了上述各项模块、功能的配置的外,还需另外设置两条独立的PLB总线,并将其同PPC线相连,使二者共同作为PPC的指令总线与数据总线。此外,将XPS的PLB_Temac模块加至MAC单元当中实现接口控制[5]。
2.4外围电路设计
外围电路的设计需要以现场可编程门阵列fpga为核心,并逐步向外延伸各类设备,在设置fpga的引脚时需要对不同的电压控制晶体振荡器的电压予以充分考虑,且考虑到DDR2与物理层PHY芯片分别在+2.5V和+1.8V的电压下方能运转,且外设所需电压为3.3V,故与DDR2及PHY芯片连接的引脚电源应分别提供2.5V与1.8V电压,而与片外设相连的引脚所在电源应提供3.3V电压。此外,还需将DCM时钟管理模块置于全局时钟引脚处,实现时钟信号的管理和传递。在DDR2进行布线过程中,要确保数据线与地址线等长,且数据线和地址线要分别控制在10Mil(千分之一英寸)和20Mil之内,而时钟线除了需要进行差分等长设置外,还应保证其长度大于地址线,从而避免时钟信号接受延迟。
3 基于fpga的嵌入式网络接口控制器软件设计
首先,对板级支持包BSP的移植进行分析。以微处理器与嵌入式操作系统为平台和依据,EDK(嵌入式开发套件)中的BSP生成器BSP_GEN能够自动产生供用户裁剪的BSP,其不仅能够支持Boot代码和设备驱动的初始化,而且也能够支持操作系统本身的初始化。利用BSP_GEN,将可编程逻辑完整解决方案的相关驱动进行打包,并存至BSP子目录当中,同时,将上述驱动同Vxworks操作系统的集成开发环境进行无缝集成,用以缩短控制器的开发周期。但需要说明的是,BSP生成器BSP_GEN实质上是一类固定的BSP模板,故难以将RAM/ROM存储器映射予以正确、全面反映,且并不能够对用户通过BSP_GEN兹定于核驱动予以良好支持,基于此,还需要对BSP_GEN所生成的BSP做出相应的改进:1)修改Makefile文件中的RAM与ROM地质和串口波特率,对串口进行正确设置;2)引入难以同Vxworks操作系统无缝集成的器件所对应的驱动文件,并对systemNet.c中的以太网参数进行配置,实现对MAC地址的准确设置;3)以EDK中的相关配置为依据,将Cache禁止并修改systemLih.c,确保生成器显示的信息准确无误,且对主机的IP地址进行科学设置。
其次,对双向通信连接的Socket端的用户数据报协议,即UDP进行程序设计,BSP的配置与修改工作完成后,进入到UDP服务端程序书写环节。在网络通信方面,大都能够通过Socket予以实现,其编程选取的是基于客户端/服务器的数据通信模式,对Vxworks系统进行分析可知,其向用户提供了标准的BSDsocket用以支持UDP协议的传输,并允许同远程计算机建立连接,从而实现基于UDP协议的数据传输。
服务器工作的具体流程为:1)服务器调用Socket(),建立起套接字socket,并调用bind()将套接字同本地网络地址进行捆绑,以供客户端准确识别;2)服务器调用listen()将套接字置于准备接收状态中,并标明套接字请求队列的长度,而后,对accept()进行调用,用以接受客户连接;3)上述工作完成后,服务器进程便进入相对阻塞的状态,使客户端、服务器的关系转为非对称,而服务器则率先启动,并根据某一时刻,客户端发出的请求,进行被动应答。
客户端的具体工作流程为:1)调用Socket()函数,建立客户端与系统连接的套接口,同时,将各套接口所对应的ID号予以返回;2)对某一套接口的结构体进行初始化,并向其赋予返回ID号和服务端IP地址及IP端口号,而后,将其作为关联函数connect()的主要参数,对connect()函数进行调用,促使客户端主动与服务端相连,实现数据传输。
最后,对系统进行调试。为了确保系统调试的有效性,借助ChipScope Pro内嵌逻辑分析仪对fpga片上系统的内部数据进行抓取分析,以达到快速调试和验证优化的目的。此外,根据内嵌逻辑分析仪存储器在进行读写过程中捕获的实时数据仿真结果,进而对接口控制器的时序进行优化设计,完成控制器的调试及验证。
4结论
本文通过对嵌入式网络接口控制器的工作原理进行简要说明,在对fpga进行简要介绍的基础上,分别从Temac、片上系统集成与外围电路等方面对嵌入式网络接口控制器的硬件部分展开设计,又从板级支持包及其修改、Socket下的UDP程序等方面对嵌入式网络接口控制器的软件部分展开设计。研究结果表明,将fpga加入操作系统后,能够更为轻松地实现网络数据的接收与发送,对于促进工业以太网技术的发展以及实现工业设备接口与以太网的有效连接具有重要的现实意义。
参考文献:
[1] 刘存,周晓波.基于FPGA的嵌入式千兆以太网接口设计[J].光通信技术,2013,2(12):56-59.
[2] 郭凤鸣,冉成科,余波,等.基于FPGA的嵌入式智能家居控制器设计[J].自动化技术与应用,2011,10(05):72-75.
[3] 刘金龙,史忠科.基于FPGA的以太网与1553B网络接口设计[J].测控技术,2012,10(8):84-87.
[4] 刘岩,王晓君.基于FPGA和LAN91C111的嵌入式以太网接口设计[J].电子元器件应用,2012,12(18):1-3.
[5] 王鹏,秦文进.基于ARM和FPGA的嵌入式工业控制器设计[J].自动化与仪器仪表,2014,1(18):53-55.