LabVIEWCompactRIO 开发指南30
目标间通信
可以从两种方法选择在FPGA VI和实时处理机上运行的VI之间传输数据的方法:前面板控制和指示器或DMAFIFO。可以使用前面板控件和指示器来传输最新值或标签以及DMA FIFO,以流式传输数据或发送消息和命令。这两种方法都需要使用主机VI上的FPGA接口功能与FPGA进行交互。
前面板控件和指示灯
如果只需要将最新数据值传输到主机VI或从主机VI传输,则可以将数据存储到FPGA VI上的控件或指示器,并使用主机VI中的读/写控制功能访问这些数据。图5.19显示了一个简单的主机VI,它从FPGA上的数字I/O指示器读取数据,然后写入FPGA上的数字I/O控制。
图5.19.读取和写入前面板控件和指示器以在目标之间共享最新值
与在FPGA和主机处理器之间传输数据的其他方法相比,编程前面板通信的开销较低。读/写节点是FPGA和主机处理器之间传输多条信息的优选,因为它们的开销相对较低。DMA FIFO(如图5.20所示)可以在流式传输大量数据时提供更好的吞吐量,但对于较小且不频繁的数据传输,它们的效率不高。
使用前面板控件和指示灯在FPGA和主机处理器之间传输数据需要比DMA FIFO更多地涉及主机处理器。因此,数据传输的速度高度依赖于主机处理器的速度和可用性。处理器速度较慢或处理器可用性不足,会导致从FPGA目标到主机的数据传输速度变慢。编程前面板通信的一个缺点是,这种方法仅传输存储在FPGA VI的控制或指示器上的最新数据。例如,如果FPGA VI将数据写入指示器的速度快于主机VI读取数据的速度,则数据可能会丢失。此外,FPGA VI上的每个控制或指示器都使用FPGA上的资源。FPGA编程的最佳实践建议限制FPGA VI中前面板对象的数量。
DMAFIFOs
如果需要在FPGA和实时处理器之间流式传输大量数据,或者需要用于基于命令或消息的通信的小型缓冲区,请考虑使用DMAFIFO进行数据传输。从FPGA读取数据时,DMA不涉及主机处理器;因此,它是在FPGA目标和主机之间传输大量数据的最快方法。
图5.20.DMA使用FPGA存储器来存储数据
以下列表重点介绍了使用DMA通信在FPGA目标和主机之间传输数据的好处:
■释放主机处理器在数据传输过程中执行其他计算
■减少前面板控件和指示灯的使用,有助于节省FPGA资源,尤其是在传输数据阵列时
■自动同步主机和FPGA目标之间的数据传输
尽管DMA FIFO是流式传输数据的绝佳机制,但在从多个通道流式传输数据、优化吞吐量或在实时主机VI上扩展数据时,它们很快就会变得复杂。如果应用需要从一个或多个模拟通道传输模拟数据,应使用本节末尾讨论的NICompactRIO Waveform Acquisition Reference Library作为起点。该库具有FPGA模板和类似NI-DAQmx的用于流数据的API,并提供了许多优势,包括优化的性能和内置的扩展。
需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。