【问题标题】:How can I estimate if a feature is going to take up too many resources on an FPGA?我如何估计一个特性是否会占用 FPGA 上的太多资源?
【发布时间】:2012-06-18 21:23:27
【问题描述】:

我正在开始我的第一个商业规模的应用程序,我经常发现自己在做一个设计,但却阻止自己编码和实现它,因为这似乎是对资源的巨大使用。当它位于外围设备上时尤其如此(例如,启用移位寄存器的输出抽头)。当我考虑通用实现可以得到多大时(抽头示例为 4k 位),情况会变得更糟。最干净的实现会有这些,但在我看来,它会增加大量开销。

有没有什么规则我可以​​用来快速决定一个设计选项是否值得编码和评估?一般来说,我不太担心触发器的数量,而更多地担心信号的宽度。这可能只是来自 CS 背景,其中所有应用程序边界都应尽可能小以防止开销。

【问题讨论】:

    标签: hardware vhdl fpga


    【解决方案1】:

    第 1 点。我们通过玩来学习,所以玩!尝试几件事。看看这些工具的作用。感受一下问题所在。你不会通过这是你不尝试的东西。问题往往出在你认为它们会出现的地方。

    第 2 点。您需要了解这些决策的背景。与 FPGA/您的设计的容量相比,向移位寄存器添加使能有多大?

    第 3 点。有两种主要类型的“资源”需要考虑:- 细胞和时间。

    从广义上讲,单元格相对容易。多少次翻牌?可识别块中有多少逻辑(例如在 ALU 中:乘法器、加法器等)?这通常由您尝试执行的设计定义。没有寄存器、乘法器、加法器等就无法构建 ALU。

    时间更加微妙,并且总是与细胞进行权衡。您将尝试达到一些性能目标,并认识到从第 1 点开始体验的结构会使这变得困难。

    需要注意的事项包括:

    • 一个网络驱动大量事物。大扇出会导致单个驱动器负载过重,从而减慢速度。然后,该工具将不得不使用单元来缓冲该信号。经典时间与单元格之间的权衡。
    • 寄存器级之间的逻辑很深。同样,如果工具接近边缘,则该工具将不得不花费更多单元来使逻辑满足时序。简单的逻辑既快又小。有时引入流水线阶段可以减小设计的尺寸,因为它使双方的逻辑变得更加容易。

    不要太担心大型总线,如果每个位都是低扇出并且您已经为寄存器进行了预算。大型总线通常是快速设计所固有的,因为您需要高带宽。宽频比提高时钟速度更容易。另一方面,考虑宽总线的控制逻辑,因为它可能有很大的扇出。

    不同的工具和目标设备具有不同的特性,因此您必须玩游戏并学习设置规则。总是存在尺寸与速度(现在是“与功率”)的妥协。你需要了解是什么让你沿着这条曲线在每个方向上移动。这需要经验。

    有什么规则可以让我快速决定一个设计选项是否值得编码和评估?

    我能想出的唯一规则是“我有时间吗?还是不行?'

    如果有,我会探索。如果不是,我最好让 something 工作。

    啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!

    【讨论】:

      【解决方案2】:

      这是经验带来的东西。这里有一些提示:

      • 添加数字相当便宜
      • 如果多路复用器有很多输入(每个输入的宽度也是次要问题),那么在它们(多路复用)之间进行选择会很快变得很大。
      • 如果您的芯片中有备用乘法器,则乘法是免费的,但当您用完硬 DSP 块时,它们会突然变得昂贵。
      • 内存也很便宜,直到你用完为止。例如,您的 4Kbit 移位寄存器可以轻松装入单个 Xilinx 块 RAM,如果您有一个空闲块,这很好。如果不是,它将需要大量 LUT(取决于设备 - 较旧的 Spartan 3 可以将 17 位放入 LUT(包括 CLB 寄存器),因此需要约 235 个 LUT)。并不是所有的 LUT 都可以成为移位寄存器。如果您只担心寄存器的启用,请不要。除非您正在提高设备的性能,否则将此类信号路由到数百个 LUT 不太可能导致严重的时序问题。

      【讨论】:

        猜你喜欢
        • 2013-08-14
        • 2011-12-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-23
        • 1970-01-01
        • 2011-12-12
        相关资源
        最近更新 更多