基于NiosII的嵌入式监控平台的设计与实现
2018-08-07中国电子科技集团公司第54研究所陈建国
中国电子科技集团公司第54研究所 陈建国
0 引言
在设备的应用过程中,监控模块作为必不可少的组成部分,其操作的便利性可以很直观的体现在用户面前。因此设计一款接口丰富,运行高效的嵌入式监控平台尤为重要。丰富监控平台的各种接口,可以满足其应用的多场景化,这不仅可以避免更多的重复工作,降低新的开发风险还可以大大提高设备的研发效率,缩短开发周期。
传统的单片机、ARM等芯片外部接口和片内存储单元资源有限,很难满足监控平台的多接口需求和程序运行高效需求。而随着FPGA芯片性能的不断提高及应用场景的广泛性,以片上可编程系统技术为核心的嵌入式系统在众多应用领域崭露头角[1],Altera公司推出的SOPC(System On Programmable Chip)是一种灵活、高效的Soc解决方案,是一种新的软硬件协同设计的系统设计技术。它将处理器、存储器、UART、PLL、I/O接口等功能模块集成在一个FPGA上,构成一个可编程的Soc[2]。本文采用的基于Nios II的软硬件平台解决方案是能够快速地设计并实现可配置、可裁减的软核系统[3],此软核系统具有一系列的优点,如配置灵活,成本低廉,开发者可以在软核中灵活添加需要的功能模块,但成本不会随之增加,性价比极高。
在以往的以太网解决方案中,软件开发人员需要在CPU中进行TCP/IP协议栈的代码开发,开发周期长,难度大,不易维护,调试繁琐。本方案中,为了实现以太网接口功能,我们采用WIZnet公司开发的网络接口芯片W5300来实现,其内部集成了MAC和TCP/IP协议栈,只需在软核中添加W5300接口模块即可,避免了设计人员对代码的开发,也可提高程序运行的稳定性。
1 总体设计
1.1 系统原理
本设计中的嵌入式监控硬件平台选用了一款FPGA芯片作为主控芯片,并采用SOPC builder建立自己需要的软核。系统功能组成框图如图1所示。系统选用一片配置芯片EPCS64,用来存储FPGA的配置文件。内存扩展方面,该平台外扩一片SDRAM芯片以增加系统的内存空间,便于运行较大规模的程序。系统外挂一片大容量的FLASH,满足系统文件的掉电存储需求。设备的参数信息在EEPROM中进行存储。通信接口方面,该平台提供标准的RS232、RS485串口、IIC接口、10/100M网口;此外该硬件监控平台还提供丰富的用户交互接口。用户可通过按键和显示屏对设备进行操作,平台还可根据喇叭和指示灯接口实时了解设备的状态。
图1 系统功能组成框图
1.2 Nios II处理器系统的设计
图2 NiosII软核系统组成图
NiosII嵌入式处理器是由美国的Altera公司推出的第二代32位软核处理器。与第一代相比,性能有了极大的提升,此外程序代码的可移植性大大增强, 利用SOPC Builder工具,可以快捷地构建所需要的软核系统,在SOPC的系统组件中集成了大部分常用的IP接口,开发人员只需将其添加到所建的软核系统中,并能对接口的一些常用属性进行配置[4];对少部分SOPC元件库内不支持的IP功能模块,SOPC也有很好的可扩展性,用户可以将硬件语言开发的逻辑单元作为新的IP核添加到系统元件库中,便于在后续的开发中进行应用。本系统的软核组成图如图2所示。
首先构建的是C P U模块Nios II Processor,对于软核的类型,本方案选择了Nios II/f快速型软核处理器,该处理器功能最多,速度最快。系统除CPU外还包括SDRAM、EPCS、KEY、RS485、RS232、指示灯LED、SPEAKER、FLASH、FLASH、TIMER、IIC、EE-PROM、OLED、W5300_INT、网络接口芯片W5300、JTAG_UART等接口。IIC和W5300接口 在SOPC元件库中没有对应的IP核,是需要我们自定义的模块,可以根据其应用要求使用硬件语言描述其接口,然后添加到元件库中进行应用。SDRAM是内存接口,支持程序的运行。EPCS是FPGA配置芯片的接口,用于存储FPGA的配置文件。JTAG_UART作为系统调试串口,可以在开发时用来打印调试信息。 KEY和OLED是用户的操作接口,系统还提供强大的通信接口,通信方式包括 IIC接口、RS485串口、RS232串口、网口,可以满足工程需要。在数据存储方面,系统提供除了IIC接口将设备参数存储于EEPROM中外,还提供FLASH接口进行大容量的数据存储。此外,系统提供了声光指示如LED灯和喇叭来实时体现设备的状态。在软核中添加完上述的功能模块后,可以利用SOPC Builder对系统中各模块的基地址进行自动分配,如果有特殊的需要,对基地址也可以进行手动设置,点击相应的地址,进行手动修改就可以了。分配完基地址以后,要对各模块的中断号进行分配,采用同样的方法即可对中断号进行自动分配,如果有特殊需要,也可手动更改中断的优先级。但要注意,中断号不可重复,否则编译时,系统会报错。
1.3 软件设计
为了提升设备响应用户操作的实时性,在软件框架的设计上我们采用分层模块化设计方案,顶层的应用程序完全独立于底层的驱动程序,底层程序对数据进行实时接收,通过中间层进行数据处理后,传送给应用层进行数据应用。这样开发人员在进行应用层的编码时,可以不依赖于底层函数,这样可以提高程序开发的效率。另外,程序框架进行分层处理后,对代码的移植,裁剪,重用都比较灵活。本方案软件框架可以分为应用服务层、数据处理层和接口驱动层。应用服务层可以响应用户的键盘操作并提供相应的界面显示;数据处理层负责对系统数据进行实时高效的处理,并对软件运行中的各种数据进行维护,完成各程序之间数据的共享;接口驱动层负责各接口的底层驱动,实现各模块的数据收发及模块的顶层应用需求。软件的体系结构如图3所示。
图3 软件体系结构
2 关键问题及解决方法
2.1 网络接口芯片W5300
在以太网实现方案中如果采用软件方法进行实现,编码人员要熟练TCP/IP协议栈,编码和调试工作难度很大,并且网络协议相对复杂,这必然会影响程序运行的稳定性,因此直接采用硬件协议栈实现网络接入具有设计简单、应用灵活的特点[5]。在本设计中我们选用了一款专用网络芯片W5300,此芯片内部集成10/100M以太网控制器,MAC和TCP/IP协议栈。这样通过采用专用硬件芯片来实现以太网接入,可以极大提高程序的稳定性,降低开发人员的开发难度。
2.2 W5300组件的建立
在SOPC Builder的系统元件库中没有提供W5300的网络接口,我们可以根据W5300的使用手册,通过硬件描述语言,编写我们自己的逻辑模块,然后将该模块添加到元件库中。在添加组件时,通过Component Editor对信号进行设置, W5300组件信号图如图4所示。
图4 W5300组件信号图
另外要对信号周期进行设置,根据W5300的时序要求和系统采用的时钟,设置readwait为6个周期,writewait为5个周期其余默认。
3 测试
将代码按照软件设计方案进行实现,并下载到硬件监控平台上,重新上电后进行系统测试。配合显示屏、按键和相关的接口测试工具检验测试结果。通过网口测试工具,给监控平台发送一帧网络数据,程序接收到网路数据后将数据显示到显示屏上。再通过按键操作,将接收到的数据发送到网口测试工具上。通过此方法可验证显示功能、按键功能、网口收发功能正常。同理,配合串口测试工具,可验证RS232串口、RS485串口收发正常。IIC接口的测试通过示波器进行验证,外部程序给IIC接口发送一个字节,程序接收到数据后,显示到屏幕界面上,再通过按键操作,给IIC接口发送一个字节的数据,通过外部的示波器验证了发送数据的正确性。程序中通过定时器,每秒钟向数据存储器中写入一个字节的数据,下一秒再从存储器中将数据读出,将数据显示在屏幕上,同时每秒钟控制指示灯进行闪烁,喇叭进行鸣响。通过上述系统的测试,验证了监控平台硬件和软件系统的正确性。硬件稳定可靠,软件运行流畅。
4 结束语
本文以FPGA芯片为核心,提出了基于Nios II的嵌入式监控平台的设计方案,该方案提供丰富的设备监控接口和优异的软件体系结构,丰富的接口可以满足众多工程的需要,可以应用到多个工程场景,避免对硬件进行重新开发。软件方面进行分层处理,可以根据需要很方便的进行代码移植和裁剪,提高软件开发效率。