【发布时间】:2014-07-01 15:20:46
【问题描述】:
我有一个项目要在 FPGA(旋风 IV)上使用 VHDL 进行。我的大多数实体都使用单个时钟。我知道时钟门控不是一个好的解决方案(见图),因为它会导致时序违规。有人能告诉我做这种事情的良好实践规则是什么吗? (我显然在互联网上做了一些研究,但我发现的每个链接都在谈论时钟域交叉) 谢谢你
【问题讨论】:
-
没有考虑“Hello”行...
-
您有什么顾虑?拥有一个单一的时钟域通常很简单,并且可以立即得到综合和时序工具的支持。您是否发现任何问题或错误?
-
我担心的是(在图像上)第二个触发器的输出不会与第三个触发器的时钟同时变化,因为延迟不同,然后第三个触发器的输入可以不正确。我的错误是没有满足时间要求。
-
您的时序要求是什么,哪些没有满足?另外,您的图像中的时钟路径(
Delay=dC)有什么特别之处吗? -
如果您在设计上遇到时序问题,这通常表明您的代码写得不好,并且触发器之间的组合逻辑过多。不要试图通过将主时钟域划分为更小的东西来解决这个问题。通过优化代码和添加流水线阶段来分解处理并让它占用更多时钟来解决这个问题。这将使工具有更多时间来满足您的时序要求。