ni veristand是一款用于配置实时测试系统应用的软件环境,如硬件在环(hil)测试系统等。当向ni veristand添加实时i/o接口时,用户能够快速配置多种标准模拟、数字和通信总线接口。另外,用户还可以使用ni veristand,通过基于fpga 的i/o接口创建用户自定义的i/o硬件。本文说明了使用基于fpga i/o接口的益处,以及如何同ni veristand一起使用它们。
1. 什么是基于fpga的i/o接口?
现场可编程门阵列(fpga)是一种可重复编程硅片,具有专用集成电路(asic)等硬件逻辑实现的卓越执行性能和可靠性,以及基于软件或固件实现的灵活性。利用可配置逻辑块和可编程连线资源,用户无需在物理层上更改设备,即可对fpga进行配置,以实现自定义硬件功能。相反的,用户在软件中开发数字计算任务,并将其编译成比特流文件,其中包含fpga逻辑和连线组件如何进行配置和连接等信息的。
2. 为什么在实时测试应用中使用fpga?
利用用户自定义的基于fpga的i/o接口,可以创建自定义i/o设备,实现信号处理、仿真、触发和控制等任务,为用户提供i/o接口,很好地满足应用需要。此外,由于i/o接口基于fpga,用户还可以轻松地重新配置接口特性,以满足新的要求,或者在不更改硬件设置的情况下创建能够用于多项应用的测试系统。
自定义i/o是在实时测试应用中使用fpga的最主要原因之一。超过100款的c系列信号调理模块为用户应用提供专用接口。将信号调理模块的多样性与基于fpga的i/o设备的灵活性相结合,用户可以快速创建具有自定义定时和触发功能的i/o接口,从而完全满足用户的实时测试要求。
另外,用户还可以使用fpga完成数据预处理和后处理,从而减少执行实时测试应用程序的微处理器的负担。例如,fpga可以采集来自编码器的数字信号,并根据此信号计算出速度和加速度,然后将这些信息传输给实时测试应用程序。
另外,在实时测试应用中使用fpga还可以帮助你增加高速闭环控制功能。例如,用户可以在fpga上运行一个运动控制器,同时由实时应用程序为控制器提供设定值。这样,闭环控制的响应速度能够大大提高,实现更加精确的系统控制。无刷直流电机的控制是此方法的一个应用实例。
此外,用户还可以用fpga来仿真hil测试中的各种传感器。fpga是传感器仿真的理想选择,主要因为fpga能够适应多种类型传感器的精确定时要求。用户能够实现纳秒级分辨率的传感器仿真,更加真实地模拟传感器对于信号的响应。在许多情况下,传感器的功能不受响应速度的影响。fpga的物理并行性使其成为实现真实器件行为仿真的理想选择。ni veristand外接式附件社区提供fpga传感器仿真外接式附件供下载。
关于fpga在实时测试应用中使用优势的更多信息,请参考fpga技术介绍:五大优势和fpga – 深层分析。
3. 自定义fpga特性与ni veristand的协作方式
在典型应用中,开发人员负责完成自定义fpga逻辑的编程、fpga逻辑与实时处理器上执行的应用程序之间的通信机制,以及实时应用程序中的数据预处理和后处理。ni veristand提供的框架实现了后面两个部分,即通信机制和数据处理,从而减少了实时测试应用程序使用fpga所需的开发工作量。要在ni veristand上应用fpga特性,用户只需开发fpga特性,然后使用xml文件描述用户的fpga特性与ni veristand实时测试应用程序之间的接口,从而减少了开发工作量。
用户从ni labview软件中的模板项目开始着手创建ni veristand fpga特性,此模板包含了与用户ni veristand应用程序接口所需要的代码。用户可以使用labview来定义此框架中的自定义fpga功能,编译fpga特性,为fpga特性编辑xml文件。完成以上步骤以后,用户只需要选择xml文件即可将此特性添加到ni veristand系统定义中。xml文件告诉ni veristand如何与用户特性接口,以及自动提供它的输入、输出和在ni veristand系统浏览器中的参数,从而用户可以设置数值以及与其它实时任务的连接,就像对其他任何硬件接口进行操作一样。例如,如果用户定义了一个带pwm输出的fpga特性,那么可以使用ni veristand系统浏览器来设置通道参数,例如周期和初始值等,并将占空比输入映射到用户实时测试应用程序中的另一个通道中,如图1所示。
图1. 在系统浏览器中配置ni veristand fpga特性
用户在部署ni veristand实时应用程序时,ni veristand将用户编译的fpga特性自动下载至硬件接口。
图2. ni veristand fpga 特性模板
定时引擎
定时引擎通过ni veristand系统浏览器进行配置,使fpga与ni veristand实时应用程序以及系统中的其它硬件i/o设备实现同步。在用户的ni veristand实时应用程序部署完成之后,加载用户的fpga特性,同时定时引擎等待来自ni veristand的启动条件。
图3. 初始化定时引擎
在用户的实时应用程序确认启动触发之前,ni veristand设置循环速率(µs)、写入rtsi和使用外部定时参数。这三个参数完成定时引擎的同步模式(主、从或不同步)配置,并设置用户特性与ni veristand实时应用程序之间的通讯速率。
ni veristand – 生成pxi fpga时钟子vi以生成时钟,此时钟用来为下文讨论的通信循环以及同步处理定时。在主模式下,fpga利用在其上运行的循环计时器对通信循环进行计时,并将时钟导入到实时系统集成(rtsi)总线上,以便同步其它硬件设备。在从模式下,fpga监控rtsi总线,并用rtsi0上获取的时钟对通信循环进行定时。在非同步模式下,fpga用自带的循环计时器对通信循环进行计时,并且不向rtsi总线导出任何信号。
除了实现硬件同步,定时引擎还能实现与ni veristand实时应用程序的同步。图4所示为通信循环的一部分。
图4. ni veristand与fpga同步
ni veristand – 等待fpga时钟子vi用作通信循环的循环计时器,等待来自ni veristand – 生成pxi fpga时钟子vi的时钟信号。另外,在主机模式下,ni veristand在确认启动控制之前,先确认产生irq。在确认产生irq之后,ni veristand – 与主机同步子vi在通信循环的每个迭代中确认一个中断。如果fpga被设置为主机,ni veristand实时应用程序的执行将通过此irq信号由fpga进行定时。
通信循环
通信循环负责发送和接收ni veristand实时应用程序的数据。由于ni veristand按照硬件计时单点方式更新通道,fpga必须按照ni veristand引擎中的主控制循环所规定的速率运行通信循环。欲了解ni veristand引擎的更多信息,请参考ni veristand帮助。
通信循环的定时由ni veristand – 等待fpga时钟子vi来实现,此子vi作为循环计时器,等待前述的ni veristand – 生成pxi fpga时钟子vi来生成时钟。
图5. 数据通信循环
如图5所示,采取64位数据包格式的数据,通过dma先入先出内存缓冲(fifo),发送至ni veristand实时应用程序,另外,通过dma fifo来接收来自ni veristand实时应用程序的、采取64位数据包格式的数据。
发送至ni veristand的第一个数据包包含了来自ni veristand – 与主机同步子vi的信息,该信息解释了fpga循环是否在此之后运行。发送至主机的其他数据包中包含了由fpga执行的测量或计算数据。数据包通过写入到for循环中的ni veristand – 发送数据包至主机子vi进行发送,此vi负责写入到dma_read fifo。dma_read fifo在项目浏览器中进行定义,并且必须指定其深度,使其中的元素数目至少等于每次迭代传输的数据包大小。
数据通过dma_write fifo发送至fpga,dma_write fifo也在项目浏览器中进行定义。另外,必须规定其深度,使其中的元素数目至少等于每次迭代传输的数据包大小。通过for循环中的ni veristand – 接收主机数据包子vi读取fpga上的dma_write fifo。配置for循环时,必须使其迭代次数与while循环的每次迭代所需读取的数据包数目相同。然后,分割数据包,并发送至用户fpga的适当部分。在图5中,黄色标题的子vi代表i/o资源。此循环中采集或生成的所有i/o均与ni veristand以及系统中的其它硬件设备同步。
并行处理循环
并行处理循环是ni veristand构架中的自定义fpga特性的最后一部分。这些循环之所以称为并行,是因为它们所采用的时钟不是ni veristand通信循环以及系统中其它硬件的定时时钟。这些循环可以简单地从自定义定时i/o上采集或生成数据,或者负责完成自定义测量和生成,例如pwm i/o。另外,它们也可以用来协助处理从ni veristand发送至fpga的数据。图6所示的模板实例包含了pwm输入和输出。
图6. 并行pwm循环
如图5和6所示,并行处理循环通过局部变量完成通信循环的数据发送/接收。通信循环只按照自己的运行速率更新这些本地变量,并且只将本地变量的当前值(无缓冲)发送至ni veristand主机。并行循环的数据被通信循环抽选,但是并行循环的定时并不受通信循环的影响。
5. 后续步骤
对于实时测试应用,基于fpga的i/o接口具有许多优势。利用这些接口,用户能够创建自定义i/o设备,实现信号处理、仿真、触发和控制等任务的合并,另外这些i/o设备可以方便地重新进行配置,以满足新的要求,或者创建能够用于多种应用程序的测试系统,而无需更改硬件设置。ni veristand提供了一个实现通信机制和数据处理的框架,从而降低了在实时测试应用中使用fpga所需要的开发工作量,使用户能够集中于fpga功能的开发。然后,用户可以像处理其它硬件i/o接口一样,将fpga特性无缝地插入到ni veristand中,并使用基于配置的环境完成其余的实时测试应用。
如何设置树莓派媒体服务器
为什么搭载ARM架构的苹果MacBook跑x86软件不卡
如何快速启动便携式扬声器
深度盘点三维立体激光切割机价格的影响因素
韩国5G商用网络的覆盖究竟表现如何
基于FPGA I/O接口的五大优势与FPGA深层分析
智能锁安装视频
污水监测案例┃凯米斯水质监测仪助力成都污水厂达标排放
如何为物联网应用选择合适的连接解决方案
oracle怎么把clob字段转换为字符串
变频器加减速时间设置原则及方法
USB连接器的功能特性
创业界首例!传华硕新机AR/VR通吃,将在CES亮相
MicroLED离商业化还有多远
旧手机到底能干吗呢?可“变废为宝”?
鸿蒙系统和安卓系统下的京东有什么不一样
iPhone 2020产品线渲染图公布 刘海亮眼
盘点BLDC电机的应用场景
新唐科技I²C系列电平转换器介绍
利用MicroPython设计嵌入式系统的优缺点