【问题标题】:How to drive a clock to a single clock domain?如何将时钟驱动到单个时钟域?
【发布时间】:2014-07-01 15:20:46
【问题描述】:

我有一个项目要在 FPGA(旋风 IV)上使用 VHDL 进行。我的大多数实体都使用单个时钟。我知道时钟门控不是一个好的解决方案(见图),因为它会导致时序违规。有人能告诉我做这种事情的良好实践规则是什么吗? (我显然在互联网上做了一些研究,但我发现的每个链接都在谈论时钟域交叉) 谢谢你

【问题讨论】:

  • 没有考虑“Hello”行...
  • 您有什么顾虑?拥有一个单一的时钟域通常很简单,并且可以立即得到综合和时序工具的支持。您是否发现任何问题或错误?
  • 我担心的是(在图像上)第二个触发器的输出不会与第三个触发器的时钟同时变化,因为延迟不同,然后第三个触发器的输入可以不正确。我的错误是没有满足时间要求。
  • 您的时序要求是什么,哪些没有满足?另外,您的图像中的时钟路径(Delay=dC)有什么特别之处吗?
  • 如果您在设计上遇到时序问题,这通常表明您的代码写得不好,并且触发器之间的组合逻辑过多。不要试图通过将主时钟域划分为更小的东西来解决这个问题。通过优化代码和添加流水线阶段来分解处理并让它占用更多时钟来解决这个问题。这将使工具有更多时间来满足您的时序要求。

标签: delay vhdl clock fpga


【解决方案1】:

该图不是时钟门控的演示。它显示了时钟分布树不同部分之间偏斜的影响。即使您没有对时钟进行门控,这也是综合任何实际设计的现实。除了时钟分布中自然发生的偏差之外,门控时钟还会在其扇出内的节点上引入额外的偏差。

在非平凡的设备中,时钟通过缓冲器树传递以最小化电容负载。在 FPGA 中,时钟通常在精心设计的全局时钟网络上布线,这些网络经过优化以最大限度地减少偏移。在 ASIC 中,将合成平衡时钟树,物理时序约束将指导缓冲器的放置,以最大限度地减少触发器的偏移。除非您正在做一些奇特的事情,否则后端工具会尽可能为您提供最好的时钟树。

作为设计人员,您主要通过设置适当的时序约束并使用静态时序分析来验证您是否满足最坏情况(和最佳情况)条件下的设置和保持要求来处理偏移问题。 FPGA 已经将其延迟特性用于静态时序。使用 ASIC,您的设计中的延迟将在布局和布线之前和之后进行估计,并馈送到分析仪。门控时钟会引入偏移,从而减少受影响数据路径上的可用时序预算。如果您正确设置了约束,时序分析器将考虑到这一点。一旦您通过了最终设计的静态时序,您的工作就完成了。

如果由于数据路径中的组合延迟而导致时序失败,您必须执行以下操作之一:

  • 通过重新组织逻辑或插入流水线阶段来减少失败的组合路径
  • 使用较慢的时钟
  • 如果您不需要每个周期的有效结果,请定义多周期延迟

如果门控时钟引入了过多的偏差,您可以将其视为完全创建一个新的时钟域并使用时钟域同步技术在不同的域之间传递信号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    相关资源
    最近更新 更多