Xilinx DCM(Virtex-5)

1. 概述

Virtex-5 FPGA中的数字时钟管理器(Digital Clock Managers,DCM)提供了广泛而又强大时钟管理功能,如时钟偏移校正(Clock Deskew)、频率合成(Frequency Synthesis)、相移(Phase Shifting)、动态重配置(Dynamic Reconfiguration)。

1.1 时钟偏移校正

DCM包含一个延迟锁定环(DLL),通过与输入时钟比较来校正DCM的输出时钟偏移以完全消除时钟分配延迟。DLL包含延迟元件(单个小缓冲区)和控制逻辑,输入时钟驱动一系列延迟元件,因此每个延迟元件的输出为输入时钟不同延迟的版本。

控制逻辑包含相位检测器和延迟线选择器,相位检测器将输入时钟信号(CLKIN)与反馈输入(CLKFB)进行比较,并控制延迟线选择器。本质上是将延迟添加到DCM的输出,直到CLKIN和CLKFB重合为止。

1.2 频率合成

单独的二倍频(CLK2X、CLK2X180)。

指定倍数的分频(CLKDV)。

同时倍频和分频(CLKFX、CLKFX180)。

1.3 相移

DCM提供粗粒度相移和细粒度相移。粗粒度相移为:CLK0、CLK90、CLK180、CLK270、CLK2X、CLK2X180、CLKFX、CLKFX180。细粒度相移有四种模式:fixed、variable-positive、variable-center和direct模式。细粒度相移在粗粒度相移的基础上相对于CLKIN进行相移。fixed模式在配置期间定义固定的相移有效输入时钟周期/256的倍数,variable-positive和variable-center模式中,相位可以在初始相移的基础上动态地重复地向前或向后相移有效输入时钟周期/256,direct模式在零相移的基础上动态地重复地向前或向后相移DCM_TAP。

1.4 动态重配置

详见Virtex-5 FPGA Configuration Guide

2. DCM原语

DCM原语DCM_BASE和DCM_ADV如下图:

DCM_BASE原语:DCM_BASE具有时钟偏移校正、频率合成、固定相移等功能。

DCM_ADV原语:DCM_ADV具有时钟偏移校正、频率合成、固定或可变相移、动态重配置等功能。

3. DCM端口

DCM端口分为四类:DCM时钟输入端口、DCM控制和数据输入端口、DCM时钟输出端口、DCM状态和数据输出端口。

3.1 DCM时钟输入端口

3.1.1 原时钟输入-CLKIN

源时钟输入引脚(CLKIN)为DCM提供源时钟,它必须在指定的范围之内,详见Virtex-5 FPGA Data Sheet。如果CLKIN停止100ms或者更长时间,DCM将关闭。时钟输入信号可以来自一下缓冲器之一:

IBUFG(全局时钟输入缓冲器):当CLKFB连接,且IBUFG与DCM位于设备的同一半时(即顶部或底部),DCM将补偿时钟输入路径。

BUFGCTRL(内部全局时钟缓冲器):任何BUFGCTRL都可以使用专用的全局路由驱动Virtex-5器件中的任何DCM。串联两个DCM时,BUFGCTRL可以驱动DCM CLKIN引脚。

PLL(锁相环):同一个CMT内,PLL可以直接驱动DCM的CLKIN引脚,中间不需要全局时钟缓冲器。

IBUF(输入缓冲器):当IBUF驱动CLKIN输入时,PAD到DCM的输入偏移不会得到补偿。

3.1.2 反馈时钟输入-CLKFB

反馈时钟输入向DCM提供反馈信号,以此来对输出时钟进行延迟补偿,使其与输入时钟对齐。要向DCM提供必要的反馈,需将DCM输出CLK0连接到CLKFB。当CLKFB引脚连接时,所有的输出时钟都将相对于CLKIN进行偏移校正;当CLKFB未连接时,输出时钟不会进行偏移校正,但输出时钟之间会保持相应的相位关系。

对于内部反馈配置,DCM的输出CLK0连接到同一半(同一顶部或底部)的全局时钟缓冲器,全局时钟缓冲器输出再连接到自身的CLKFB输入。

对于外部反馈配置,需要遵循如下规则:

1、要转发时钟,DCM的输出CLK0必须直接驱动OBUF或BUFG-to-DDR。

2、在FPGA外部,转发的时钟必须连接到IBUFG(全局时钟引脚)或者IBUF来驱动DCM的CLKFB引脚。CLK和CLKFB应具有相同的I / O缓冲。

下图展示了外部反馈配置:

反馈时钟输入信号可以来自以下缓冲器之一:

IBUFG(全局时钟输入缓冲器):这是外部反馈配置的首选来源。当IBUFG在DCM的同一顶部或底部时,PAD到DCM偏斜将被补偿以进行偏移校正。

BUFGCTRL(内部全局时钟缓冲器):这是由CLK0驱动的内部反馈配置。

IBUF(输入缓冲器):这是外部反馈配置。PAD到DCM的偏斜不会得到补偿,无法保证其性能。

3.1.3 相移时钟输入-PSCLK

相移时钟输入引脚(PSCLK)为DCM相移提供源时钟,PSCLK可以与CLKIN异步(相位和频率)。相移时钟信号可由以下时钟源(内部或外部)驱动:

IBUF:输入缓冲器。

IBUFG:全局时钟输入缓冲器,只有与DCM相同一半(顶部或底部)上的IBUFG用于驱动DCM的PSCLK输入才能使用专用路由。

BUFGCTRL:内部全局时钟缓冲器。

内部时钟:使用通用路由的任何内部时钟。

PSCLK的频率范围详见Virtex-5 FPGA Data Sheet。当CLKOUT_PHASE_SHIFT属性设置为NONE或FIXED时,此输入必须接地。

3.1.4 动态重配置时钟输入-DCLK

动态重配置时钟输入引脚(DCLK)为DCM的动态重配置电路提供源时钟, DCLK可以与CLKIN异步(相位和频率)。 动态重配置时钟信号可由以下时钟源(内部或外部)驱动:

IBUF:输入缓冲器。

IBUFG:全局时钟输入缓冲器。

BUFGCTRL:内部全局时钟缓冲器。

内部时钟:使用通用路由的任何内部时钟。

DCLK的频率范围详见Virtex-5 FPGA Data Sheet。不使用动态重配置时,此输入必须接地。

3.2 DCM控制和数据输入端口

3.2.1 复位输入-RST

复位输入引脚(RST)复位DCM电路,该复位为高有效异步复位。异步置位RST,经过传播延时之后,强制所有DCM输出为低电平,包括LOCKED信号、所有状态信号和所有输出时钟。当RST被置为时,时钟的最后一个周期会表现出短脉冲和严重的占空比失真,或者彼此之间不再进行偏移校正。取消RST信号的下一个周期开始锁定过程。

为确保正确的DCM复位和锁定过程,必须保持RST信号,直到CLKIN信号出现并稳定至少三个CLKIN周期。(即在CLKIN出现并稳定三个周期之前,DCM需保持在复位状态,这样才能确保正确的DCM复位和锁定过程)

复位后DCM锁定所需的时间在Virtex-5 FPGA Data Sheet中由LOCK_DLL(用于DLL输出)和LOCK_FX(用于DFS输出)指定,频率越高锁定越快。在CLKIN稳定之前,DCM必须保持复位状态。

3.2.2 相移增量/减量输入-PSINCDEC

当PSEN被激活时,PSINCDEC输入信号用于递增或递减相移因子,它必须与PSCLK同步。PSINCDEC信号置为高电平表示递增,置为低电平表示递减,将导致输出时钟被移位。当CLKOUT_PHASE_SHIFT属性设置为NONE或FIXED时,此输入必须接地。

用于VARIABLE_POSITIVE、VARIABLE_CENTER、DIRECT三种相移模式。

3.2.3 相移使能输入-PSEN

PSEN输入信号启动可变相移操作,它必须与PSCLK同步,且必须在PSCLK的一个周期内激活。PSEN启动后,DCM输出时钟从其原始相移逐位移动到目标相移,PSDONE高脉冲指示相移完成。在相变期间,任何输出都没有零星的变化或毛刺。当CLKOUT_PHASE_SHIFT属性设置为NONE或FIXED时,PSEN必须接地。时序如下图:

3.2.4 动态重配置数据输入-DI[15:0]

动态重配置数据输入总线(DI)为动态重配置提供重配置数据。不使用时,必须为所有位分配零。

3.2.5 动态重配置地址输入-DADDR[6:0]

动态重配置地址输入总线(DADDR)为动态重配置提供重配置地址。不使用时,必须为所有位分配零。

3.2.6 动态重配置写使能输入-DWE

动态重配置写使能输入引脚(DWE)提供写使能控制信号,以将DI数据写入DADDR地址。 不使用时,必须绑低。

3.2.7 动态重配置启用输入-DEN

动态重配置使能输入引脚(DEN)提供使能控制信号以访问动态重配置功能。 如果未使用动态重配置功能,则必须将DEN绑定为低电平。 当DEN接低电平时,DO反映DCM状态信号。

3.3 DCM时钟输出端口

DCM提供9个具有特定频率和相位关系的时钟输出。当CLKFB连接时,所有DCM时钟输出与CLKIN具有固定的相位关系,未连接CLKFB时,DCM输出与CLKIN不是相位对齐的,但是,所有输出时钟之间具有固定的相位关系。

3.3.1 1x输出时钟-CLK0

CLK0输出时钟的时钟频率与DCM的有效CLKIN频率相同。 默认情况下,有效输入时钟频率等于CLKIN频率,CLKIN_DIVIDE_BY_2属性设置为TRUE时,有效CLKIN频率为实际CLKIN频率的1/2。当CLKFB连接时,CLK0与CLKIN相位对齐。

3.3.2 1x输出时钟,90°相移-CLK90

CLK90输出时钟为CLK0相移90°。

3.3.3 1x输出时钟,180°相移-CLK180

CLK90输出时钟为CLK0相移180°。

3.3.4 1x输出时钟,270°相移-CLK270

CLK90输出时钟为CLK0相移270°。

3.3.5 2x输出时钟-CLK2X

CLK2X输出时钟与CLK0相位对齐,频率为CLK0频率的两倍,并具有自动50/50占空比校正。 在DCM锁定之前,CLK2X输出为输入时钟的1x版本,占空比为25/75。 此行为(1x版本,占空比25/75)允许DCM锁定相对于源时钟的正确边沿。

3.3.6 2x输出时钟,180°相移-CLK2X180

CLK2X180输出时钟为CLK2X相移180°。

3.3.7 分频输出时钟-CLKDV

CLKDV输出时钟与CLK0相位对齐,频率是有效CLKIN频率的分频,分频倍数由CLKDV_DIVIDE属性确定。

3.3.8 频率合成输出时钟-CLKFX

CLKFX输出时钟频率:CLKFX frequency = (M / D) X effective CLKIN frequency

其中,M值由CLKFX_MULTIPLY属性定义,D值由CLKFX_DIVIDE属性定义。 M和D的范围以及频率合成器的输入和输出频率范围详见Virtex-5 FPGA Data Sheet。

CLKFX输出的上升沿与CLK0,CLK2X和CLKDV的上升沿对齐,当M和D没有共同因子时,对齐仅在CLK0的每D个周期发生一次。

3.3.8 频率合成输出时钟,180°相移-CLKFX180

CLKFX180输出时钟为CLKFX相移180°。

3.4 DCM状态和数据输出端口

3.4.1 锁定输出-LOCKED

LOCKED输出指示DCM时钟输出是否有效。复位后,DCM采样数千个时钟周期以实现锁定,DCM锁定后,LOCKED信号被置为高电平。锁定时间的估算详见Virtex-5 FPGA Data Sheet。

为了在启动周期结束时保证建立的系统时钟,DCM可以延迟完成设备配置过程,直到DCM锁定为止。STARTUP_WAIT属性激活此功能。

在LOCKED信号置为高电平之前,DCM输出时钟无效,并且可能出现毛刺、尖峰或其他虚假运动。并且,CLK2X输出显示为1x时钟,占空比为25/75。

3.4.2 相移完成输出-PSDONE

相移完成输出信号(PSDONE)与PSCLK同步,在所请求的相移完成时,PSDONE在PSCLK的一个周期内脉冲为高电平。 该信号还表明可以发起新的相移。 如果未使用相移功能或处于固定模式,则PSDONE输出信号无效。

3.4.3 状态或动态重配置数据输出-DO[15:0]

使用动态重配置时,DO输出总线提供DCM状态或数据输出。如果未使用动态重新配置端口,强烈建议使用DCM_BASE而不是DCM_ADV。

DO[0]:相移溢出。当DCM相移超过允许的相移值时,或超过相移延迟线的绝对延迟范围时,DO[0]置位。如果未使用相移功能(CLKOUT_PHASE_SHIFT = NONE),DO[0]将置为0。

DO[1]:CLKIN停止。当输入时钟停止时置位(CLKIN在一个或多个时钟周期内保持高电平或低电平)。当CLKIN停止时,DO[1]将在9个CLKIN周期之内被置位(即第10个周期来临之前DO[1]已经置位),当CLKIN重新启动时,CLK0开始翻转,DO[1]将在9个周期之内置为无效。

DO[2]:CLKFX停止。当CLKFX停止时置位。DO[2]在CLKFX停止后的260个周期之内置位。在DCM复位前,CLKFX不会恢复,DO[2]也不会置为无效。 如果未使用CLKFX / CLKFX180输出,则DO[2]置为无效。

DO[3]:CLKFB停止。当反馈时钟停止时置位(CLKFB在一个或多个时钟周期内保持高电平或低电平)。当CLKFB停止时,DO[3]在6个CLKIN周期之内被置位,当CLKFB重新启动时,DO[3]将在6个CLKIN周期之内置为无效。

CLKFB偶尔跳过不会影响DCM操作,但是,CLKFB长时间停止可能会导致DCM丢失LOCKED。 当LOCKED丢失时,需要重置DCM以恢复操作。当未使用DCM的DLL部分时(例如,仅使用CLKFX输出时),CLKFB可以保持未连接状态。在这种情况下,DO[3]被置为无效。

DO[15:4]:保留。

当LOCKED为低电平时(复位或锁定过程),所有状态信号都置为低电平。

3.4.4 动态重配置就绪输出-DRDY

动态重配置就绪输出引脚(DRDY)为DCM的动态重配置功能的DEN信号提供响应。

4. DCM属性

4.1 CLKDV_DIVIDE属性

CLKDV_DIVIDE属性控制CLKDV的频率。

CLKDV_DIVIDE的可能值为:1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8,9,10,11,12,13,14,15,16,默认值为2。

在低频模式下,任何CLKDV_DIVIDE值都会产生具有50/50占空比的CLKDV输出。

在高频模式下,将CLKDV_DIVIDE值设为整数值才能产生具有50/50占空比的CLKDV输出,若设为非整数值,则占空比如下:

1.5-->1/3;2.5-->2/5;3.5-->3/7;4.5-->4/9;5.5-->5/11;6.5-->6/13;7.5-->7/15。

4.2 CLKFX_MULTIPLY属性和CLKFX_DIVIDE属性

CLKFX_MULTIPLY属性和CLKFX_DIVIDE属性控制CLKFX的频率。

M的可能值为2到33之间的任何整数,D的可能值为1到32之间的任何整数,默认设置为M = 4和D = 1。

4.3 CLKIN_PERIOD属性

CLKIN_PERIOD属性指定源时钟周期(单位ns), 默认值为0.0 ns。

可以帮助DCM调整最佳CLKFX / CLKFX180输出。

4.4 CLKIN_DIVIDE_BY_2属性

CLKIN_DIVIDE_BY_2属性用于在DCM的输入时钟路径中启用触发器。

CLKIN_DIVIDE_BY_2的可能值为TRUE和FALSE, 默认值为FALSE。

CLKIN_DIVIDE_BY_2设为FALSE时,DCM的有效CLKIN频率等于驱动CLKIN输入端源时钟的频率;设为TRUE时,DCM的有效CLKIN频率等于驱动CLKIN输入端源时钟频率的一半。

可以使高频输入时钟满足DCM输入时钟频率要求。

4.5 CLKOUT_PHASE_SHIFT属性

CLKOUT_PHASE_SHIFT属性指示DCM的相移模式。

CLKOUT_PHASE_SHIFT的可能值为NONE、FIXED、VARIABLE_POSITIVE、VARIABLE_CENTER、DIRECT,默认值为NONE。

NONE:不能执行相移,相移值对DCM输出没有影响。

FIXED:DCM对CLKIN进行固定相位的相移,相移值由PHASE_SHIFT属性确定。

(CLKOUT_PHASE_SHIFT属性设为FIXED或NONE时,PSEN、PSINCDEC、PSCLK输入必须接地。)

VARIABLE_POSITIVE:DCM输出在可变模式下相对于CLKIN的正范围内进行相移。

VARIABLE_CENTER:DCM输出在可变模式下相对于CLKIN的正范围和负范围内进行相移。

(CLKOUT_PHASE_SHIFT属性设为VARIABLE_POSITIVE或VARIABLE_CENTER时,每个相移增量(或减量)将增加(或减少)相位移动1/256 x CLKIN周期,即相移单位为1/256xCLKIN周期。)

DIRECT:DCM输出在可变模式下相对于CLKIN的正范围内进行相移。每个相移增量/减量将增加/减少相位移动一个DCM_TAP。DCM_TAP详见Virtex-5 FPGA Data Sheet。

VARIABLE_POSITIVE和VARIABLE_CENTER模式的初始相移由PHASE_SHIFT属性值决定的,而DIRECT模式中的初始相移始终为零,当使用DIRECT模式时,PHASE_SHIFT属性应设为零。也可以使用Virtex-5 FPGA Configuration Guide中的动态重配置端口将DIRECT模式的非零初始相移值加载到DCM。

4.6 CLK_FEEDBACK属性

CLK_FEEDBACK属性确定CLKFB的反馈类型。

CLK_FEEDBACK的可能值为1X或NONE,默认值为1X。

CLK_FEEDBACK设为1X时,CLKFB引脚必须由CLK0驱动;设为NONE时,CLKFB引脚保持未连接状态。

4.7 DESKEW_ADJUST属性

DESKEW_ADJUST属性会影响反馈路径中的延迟量。

DESKEW_ADJUST的可能值为

SYSTEM_SYNCHRONOUS、SOURCE_SYNCHRONOUS、0,1,2,...,31,默认值为SYSTEM_SYNCHRONOUS。

对于大多数设计,默认值是合适的。 在源同步设计中,将此属性设为SOURCE_SYNCHRONOUS。 其余值应在咨询Xilinx后使用。

4.8 DFS_FREQUENCY_MODE属性

DFS_FREQUENCY_MODE属性指定数字频率合成器(DFS)的频率模式。

DFS_FREQUENCY_MODE的可能值为Low 或 High,默认值为Low。

两种模式的频率范围详见Virtex-5 FPGA Data Sheet。 DFS_FREQUENCY_MODE确定CLKIN,CLKFX和CLKFX180的频率范围。

4.9 DLL_FREQUENCY_MODE属性

DLL_FREQUENCY_MODE属性指定延迟锁定环(DLL)的频率模式。

DLL_FREQUENCY_MODE的可能值为Low 或 High,默认值为Low。

两种模式的频率范围详见Virtex-5 FPGA Data Sheet。

4.10 DUTY_CYCLE_CORRECTION属性

DUTY_CYCLE_CORRECTION属性控制1x时钟输出(CLK0,CLK90,CLK180和CLK270)的占空比校正。

DUTY_CYCLE_CORRECTION的可能值为TRUE和FALSE,默认值是TRUE。

设置为TRUE时,1x时钟输出的占空比校正到指定的限制范围内,详见Virtex-5 FPGA Data Sheet。强烈建议将DUTY_CYCLE_CORRECTION属性设置为TRUE,将此属性设置为FALSE不一定会产生与源时钟具有相同占空比的输出时钟。

4.11 DCM_PERFORMANCE_MODE属性

DCM_PERFORMANCE_MODE属性为高频低抖动或低频宽相移优化DCM。

DCM_PERFORMANCE_MODE的可能值为MAX_SPEED和MAX_RANGE,默认值为MAX_SPEED。

DCM_PERFORMANCE_MODE设为MAX_SPEED时,DCM为产生低抖动高频时钟优化,但是相移范围比设为MAX_RANGE时小。

DCM_PERFORMANCE_MODE设为MAX_RANGE时,DCM为产生低频宽范围相移时钟优化。

DCM_PERFORMANCE_MODE会影响以下值:

DCM输入和输出频率范围,相移范围,输出抖动,DCM_TAP,CLKIN_CLKFB_PHASE,CLKOUT_PHASE和占空比精度,详见Virtex-5 FPGA Data Sheet。

大多数情况下,DCM_PERFORMANCE_MODE应设为MAX_SPEED,当频率需低于MAX_SPEED设置的低频限制或需要更大的绝对相移范围时,设为MAX_RANGE。

4.12  Factory_JF属性

Factory_JF属性会影响DCM的抖动滤波器特性。

Factory_JF的默认值为0xF0F0。

4.13 PHASE_SHIFT属性

PHASE_SHIFT属性确定DCM输出的相移量,可用于固定或可变相移模式,如果用于可变相移模式,则为初始相移量。

当CLKOUT_PHASE_SHIFT = VARIABLE_POSITIVE时,PHASE_SHIFT值范围为0到255。当CLKOUT_PHASE_SHIFT = VARIABLE_CENTER或FIXED时,PHASE_SHIFT值范围为-255到255。当CLKOUT_PHASE_SHIFT = DIRECT时,PHASE_SHIFT值范围为0到1023。默认值为0。

4.14 STARTUP_WAIT属性

STARTUP_WAIT属性确定DCM是否等待DCM锁定,等待时间为一个启动周期。

STARTUP_WAIT的可能值为TRUE和FALSE,默认值为FALSE。

当STARTUP_WAIT设置为TRUE且使用LCK_cycle BitGen选项时,配置启动序列将在LCK_cycle指定的启动周期中等待,直到DCM被锁定。

5. DCM设计指南

5.1 时钟偏移校正

Virtex-5 FPGA DCM具有全数字、专用、片上时钟偏移校正功能,偏移校正能够提供原时钟和输出时钟之间的零传播延迟、输出时钟(分布在整个器件中)之间的低时钟偏斜、高级时钟域控制。偏移校正功能还可用作为多个器件提供服务的板级时钟的时钟镜像,这是通过将CLK0输出到电路板(以及电路板上的其他器件),然后将时钟作为反馈时钟来实现的。利用偏移校正功能极大地简化并改进了涉及高扇出,高性能时钟的系统级设计。

5.1.1 时钟偏移校正操作

时钟偏移校正功能使用的是DCM中的DLL电路,简化的DLL是由单个可变延迟线和控制逻辑组成(如下图),可变延迟线包含单独的小延迟原件或缓冲器,每个固有延迟元件的大小为DCM_TAP。输入时钟驱动延迟线,延迟线的每个延迟元件的输出为输入时钟(CLKIN)不同点的延迟版本。控制逻辑包含相位检测器和延迟线选择器,相位检测器将输入时钟信号(CLKIN)与反馈输入(CLKFB)进行比较,并控制延迟线选择器,实质上等同于为DCM输出增加延迟,直到CLKIN和CLKFB重合,此时两个时钟相位相差360°,因而同相,当输入时钟边沿与反馈时钟边沿对齐时,DCM实现锁定。时钟分配网络将时钟路由到所有时钟输出和时钟反馈CLKFB引脚,DCM输出时钟补偿时钟分配网络中的延迟,有效地消除源时钟与其负载之间的延迟。

为了提供正确的时钟偏移校正,DCM取决于时钟源和反馈输入使用的专用路由和资源。 附加的延迟元件(Deskew Adjust)可用于补偿时钟源或反馈路径。 Xilinx ISE工具分析DCM周围的布线,以确定是否必须插入延迟来补偿时钟源或反馈路径, 因此,需要使用专用路由来实现可预测的偏移校正。

5.1.2 输入时钟要求

DCM的时钟输入可以由IBUFG / IBUFGDS,IBUF,BUFGMUX或BUFGCTRL驱动。由于IBUF和DCM时钟输入之间没有专用路由,因此使用IBUF会导致无法补偿的额外输入延迟,并且无法保证性能。

DCM的输出时钟信号本质上是输入时钟的延迟,输入时钟上的任何不稳定性都将反映在输出时钟上。DCM输入时钟的要求详见Virtex-5 FPGA Data Shee。一旦锁定,DCM可以容忍输入时钟周期的变化,变化值最高可达CLKIN_PER_JITT_DLL_HF(高频情况下)或CLKIN_PER_JITT_DLL_LF(低频情况下)指定的值。较大的抖动(周期变化)可能导致DCM失锁,由LOCKED输出无效指示,失锁后,用户必须重置DCM。输入周期差抖动率必须保持低于低频的CLKIN_CYC_JITT_DLL_LF和高频的CLKIN_CYC_JITT_DLL_HF

5.1.3 输入时钟变化

输入时钟周期的变化超过最大输入周期抖动规定时需要手动复位DCM,未重置DCM会产生不可靠的LOCKED信号和输出时钟。

只要不使用CLKFX和CLKFX180,暂时停止输入时钟和反馈时钟对偏移校正电路影响很小。若使用CLKFX和CLKFX180且输入时钟停止,CLKFX或CLKFX180可能会停止翻转,并且DO[2]被置位,必须重置DCM才能恢复。在CLKFX停止后100μs,DO[2]置位,在DCM复位之前,CLKFX和DO[2]不会恢复。

在任何其他情况下,时钟不应停止超过100毫秒,以尽量减少设备冷却的影响,否则,延时可能会改变。时钟应在高电平或低电平处停止,并且使用相同频率周期的输入时钟恢复,在此期间,以及时钟恢复后,LOCKED保持高电平。因此,LOCKED高电平并不一定意味着有效时钟可用。

当输入时钟停止(CLKIN在一个或多个时钟周期内保持高电平或低电平)时,在刷新延迟线时仍会产生一到九个输出时钟周期,当输出时钟停止时,DO[1]置位。当重新启动时钟时,在延迟线被填满前,输出时钟不会产生,这里有一到八个时钟周期,通常是两个或三个时钟周期,一旦产生输出时钟,DO[1]置为0。CLKIN可以从前一个时钟的任何相位处启动,但如果频率改变,则需要复位DCM。LOCKED为低电平或DCM处于锁定过程中时,DO[1]强制保持为0。

5.1.4 输出时钟

DCM的九个时钟输出都可以驱动全局时钟网络,全局时钟分配网络可最大限度地减少因加载差异而导致的时钟偏差。通过监视输出时钟(CLK0)的样本,去歪斜电路补偿路由网络上的延迟,有效地消除了从外部输入端口到设备内各个时钟负载的延迟。

输出引脚的连接有一些限制,DCM时钟输出必须驱动全局时钟缓冲器BUFGCTRL,DCM时钟输出无法驱动一般路由。DCM时钟输出必须驱动同一顶部或底部的BUFGCTRL才能使用专用路由。如果DCM和BUFGCTRL不在同一顶部或底部,则使用本地路由,但DCM可能无法正确校正偏移。在LOCKED信号置位之前,DCM输出时钟无效。

5.1.5 配置和启动期间的DCM

在FPGA配置期间,DCM处于复位状态,并在启动序列开始时锁定。 当DCM开始锁定时,DCM需要CLKIN和CLKFB输入时钟存在且稳定。 如果器件在没有输入时钟或输入时钟不稳定的情况下进入配置启动序列,则必须在配置稳定时钟后复位DCM。

5.1.6 偏移校正调整

DESKEW_ADJUST属性设置可配置的可变抽头延迟元件的值,以控制添加到DCM反馈路径的延迟量。如下图:

该延迟元件允许调整时钟源和CLK0之间的有效时钟延迟,以保证器件中IOB输入触发器的非正保持时间。

向DCM反馈路径添加更多延迟会减少从FPGA时钟输入引脚到任何触发器的时钟输入的实际时钟路径的有效延迟。减小时钟延迟会增加输入触发器中的建立时间,并减少所需的正保持时间。时钟路径延迟包括通过IBUFG,路由,DCM,BUFG和时钟树到目标触发器的延迟。 如果反馈延迟等于时钟路径延迟,则有效时钟路径延迟为零。

系统同步设置:

默认情况下,反馈延迟设置为系统同步模式。系统同步系统的主要时序要求是非正保持时间(或最小正保持时间)和最小的时钟输出和建立时间。更快的时钟输出和建立时间允许使用更短的系统时钟周期。理想情况下,DLL的目的是将时钟延迟清零,以产生更快的时钟输出和非正保持时间。 DESKEW_ADJUST的系统同步设置(默认)配置反馈延迟元件,以保证所有输入IOB寄存器的非正保持时间。 添加到反馈路径的确切延迟数取决于设备大小。在时序报告中,这包括作为TDCMINO参数表示的输入时钟路径的时序减少。 如上图所示,反馈路径包括默认设置(红线)中的抽头延迟。

在某些情况下,DCM不会添加此额外反馈延迟,并且DESKEW_ADJUST参数无效。BitGen选择适当的DCM Tap设置。 这些情况包括:

两个或多个DCM级联时的下游DCM;

具有外部反馈的DCM;

带有外部CLKIN的DCM,它不是来自专用时钟输入引脚。

源同步设置:

当DESKEW_ADJUST设置为源同步模式时,DCM反馈延迟元素设置为零。如上图所示,在源同步模式下,DCM时钟反馈延迟元件设置为最小化采样窗口。与系统同步模式相比,这导致更长的保持时间和更长的时钟输出。

5.1.7 偏移校正电路特性

通过添加一个时钟周期延迟来消除时钟分配延迟。

时钟偏移校正到CLKOUT_PHASE内。

消除片上和片外时钟延迟。

对反馈时钟路径的延迟没有限制。

需要连续运行的输入时钟。

适应很大范围的频率。 但是,一旦锁定某个频率,就不能容忍大的输入频率变化。

不消除抖动。 偏移校正电路输出抖动是由输入抖动和偏移校正电路引起的抖动值的累积。

配置可在DCM锁定以保证系统时钟在启动设备之前建立之后完成。

5.2 频率合成

CLK2X、CLK2X180:有效输入频率的两倍。

CLKDV:频率是有效CLKIN频率的分频,分频倍数由CLKDV_DIVIDE属性确定。

CLKFX、CLKFX180:CLKFX frequency = (M / D) X effective CLKIN frequency。

频率合成输出可以驱动全局时钟路由网络,良好的全球时钟分配网络可最大限度地减少因距离或负载不同而造成的时钟偏差。

5.2.1 频率合成操作

仅当向DCM的CLKFB输入提供反馈时,频率合成器输出相位与时钟输出CLK0对齐。

5.2.2 频率合成特性

频率合成器提供的输出频率等于输入频率乘以M并除以D.
输出CLKFX和CLKFX180的占空比始终为50/50。
较小的M和D值可实现更快的锁定时间,将M和D除以最大公因子即可得到最小值。
当CLKFB连接时,则CLKFX在CLK0的每个D周期或CLKFX的每M个周期与CLK0相位对齐。

5.3 相移

DCM提供粗粒度和细粒度的相移。粗粒度相移为:CLK0、CLK90、CLK180、CLK270、CLK2X、CLK2X180、CLKFX、CLKFX180。粗略的相移时钟由DLL电路的延迟线产生。当CLKFB未连接时,输出时钟之间的关系还会保留。

细粒度相移根据CLKOUT_PHASE_SHIFT和PHASE_SHIFT属性对CLKIN进行相移,由于CLKIN作为参考时钟,因此CLKFB需要连接,以将输入时钟与输出相移时钟进行比较。

5.3.1 相移操作

细粒度相移对所有9个输出时钟都有效,CLKIN和CLKFB上升沿之间的相移单位为输入时钟周期除以256或DCM_TAP。

相移范围:

PHASE_SHIFT属性值范围和FINE_SHIFT_RANGE DCM参数影响了相移的范围。

PHASE_SHIFT:

在FIXED、VARIABLE_POSITIVE、VARIABLE_CENTER相移模式下,相移量(初始相移量)如下公式计算:

PHASE\: SHIFT(ns)=(PHASE_{-}SHIFT/256)\times PERIOD_{CLKINeffective}

在FIXED和VARIABLE_CENTER模式下,PHASE_SHIFT属性值的范围为-255~255,在VARIABLE_POSITIVE模式下,PHASE_SHIFT属性值的范围为0~255。

在DIRECT相移模式下,相移量(初始相移量)如下公式计算:

PHASE\: SHIFT(ns)=PHASE_{-}SHIFT\times DCM_{-}TAP

在DIRECT模式下,PHASE_SHIFT属性值的范围为0~1023。

FINE_SHIFT_RANGE:

FINE_SHIFT_RANGE表示相移延迟线可实现的总延迟,总延迟延迟抽头数的函数。Absolute Range可在Virtex-5 FPGA Data Sheet中查找,此处讨论不同的Absolute Range。

Absolute Range (Fixed) = ± FINE_SHIFT_RANGE

Absolute Range (Variable-Center Mode) = ± FINE_SHIFT_RANGE / 2

Absolute Range (Variable-Positive and Direct Modes) = + FINE_SHIFT_RANGE

在可变模式和直接模式下,当PSEN输入有效时,PHASE_SHIT值可以根据PSINCDEC动态递增或递减。

相移示例:

如果PERIODCLKIN = 2 x FINE_SHIFT_RANGE,PHASE_SHIFT值在Fixed模式下范围为-128~128,在Variable-Positive模式下范围为0~128,在Variable-Center模式下范围为-64~64。

如果PERIODCLKIN <= FINE_SHIFT_RANGE,PHASE_SHIFT值在Fixed模式和Variable-Center模式下范围为-255~255,在Variable-Positive模式下范围为0~255。

在Direct模式下,PHASE_SHIFT值的范围为0~1023。

可用粗粒度相移来扩展相移范围,也可设置DCM_PERFORMANCE_MODE属性值为MAX_RANGE来增加FINE_SHIFT_RANGE。

下图基于FINE_SHIFT_RANGE=10ns。

在可变模式下,通过将PSEN激活一个PSCLK周期来改变相移量,PSINCDEC将决定是增加相移还是减少相移,在偏移校正电路完成增加或减少的相移后,将PSDONE置位,表示允许下一次的相移改变。

除了Direct模式,其他相移模式对温度、电压适应,即温度、电压的改变不会改变相移量,而Direct模式直接控制DCM_TAP,因而温度电压比改变后,由于DCM_TAP改变,Direct模式相移量也会改变。

5.3.2 PSEN,PSINCDEC,PSCLK和PSDONE的相互作用

PSEN、PSINCDEC、PSCLK、PSDONE控制着Variable模式和Direct模式。PSEN,PSINCDEC和PSDONE与PSCLK同步,当PSEN被置位一个PSCLK时钟周期时,启动相移递增/递减,每次递增或递减将相移增加或减少CLKIN周期的1/256。PSEN必须在一整个PSCLK周期内有效,否则不保证能完成相移。当相移完成时,PSDONE在一个PSCLK周期内为高电平,完成相移操作所需的时间各不相同,因此,必须监视PSDONE的状态。在置位PSEN和PSDONE输出高电平之间,DCM输出时钟从其原始相移逐渐变为递增/递减后的相移。 PSDONE为高意味着一个相移递增递减操作完成,可以启动下一个递增/递减操作。

DCM锁定之后,VARIABLE_POSITIVE和VARIABLE_CENTER模式的初始相移由PHASE_SHIFT值决定,Direct模式的初始相移时钟为0。DCM在初始相移的基础上由PSEN、PSINCDEC、PSCLK、PSDONE控制进行相移递增和递减。下图显示了相移递增递减过程:

当相移计数器达到PHASE_SHIFT的最大值之后,PSEN被激活,此时,在经过一段时间之后,PSDONE仍会输出一个PSCLK周期的高电平,但是,由于相移溢出标志置位,因而不会执行相移增加或减少。

5.3.3 相移溢出

相移溢出状态信号DO[0]在以下情况下会被置位:

DCM相移值超过了允许的PHASE_SHIFT值。

DCM相移值超过了相移延迟线的Absolute Range。

5.3.4 相移特性

细粒度相移调整的分辨率为有效输入时钟周期的1/256,或者是一个DCM_TAP,相移可在用户控制下动态改变。

相移对9个输出时钟都有效。

除了Direct模式,电压和温度不影响相移。

细粒度相移可由粗粒度相移扩展。

MAX_RANGE模式扩展了相移范围。

DCM中的相移功能(DPS)需要CLKFB进行延迟调整,DPS功能的最小CLKIN频率由DLL频率模式决定。

5.4 动态重配置

动态重配置端口可以更新初始DCM设置,而无需将新的比特流文件加载到FPGA中。动态重配置端口可动态调整CLKFX_MULTIPLY(M)和CLKFX_DIVIDE(D)值以产生新的CLKFX频率。通过以下步骤来调整M和D的值:

将所需的M和D值减1。如果期望的M / D = 9/4,则加载M / D = 8/3。

保持DCM复位并在写入新的M和D值后解除复位,在LOCKED再次置位后,便可以使用CLKFX输出。

读取DADDR0以恢复D0的默认状态。

解除复位。

6. DCM与Virtex-5内部其他时钟资源的连接

大多数DCM功能需要连接到专用时钟资源,包括专用时钟I / O(IBUFG)、时钟缓冲器(BUFGCTRL)和PLL,这些时钟资源位于Virtex-5器件的中间列。

6.1 IBUFG to DCM

Virtex-5器件包含20个时钟输入,通过实例化IBUFG可以访问这些时钟输入。Virtex-5器件的顶部和底部各包含10个IBUFG,它们都可以驱动位于器件同一顶部或底部的DCM的时钟输入引脚(CLKIN,CLKFB,PSCLK或DCLK)。

6.2 DCM to BUFGCTRL

任何DCM时钟输出都可以驱动器件同一顶部或底部的任何BUFGCTRL输入,且对同时使用DCM输出数量没有限制。

6.3 BUFGCTRL to DCM

任何BUFGCTRL都可以驱动Virtex-5器件中的任何DCM,但是由于一个时钟域中仅存在最多十个专用时钟路由资源,且BUFGCTRL输出需要使用时钟路由,因此间接限制了BUFGCTRL与DCM的连接。如果一个时钟域中已经使用了十个BUFGCTRL输出,那么在这个时钟域中不能再使用额外的BUFGCTRL,包括连接到DCM引脚的BUFGCTRL。

6.4 PLL To and From DCM

下图总结了同一CMT模块中DCM和PLL之间的专用连接,PLL可以使用专用连接驱动同一CMT块中的DCM,DCM也可以通过专用连接在同一CMT块内驱动PLL,PLL和DCM之间不需要BUFGCTRL。

7. 应用实例

7.1 标准用法(Standard Usage)

下图显示了使用内部反馈实现的DCM_BASE,是DCM的最简单用法。

7.2 板级时钟生成(Board-Level Clock Generation)

下图板级时钟生成示例(外部反馈)说明了如何使用DCM为电路板上的其他组件生成输出时钟。本例使用DDR寄存器,其输入连接到GND和VCC。由于DCM的输出路由到BUFG,因此时钟在到达输出寄存器之前保持在全局路由中,保证了时钟的质量。

下图板级时钟生成示例(带有内部反馈)说明了板上转发时钟的时钟生成。

7.3 使用内部偏移校正的板级偏移校正(Board Deskew with Internal Deskew)

某些应用需要使用内部偏移校正的电路板偏移校正以与其他设备连接,可以使用两个或多个DCM来实现这些应用,下图所示的电路可用于在同一系统中的多个Virtex器件之间校正系统时钟。

下图示例显示了从Virtex-5 FPGA到Virtex FPGA以外的组件的接口。

7.4 两个DCM时钟切换(Clock Switching Between Two DCMs)

下图说明了在两个DCM之间切换时钟,同时保持两个DCM锁定。

7.5 DCM和PLL(DCM with PLL)

源时钟输入DCM之前,可先驱动PLL以减少时钟抖动,再由PLL驱动DCM。此设置可减少源时钟抖动,同时允许用户访问所有可用的DCM时钟输出。下图显示了PLL使用专用路由资源(无BUFG)驱动同一CMT块内的DCM。

也可以使用DCM来驱动PLL,此设置可降低源时钟和DCM时钟输出的总抖动。但在这种情况下,最多只有两个DCM输出时钟可以驱动PLL,因此,最多只有两个DCM时钟可以访问PLL,并从减少的抖动中受益。

下图说明了CMT中DCM和PLL之间的直接连接,只有一个DCM输出可以使用CMT内的专用连接驱动PLL,而无需使用BUFG。 DCM和PLL可以在相同或不同的CMT内,但在不同CMT内需要使用BUFG。

下图显示了两个DCM驱动PLL,在这种情况下,必须在插入BUFGD。CM和PLL可以在相同或不同的CMT内。

8. DCM时序模型

以下时序图描述了在四种不同条件下DCM时钟输出行为。四种条件分别为:复位/锁定(Reset/Lock)、固定相移(Fixed-Phase Shifting)、可变相移(Variable-Phase Shifting)、状态标志(Status Flags)。

8.1 复位/锁定(Reset/Lock)

下图中,DCM已被锁定,在复位后,所有输出时钟都稳定到指定值,并且LOCKED信号被置位。

时钟事件1之前:

在时钟事件1之前,DCM已被锁定,所有时钟输出都处于正确的行为下。

时钟事件1:

在时钟事件1之后的某个时间,复位信号被置位,此时,所有时钟输出都变为逻辑0。复位信号是异步复位。为使DCM正常工作,必须将复位信号置位至少三个CLKIN周期。

时钟事件2:

时钟事件2发生在复位信号置位又解除置位之后的几个周期,在时钟事件2处,锁定过程开始。

8.2 固定相移(Fixed-Phase Shifting)

下图中,时钟输出被相移,因而在输入时钟之后的某个时间出现,并且LOCKED信号置位。

时钟事件1:

时钟事件1出现在相移应用到DCM上之后,此处相移为正相移。CLK0和CLK2X不再与CLKIN对齐,但输出时钟之间对齐。一旦输出就绪,LOCKED信号就会置位。

8.3 可变相移(Variable-Phase Shifting)

下图为动态相移调整示例,当DCM完成一个相位调整时,PSDONE信号被置位一个周期,在PSDONE置为无效后,PSEN可以再次置位。

时钟事件1:

在时钟事件1之前的TDMCCK_PSEN处,置位PSEN。PSEN必须在一个PSCLK周期内有效,否则就不能保证完成相移调整。此外,在时钟事件1之前的TDMCCK_PSINCDEC处,确定PSINCDEC值来确定是递增还是递减。

时钟事件2:

在时钟事件2之后的TDMCKO_PSDONE处,PSDONE被置位一个PSCLK周期。完成相移调整的时间不确定,因而需要监视PSDONE来了解相移调整状态。

8.4 状态标志(Status Flags)

下图显示了发生相移溢出以及CLKIN / CLKFB / CLKFX故障时状态标志的行为。

时钟事件1:

在时序图开始之前,已经相移到最大值处,在时钟事件1处,PSDONE被置位,然而DCM已达到最大相移,因而不执行相位调整,置位相位溢出状态DO[0]引脚来指示这种情况。

时钟事件2:

CLKFX输出停止翻转,在此事件发生后的257到260个时钟周期内,CLKFX停止状态DO[2]被置位以指示CLKFX输出停止翻转。

时钟事件3:

CLKFB输入停止翻转,在此事件发生后的257到260个时钟周期内,CLKFB停止状态DO[3]被置位以指示CLKFB输停入止翻转。

时钟事件4:

CLKIN输入停止翻转,在此事件发生后的9个时钟周期内,CLKIN停止状态DO[1]被置位以指示CLKIN输入停止翻转。

猜你喜欢

转载自blog.csdn.net/ViV587/article/details/82858398