虽然顶层FPGA VI集合了13个仪器设计库的功能,然而在主机上对所有这些库进行独立编程仍然不方便,并且此应用层主机代码一点也不像传统的VSA或者VSG API。为了解决此问题,Simple VSA/VSG项目样例包含了一个附加主机层,将这些仪器设计库集合在一个接口内,提供了与供应商定义的VSA/VSG API相类似的功能。LabVIEW类为此提供了一个方便的机制,即提供一个严格类型的会话,公有和私有方法,以及一个方便的子VI图标头文件保持机制。请注意,LabVIEW类中面向对象的继承,并没有用于此主机接口。
图 10.LabVIEW类提供了一个方便的功能集合和主机接口保持机制
这个简单的 VSA/VSG样例项目还提供了常见的RF VSA和VSG操作所用的若干个主机样例,这些样例说明了如何正确使用主机接口。这些样例涵盖频域和I/Q采集;CW和基于序列的波形发生;以及多输入多输出(MIMO)同步。
图 11.一些主机样例说明了Simple VSA/VSG项目样例使用基于类的主机接口的方法
简单 VSA/VSG项目样例包含极多功能,并提供了熟悉的主机接口。然而该实用工具的代价就是代码的复杂度。具体地说,FPGA上的DRAM采用基于波形的抽取,显著增加代码量、复杂度,以及VST FPGA资源占用。然而,并不是所有应用均需要基于波形或者仪器数据移动范式。一些应用更加适合实时流数据移动架构。对于这些应用,VST Streaming项目范例是一个更好的起点,自定义的自由度更广。
图 12.VST Streaming项目样例在主机和FPGA上集合了仪器设计库,提供了一个灵活地开发实时、低滞后信号处理和嵌入式应用的起
VST Streaming项目样例的顶层FPGA VI的架构与简单 VSA/VSG项目样例相近。然而如果仔细考察,会发现要简单得多。可以明显看出,VST Streaming没有代码量极多的配置过程。配置循环也简单得多,只有一条寄存器总线而非两条,并且所有子系统均包在一个子VI中。
图 13.VST Streaming项目样例中的FPGA VI配置回路,只有一个寄存器总线接口,比Simple VSA / VSG要简单得多
VST Streaming项目样例没有独立的采集和发生循环,而是所有interwetten与威廉的赔率体系 I/O均采用一个循环。对于要求RF输入输出之间的相位关系已知的应用,由于ADC和DAC使用相同的采样时钟,此架构提供了两者之间的确定性同步。DSP和VST Streaming项目样例的校准类似于VSA / VSG。
两个项目样例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的影响
欲了解仪器驱动FPGA扩展的更多信息,请阅读 仪器驱动的FPGA扩展介绍。
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.
评论
查看更多