两个项目样例FPGA VI之间的主要区别是:VST Streaming项目样例使用轻质机制完成与主机之间的数据收发。它采用简单的流控制器,支持基本触发、连续和间断流,以及溢出和下溢检测。这些控制器中断信号源与目的地之间的2线握手信号,有效地选通数据流。控制器不支持全4线握手方案,该方案能够调整上游节点或者被下游节点所调整;因此,系统特性化以及确保这些流控制器控制的所有FIFO均能够以要求的速率产生或消耗数据就落到了程序员的肩上。在VST Streaming项目样例中通过简单的更改默认情况下完成与主机之间的数据收发的FIFO,可以支持数据流传输到VST FPGA上的其他位置以进行进一步处理,或者通过PXI Express背板,利用P2P传输至其他模块。
图14.FPGA流控制器和FIFO封装实现基本流控制,并且能够轻松改变数据流的源及目的地路线。
现在来看VST Streaming项目样例的主机端,虽然机制与Simple VSA/VSG不同,也存在类似于仪器设计库主机组件的集成,。VST Streaming项目样例不使用LabVIEW类,而是将功能简单地集成到子VI中,并将会话传递至子VI之间的寄存器总线。此寄存器总线会话还包含有FPGA VI 引用,因此所有这些子VI不仅能够访问寄存器总线通信策略,而且还可以访问NI-RIO FIFO和控制器。另外,不存在独立的数据采集和生成会话;所有VI均使用同一会话。
图15.VST Streaming项目样例主机接口具有一个基于寄存器总线的会话线,用于采集和生成subVI。在逻辑上,此样例将采集和生成分组成为独立的行,以方便阅读。
VST Streaming项目样例提供两个主机样例。较简单的一个样例把从VST处采集得到的增多的或者连续的波形数据传输至VST进行生成,。比较高级的样例说明了多个VST的MIMO同步。
图16.这些样例说明了VST Streaming项目样例的主机接口
4. 仪器驱动FPGA扩展
仪器驱动FPGA扩展提供了一种兼容NI-RFSA和NI-RFSG仪器驱动的VST FPGA编程方法。FPGA上的抽取层实现了所需要的仪器驱动功能,同时提供接口以改善具体应用的FPGA。虽然不像仪器设计库的直接编程那样灵活,然而仪器驱动FPGA扩展支持的修改类型与标准信号分析仪和信号发生器的基于记录的采集和生成模式相一致。
图17. 仪器驱动FPGA扩展架构包含VST仪器设计库,并且增加了一个抽取层以保护组件。用户IP不在此代码中,由主机进行控制,并且不受预编译封闭源NI-RFSA和NI-RFSG的影响
5. 大型FPGA开发考虑事项
The Virtex-6 LX195T FPGA on the NI PXIe-5644R and the NI PXIe-5645R is a large FPGA, though the full suite of instrument design libraries consumes a considerable fraction of the available resources. As such, compilation times can take 5 hours or more when using the NI LabVIEW FPGA Compile Cloud Service, depending on the complexity and resource utilization of the FPGA design. Furthermore, FPGA compilation is a non-deterministic process, and as a design consumes more FPGA resources, the repeatable compilation success rate drops below 100%. For such designs, initiating multiple compiles in parallel can help to ensure a successful compilation in approximately the same time as a single compilation. Table 3. provides some estimates for the different FPGA designs discussed in this paper.
FPGA设计 | 近似编译时间 | 近似编译成功率 | LUT占用率 | 触发器占用率 | DSP片占用率 | 块RAM占用率 |
VST Streaming项目范例 | 4 小时 | 90% | 27% | 30% | 31% | 20% |
Simple VSA/VSG项目范例 | 5 小时 | 80% | 50% | 49% | 31% | 39% |
仪器驱动FPGA扩展 | 6 小时 | 75% | 67% | 62% | 31% | 45% |
表3. 各种VST FPGA设计的编译时间、成功率和FPGA占用率。