启用链是LabVIEW添加至FPGA代码的附加逻辑,用于强制执行FPGA的数据流。启用链包含两个部分:

  • 与程序框图上的实际数据流并行运行的一组寄存器。启用链的此部分仅位于单周期定时循环的外部。
  • 强制执行单周期定时循环内部数据流的隐式启用信号该信号扇出包含状态保持元素的循环内部的全部节点。

单周期定时循环外的数据流

LabVIEW以数据流的方式执行代码。当数据在节点运行所需的全部输入端就绪时,节点开始执行。节点执行结束后,节点输出传送数据至下一节点。下列示意图显示了一个要在单周期定时循环外部实现布尔函数的FPGA硬件的范例。

启用链确保FPGA逻辑按照其在LabVIEW程序框图中的顺序执行。示意图显示了函数位于单周期定时循环外部时,布尔函数转换为FPGA逻辑的过程。下列示意图的函数部分显示了程序框图上相对于“取负数”函数的布尔逻辑。启用链部分包含额外的同步寄存器,仅在时钟的上升沿输出数据。

下列示意图给出了一个执行算法操作的FPGA硬件的范例。

根据启用链的系统开销,每个函数或VI至少占用一个时钟周期。某些函数(例如,模拟输入运算)将占用几百个时钟周期。具体取决于运算的复杂程度及硬件限制。

单周期定时循环内的数据流

放置在单周期定时循环内部的节点不包含启用链的寄存器部分。如排除启用链的系统开销,FPGA的整体空间使用量将有所下降。因为不再需要用于启用链的触发器。同样由于不再存在启用链,单周期定时循环内的所有运算均可在一个时钟周期内完成。但某些节点(例如,存储器方法节点或FFT Express VI)需要大于一个时钟周期的执行时间,因此该节点的输出要等待至单周期定时循环的下一次迭代时才有效。获取有效数据所需的时钟周期数量为节点的延时。

隐式启用信号对定时性能的影响

单周期定时循环内的隐式启用信号扇出程序框图内的全部触发器。LabVIEW将门控与单周期定时循环相关的时钟,直至隐式启用信号被移除。该扇出的额外连线系统开销将限制大型设计的定时性能。如设计包含独立于程序框图上其他节点运行的单周期定时循环,请考虑从上述循环中移除隐式启用信号以改善定时性能。

注: 移除隐式启用信号的支持随终端变化。关于移除隐式启用信号支持的详细信息,见终端硬件文档。

下文描述了一个包含单周期定时循环代码的程序框图。

下列示意图为上述程序框图代码的VHDL表示。

注意,默认情况下,隐式启用信号扇出包含状态保持元素(例如,触发器或存储器块)的单周期定时循环的每个节点。该连线的系统开销限制了某些应用的定时性能。

下列示意图为移除了隐式启用信号的同一VHDL表达。