通过指定LabVIEW在存储器中实现数组常量的方法,可优化FPGA应用。新的数组常量的默认执行为自动,即编译器根据具体的编程模式判定在存储器块、查找表或触发器实现数组常量。

如编译使用自动设置的FPGA VI时遇到困难,可选择存储器块查找表实现数组常量。除非需要利用不同存储器类型的优势,否则考虑选择存储器块实现数组常量。存储器块不会消耗FPGA资源,且相对于其他类型的存储器倾向于使用高时钟速率执行编译。

在其他环境下创建的数组常量(例如,在开发计算机)在FPGA VI中打开时被自动设置为自动。在FPGA VI中创建的数组常量被移至其他环境时,仍保留选中的存储器实现。

在存储器块或查找表实现数组常量的限制条件

为确保可在存储器块或查找表之一实现数组常量,必须满足下列条件:

  • 不能连线数组常量至顶层显示控件。但可从不同子VI的“索引数组”函数分离出“替换数组子集”函数。
  • 如在单周期定时循环内放置数组常量,该循环仅可包含一个“替换数组子集”函数和一个“索引数组”函数。对于每个上述函数,在每个循环计数仅可访问单个索引地址,且用户不能调整函数大小或包含多个值的读取/写入。
  • 对于单周期定时循环内的存储器块实现,必须满足下列额外条件:
    • 必须经由“反馈节点”传输数组常量,该节点被配置为VI编译或载入时是全局初始化,FPGA VI重置时忽略初始化。如要全局初始化“反馈节点”,右键单击初始化接线端,选择全局初始化»编译或加载时初始化。如要“反馈节点”忽略初始化,在其属性对话框的FPGA实现页面勾选忽略FPGA重置方法
    • 在读取和写入运算后必须放置“反馈节点”。
  • 对于单周期定时循环内的查找表实现,必须连线数组常量至移位寄存器或反馈节点。
注: 如数组常量不满足上述要求,LabVIEW切换回触发器模式或返回错误。

用于数组常量存储器实现的编程模式

通过下列FPGA VI模式帮助用户确定数组常量使用选中的存储器类型。反之,如FPGA VI不能编译,使用下列模式帮助用户判定故障的原因。

注: 下列FPGA VI中的反馈节点包含一个黄色的感叹号,表明它们不能被异步重置、重置后可能包含错误数据及不能在顶层VI执行间重置。存储器块和查找表不支持“反馈节点”内部的异步重置状态。

单周期定时循环内的数组常量编程范例

存储器块实现

如用户编程模式与下列范例类似,用户可在存储器块实现数组常量。

RAM模式

在下列编程模式中,注意“反馈节点”出现在“索引数组”执行的读取操作后,及“替换数组子集”执行的写入操作后。该模式可编译,因为其满足反馈节点仅有一个读取和写入操作的要求。

ROM模式

在下列编码模式中,注意“反馈节点”需放置在“索引数组”执行的读取操作后。

查找表实现

如用户编程模式与下列范例类似,用户可在查找表中实现数组常量。

RAM模式

在下列编码模式中,注意在单周期定时循环内,无需在“索引数组”执行的读取操作后放置“反馈节点”。并且所需的“反馈节点”连线至数组常量。

ROM模式

在下列编码模式中,注意“反馈节点”无需放置在“索引数组”执行的读取操作后。

单周期定时循环外的数组常量编程范例

如用户程序代码与下列模式类似,可在存储器块或查找表中实现数组常量。

RAM模式

下列编程模式仅允许“替换数组子集”执行的一个写入操作,及其后续由“索引数组”执行的一个读取操作。

ROM模式

下列编程模式允许由“索引数组”执行的无限个读取操作,且无需使用反馈节点。