基于NI LabVIEW 2010和NI RIO构建精确定时的嵌入式系统
1、介绍
在构建嵌入式系统时,不论是为了确保控制循环能够可靠的执行,还是保证I/O信号能够被及时响应,或是让处理速度达到系统应用的要求,定时都是其中的关键。构建一套可以满足定时要求的系统,首先从硬件开始进行选择,必须在尺寸、功耗、处理能力和延迟等方面进行很好的平衡。另外,嵌入式系统的软件在执行调节、中断响应和计算任务之间的时间平衡几个方面扮演着重要的角色。
在考虑定时性能的前提下进行嵌入式软硬件集成将是一件极其耗时的挑战。但是,在NI LAbVIEW 2010软件平台和RIO硬件平台的帮助下,构建一套可以满足绝大部分系统应用需求的可靠的精确定时系统所需要付出的代价将极大降低。继续深入下去,了解集成了实时CPU和FPGA的NI RIO硬件系统,以及定时特性是如何与LabVIEW 2010无缝集成的,可以帮助工程师、科学家和嵌入式设计人员们利用这套硬件系统构建出健壮的实时响应系统。
2、集成实时CPU和高性能FPGA的NI RIO硬件
NI嵌入式硬件的目标系统是基于RIO架构的,包括了一个一般用于运行实时操作系统的CPU和一套或多套FPGA。在这样的集成架构下,用户可以在FPGA上完成那些需要纳秒级定时精度或者大量并行的任务;在CPU上完成诸如浮点计算等密集计算任务。FPGA和CPU之间通过PCI总线进行通信,通过NI-RIO驱动模块提供的直接明了、功能强大的数据传输接口, 使用LabVIEW或C可以很容易的进行相关开发。
最终的结论是:NI-RIO是可以适用于范围广泛的嵌入式原型设计,并且具有很高灵活性的平台。同时,由于NI-RIO框架是很多不同NI硬件目标系统的标准架构,例如NI Single-Board RIO和NI CompactRIO,用户在部署软件时,不论是坚固型系统还是经济型系统,都可以最大限度地实现代码的复用。
图1. NI-RIO嵌入式设备均基于集成了CPU、FPGA和模块化I/O的统一架构
例如,Ventura市航空中心使用LabVIEW和NI Single-Board RIO开发了一套火情监控系统,用于在联邦快递公司的运输机上防控火灾。在这套系统中,实时CPU负责运行确定性控制算法、网络通讯和数据记录,FPGA硬件上则执行其他的关键任务。
3、LabVIEW 2010和内置的定时特性简化了确定性可靠系统的编程
LabVIEW不单可以使用图形化的编程界面来编写目标CPU(包括了运行实时操作系统的CPU)和FPGA(包括RIO目标硬件上的FPGA)程序,同时LabVIEW图形化编程语言本身也是基于定时和同步概念而设计的。下面的一些例子将说明,LabVIEW结合Real-Time模块和FPGA模块是如何让嵌入式系统的定时变得简洁明了的。
4、LabVIEW Real-Time模块集成的定时特性
使用Real-Time模块和Timed Loop进行确定性的闭环系统编程
LabVIEW 2010 Real-Time模块把LabVIEW图形化编程扩展到了NI实时硬件系统(包括RIO设备)特定的第三方PC上。根据使用的目标硬件不同,LabVIEW Real-Time模块会自动在目标硬件上部署与标准的VxWorks或ETS实时操作系统相对应的组件,以保证确定性和精确的实时性。
当使用LabVIEW Real-Time模块进行闭环控制系统的编程时,通过使用Timed Loop,只需要轻点几下鼠标,就可以实现周期性执行代码,硬件控制循环速率同步,定义多种循环执行优先级,甚至可以指定某一循环在某一个CPU内核上执行。另外,用户还可以选择KHz、MHz或者自定义的外部时钟来作为循环定时的基准时钟。
图2. LabVIEW Timed Loop可以让用户通过简洁明了的方式实现配置循环定时、通过硬件I/O进行同步、控制实时代码执行优先级、指定代码执行CPU内核等
在多系统间实现Timed Loop的同步
在使用LabVIEW Real-Time模块编程的嵌入式硬件设备上,用户可以使用IEEE 1588同步协议进行多系统间的同步,以保证给定的任务在多系统上是同步执行的。根据用户使用的硬件设备不同,IEEE 1588同步协议可以通过软件、硬件或者软硬结合这几种不同方式来实现。
使用LabVIEW Real-Time模块实现多硬件设备间的软件同步,将Timed Loop设置为使用绝对时间源即可。在设置好Timed-Loop后,只需要再连接一个起始时间戳,然后选择运行,就可以在多硬件设备间同时开始循环的执行。
图3. 用户可以使用LabVIEW Timed-Loop来实现IEEE 1588同步协议,在多个分布式的嵌入式设备中实现同步控制(上图为NI CompactRIO)
使用NI Real-Time执行跟踪工具包进行定时的细节分析
在LabVIEW Real-Time模块下使用Real-Time执行跟踪工具包,可以获取线程和子VI的执行时间、优先级、继承关系等多种详细信息。通过这套工具包,不但可以帮助用户优化实时程序的执行情况,更可以帮助用户发现诸如优先级设置不当、资源
- 基于NI PXI平台的模块化电子战模拟系统(09-25)
- WLAN测试的5要素及提升测试速度的方法(03-10)
- 了解RF仪器规格:第一部(07-24)
- 选用示波器所需考虑的10大要素(07-24)
- EDA环境结合测量软件 大幅缩短电子产品开发周期(12-12)
- 如何使用USRP-2921监测宽带频谱(09-23)