结构选板的详细信息(FPGA模块)
- 更新时间2025-01-28
- 阅读时长6分钟
本主题包含有关结构 选板。
注: 本主题中的信息根据LabVIEW FPGA模块的不同版本变化而变化。
| 单周期定时循环 | 支持。 |
| 使用 | N/A |
| 定时 | 在单周期定时循环内-在单周期定时循环内使用条件结构时,评估条件选择器所需的组合逻辑延时与选择器的输入数据类型宽度和条件分支数量成比例。输出隧道引入的组合逻辑延时与条件分支的数量成比例。 在单周期定时循环外-在单周期定时循环外使用条件结构时,函数占用一个时钟周期,以评估条件选择器。输出隧道不需要用于执行的时钟周期,也不包含寄存器。 |
| 资源 | 条件选择器占用的FPGA资源与输入数据类型的宽度及条件分支数量成比例。输出隧道占用的FPGA资源与输出数据类型的宽度和条件分支数量成比例。 |
| 说明 | 复杂的条件结构可能导致长组合路径 并限制时钟域的最大时钟速率。 |
| 单周期定时循环 | 支持。 |
| 使用 | 在FPGA VI中使用条件禁用结构时,LabVIEW在编译时评估条件,并仅编译一个子程序框图。 |
| 定时 | 进入和退出结构不会占用FPGA时钟周期。 |
| 资源 | 仅一个程序框图禁用结构的子程序框图被编译至FPGA。非活动子程序框图不会占用FPGA资源。程序框图禁用结构本身也不会占用FPGA资源。 |
| 单周期定时循环 | 支持。 |
| 使用 | 您可以使用反馈节点来实现流水线 并减少长组合路径或者使用“反馈节点”返回单周期定时循环内子VI的反馈。在条件结构内使用反馈节点时,反馈节点仅在所属子程序框图执行的时钟周期更新数据。 |
| 定时 | 在单周期定时循环内-在单周期定时循环内初始化反馈节点时,初始化过程不会占用时钟周期。但如果初始化数据来自不同的时钟域,初始化过程会占用多个时钟周期。 在单周期定时循环外-在单周期定时循环外,初始化所有反馈节点占用一个时钟周期。 |
| 资源 | 反馈节点被实现为寄存器 ,并且需要的FPGA资源与数据类型的宽度成正比。使用初始化接线端将少量增加FPGA资源的使用。 |
| 说明 | 考虑使用离散延迟 函数,而不是反馈节点。 |
| 单周期定时循环 | 在单周期定时循环内使用顺序结构不会影响执行顺序。 |
| 使用 | N/A |
| 定时 | 结构不需要用于执行的时钟周期,因为函数不包含内部寄存器。 |
| 资源 | 该结构占用最少的FPGA资源。 |
| 单周期定时循环 | 受限的支持。 如For循环仅包含数组、数值、布尔或比较运算且仅使用自动索引的隧道,可在单周期定时循环内放置For循环。在单周期定时循环的For循环内,不允许使用生成或包含状态的对象(例如,移位寄存器、反馈节点或VI调用)。 |
| 使用 | 循环计数(i)接线端为32位有符号整数,最大饱和值为2^31 - 1。 不支持条件接线端。不支持循环并行迭代。 |
| 定时 | For循环在循环间导致2个时钟周期的开销。如果For循环包含已初始化的移位寄存器,循环第一次执行前占用一个时钟周期,以初始化移位寄存器的值。 |
| 资源 | For循环由小的状态机组成。移位寄存器占用的FPGA资源与数据类型宽度成比例。循环的自动索引由每个数组元素的隐藏移位寄存器组成。 |
| 说明 | LabVIEW FPGA模块仅支持编译时可转换为单个大小的一维数组。如LabVIEW无法推断数组的单一大小,可能需要手动配置数组为固定大小 |
| 单周期定时循环 | 支持。 |
| 使用 | 全局变量比局部变量占用的FPGA资源少,因此在不需要传递变量至主机VI的情况下,使用全局变量更好。 |
| 定时 | 全局变量至少占用一个时钟周期,而连线不占用时钟周期。为了提高资源使用率,在连线能够实现的情况下,应尽量避免使用变量。 |
| 资源 | 全局变量占用的FPGA资源与数据类型宽度成比例。 |
| 单周期定时循环 | 支持。 |
| 使用 | 全局变量比局部变量占用的FPGA资源少,因此在不需要传递变量至主机VI的情况下,使用全局变量更好。 |
| 定时 | 局部变量至少占用一个时钟周期,而连线不占用时钟周期。为了提高资源使用率,在连线能够实现的情况下,应尽量避免使用变量。 |
| 资源 | 局部变量占用的FPGA资源与数据类型宽度成比例,外加与主机VI通信的开销。考虑限制前面板对象,包括用作局部变量的对象,以优化FPGA VI。 |
| 单周期定时循环 | 在单周期定时循环内使用顺序结构不会影响执行顺序。 |
| 使用 | N/A |
| 定时 | 函数不需要用于执行的时钟周期,因为函数不包含内部寄存器。 |
| 资源 | 该结构占用最少的FPGA资源。 |
请参阅关于在FPGA VI中使用和配置定时循环的详细信息,请参见 单周期定时循环 主题。
| 单周期定时循环 | 支持。 |
| 使用 | 在FPGA VI中使用类型专用结构时,LabVIEW在编译时评估编译结果,并仅编译一个子程序框图。 |
| 定时 | 进入和退出结构不会占用FPGA时钟周期。 |
| 资源 | 仅一个类型专用结构的子程序框图被编译至FPGA。非活动子程序框图不会占用FPGA资源。类型专用结构本身也不会占用FPGA资源。 |
| 单周期定时循环 | 不支持。 |
| 使用 | 循环计数(i)接线端为32位有符号整数,最大饱和值为2^31 - 1。 |
| 定时 | While循环在循环间导致2个时钟周期的开销。如果While循环包含已初始化的移位寄存器,循环第一次执行前占用一个时钟周期,以初始化移位寄存器的值。通常放置在While循环中的代码与放置在单周期定时循环中的相同代码相比 ,执行该代码所需的时间更长 。 |
| 资源 | While循环由小的状态机组成。移位寄存器占用的FPGA资源与数据类型宽度成比例。循环的自动索引由每个数组元素的隐藏移位寄存器组成。 |