新闻  |   论坛  |   博客  |   在线研讨会
DCM 学习 概述
xie0jing0 | 2010-03-11 16:03:45    阅读:4639   发布文章

关于DCM的作用:

   

顾名思义DCM的作用就是管理,掌控时钟的专用模块。能完成分频,倍频,去skew,相移等功能。 

关于DCM的结构&组成:

   DCM由四个独立的功能单元组成:

     1、Delay-Locked Loop(DLL) ;    2、Digital Frequency  Synthesizer (DFS); 

3、Phase Shift(PS) ;               4、Status Logic(SL);  如图1所示

 

关于外部反馈&内部反馈的作用以及区别:

用反馈的目的类似于锁相环的原理,就是为了保证通过DCM调整后的时钟相位与输入对齐(即消除由于DCM时钟调整过程中的偏斜(Skew))。

内部反馈是为了保证内部时钟与输入芯片的IO PAD上的时钟相位对齐,外部反馈是为了保证输出到外部的时钟(比如给SRAM)的相位与输入芯片的IO PAD上的时钟相位对齐。(内部反馈是不用自己连接的)

FPGA内部的IBUFG和BUFG会给输入时钟带来延时,经过DCM后可以利用clk0输出(由于反馈的作用),这时输出相位与IPAD上的输入相位可以保持一致,相当于零延时BUF,在高速设计中很有用的。
   内部时钟就是FPGA内部用的,外部则是根据设计需求需要同时送到外部的时钟。

反馈的两者实现方式:一是CLK0反馈(即CLKIN的同频做为反馈信号),另一个是CLK2X反馈(即CLKIN的2倍频做为反馈信号)。

另外如果仅仅使用CLKFX&CLKFX180,可以不使用反馈。详见图2和3: 

关于DCMDLL的工作模式问题:
DCM中的DLL有两种工作模式: 高频&低频模式.低频模式24MHz~180MHz,高频模式48MHz~360MHz(不同的器件可能不同).
在高频模式的时候,倍频使出管脚clk2X&clk2x180禁用,四相移位寄存器的输出CLK90&CLK270也被禁用,如果分频因子不是个整数,则输出时钟的占空比不是50%。
如果仅仅CLKFX作为输出的话,则输入时钟可以是1MHz~210MHz,但是输出最小应该大于24MHz. 

关于DCM中的复位问题:
   DCM的复位RST是高电平有效的(这和我们平时接触到的低电平复位是不同的), 而且在仿真时要求复位信号的持续时间最少为输入时钟周期的三倍.

 

关于频率合成:
   频率合成的输出CLKFX=M/D×CLKIN(M由CLK_MULTIPLY确定,D由CLK_DIVIDE确定)。
两种设置方式:
  一:填写输出所要得到的输出时钟CLKFX的值,工具自动计算M&D的值。
  二:根据所需的输出设置M&D的值。

 

关于相移:
相移分为三种模式:一:NONE;二:固定相移;三:可变相移;
NONE(缺省):没有相移输入&输出同相,相当于固定相移设置成0;
固定相移:输出相对于输入延迟的相位值是固定的(相移值也是T/256,范围:-128~128);
可变相移:如果相移使能管脚PSEN的值为高(PSEN每次只能是一个PSCLK周期),输出CLK0开始移相,并根据PSINCDEC的值判断是增加还是减小,CLK0会移动一个相位(相对于CLKIN的相位,移动的值为T/256,T是CLKIN的周期),同时PSDONE会产生一个脉冲表示一次移相完成,只有等到LOCKED的输出为高时才表明被锁定,输出时钟有效。移相的范围为-64~64(即-π/4~π/4),所以理论上可以得到与CLKIN任意相差的时钟信号,在产生信号延时方面可能会有用,有些具体的操作和要求可以参考用户手册。
   从延迟周期的角度还可以分为:
    一:1/2周期相移(CLK0、CLK180);二:1/4周期相移(CLK0、CLK90、CLK180、CLK270);
    三:固定相移(T/256);                四:动态可变相移(T/256);
 

关于偏斜(SKEW)调节:
   最主要的两种运用:一:系统时钟同步;二:源同步:
  所谓系统时钟同步(即共同时钟系统):同一数据路径中的驱动时钟是同一时钟资源,
  所谓源同步系统:数据&源同步时钟信号是同步传输的,保证了两个时钟信号的飞行时间(飞行时间包括传播延迟&上升沿变化的时间)是一致的,理论上对系统时钟的最高频率没有任何限制,是高速数据传输的通用方法。

默认值为系统时钟同步方式,该方式会自动增加一小点延迟,目的是捕获数据时具有零保持时间。
 源同步系统的时钟&数据是同步的,在采样的时候一般把时钟采到数据的中间,一边满足建立&保持时间

 

与全局时钟资源相关的原语常用的与全局时钟资源相关的Xilinx器件原语包括:IBUFG、IBUFGDS、BUFG、BUFGP、BUFGCE、BUFGMUX、BUFGDLL和DCM等,如图1所示。

IBUFG即输入全局缓冲,是与专用全局时钟输入管脚相连接的首级全局缓冲。所有从全局时钟管脚输入的信号必须经过IBUF元,否则在布局布线时会报错。IBUFG支持AGP、CTT、GTL、GTLP、HSTL、LVCMOS、LVDCI、LVDS、LVPECL、LVTTL、PCI、PCIX和SSTL等多种格式的IO标准。

IBUFGDS是IBUFG的差分形式,当信号从一对差分全局时钟管脚输入时,必须使用IBUFGDS作为全局时钟输入缓冲。IBUFG支持BLVDS、LDT、LVDSEXT、LVDS、LVPECL和ULVDS等多种格式的IO标准。
BUFG是全局缓冲,它的输入是IBUFG的输出,BUFG的输出到达FPGA内部的IOB、CLB、选择性块RAM的时钟延迟和抖动最小。

BUFGCE是带有时钟使能端的全局缓冲。它有一个输入I、一个使能端CE和一个输出端O。只有当BUFGCE的使能端CE有效(高电平)时,BUFGCE才有输出。
BUFGMUX是全局时钟选择缓冲,它有I0和I1两个输入,一个控制端S,一个输出端O。当S为低电平时输出时钟为I0,反之为I1。需要指出的是BUFGMUX的应用十分灵活,I0和I1两个输入时钟甚至可以为异步关系。
BUFGP相当于IBUG加上BUFG。

BUFGDLL是全局缓冲延迟锁相环,相当于BUFG与DLL的结合。BUFGDLL在早期设计中经常使用,用以完成全局时钟的同步和驱动等功能。随着数字时钟管理单元(DCM)的日益完善,目前BUFGDLL的应用已经逐渐被DCM所取代。
DCM即数字时钟管理单元,主要完成时钟的同步、移相、分频、倍频和去抖动等。DCM与全局时钟有着密不可分的联系,为了达到最小的延迟和抖动,几乎所有的DCM应用都要使用全局缓冲资源。DCM可以用Xilinx ISE软件中的Architecture Wizard直接生成。
全局时钟资源的使用方法
全局时钟资源的使用方法(五种)

IBUFG + BUFG的使用方法:
IBUFG后面连接BUFG的方法是最基本的全局时钟资源使用方法,由于IBUFG组合BUFG相当于BUFGP,所以在这种使用方法也称为BUFGP方法。
IBUFGDS + BUFG的使用方法:
当输入时钟信号为差分信号时,需要使用IBUFGDS代替IBUFG。
IBUFG + DCM + BUFG的使用方法:
这种使用方法最灵活,对全局时钟的控制更加有效。通过DCM模块不仅仅能对时钟进行同步、移相、分频和倍频等变换,而且可以使全局时钟的输出达到无抖动延迟。
Logic + BUFG的使用方法:
BUFG不但可以驱动IBUFG的输出,还可以驱动其它普通信号的输出。当某个信号(时钟、使能、快速路径)的扇出非常大,并且要求抖动延迟最小时,可以使用BUFG驱动该信号,使该信号利用全局时钟资源。但需要注意的是,普通IO的输入或普通片内信号进入全局时钟布线层需要一个固有的延时,一般在10ns左右,即普通IO和普通片内信号从输入到BUFG输出有一个约10ns左右的固有延时,但是BUFG的输出到片内所有单元(IOB、CLB、选择性块RAM)的延时可以忽略不计为“0”ns。
Logic + DCM + BUFG的使用方法:
DCM同样也可以控制并变换普通时钟信号,即DCM的输入也可以是普通片内信号。使用全局时钟资源的注意事项 全局时钟资源必须满足的重要原则是:使用IBUFG或IBUFGDS的充分必要条件是信号从专用全局时钟管脚输入。换言之,当某个信号从全局时钟管脚输入,不论它是否为时钟信号,都必须使用IBUFG或IBUFGDS;如果对某个信号使用了IBUFG或IBUFGDS硬件原语,则这个信号必定是从全局时钟管脚输入的。如果违反了这条原则,那么在布局布线时会报错。这条规则的使用是由FPGA的内部结构决定的:IBUFG和IBUFGDS的输入端仅仅与芯片的专用全局时钟输入管脚有物理连接,与普通IO和其它内部CLB等没有物理连接。 另外,由于BUFGP相当于IBUFG和BUFG的组合,所以BUFGP的使用也必须遵循上述的原则。
全局时钟资源的例化方法
全局时钟资源的例化方法大致可分为两种:
一是在程序中直接例化全局时钟资源;
二是通过综合阶段约束或者实现阶段约束实现对全局时钟资源的使用;
第一种方法比较简单,用户只需按照前面讲述的5种全局时钟资源的基本使用方法编写代码或者绘制原理图即可。
第二方法是通过综合阶段约束或实现阶段的约束完成对全局时钟资源的调用,这种方法根据综合工具和布局布线工具的不同而异。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客