一天一个设计实例-DCM时钟管理应用设计

DCM时钟管理应用设计

DCM(Digital Clock Manager)即数字时钟管理器。通过 FPGA 芯片提供的DCM 功能, 可灵活地控制时钟频率、相位转换和时钟脉冲相位差。

1.1.1DCM 的功能特点

为了完成这些任务, DCM 釆用了延迟锁相环。延迟锁相环是一个利用反馈來消除由于工作温度和电压的自然变化而引起的误差,从而保持时钟信号高度准确的全数字控制系统,它构成了 DCM 的基础。

DCM 提供如下三个主要功能 :

(1) 消除时钟脉冲相位差。时钟脉冲相位差是指在正常变化的情况下,时钟信号偏离 0相位的程度。通道延迟的任何细微的变化都会导致时钟信号到达各点的时间不同,从而产生时钟脉冲相位差。在高频应用场合的临界时序处,最不应出现的情况是由时钟脉冲相位差而引起的建立、保持以及时钟输出的时间増加。以反馈回来的时钟信号来矫正输出的时钟信号, DCM 消除了时钟脉冲相位差,从而保证了这两个信号之间的零相位差关系。在信号通道中,特别是从 DCM 时钟输出到它的反馈输入这段通道中,DCM 有效地消除了时钟分布延迟。

(2) 频率合成。根据提供的一个输入时钟信号,DCM 能产生一个频率范围很宽的输出信号频率,通过对时钟信号乘或除以不同的因数,即可实现输出不同的信号频率。

(3) 相位转换。DCM 可将输入时钟信号转换成各种相位的输出时钟信号。

1.1.2DCM 的内部结构与功能描述

DCM 有四个功能模块,即延迟锁相环(DLL)、数字频率合成器(DFS)、相位转换器(PS)和状态逻辑模块。各个模块通过相关信号联系,如图4‑34所示

图4‑34 DCM 功能模块及相关信号流图

一、延迟锁相环(DLL)

DLL 模块最基本的功能是消除时钟脉冲相位差。DLL 的主要信号通道为一个输入模块紧跟着一系列离散延迟模块或抽头,然后通向一个输山模块。这个通道与相位的检测和控制逻辑一起,通过反馈,组成了一个完整的系统,如图4‑35所示。

图4‑35 DLL 的简化功能模块图

DLL 模块有两个输 入时钟 CLKIN 和 CLKFB,以及七个输出时钟 CLK0、 CLK90、CLK180、 CLK270、 CLK2X、CLK2X180 和 CLKDV,如表 3.17 所示。时钟输出同步驱动,但是,高频模式仅支持低频模式下的一部分输出信号。

表4‑38 DLL 引脚信号描述表

信号名称

功能描述

支持模式

低频

高频

CLKIN

原始时钟信号输入

CLKFB

CLK0 或者 CLK2X 作为反馈的信号输入(根据设置的 CLK_FEED_BACK 的属性值)

CLK0

根据 CLKIN 产生同频同相的吋钟信号输出

CLK90

根据 CLKIN产生同频率但相位差为 90°的吋钟信号输出

CLK180

根据 CLKIN产生同频率但相位差为 180°的时钟信号输出

CLK270

根据 CLKIN产生同频率但相位差为 270°的时钟信号输山

CLK2X

根据 CLKIN产生同相位但频率为其2倍的时钟信号输出

CLK2X180

根据 CLKIN产生相位差 180°频率为其两倍的时钟信号输出

CLKDV

根据 CLKDV_DIVIDE 的值对 CLKIN进行 N分频,产生相位与CLKIN相同的低频信号输出

以 CLKIN 输入的时钟信号作为参考波形,DLL 将其与 CLKFB 输入的反馈信号对照。在消除时钟脉冲相位差的同时,DLL 也被同样用于将 CLK0的信号通过时钟分配网络送至各寄存器使其同步。这些寄存器可以为 FPGA 的内部或外部寄存器。经过时钟分配网络后,时钟信号经 CLKFB 反馈返回DLL。DLL内置的控制模块测量了 CLKFB 和 CLKIN 之间的相位误差,此相位误差即为测量到的时钟分配网络产生的时钟脉冲相位差。控制模块激活一定量的延迟单元来消除此时钟脉冲相位差。一旦 DLL 使得 CLK0 的相位与 CLKIN 的相位一致,就会输出 LOCKED 信号,表明已锁定 CLKIN 信号。

(1) DLL 特性描述及相关功能。通过使用特征描述,DLL 模块可以设置许多不同的功能选项,如表4‑39所示

表4‑39 DLL 特征描述

属性名称

描 述

属 性 值

CLK_FEEDBACK

选择 CLK0 或者 CLK2X 作为CLKFB 的输入

NONE, 1X,2X

DLL_FREQUENCY_MODE

选择高频或低频模式

LOW,HIGH

CLKIN_DIVIDE_2

对输入 DCM 的CLKIN信号进行2分频

TRUE,FALSE

CLKDV_DIVIDE

选择分频系数对 CLKIN 输入频率进行分频,产生 CLKDV 输出频率

1.5, 2, 2.5, 3, 3.5, 4,4.5, 5, 5.5, 6,0, 6.5, 7.0,7.5, 8, 9, 10, 11, 12, 13,14, 15 和 16

DUTY_CYCLE_CORRECTION

当属性位为 true 吋, 修正 CLK0、CLK90、CLK180和CLK270 的输出信号占空比为 50%: 当属性位为FALSE 时, CLK0, CLK90, CLK180和 CLK270 的输出信号占空比与CLKIN位竹一样

TRUE,FALSE

(2) DLL 时钟输入连接。一个外部时钟信号源输入 FPGA 时, 需要使用一个能直接访问全局时钟网络或者输入缓冲器(IBUF)的全局时钟输入缓冲器(IBUFG)。FPGA 的内部时钟信号通过全局时钟多路复用缓冲器来驱动全局时钟网络。全局时钟网络直接连接到CLKIN 输入,内部连接和外部连接如图4‑36(a)和图4‑36(c)所示。CLKIN 脚可以输入微分时钟信号

图4‑36 DLL 的输入时钟、 输出时钟和反馈连接图

(3) DLL 时钟输出与反馈连接。九个 DCM 吋钟信号输出中的四个可以在同一个边缘(上升沿或下降沿)同时驱动四个 BUFGMUX,所有的 DCM 时钟信号输出能同时驱动全部的线路资源,包括通向 OBUF 缓冲器的相关连接。

反馈环是 DLL 应用 的一个范例,通过操作 CLKFB 输入与 CLKO 或 CLK2X 信号来完成,因此,所有不需要的时钟分布延迟也被附带进了这个环路。可以利用 CLK0 和 CLK2X这两个信号中的一个来同步任何这七个 DLL 输出(CLK0、CLK90、CLK180、CLK270、CLKDV、CLK2X 或 CLK2X180)中的一个,对 CLK_FEEDBACK 的赋值必须与其物理反馈连接相符,即反馈连接 CLK0 时,赋1X 的值;反馈连接 CLK2X 时,赋 2X 的值。如果在实际应用 DCM 时不需要 DLL,例如,如果只使用 DFS, 则没有反馈环,这时CLK_FEEDBACK 置 NONE。图4‑36(a)和图4‑36(d)分别为 DLL 时钟输出和反馈连接中的片上的同步和片外的同步图。

(4) DLL 的频率模式。DLL 支持两种截然不同的频率操作模式 :高频模式和低频模式。它们各自有不同的时钟频率范围。DLL_FREQUENCY_MODE 的值就是要在这两个模式中任选其一,当值置 LOW 时,低频模式被选中,所有的 DLL 时钟输出在一个从低到中的频率范围内执行;当值置 HIGH 时,高频模式被选中,DLL 时钟输出中的 CLK0、CLK180和 CLKDV 在一个可能的高频范围内执行,剩下的 DLL 时钟输出在高频模式下不能使用。

(5) 自适应高频输入。如果 CLKIN 的输入频率超过 DLL 的最人频率范围,通过改变CLKIN_DIVIDE_BY_2 的值,可以将其分频降至可接受的频率值。当 CLKIN_DIVIDE_BY_2的值被置 TRUE 时,将会根据 CLKIN 输入 DCM 的频率,选用两个因数中的一个,对其进行分频。

(6)DLL 模块粗调的相位转换输出。除了能对 CLKIN 进行 CLK0校准以外,DLL 还能分别输出 90°、180° 和 270° 的相位转换信号 CLK90、CLK180 和 CLK270,如表4‑39所示。在低频模式下,它们之间的相关时序如图4‑37所示。

图4‑37 DLL 的时钟输出特性

(7) DLL 模块的简单频率合成输出。除了 DFS 模块的灵活的频率合成 以外,DLL 模块也提供了对频率进行简单的乘和除的操作选项。这个操作可以使输出时钟信号的频率为输入时钟信号的频率的部分值(除的时候)或倍数值(乘的时候)。CLK2X 输出频率为 CLKIN的两倍的同相信号,CLK2X180 输出的信号频率也为 CLKIN 的两倍,但是与 CLKIN 有180° 的相位差。CLKDV 输出是 CLKIN 信号频率的一个已定的分频信号,CLKDV_DIVIDE的值决定了对 CLKIN 分频时的因数值。简单的频率合成输出信号如表4‑39所示。

(8) DLL 时钟输山的占空比调节。一般情况下,CLK2X、CLK2X180 和 CLKDV 输出的信号的占空比为 50%, 除非 CLKIN 输入的信号的占空比不为 50%。占空比为 50%即在一个时钟周期内,高电平的时间和低电平的时间相等。DUTY_CYCLE_CORRECTION 的值决定了是否修 CLK0、CLK90、CLK180 和 CLK270 的输出信号的占空比,当DUTY_CYCLE_CORRECTION 的值被置 TRUE 时,这四个输出信号的占空比被修正成50% ;当 DUTY_CYCLE_CORRECTION 的值被置 FALSE 时,这些输出信号的占空比与CLKIN 信号的一样,如图4‑37所示。

二、数字频率合成器(DFS)

DFS模块产生的时钟信号的频率足 CLKIN输入的时钟频率与一个用户决定的因数的乘积。由于可以输出的频率范围很宽,这样一个比率是允许的,因此 DFS 能提供比 DLL 的基本合成选项更加灵活的频率合成。这个比率的分子是一个整数值,赋给 CLKFX_MULTIPLY;分母也是整数值,赋给 CLKFX_DIVIDE,如表4‑40所示。

表4‑40 DFS 特性表

属性名称

描述

属性值

DFS_FREQUENCY_MODE

选择高频或低频模式

LOW,HIGH

CLKFX_MULTIPLY

倍频系数

2到32之问的整数

CLKFX_DIVIDE

分频系数

1到32之间的整数

CLKFX180 输出的信号实质上就是 CLKFX 信号的倒置,这两个输出信号的占空比始终为50%, 即使 CLKIN 输入的信号的占空比不是 50%也不受影响。DFS 时钟信号与DLL的七个时钟信号同时输出。DFS 模块的两个专用输出为 CLKFX 和 CLKFX180,如表4‑41所示。

表4‑41 DFS 信号表

信号名称

描 述

CLKFX

根据 CLKFX_MULTIPLY、CLKFX_DIVIDE 的属性值对 CLKTN 进行分频或者倍频,来产生其他频率的时钟信号

CLKFX180

根据 CLKFX 产生同频但相位差为180°的时钟信号输出

输出频率 fCLKFX 能以输入时钟频率 fCLKIN的函数表示,即

51(.)

根据 CLKFX_MULTIPLY 和CLKFX_DIVIDE 的不同值,就可以用多种组合的整数来对输出频率 fCLKFX 赋值。

DFS 的主要性能如下:

(1) DFS 频率模式。DFS 支持两种频率操作模式:高频模式和低频模式。这两种模式各有不同的时钟频率范围。DFS_FREQUENCY_MODE 的值就是要在这两个模式中任选其一,当该值置 LOW 时,低频模式被选中,所有的 DFS 时钟输出在一个从低到中的频率范围内执行;当该值置 HIGH 时,高频模式被选中,DFS 的两个时钟输出在一个可能的高频范围内执行。

(2) DFS 与 DLL 协作工作和独立于 DLL 工作。DFS 模块能与 DLL 协同工作,也可独立于 DLL 工作。独立于 DLL 时,DFS 模块根据 CLKIN 输入的信号频率,分别乘以CLKFX_MULTIPLY 和除以 CLKFX_DIVIDE 的值,产生另一个频率的信号从 CLKFX 和CLKFX180 输出。尽管是根据 DLL 模块来分类的,CLKIN 倍号是与 DFS 模块共享的,但是DFS 没有使用反馈环,因此输出的信号不能消除时钟分布延迟。

与DLL协同工作时,DFS的运作如前所述,只是有一个额外的益处,它消除了时钟分布延迟。这样的话,从CLK0输出再从CLKFB输入的反馈环是必须存在的。DLL模块与DFS模块通过如下的合作来完成修正相位差:给CLKFX_MULTIPLY和CLKFX_DIVIDE赋值,然后DLL模块将会自动选择可能的延迟单元,来使输出时钟边缘与输入时钟边缘一致。

(3)DFS的时钟输出连接。DFS的时钟输出连接有两种基木方案:片上连接和片外连接,如DLL模块描述中的图3.16所示。

片上连接可以通过全部的布线资源将DFS的两个输出吋钟信号中的一个连接到FPGA的内部寄存器中,全局时钟缓冲器(BUFG)或者BUFGMUX将会提供通向全局时钟网络的通道,可选的反馈环就放置在这里,CLK0通向全局时钟网络后,再反馈冋来给CLKFB输入。

片外连接DFS的两个输出时钟信号和CLK0构成一个可选择的反馈环,可以利用输出缓冲器(OBUF)来驱动片上的时钟网络和寄存器,以使这两个输出信号输出FPGA,这个反馈环是通过IBUFG或者IBUF输送CLK0信号给FPGA来构成的。IBUFG能直接通向全局时钟网络,然后全局时钟网络直接连接到CLKFB输入。

三、相位转换器(PS)

DCM提供两种途径用来控制DCM输出信号与CLKIN输入信号的相位关系。第一种途径,DLL有九个输出时钟信号(CLK0、CLK90、CLK180、CLK270、CLK2X、CLK2X180、CLKDV、CLKFX和CLKFX180)用来生成想要的相位关系,这些输出称为粗糙的相位控制。第二种途径就是利用PS模块提供的线性相位控制。只有当DLL模块工作在低频模式时,PS模块才有效。PS模块对DCM输山时钟进行的相位转换,是在DLL模块内部的CLKFB和CLKIN之间的一种“精细相位转换”。用户可以通过一个小到CLKIN输入时钟周期的1/256或者一个大到抽久延迟(DCM_TAP)的解决方案来控制精细相位转换。使用时,PS模块也可同时转换DCM的所有九个时钟输山的相位。如果PS模块与DCM时钟输山一起使用,比如:CLK90、CLK180、CLK270、CLK2X180和CLKFX180,这时前面的精相位转换将与后面的粗相位转换叠加。

相位转换器的主要性能如下:

(1)PS模块的使能和模式选择。CLKOUT_PHASE_SHIFT的属性值可以使PS模块处于工作状态,并选择其中一种工作模式,如表4‑42所示。

表4‑42 PS的属性值表

属 性 名 称

描 述

属 性 值

CLKOUT_PHASE_SHIFT

禁止 PS 模块或名选择固定相位和可变相位校式

NONE,FIXED,VARIABLE

PHASE_SHIFT

决定相位转换的大小和方向

-255 到+255 之间的整数

CLKOUT_PHASE_SHIFT 的属性值有三个可能的值:NONE、FIXED 和 VARIABLE。当该值设置为 NONE 时,PS 模块不能工作,并且 PS 模块的输入信号 PSEN、 PSCLK 和PSINCDEC 必须接地,如图4‑38(a)所示;当该徂设置为 FIXED 或者 VARIABLE 时,将会分别选择固定的相位模式或者可变的相位模式,这两种模式将在下面分别进行描述。

图4‑38 相位转换波形图

(2) 确定精细相位转换。用户可通过设置和调节 PHASE_SHIFT 的属性值来转换 CLKFB相对于 CLKIN 的相位关系,这个属性值必须是从 -255 到 255 之间的整数,PS 模块用这个值来计算想得到的相位转换 (TPS), 它是 CLKIN 周期 (TCLKIN) 的一个分数倍。给定了PHASE_SHIFT 的值和 TCLKIN 以后,TPS 可能通过下式计算,即

52(.)

固定相位和可变相位操作模式都使用这个式子进行计算的。当 PHASE_SHIFT 的值为零和 PS 模块无效时,CLKFB 和 CLKIN 将会 同相;当 PHASE_SHIFT 的值为止时,相对于CLKIN 信号,CLKFB 信号的相位将会滞后;当 PHASE_SHIFT 的值为负时,相对于 CLKIN信号,CLKFB 信号的相位将会超前。

(3) 同定相位转换模式。在这种模式下,想得到的相位转换值是由用户选择的PHASE_SHIFT的值 P 和式(5.2)决定的一个同定值,是 TCLKIN 的一个分数倍值,如图4‑38(b)所示。在固定相位转换模式下,PSEN、PSCLK 和 PSINCDEC 的输入没有使用,必须接地。

(4) 可变相位转换模式。可变相位模式利用名为 PSEN、PSCLK 和 PSINCDEC 的三个输入 PS 模块的信号,可动态调节精相位转换,三个输入信号的定义如表4‑43所示。

表4‑43 可变相位转换模式的信号表

信号名称

描述

PSEN

对可变相位进行调整的 PSCLK 吋钟的使能

PSCLK

同步相位转换调整的时钟信号

PSINCDEC

相位调整时选择加或减,与 PSCLK 同步

PSDONE

输出为高时,表明此时相位调整已经完成,PS模块己准备好应答下一次相位调整,此输出信号与 PSCLK 同步

器件配置完以后,PS 模块通过将 PHASE_SHIFT 的属性值代入式(3.2)计算初步得到 TPS的值,然后利用表4‑43中的三个 PS 输入信号来动态调节相位的增加或减少,进行精相位转换。

定义 PSEN 将会使 PSINCDEC 信号有效,PSINCDEC 信号与 PSCLK 时钟信号同步,PSCLK 信号可以由 CLKIN 信号或者其他时钟信号得到。在一个相位调整的请求开始的过程中,每一个 PSCLK 周期中的 PSINCDEC 信号都是高电平,PS 模块使 TPS 的周期时间增加 1/256 个 CLKIN 周期时间;同理,每一个 PSCLK 周期中的 PSINCDEC 信号都是低电平时,PS 模块使 TPS 的周期时间减少 1/256 个 CLKIN 周期时间。相位调节需要 100 个 CLKIN周期外加三个 PSCLK 周期才能生效,在这段时间内,PSDONE 输出脚才有可能在一个PSCLK 周期内变为高电平。当 PSDONE 变为高电平时,表明 PS 模块已经结束现在的转换,并已准备好接受下一个转换请求。输入一个 RESET(RST)信号,TPS 将会变回原始的转换时间,即由PHASE_SHIFT 的属性值计算所得的值。这整个过程的波形如图4‑38(c)所示。

四、状态逻辑模块

状态逻辑模块不仅能报告 DCM 现在的状态,而且能提供一个手段使 DCM 复位时的初始状态已知。与状态逻辑模块相关的信号如表4‑44所述。

表4‑44 状态逻辑信号描述表

信号名称

描述

RST

复位信号

STATUS[7:0]

STATUS 总线上的位属性值,表明了DLL和 PS 操作的状态

LOCKED

输出高电平时,表明CLKIN 和 CLKFB 信号已经锁定相位;低电平时,表明还没锁定

通常,当使用配置器件和改变 CLKIN 信号的频率时,输入 RESET(RST)信号,DCM的复位信号不会对各个属性值产生影响;如果不使用,RST 必须接地。

8 位的 STATUS 总线的描述如表4‑45所示。

表4‑45 DCM 8 位 STATUS 总线描述

名称

描述

0

相位转换溢山

下列情况发生且属性值为 1 时,表明相位转换溢出:

1、在一个CLKIN 周期内,加(或减)TPS 的值超出 255/256;

2、DLL模块已产生其最大可能的相位转换

1

CLKIN输入稳定

为 1 时表明 CLKIN 输入信号没有稳定, 为 0时表明己稳定。此位的功能只有当 CLKFB 输入连接时有效

2

CLKFX/CLKFX180输出稳定

为 1 时表明 CLKFX 或 CLKFX180 输出信号没有稳定,为 0时表明已稳定。此位的功能只有当使用 DFS 模块时有效

3~7

保留位

-

利用 STARTUP_WAIT 信号的属性值,可以延迟完成器件配置,直到 DLL 达到锁定条件。这个操作可以保证在 DCM 稳定地产生系统时钟以前 ,FPGA 不进入用户模式。为了完成这个延迟,必须把 STARTUP_WAIT 的属性值设为 TRUE,并同时设置 BITGEN 选项中

六个周期为一个 CLK_CYCLE,用以弥补配置的启动相位。这个选定的周期定义了配置将会中断的时间点,直到 LOCKED 输出为高电平。

1.1.3DCM 的典型应用

典型应用在《一天一个设计实例-PLL、DLL、DCM区别及应用》已经介绍,在此不再赘述。

(0)

相关推荐