首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何估计一项功能是否会占用FPGA上的太多资源?

如何估计一项功能是否会占用FPGA上的太多资源?
EN

Stack Overflow用户
提问于 2012-06-19 05:23:27
回答 2查看 158关注 0票数 3

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-19 16:37:00

要点1.我们在玩中学习,所以玩吧!试着做一些事情。看看这些工具能做些什么。感受一下这个问题。你不会过去的这就是你不去尝试。通常情况下,问题并不是你所想的那样。

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

要点3.有两种主要的“资源”需要考虑:-单元格和时间。

从广义上讲,Cells相对容易。有多少次失败?可识别块中有多少逻辑(例如在ALU中:乘法器、加法器等)?通常,这是由你想要做的设计定义的。你不能在没有寄存器、乘法器、加法器等的情况下构建ALU。

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

需要注意的事项包括:

  • 一个单一的网络驱动了大量的东西。大的扇形输出会对单个驱动器造成沉重的负载,这会减慢它的速度。然后,该工具必须使用单元来缓冲该信号。经典时间与单元之间的权衡。
  • 寄存器阶段之间的逻辑深度丛集。同样,该工具将不得不花费更多的单元来使逻辑在接近边缘时满足计时要求。简单的逻辑是快速和小巧的。有时引入流水线阶段可以减小设计的大小,因为它使逻辑两边的任何一方都更容易。

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

不同的工具和目标设备具有不同的特性,因此您必须针对您的设置来使用和学习规则。总会有尺寸和速度(以及现在的“功率”)的折衷。你需要了解是什么让你沿着这条曲线朝每个方向移动。这需要经验。

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

我能想出的唯一规则是‘我有时间吗?’

如果我有,我会去探索。如果不是,我最好让的东西工作。

啊哈,在截止日期前做设计的生活!

票数 2
EN

Stack Overflow用户

发布于 2012-06-19 16:34:05

这是经验带来的东西。这里有一些建议:

  • 加法相当便宜如果你有很多输入到多路复用器(每个输入的宽度也是次要问题),
  • 在它们之间选择(多路复用)会很快变得很大。如果你的芯片中有多余的乘法器,那么
  • Multiplications是免费的,当你没有硬盘时,它们就会突然变得昂贵。
  • 内存也很便宜,直到你用完。例如,您的4Kbit移位寄存器可以轻松地放入单个Xilinx块RAM中,如果您有一个空闲的RAM,这就很好了。如果不是,它将需要大量的LUT (取决于设备-旧的Spartan3可以在LUT中容纳17位(包括in-CLB寄存器),因此将需要大约235个LUT)。并且不是所有的LUT都可以是移位寄存器。如果你只担心寄存器的启用,请不要担心。除非你正在提升设备的性能,否则将这种信号路由到数百个LUT不太可能导致重大的时序问题。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11091303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档