使用DCM可以消除时钟Skew.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

使使用用DCM可可以以消消除除时时钟钟Skew

本文主要介绍什么是DCM及如何使用DCM消除时钟Skew。

什么叫DCM(DigitalClockManagement)?

DCM内部是DLL(DelayLockLoop(?)结构,对时钟偏移量的节是通过长的延时线形成的。DCM的参数里有一个

PHASESHIFT(相移),可以从变到255。所以我们可以假设内部结构里从Clkin到Clk_1x之间应该有256根延时线(实际上,由

于对不同频率的时钟都可以从变到255,延时线的真正数目应该比这个大得多)。DCM总会把输入时钟Clkin和反馈时钟Clkfb

相比较,如果它们的延时差不等于所设置的PHASESHIFT,DCM就会改变在Clkin和Clk_1x之间的延时线数目,直到相等为止。这

个从不等到相等所花的时间,就是输出时钟锁定的时间,相等以后,Lock_flag标识才会升高。

当DCM发现Clkin和Clkfb位相差不等于PHASESHIFT的时候,却去节Clk_1x和Clkin之间延时,所以如果Clk_1x和Clkfb不相关

的话,那就永远也不能锁定了。呵呵。

如何使用DCM

DCM一般和BUFG配合使用,要加上BUFG,应该是为了增强时钟的驱动能力。DCM的一般使用方法是,将其输出Clk_1x接在

BUFG的输入引脚上,BUFG的输出引脚反馈回来接在DCM的反馈时钟脚CLKFB上。另外,在FPGA里,只有BUFG的输出引脚接

在时钟网络上,所以一般来说你可以不使用DCM,但你一定会使用BUFG。有些兄弟总喜欢直接将外部输入的时钟驱动内部的寄

存器,其实这个时候虽然你没有明显地例化BUFG,但工具会自动给你加上的。

使用DCM可以消除时钟Skew

使用DCM可以消除时钟Skew。这个东西一直是我以前所没有想清楚的,时钟从DCM输出开始走线到寄存器,这段Skew的时间总

是存在的,为什么用DCM就可以消除呢?直到有一天忽然豁然开朗,才明白其原委。对高手来说,也许是极为Easy的事情,但也许

有些朋友并不一定了解,所以写出来和大家共享。

为说明方便起见,我们将BUFG的输出引脚叫做Clk_o,从Clk_o走全局时钟布线到寄存器时叫做Clk_o_reg,从Clk_o走线到DCM的

反馈引脚CLKFB上时叫Clkfb,如图所示。实际上Clk_o,Clk_o_reg,Clkfb全部是用导线连在一起的。所谓时钟Skew,指的就是

Clk_o到Clk_o_reg之间的延时。如果打开FPGA_Editor看底层的结构,就可以发现虽然DCM和BUFG离得很近,但是从Clk_o到

Clkfb却绕了很长一段才走回来,从而导致从Clk_o到Clk_o_reg和Clkfb的延时大致相等。总之就是Clk_o_reg和Clkfb的相位应该

相等。所以当DCM节Clkin和Clkfb的相位相等时,实际上就节了Clkin和Clk_o_reg相等。而至于Clk_1x和Clk_o的相位必然

是超前于Clkin,Clkfb,Clk_o_reg的,而Clk_1x和Clk_o之间的延时就很明显,就是经过那个BUFG的延迟时间。

对时钟Skew的进一步讨论

最后,说一说时钟Skew的概念。时钟Skew实际上指的是时钟驱动不同的寄存器时,由于寄存器之间可能会隔得比较远,所以时钟

到达不同的寄存器的时间可能会不一样,这个时间差称为时钟Skew。这种时钟Skew可以通过时钟树来解决,也就是使时钟布线

形成一种树状结构,使得时钟到每一个寄存器的距离是一样的。很多FPGA芯片里就布了这样的时钟树结构。也就是说,在这种

芯片里,时钟Skew基本上是不存在的。

说到这里,似乎有了一个矛盾,既然时钟Skew的问题用时钟树就解决了,那么为什么还需要DCM+BUFG来解决这个问题?另外,

既然时钟Skew指的时时钟驱动不同寄存器之间的延时,那么上面所说的Clk_o到Clk_o_reg岂非不能称为时钟Skew?

先说后一个问题。在一块FPGA内部,时钟Skew问题确实已经被FPGA的时钟方案树解决,在这个前提下Clk_o到Clk_o_reg充其

量只能叫做时钟延时,而不能称之为时钟Skew。可惜的是FPGA的设计不可能永远只在内部做事情,它必然和外部交换数据。例

如从外部传过来一个32位的数据以及随路时钟,数据和随路时钟之间满足建立保持时间关系(SetupHoldTime),你如何将这32位

的数据接收进来?如果你不使用DCM,直接将Clkin接在BUFG的输入引脚上,那么从你的Clk_o_reg就必然和Clkin之间有个延时,

文档评论(0)

wszwtlg202 + 关注
实名认证
文档贡献者

一页纸且

1亿VIP精品文档

相关文档