存储和访问FPGA设计不同部分的数据
- 更新时间2025-05-20
- 阅读时长7分钟
当需要通过多个时钟域访问通过FPGA应用存储的数据时,请选择下列选项:
| 方法 | 使用场景 |
|---|---|
| 寄存器项 |
|
| 使用存储器块实现存储器项 |
|
| 握手项 |
|
寄存器项
在下列情况下使用寄存器项存储数据:需要跨越多个时钟域访问数据、需要访问设计不同部分的数据以及需要写入可重入代码。相对于FIFO,寄存器项占用较少的FPGA资源。并且寄存器项不会占用稀缺的FPGA资源(存储器块)。
LabVIEW FPGA模块具有两种寄存器项类型:
- 通过VI定义的寄存器项:使用VI定义的寄存器项创建重入子VI并避免资源冲突。在重入FPGA VI中配置通过VI定义的寄存器项,LabVIEW将为用于VI的每个实例的寄存器项创建独立的副本。
- 终端范围的寄存器项:如需寄存器项可见且可通过项目浏览器窗口配置,请使用终端范围的寄存器项。终端范围的寄存器项在项目浏览器窗口的同一终端下的任意FPGA VI内均可用。
下列程序框图为使用寄存器方法节点读取和写入寄存器项的方法,该节点配置用于终端范围的寄存器项。此VI可将X和Y两个控件的值相加,将和值写入寄存器项,读取存储的值,将存储的值递增加1并将结果传递至显示控件。注意,“写入”方法和“读取”方法位于两个不同的时钟域内。
通过项目浏览器窗口创建终端范围的寄存器项
按照下列步骤通过项目浏览器窗口创建终端范围的寄存器项。
- 在项目浏览器窗口,右键单击FPGA终端。
- 选择新建»寄存器,显示FPGA寄存器属性对话框。
- 单击确定,完成创建寄存器项。
- 从项目浏览器窗口拖拽寄存器项至程序框图。LabVIEW添加一个用于寄存器项的寄存器方法节点。
通过程序框图创建寄存器项
通过程序框图可创建终端范围的或VI定义的寄存器项。
终端范围:
- 显示FPGA VI的程序框图。
- 在函数选板中,添加寄存器方法节点至程序框图。
- 右键单击寄存器方法节点,选择添加新寄存器,显示FPGA寄存器属性对话框。

提示也可以右键单击寄存器方法节点,选择选择寄存器»x,其中x为已有的寄存器项。 - 单击确定,完成创建寄存器项。
也可以连线寄存器输入输入端的引用,指定现有的寄存器项。LabVIEW将配置寄存器方法节点为默认的写入方法。指定寄存器项后,右键单击寄存器方法节点,选择选择方法»y,其中y为指定的方法。
通过VI定义:
- 显示FPGA VI的程序框图。
- 在函数选板中,添加通过VI定义寄存器配置节点至程序框图。
- 右键单击通过VI定义寄存器配置节点,选择配置,显示FPGA寄存器属性对话框。
- 单击确定,完成创建寄存器项。
握手项
握手项与单元素FIFO操作类似。使用握手项在写入方节点和读取方节点间传输单个数据元素,写入方节点与读取方节点可位于同一时钟域或不同时钟域。使用握手项在写入域和读取域间实现无损耗的传输,并在读取方接收到数据时通知写入域。相对于FIFO,握手项占用较少的FPGA资源。并且握手项不会占用稀缺的FPGA资源(存储器块)。
LabVIEW FPGA模块具有两种握手项类型:
- 通过VI定义的握手项:使用通过VI定义的握手项创建重入子VI并避免资源冲突。在重入FPGA VI中配置通过VI定义的握手项,LabVIEW将为用于VI的每个实例的握手项创建独立的副本。
- 终端范围的握手项:如需握手项可见且可通过项目浏览器窗口配置,请使用终端范围的握手项。终端范围的握手项在项目浏览器窗口中同一终端下的任意FPGA VI内均可用。
使用握手方法节点读取数据
使用握手方法节点有两种读取数据的方法:
| 方法 | 使用场景 |
|---|---|
| 读取方法 |
|
| 确认的读取方法和无需确认的读取方法 |
|
下列程序框图为使用握手方法节点读取和写入握手项的方法,该节点配置用于终端范围的握手项。该VI将值每次递增1,将数据写入握手项,读取存储的值并自动通知读取方。输入就绪为TRUE时,输入有效为TRUE。当输出有效为TRUE时,VI会将存储的值写入显示控件。注意,“写入”方法和“读取”方法位于两个不同的时钟域内。如红框所示。该设计确保将全部数据点写入至更快的时钟域,且无数据损耗。
通过“项目浏览器”窗口创建终端范围的握手项
按照下列步骤通过项目浏览器窗口创建终端范围的握手项:
- 在项目浏览器窗口,右键单击FPGA终端。
- 选择新建»握手,显示FPGA握手属性对话框。使用对话框中的选项配置握手项。
- 单击确定,完成创建握手项。
- 从项目浏览器窗口拖拽握手项至程序框图。LabVIEW添加一个用于握手项的握手方法节点。
通过程序框图创建握手项
通过程序框图可创建终端范围的或通过VI定义的握手项。
终端范围:
- 显示FPGA VI的程序框图。
- 添加握手方法节点至程序框图。
- 右键单击握手方法节点,选择添加新握手,显示FPGA握手属性对话框。

提示也可以右键单击握手方法节点,选择选择握手»x,其中x为已有的握手项。 - 单击确定,完成创建握手项。
也可以连线握手输入输入端的引用,指定握手项。LabVIEW会将握手方法节点配置为默认的模式(写入)。指定握手项后,右键单击握手方法节点,选择选择方法»y,其中y为指定的方法。
通过VI定义:
- 显示FPGA VI的程序框图。
- 添加握手方法节点至程序框图。
- 右键单击通过VI定义握手配置节点,显示FPGA握手属性对话框。
- 单击确定,完成创建握手项。