LabVIEW FPGA模块在时钟电路的运用

  作者:沉默的offer 时间:2018-11-12

如要使用数据流模型执行代码,LabVIEW将同步FPGA上的逻辑。默认情况下,LabVIEW FPGA在程序框图的逻辑函数间放置一个寄存器,以最大化每个操作执行所需的传播时间。

传播延时是指信号由一个寄存器传播至下一个寄存器所需的时间。组合路径是信号由一个寄存器经另一个寄存器的逻辑和接线的集合。

由于每个时钟周期均更新寄存器内容,因此传播延时必须小于时钟周期。传播延时由两部分组成:逻辑延时和连线延时。逻辑延时是信号经过的逻辑门数量和类型的函数,通常表示传播延时中最重要的组件。连线延时是信号通过的连线路径的函数,其通常很小。因为FPGA编译器尝试尽可能紧密的集合组合路径的组件。但当FPGA VI达到FPGA的容量限制时,函数间的物理间隔将增加。同时连线延时将成为两个寄存器间总体传播延时的主要组成部分。如两个寄存器间的传播延时大于FPGA时钟速率,FPGA编译器将返回定时错误。该定时错误称为时间限制或周期限制冲突。

注: 给定函数的逻辑延时随终端变化。连线延时在每次FPGA VI编译时均发生变化。

LabVIEW FPGA模块专用于生成可在单周期定时循环外部以至少40 MHz的时钟速率运行的电路。40 MHz时钟速率对应的是25 ns的时钟周期。为了避免2个寄存器间的传播延时超出25 ns,多数LabVIEW函数均包含一个输出寄存器,因此需要一个完整的时钟执行周期。如2个寄存器间的传播延时超出了25 ns,FPGA VI无法在40 MHz默认的时钟速率完成编译。

例如,假设函数A需要6 ns的逻辑延时,函数B需要14 ns的逻辑延时。如顺序连线函数A和B,而不在函数间添加寄存器。整体逻辑延时为20 ns。如要在40 MHz的默认时钟速率下完成编译,连线延时只能为5 ns。根据FPGA编译器在函数间的连线方式,连线延时可能超出或不超出5 ns。如下列场景和1和2所示。

在场景1中,设计满足40 MHz的定时限制。在场景2中,设计不满足40 MHz的时钟限制。当用户尝试编译FPGA VI时将产生定时冲突错误。相比之下场景3中,2个函数之间添加了寄存器。添加寄存器后将产生2个独立的传播延时。即使连线路径较长,2个传播延时均可实现在40 MHz内完成编译。

当函数位于单周期定时循环外时,FPGA编译器将在函数的逻辑级间均匀放置寄存器,以将逻辑划分为可在默认FPGA时钟速率内执行的部分。如函数包含运行在FPGA上的内部寄存器(例如,存储器方法节点),函数的执行时间周期数量与函数寄存器数量相等。

如在同一时钟速率下,需要以较小的延时执行逻辑可使用单周期定时循环。如在单周期定时循环内放置函数,编译器不会包含用于该函数的输出寄存器,因此单周期定时循环可在一个时钟周期内完成。某些函数(例如窗函数缩放或FFT Express VI),即使当其位于单周期定时循环内部时,也需要多个时钟执行周期。握手机制可用于管理上述函数的数据定时。

如单周期定时循环内的传播延时大于时钟周期,定时冲突分析窗口将指出未能满足定时要求的单周期定时循环。在某些情况下,可使用反馈节点或移位寄存器缩短组合路径的长度,以实现流水线设计。

注: 如在单周期定时循环内使用高吞吐率数学函数,用户可添加内部寄存器缩短函数间的组合路径长度。

大型FPGA应用的资源考虑

每个FPGA终端包含一定数量的触发器。由于寄存器使用触发器,用于FPGA VI的寄存器数量和类型将决定FPGA VI是否能够满足FPGA终端的需求。通常寄存器使用的触发器数量与数据类型宽度相对应。例如,布尔寄存器仅需要一个触发器来存储数据,而一个I64寄存器需要使用64个寄存器来存储数据。

对于多数用户来说,FPGA上有限的触发器数量并不是问题。但如FPGA上的资源耗尽,则需要优化FPGA VI的大小。

关键词: fpga labview

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关电路