首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >摆脱保持时间冲突(Xilinx HDL)

摆脱保持时间冲突(Xilinx HDL)
EN

Stack Overflow用户
提问于 2013-04-09 22:59:01
回答 1查看 5.6K关注 0票数 0

我正在FPGA中实现DSO控制器,我遇到了太多保持时间冲突的问题(到目前为止,最好的P&R结果是3个保持时间错误,大约-2 2ns松弛)。

我的核心问题是,我有先进先出缓冲器的输入从模数转换采样抽取器,然后输出到同步FT245 (60 my )。输入抽取器可以设置为以2的幂进行抽取(例如,1、2、4、8、16...)其还划分ADC样本(150 ADC)的时钟频率。

我现在的方法是,当我捕获数据时,我提供分频(如果抽取率为0,则直接提供)时钟频率给缓冲器,然后当我将样本推送到PC时,我切换到从FT245提供60 my时钟。在模拟中,它工作得很好,但问题出在布局和路由上,路由器将发出以下错误:

代码语言:javascript
复制
Route:466 - Unusually high hold time violation detected among 226 connections. The top 20 such instances are printed below. The
   router will continue and try to fix it

然后它运行10-15分钟,直到它给我一个定时报告,通知我所有的设置时间约束都满足了,并且150 me时钟(60 me时钟可以)有3个保持时间冲突。

我已经读到问题可能是使用门控时钟,FPGA不能正确分配时钟,但我尝试了一种方法,而不是先进先出的门控时钟,我直接连接到先进先出150 the时钟和我在先进先出门控数据与dataReady (它实际上最终是相同的信号作为以前的门控时钟),然后我得到了比现在更多(50-60)保持时间冲突。

是否有一些已知的多时钟FIFO的好方法?不只是两个(即使在Xilinx ISE中的示例中也很多)。或者在FPGA中抽取ADC样本的想法是行不通的?

目标现场可编程门阵列是斯巴达6 LX25速度等级2(不幸的是我不能得到速度等级-3 )。

这是它给我的松弛的例子:

代码语言:javascript
复制
Slack (hold path):      -2.031ns (requirement - (clock path skew + uncertainty - data path))
  Source:               decimator_clock_divisor/decimationRatio_0 (FF)
  Destination:          trigger_analog1/previousValue_2 (FF)

提到的源是信号(它给我的所有冲突都是),它不会经常改变,它实际上是由GUI控制的,所以我不知道它怎么会有保持时间冲突。它是从抽取器到触发缓冲区(或我的FIFO缓冲区在其他冲突中)的比率的路径。

基本上我的问题是,我是否应该关心这些违规行为?

因为在改变抽取器的比率之后,在我真正开始在触发器中使用抽取器的结果之前,可能有数千个时钟周期。

我知道路由器不知道我多久更改一次异步信号(它是异步的,因为我是从60 me时钟域设置的),以及使用某个模块的结果需要多长时间。问题是,我不知道当它在完成标准杆后向我显示这3个违规时,是否最终确定没有其他违规被这3个违规所掩盖?

后PAR模拟可以验证它是否可以在船上工作?我会尝试它在板上,但我必须等待2周的BGA焊接,我只剩下4周完成论文,所以我想确保我的设计将工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-10 02:26:59

FIFO可以充当异步。两个主时钟域之间的边界桥60 the和150 the。严格分离两个时钟域的逻辑。在它们上应该只有几个已知的慢控制信号(足够慢,以便可以应用假路径定时约束)来通信。例如,GUI将时钟比率写入60 the侧的寄存器中。然后,它向快速端发出信号,表示有一个新值。快速端在收到通知后的几个周期内捕获此值(例如,额外关注元稳定性的上升沿检测)。快侧的功能逻辑始终使用也在快侧的该shadow寄存器的输出。

对于快速ADC侧的时钟分频,您可以使用完整的时钟并按照您所描述的方式启用(我也希望如此),或者您也可以自行分频时钟。在划分时钟时,请确保遵循Xilinx文档中的示例。例如,有时需要时钟缓冲器来分配时钟。

如果存在剩余的保持路径冲突,则查看源FF和目标FF的时钟和时钟到达时间。有时,当目标FF的捕获时钟延迟时,数据太早。路由器可能会通过简单地延迟数据来解决此问题。当设置要求不允许进一步延迟时(当两个时钟之间的不确定性过高时可能会出现这种情况),它无法解决此问题。

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

https://stackoverflow.com/questions/15905424

复制
相关文章

相似问题

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