主页
技术支持
如何优化FPGA可用资源或提升速度
如何优化FPGA可用资源或提升速度
更新 Nov 16, 2023
适用于
“适用于”表示本页面提供的解决方案已被证实适用于列出的产品。该方案或同样适用于类似产品或应用。
软件
LabVIEW FPGA Module
问题详述
当我编译FPGA代码时,由于
过度映射
(overmap),未能满足时序要求或无法以我所需的循环速率执行,导致编译失败。我可以采取哪些步骤来优化我的FPGA代码并解决这些问题?
解决方案
减少门的使用并提高速度:
避免使用大型VI
编译后,会生成一个报告,提供有关已编译VI的速度和大小的信息。 设备使用摘要部分提供有关所用slices数量的信息。此评估标准是硬件上已编译程序大小的最重要指标。设计过程应该是一个迭代过程。在此过程中,随着程序变大,使用的slices可能会增加,从而可以确定何时空间不足。
使用单周期定时循环(SCTL)来优化代码
任何放入SCTL的LabVIEW FPGA代码都被针对性能进行了优化,并且消除了所有额外的逻辑强制数据流。因此,将部分代码放入SCTL并简单地将true连接到停止条件(仅运行一次)将创建优化的代码,从而减少FPGA使用并允许您为代码指定时钟源。
使用适当的仲裁
可重入子VI中的共享资源导致仲裁以防止竞争状况和同时访问。仲裁消耗大量FPGA资源,并且可能阻碍并行执行,因为代码的某些部分无法继续执行,直到资源再次释放。
只减少门资源的使用:
限制前面板数组
由于FPGA需要双缓冲,因此前面板上的数组占用了大量的空间。前面板数组控件和显示控件可以用DMA FIFO,实例化块存储器,索引表或程序框图常量来替代。
最少化前面板元素
FPGA Main VI前面板上的每个元件都会创建一个寄存器,以便主机可以与FPGA进行通信。此过程在FPGA上消耗额外的门资源。如果您不需要与主机端通信,请将这些控件转换为常量或全局变量。
用基于二进制逻辑的计算替换算术面板子VI
对于某些情况,函数面板子VI(例如
商与余数
,大于
?,
和判定
范围并强制转换
可以简化为二进制操作。这可能会大大降低FPGA上的门资源使用,但可能需要更多的时间来完成。
创建内存项和FIFO时使用内存块
在为FPGA目标创建存储器项和FIFO时,有几种选择可用于在硬件上创建实例。其中一些(例如触发器或查找表执行)使用FPGA资源,这些资源可能是FPGA VI的其他部分所需要的。将这些替换为使用内存块,将释放这些资源以供其他部分的代码使用。程序框图中的大型数组也可能耗尽这些资源,因此在需要存储大量值时,请考虑使用内存选项。
将代码引入到主机端
有的时候一些处理不需要在 FPGA 中执行。也许您程序中的部分可以在主机端执行,然后利用 DMA 或者 I/O 节点通信的方式将结果发送回 FPGA。
将FPGA代码分成多个部分
有时候您的 FPGA 代码含有多个部分,而这些部分不需要在同一时间在芯片上执行。例如,一个特殊的测试有四个测试情况。您可以创建四个独立的 FPGA 程序,在需要的时候从主机端下载并运行,而无需将这四种情况都放到一个程序中。
使用非重入子VI
默认情况下,所有LabVIEW FPGA VI都是可重入的,这将为您使用的子VI的每一处调用分配新的资源。通过将某些子VI切换到非重入,这些子VI的调用都将使用相同的硬件资源。
只提高速度:
使用并行操作
FPGA编程的一个主要优点是能够在处理多个数据集或迭代时轻松实现并行执行。通过在代码部分创建并行程序,可以减少执行处理所需的总时间。由于FPGA VI默认是可重入的,因此可以像并行运行多个子VI一样简洁。
使用流水线技术
通过将顺序进程划分为可并行运行的离散步骤,流水线技术允许代码的多个部分同时运行。通过用这种方式处理数据的不同部分,可以加快代码运行的总速度。使用移位寄存器或反馈节点允许逻辑并行执行并同时处理多次迭代。
有关详细信息,请参阅
NI LabVIEW for CompactRIO开发人员指南
。
更多需求请参考
NI LabVIEW高性能FPGA开发人员指南
相关链接
KnowledgeBase 38S79L9U: 为什么我的FPGA在编译时会给出OVERMAPPED的错误?
LabVIEW FPGA编程中使用可重入子VI的优势与缺点
Optimizing your LabVIEW FPGA VIs: Parallel Execution and Pipelining
Introduction to FPGA Hardware Concepts (FPGA Module)
Optimizing FPGA VIs Using Pipelining (FPGA Module)
Optimizing FPGA VIs for Speed and Size
FPGA Memory Items
NI LabVIEW高性能FPGA开发指南
其他支持选项
询问NI社区
在我们的论坛中与其他用户协作
搜索NI社区以寻求解决方案
请求工程师的支持
可能需要有效的服务协议或有效的软件订阅,同时支持选项因国家/地区而异
打开服务请求
了解软件订阅和服务
了解硬件服务计划
Was this information helpful?
Helpful
Not Helpful