关于DCM的作用: 6 g$ P, g9 X4 L d# S7 l
顾名思义DCM的作用就是管理,掌控时钟的专用模块。能完成分频,倍频,去skew,相移等功能。 关于DCM的结构&组成:
- d2 i; [1 T5 J' Q4 Q* d! YDCM由四个独立的功能单元组成:
) W2 u0 j) h, |4 `* W
1、Delay-Locked Loop(DLL) ;# ?. U9 V/ {4 O& E" Q
2、Digital Frequency
* T$ f% L/ S7 s# OSynthesizer (DFS);
( ?" p% ` H* E% o4 T 3、Phase Shift(PS) ;* X, D( Q5 F" Z; l, k7 R4 d2 \0 e6 R
4、Status Logic(SL);* i/ }# ~2 W6 d* v: w! D+ [6 q7 W
如图1所示
关于外部反馈&内部反馈的作用以及区别: 用反馈的目的类似于锁相环的原理,就是为了保证通过DCM调整后的时钟相位与输入对齐(即消除由于DCM时钟调整过程中的偏斜(Skew))。 内部反馈是为了保证内部时钟与输入芯片的IO PAD上的时钟相位对齐,外部反馈是为了保证输出到外部的时钟(比如给SRAM)的相位与输入芯片的IO PAD上的时钟相位对齐。(内部反馈是不用自己连接的) FPGA内部的IBUFG和BUFG会给输入时钟带来延时,经过DCM后可以利用clk0输出(由于反馈的作用),这时输出相位与IPAD上的输入相位可以保持一致,相当于零延时BUF,在高速设计中很有用的。
" y2 }: z( f& D; C% h$ p* C3 P+ ~" x% L& v
内部时钟就是FPGA内部用的,外部则是根据设计需求需要同时送到外部的时钟。 反馈的两者实现方式:一是CLK0反馈(即CLKIN的同频做为反馈信号),另一个是CLK2X反馈(即CLKIN的2倍频做为反馈信号)。 另外如果仅仅使用CLKFX&CLKFX180,可以不使用反馈。详见图2和3: 关于DCM中DLL的工作模式问题:2 @" m! X% J2 D. E
DCM中的DLL有两种工作模式: 高频&低频模式.低频模式24MHz~180MHz,高频模式48MHz~360MHz(不同的器件可能不同).
+ _6 d; ]& ^6 R4 n; l; Q在高频模式的时候,倍频使出管脚clk2X&clk2x180禁用,四相移位寄存器的输出CLK90&CLK270也被禁用,如果分频因子不是个整数,则输出时钟的占空比不是50%。9 V! z/ t9 j- U- p- b
如果仅仅CLKFX作为输出的话,则输入时钟可以是1MHz~210MHz,但是输出最小应该大于24MHz. 关于DCM中的复位问题:+ n Y- i+ e. p$ l) x* u
DCM的复位RST是高电平有效的(这和我们平时接触到的低电平复位是不同的), 而且在仿真时要求复位信号的持续时间最少为输入时钟周期的三倍. 关于频率合成:
' N7 \( {% p: y5 q* J3 ]4 U, l; `1 M- [ @1 S( ]) p
频率合成的输出CLKFX=M/D×CLKIN(M由CLK_MULTIPLY确定,D由CLK_DIVIDE确定)。8 ~. V7 v# [6 z: {% y) r+ S! r6 X% I
两种设置方式:3 m+ ?2 R& ]6 \/ A5 G
6 _ c; @( g" n' \
一:填写输出所要得到的输出时钟CLKFX的值,工具自动计算M&D的值。9 e$ J# Y$ T5 G# R
e8 r* }/ e0 p- L+ Q7 R. m9 I二:根据所需的输出设置M&D的值。 关于相移:
Y8 m# @. v' V, D4 v2 O# n相移分为三种模式:一:NONE;二:固定相移;三:可变相移;8 |7 R$ e" g) O/ H
NONE(缺省):没有相移输入&输出同相,相当于固定相移设置成0;
% j+ ` k3 {! I6 `$ x固定相移:输出相对于输入延迟的相位值是固定的(相移值也是T/256,范围:-128~128);
) e' `# W, X6 E& D可变相移:如果相移使能管脚PSEN的值为高(PSEN每次只能是一个PSCLK周期),输出CLK0开始移相,并根据PSINCDEC的值判断是增加还是减小,CLK0会移动一个相位(相对于CLKIN的相位,移动的值为T/256,T是CLKIN的周期),同时PSDONE会产生一个脉冲表示一次移相完成,只有等到LOCKED的输出为高时才表明被锁定,输出时钟有效。移相的范围为-64~64(即-π/4~π/4),所以理论上可以得到与CLKIN任意相差的时钟信号,在产生信号延时方面可能会有用,有些具体的操作和要求可以参考用户手册。
' \; C; [: r8 i \
( {: T& q) b/ l8 ^* F/ O0 t: `从延迟周期的角度还可以分为:
! I/ j! f4 t6 N9 R9 e+ C; p; t8 t( p3 f2 E3 Z6 _# S* X
一:1/2周期相移(CLK0、CLK180);二:1/4周期相移(CLK0、CLK90、CLK180、CLK270);
, H% y! w$ p" M8 d9 I4 T
5 v) Q- ]0 d; ~5 U% k6 J三:固定相移(T/256);& w& z5 K) X4 X+ l P" ?
四:动态可变相移(T/256);
) X! o+ c/ p& N. h& d2 C
5 A7 K9 @1 A8 S- W, L( j" u2 ` 关于偏斜(SKEW)调节: d7 `% a) E- t0 Q* v
, ^* l% {5 ? q! b) _( ?
最主要的两种运用:一:系统时钟同步;二:源同步:( `) w2 r$ Y" J* j( a2 x
C$ a6 u9 F1 Z% M, S
所谓系统时钟同步(即共同时钟系统):同一数据路径中的驱动时钟是同一时钟资源,
" s1 |; Y1 Z. K7 W4 @0 L; [( ~# |+ |! | d
所谓源同步系统:数据&源同步时钟信号是同步传输的,保证了两个时钟信号的飞行时间(飞行时间包括传播延迟&上升沿变化的时间)是一致的,理论上对系统时钟的最高频率没有任何限制,是高速数据传输的通用方法。 默认值为系统时钟同步方式,该方式会自动增加一小点延迟,目的是捕获数据时具有零保持时间。9 ^, {# t$ {- D" A
6 L3 P' X" M7 C% H源同步系统的时钟&数据是同步的,在采样的时候一般把时钟采到数据的中间,一边满足建立&保持时间。! H$ j( k# M1 p
|