LabVIEW FPGA编程中使用可重入的子VI的优势与缺点
主要软件:
主要软件版本: 1.1
主要软件修正版本: N/A
次要软件: N/A
问题: 在FPGA中我能有一个可重入的子VI么?它是如何工作的?可重入与非可重入子VI相比有哪些优势与缺点?
解答: 一个VI或者一个子VI默认是非可重入的。在LabVIEW中,当一个子VI是可重入时,在程序框图中每次调用这个子VI,它都会在内存中为每个新的实例开辟一块区域。如果是非可重入的子VI,在内存中只有一个打开的实例,所有的调用者都访问这个实例。同样的,在LabVIEW FPGA程序中,如果一个VI多次调用一个可重入的子VI,每个调用实例都会占用FPGA设备的独立的部分/门。如果使用一个非可重入的子VI,无论是在一个VI中并行调用多次还是只调用一次,该子VI只创建并使用一个空间。
使用
非可重入子VI的理由:
- 节省硬件空间(资源)。非可重入VI只使用硬件的一个空间。如果您FPGA应用中空间是一个重要问题,您可以将可重复利用的代码写入到非可重入子VI中以节省空间。
- 在一个VI中只有一个子VI的实例。当只有一个子VI实例时,您的选择就没有任何区别。因此,请保留默认设置。
- 非可重入子VI可以用来在独立循环间存储以及传输数据。由于该子VI的所有调用者都使用相同的门资源,因此最后一个调用子VI而得到的值可以用在下一个调用者中。
使用
可重入子VI的理由:
- 您的子VI有两个及更多的循环。在并行循环中将子VI设置为非可重入可导致循环要等待每次的执行,而无论子VI被同一时间调用还是正在运行。这会在维护实时性上导致无法预料的抖动。这会降低运行速率。
- 空间没有限制,而速度是重要的。您的程序相对较小,但是需要以较高速率保持实时性,或者需要快速运行。
- 并行线程需要有它们自己实例的子VI,以保证子VI的调用者之间不会出现数据传输的情况。
相关链接:
附件:
报告日期: 05/21/2006
最近更新: 09/23/2007
文档编号: 337FLKFL
Other Support Options
Ask the NI Community
Collaborate with other users in our discussion forums
Request Support from an Engineer
A valid service agreement may be required, and support options vary by country.