LabVIEWCompactRIO 开发指南29
数据通信
LabVIEW FPGA中的数据通信分为两类:进程间和目标间。进程间通信通常对应于FPGA目标上的两个或多个环路之间的数据共享。目标间数据通信是在FPGA目标和主机处理器之间共享数据。对于这两种情况,在决定使用哪种机制之前,应考虑是要传达当前值数据、消息或命令,还是在流式传输数据。
进程间数据通信
如果FPGA目标上存在多个环路,则可能希望在它们之间共享数据,就像在实时或基于Windows的程序中一样。LabVIEW FPGA包含了多种用于在循环之间共享数据的机制。
变量
LabVIEW FPGA具有局部和全局变量,用于在两个或多个循环之间共享当前值或标签。借助变量,可以访问或存储FPGA触发器中的数据。变量仅存储写入的最新数据。如果不需要使用获取的每个数据值,那么它们是一个不错的选择。
内存项
共享最新值的另一种方法是使用可用的内存项。利用内存消耗的逻辑块很少,但会使用板载内存。LabVIEW FPGA设备具有两种类型的存储项:目标示波器和VI定义。可以通过FPGA目标下的所有VI访问目标范围的内存项。VI定义的内存项的范围限定为定义它们的VI。图5.17显示了使用为目标范围的内存项配置的内存方法节点的框图。该VI从内存中读取数据,递增数据,然后用新数据覆盖相同的内存位置。
图5.17.使用内存方法节点读取和写入内存项
VI-scopedmemory是需要存储数据阵列的应用程序的强大工具。通常,应始终避免使用大型数组作为数据存储机制,而应改用VI-scoped memory。
FIFOs
如果要在两个或多个循环之间传输消息或更新,或者流式传输数据,请考虑使用FIFO进行数据传输。FIFO是一种数据结构,它按接收顺序保存元素,并使用先进先出访问策略提供对这些元素的访问。
图5.18.使用FIFO在两个并行环路之间共享缓冲数据
与内存项类似,有两种类型的FIFO可供选择:目标范围或VI定义。可以通过FPGA目标下的所有VI访问目标范围的FIFO,并且VI定义的FIFO的范围限定为定义它们的VI。
配置FIFO时,必须指定确定哪些FPGA资源在FIFO中保存和传输数据的实现。以下建议可帮助选择一种实现而不是另一种实现。
■触发器—触发器使用FPGA上的门来提供最快的性能。建议仅对非常小的FIFO(小于100字节)使用。
■查找表—可以将数据存储到FPGA上每个切片的两个查找表中。仅建议对小型FIFO(小于300字节)使用查找表。
■块内存—如果尝试为应用的其他部分保留FPGA门和查找表,则可以将数据存储在块存储器中。
需要说明的是,上述的例程和文档,都是可以下载的,双击即可打开,其中压缩文件是可以采用粘贴复制的方式,拷贝到硬盘上。这不是图片,各位小伙伴看到后尝试一下,这个问题就不用加微信咨询了。有关LabVIEW编程、LabVIEW开发等相关项目,可联系们。附件中的资料这里无法上传,可去公司网站搜索下载。