首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有必要同时登记每个硬件核心的输入和输出?

是否有必要同时登记每个硬件核心的输入和输出?
EN

Stack Overflow用户
提问于 2011-12-19 21:38:53
回答 4查看 4.3K关注 0票数 6

我知道在使用这些输入之前,需要将所有输入同步到FPGA,以避免亚稳态。我还意识到需要在一个FPGA中同步跨时钟域的信号。这个问题与跨越时钟域无关。

我的问题是,在设计中常规地注册的所有输入和输出的,每个的内部硬件模块是否是一个好主意。其基本原理是,为了提高时钟速率,我们要打破组合逻辑的长链,以便满足所选时钟速率的定时约束。这将增加与信号必须交叉的模块数量成比例的额外延迟周期。这是个好主意还是坏主意?应该只登记输入而不是输出吗?

答案摘要

经验法则:注册所有内部FPGA核心的输出,不需要注册输入。如果输出已经来自寄存器,例如状态机的状态寄存器,那么就不需要再次注册。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-19 22:37:38

很难给出一个严格而快速的规则。它确实取决于许多因素.

它可以:

  • 通过分解组合路径(
  • )来增加Fmax,通过允许工具在
  • 部件中扩展逻辑,使得划分您的设计更容易,从而允许部分重建。

它不会神奇地解决关键路径的时间问题。如果在一个主要的“块”中有一条关键路径,那么它仍然是您的关键路径。

此外,您可能会遇到更多的问题,这取决于您的设计在目标部分的充分程度。

这些都说明,我只倾向于注册输出。

票数 6
EN

Stack Overflow用户

发布于 2011-12-19 22:08:56

在FPGA设计中注册每个内部硬件模块的所有输入和输出都有点过分。如果输出寄存器输入寄存器之间没有逻辑,则消耗所需寄存器的2倍。当然,除非你在做逻辑路径平衡。

在FPGA设计中,只记录每个内部硬件模块的输入而不是输出是一种保守的设计方法。如果设计满足其性能和资源利用需求,那么这是一种有效的方法。

如果设计不能满足其性能/利用率要求,则必须进行额外的时序分析,以减少FPGA内给定逻辑路径中的寄存器。

票数 2
EN

Stack Overflow用户

发布于 2011-12-20 09:39:22

我的问题是,在FPGA设计中常规地注册每个内部硬件模块的所有输入和输出是否是一个好主意。

不,照例引入这样的寄存器不是个好主意。

同时执行输入和输出的

  1. 是多余的。它们将不是输出寄存器和下一个输入寄存器之间的逻辑。
  2. ,如果我的块包含一个和门,那就太过分了。这取决于时间和设计的complexity.
  3. Register阶段需要适当的考虑和设计。当输出FIFO填满或其他失速条件时会发生什么?是否所有信号都有正确的寄存器延迟,使它们在正确的周期中出现在正确的阶段?添加寄存器不一定像看起来那么简单。

的基本原理是,为了提高时钟速率,我们要打破组合逻辑的长链,以便满足所选时钟速率的定时约束。这将增加与信号必须交叉的模块数量成比例的额外延迟周期。这是个好主意还是坏主意?

在这种情况下,听起来您必须引入寄存器,而不应该将前面的几点读为“不要这样做”。只是不要盲目地去做。想想寄存器周围的控制逻辑和逻辑的(现在)多周期性质。你现在正在建造一条“管道”。当输出不能写入时,能够正确地阻塞管道是bug的一个巨大来源。

想象一下在路上行驶的汽车。如果一辆车停了刹车,后面所有的车都需要刹车和刹车。如果第一辆汽车的刹车灯不工作,下一辆车将无法获得刹车信号,它将坠毁。类似地,管道中的每一个阶段都需要告诉前一个阶段,它停止了一会儿。

您可以发现的是,在计算路径上没有长时间路径从输入到输出,而是在启用时使用长时间路径来控制从输出到输入的所有这些寄存器阶段。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8567900

复制
相关文章

相似问题

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