在同时支持闩锁的FPGA中,何时使用锁存器比触发器更好?


20

问题:

在同时支持闩锁的FPGA中,何时使用锁存器比触发器更好?

背景:

众所周知的原理是,在FPGA中应避免使用电平敏感的透明锁存器,而应仅使用边缘敏感的触发器。大多数FPGA架构本身都支持锁存器和触发器。

甚至从FPGA供应商那里获得的一般建议都是要警惕锁存器,或者永远不要使用锁存器等。此建议有充分的理由,其详细信息众所周知。但是,大多数建议的措词是:“除非知道需要使用闩锁,否则请不要使用”。

我是一位经验丰富的FPGA设计人员,多年来,每当我以为自己知道我需要一个锁存器时,便很快意识到使用触发器可以找到一种更好的方法。我有兴趣听取有关何时使用锁存器无疑更好的示例。

重要的提示:

锁存器和触发器经常使人们感到震惊。我只对这个问题的答案感兴趣。解释锁存器和触发器之间差异的响应,阐述不使用锁存器的原因,详述为什么触发器比锁存器更好的原因,谈论锁存器在非FPGA目标中的性能如何等等,这些都是完全不合主题的。


当您使用FPGA精确模拟使用锁存器的现有电路时?
Majenko

Answers:


11

您的问题基本上是:“什么时候知道您需要闩锁?” 正如您所暗示的,这是一个主观问题。期望得到更多的意见而不是事实作为答案。话虽如此,这是我的看法:

我和您一样,经常找到更好的方法来使用触发器,从而避免闩锁。由此产生的逻辑通常更优雅,更强大。但是有时候我没有足够的控制逻辑来避免闩锁。例如,我可能正在连接需要锁存器以满足所需规格的处理器总线。由于我无法重新设计CPU或总线,因此卡住了闩锁。

在过去的13年中,这是我唯一一次需要闩锁的情况。


2
感谢您的回答。我正在以“强制性向后兼容”的形式提出您的答复,这似乎是完全合理的。=)
wjl

8

触发器通常比闩锁更可取,因为它们只有四个竞争条件/约束:

  1. 从更改数据输入到随后的有效时钟沿之间的建立时间,以及
  2. 在时钟沿和下一次数据输入更改之间的保持时间;
  3. 最小有效时钟脉冲持续时间;
  4. 最小无效时钟脉冲持续时间。

如果满足这些约束条件,则触发器的输出将完全“干净”,不会产生混乱。此外,触发器的时序在某种意义上是“数字的”:如果满足时序约束,则输出将仅在有效时钟沿之后的可预测窗口内变化,而与输入时序无关。因此,无论深度如何,级联触发器的效果都是可以预测的。相比之下,锁存器输出的时序更为“模拟”。进入锁存器的信号延迟会导致信号延迟。即使满足闩锁自身的约束,此延迟也可能导致下游问题。

我建议使用锁存器,以最合理地模拟芯片输出所需的行为。例如,假设某人的硬件起串行到并行转换器的作用,其中在帧同步后的第一个时钟的上升沿和下降沿之间,第一个输出跟踪输入。在第二个时钟的上升沿和下降沿之间,第二个输出跟踪输入,等等。人们可以使用触发器和纯粹的组合逻辑设计电路,只要满足时序约束,就会产生这种行为,但是这种电路会更多这比使用锁存器复杂得多,并且如果不满足时序约束,则更容易表现出奇怪的行为。


3
“回答解释锁存器和触发器之间的差异,阐述不使用锁存器的原因,详细说明为什么触发器比锁存器更好的原因,谈论锁存器在非FPGA目标中的性能如何等等,这完全是题外话。 ”。
Majenko

@supercat至少答案的第二部分确实对问题有相关的答案。=)谢谢。
wjl 2011年

1
@Majenko:也许我应该说“易于使用”,而不是“首选”;我的意思不是说应该尽可能避免使用闩锁,而是建议使用闩锁的人需要了解其复杂性。
超级猫

@supercat,能否请您用一个简短的波形来阐明您的示例?
菲利普

1

在我的工作中,有时必须在FPGA中实现锁存器,但这始终是“不得已”的解决方案。如果我不能保证时钟的速度足以确保总线和控制信号的正确采样和同步,那么典型的应用包括与异步接口或总线的连接。

主要问题是锁存器是一个异步块。因此,必须确保为锁存器生成输入信号的组合功能是无竞争的。否则,它们可能会产生毛刺,这些毛刺可能会被锁住,从而对系统造成危害

为了避免比赛,您必须以特殊的冗余方式实现这些组合功能。不幸的是(在这种情况下,;-否则,这是一个很好的特性),FPGA综合工具可以优化您的设计,消除所有冗余。因此,如果要在FPGA中实现锁存器,则必须“手工”实现并防止优化(例如,在VHDL中,您可能需要将锁存器内部使用的信号的属性“ keep”设置为“ true”) 。


-1 OP专门问了一下,当你使用锁,并特意嘱咐读者给予更多的原因,锁存器不应该使用。
2014年

-1

在时间方面:

如果我们在设计中使用触发器,那么性能取决于最长的组合路径延迟。

如果我们使用锁存器代替触发器,则可以通过从下一阶段的较短路径延迟中借用时间来补偿最长的组合路径延迟。这样,我们可以减少延迟并提高设计性能。


3
-1。更好地使用多周期约束对其进行正确分析,并允许“异步”部分运行两个周期。参见例如altera.co.uk/literature/hb/qts/qts_qii53018.pdf的
shuckc 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.