0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用DCM怎样消除时钟Skew?

电子工程师 来源:网络整理 作者:工程师曾暄茗 2018-07-15 11:28 次阅读

使用DCM可以消除时钟Skew

什么叫DCM(Digital Clock Management)?

DCM内部是DLL(Delay Lock Loop(?)结构,对时钟偏移量的调节是通过长的延时线形成的。DCM的参数里有一个PHASESHIFT(相移),可以从0变到255。所以我们可以假设内部结构里从Clkin到Clk_1x之间应该有256根延时线(实际上,由于对不同频率的时钟都可以从0变到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位的数据以及随路时钟,数据和随路时钟之间满足建立保持时间关系(Setup Hold Time),你如何将这32位的数据接收进来?如果你不使用DCM,直接将Clkin接在BUFG的输入引脚上,那么从你的Clk_o_reg就必然和Clkin之间有个延时,那么你的Clk_o_reg还能保持和进来的数据之间的建立保持关系吗?显然不能。相反,如果你采用了DCM,接上反馈时钟,那么Clk_o_reg和Clkin同相,就可以利用它去锁存进来的数据。可见,DCM+BUFG的方案就是为了解决这个问题。而这个时候Clk_o到Clk_o_reg的延时,我们可以看到做内部寄存器和其他芯片传过来的数据之间的时钟Skew。

由此,我们可以得出一个推论,从晶振出来的时钟作为FPGA的系统时钟时,我们可以不经过DCM,而直接接到BUFG上就可以,因为我们并不在意从Clkin到Clk_o_reg的这段延时。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 时钟
    +关注

    关注

    10

    文章

    1720

    浏览量

    131360
  • DCM
    DCM
    +关注

    关注

    0

    文章

    157

    浏览量

    26416
收藏 人收藏

    评论

    相关推荐

    基于FPGA的DCM时钟管理单元概述

    DCM一般和BUFG配合使用,要加上BUFG,应该是为了增强时钟的驱动能力。DCM的一般使用方法是,将其输出clk_1x接在BUFG的输入引脚上,BUFG的输出引脚反馈回来接在DCM
    发表于 05-11 03:53 1746次阅读

    哪些因此会导致时钟skew过大呢?FPGA中降低时钟skew的几种方法

    在时序报告中,会显示出clock path skew,如果时钟偏移超过0.5ns,就需要额外关注了。
    的头像 发表于 03-13 09:06 1347次阅读
    哪些因此会导致<b class='flag-5'>时钟</b><b class='flag-5'>skew</b>过大呢?FPGA中降低<b class='flag-5'>时钟</b><b class='flag-5'>skew</b>的几种方法

    DCM产生时钟的边缘过冲~~

    求助大神们,由晶振产生的30Mhz时钟使用DCM输出108Mhz时钟,用示波器检测输出波形,周期没问题,但是上升和下降边缘都有很大的过冲,幅值占到脉冲本身的50%,请问下有什么办法能消除
    发表于 05-25 22:10

    转载----DCM使用详解

    ]时钟。2. 去skewDCM还可以消除clock的skew,所谓skew就是由于传输引起的同
    发表于 09-24 15:04

    如何减小clock skew

    求助大神,clock skew太大,导致时序违规怎么破?时钟DCM输出,已经过BUFG
    发表于 01-14 17:00

    DCM在FPGA中指的是什么?

    DCM就是数字时钟管理单元( Digital Clock Manager)。DCM 当中包含一个 DLL(延迟锁定电路 Delay-Locked Loop),可以提供对时钟信号的二倍频
    发表于 08-31 09:08

    怎么消除5ns偏斜

    嗨......我有2个定制FPGA板。主FPGA具有100MHz的osc,用作参考时钟。这将进入主FPGA芯片上的DCM,用于所有时钟操作。相同的时钟被缓冲并从主板驱动出来并发送到类似
    发表于 03-15 07:17

    DCM外部反馈路径有什么问题?

    对齐的,因为它们是DCM的CLKIN和CLKFBA,B早于C,D(IBUFG延迟),它们也是相位对齐的该外部反馈结构的目标是消除FPGA输入时钟的偏移和外部器件的输入时钟,因此A,F对
    发表于 07-17 13:58

    Spartan 6 DCM LOCKED没有输出时钟

    所以这很奇怪而且很间歇。我有一个S6LX45的设计。它使用一个PLL和八个DCM。 8个DCM时钟输入来自馈送BUFIO2的GCLK引脚。 BUFIO2分频器被禁用,DIVCLK输出进入DCM
    发表于 07-26 13:04

    DCM输出时钟约束的示例

    使用dcm_20Mhz_100Mhz DCM获得100 MHz模块。然后,来自第一DCM的CLKFX_OUT输出用作第二DCM的输入,以导出三个输出
    发表于 05-01 15:08

    如何使用DCM减少时钟偏差?如何使用DCM来增加时钟?

    大家好..我是xilinx的新手。实际上我需要知道如何使用DCM减少时钟偏差,我还需要知道如何使用DCM来增加时钟。谢谢和关心JITHESH A R
    发表于 06-09 09:09

    如何使用DCM,DCM使用说明

    DCM主要功能1. 分频倍频:DCM可以将输入时钟进行multiply或者divide,从而得到新的输出时钟。2. 去skew
    发表于 06-05 11:48 8170次阅读
    如何使用<b class='flag-5'>DCM</b>,<b class='flag-5'>DCM</b>使用说明

    FPGA DCM时钟管理单元简介及原理

    DCM概述    DCM内部是DLL(Delay Lock Loop(?)结构,对时钟偏移量的调节是通过长的延时线形成的。DCM的参数里有一个PHASESHIFT(相移),可以从0变到
    发表于 06-05 12:09 2665次阅读
    FPGA <b class='flag-5'>DCM</b><b class='flag-5'>时钟</b>管理单元简介及原理

    赛灵思DCM概述和应用技巧

    DCM:即 Digital Clock Manager 数字时钟管理,关于DCM的作用: 顾名思义DCM的作用就是管理,掌控时钟的专用模块。
    发表于 02-11 11:30 1428次阅读

    FPGA的DCM时钟管理单元概述

    有些FPGA学习者,看Xilinx的Datasheet会注意到Xilinx的FPGA没有PLL,其实DCM就是时钟管理单元。 1、DCM概述 DCM内部是DLL(Delay Lock
    的头像 发表于 05-25 15:43 8295次阅读
    FPGA的<b class='flag-5'>DCM</b><b class='flag-5'>时钟</b>管理单元概述