首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Spartan FPGA数字时钟管理模块(DCM)使用说明-3

Spartan FPGA数字时钟管理模块(DCM)使用说明-3

DCM 内部构成一览

1. DLL 延迟锁定环

    说是延迟锁定环,但是我觉得叫做延迟补偿环更加贴切。因为DLL的主要功能是消除输入时钟和输出时钟之间的延迟,使得输入输出在外部看来是透明连接。

    实现这种功能的原理是:DLL通过输出时钟CLK0或者CLK2X观察实际的线路延迟,然后在内部进行补偿。

    一句话,DLL的核心功能是无延迟。

    DLL的输出是CLK0, CLK90, CLK180, CLK270, CLK2X, CLK2X180, 和 CLKDV。



2. DFS 数字频率综合

    DFS的主要功能是利用CLKIN合成新的频率。

    合成的参数是:M(Multiplier)和 D(Divisor)。通过MD的组合实现各种倍频和分频。

    如果不使用DLL,则DFS的合成频率和CLKIN就不具有相位关系,因为没有延迟补偿,相位就不再同步。



3. PS 相位偏移

    注意这个相位偏移不是DLL中输出CLK90/180/270用的。这个PS可以令DCM的所有9个输出信号都进行相位的偏移。偏移的单位是CLKIN的一个分数。

    也可以在运行中进行动态偏移调整,调整的单位是时钟的1/256。

这个功能我们平时不常用。



4. 状态逻辑

    这个部分由 LOCKED 信号和 STATUS[2:0] 构成。LOCKED信号指示输出是否和CLKIN同步(同相)。STATUS则指示DLL和PS的状态。


///////////////////////////////////////////////////////////////////////////////////////////////////////////////



DCM_BASE

DCM_BASE是基本数字时钟管理模块的缩写,是相位和频率可配置的数字锁相环电路,常用于FPGA系统中复杂的时钟管理。如果需要频率和相位动态重配置,则可以选用DCM_ADV原语;如果需要相位动态偏移,可使用DCM_PS原语。DCM系列原语的RTL结构如图3-8所示。

模块接口信号的说明如表3-8所列。



DCM_BASE组件可以通过Xilinx的IP Wizard向导产生,也可以直接通过下面的例化代码直接使用。其Verilog的例化代码模板为:



// DCM_BASE: 基本数字时钟管理电路(Base Digital Clock Manager Circuit)

// 适用芯片:Virtex-4/5

// Xilinx HDL库向导版本,ISE 9.1

DCM_BASE #(

.CLKDV_DIVIDE(2.0),

// CLKDV分频比可以设置为: 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5,6.0,6.5

// 7.0,7.5,8.0,9.0,10.0,11.0,12.0,13.0,14.0,15.0 Or 16.0

.CLKFX_DIVIDE(1), // Can Be Any Integer From 1 To 32

// CLKFX信号的分频比,可为1到32之间的任意整数

.CLKFX_MULTIPLY(4),

// CLKFX信号的倍频比,可为2到32之间的任意整数

.CLKIN_DIVIDE_BY_2("FALSE"),

// 输入信号2分频的使能信号,可设置为TRUE/FALSE

.CLKIN_PERIOD(10.0),

// 指定输入时钟的周期,单位为Ns,数值范围为1.25~1000.00。

.CLKOUT_PHASE_SHIFT("NONE"),

// 指定移相模式,可设置为NONE或FIXED

.CLK_FEEDBACK("1X"),

// 指定反馈时钟的频率,可设置为NONE、1X或2X。相应的频率关系都是针对CLK0而言的。

.DCM_PERFORMANCE_MODE("MAX_SPEED"),

// DCM模块性能模式,可设置为 MAX_SPEED 或 MAX_RANGE

.DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"),

// 抖动调整,可设置为源同步、系统同步或0~15之间的任意整数

.DFS_FREQUENCY_MODE("LOW"),

// 数字频率合成模式,可设置为LOW或HIGH 两种频率模式

.DLL_FREQUENCY_MODE("LOW"),

// DLL的频率模式,可设置为LOW、HIGH或HIGH_SER

.DUTY_CYCLE_CORRECTION("TRUE"),

// 设置是否采用双周期校正,可设为TRUE或FALSE

.FACTORY_JF(16''Hf0f0),

// 16比特的JF因子参数

.PHASE_SHIFT(0),

// 固定相移的数值,可设置为 -255 ~ 1023之间的任意整数

.STARTUP_WAIT("FALSE")

// 等DCM锁相后再延迟配置DONE管脚,可设置为TRUE/FALSE

) DCM_BASE_inst (

.CLK0(CLK0), // 0度移相的DCM时钟输出

.CLK180(CLK180), // 180度移相的DCM时钟输出

.CLK270(CLK270), // 270度移相的DCM时钟输出

.CLK2X(CLK2X), // DCM模块的2倍频输出

.CLK2X180(CLK2X180), // 经过180度相移的DCM模块2倍频输出

.CLK90(CLK90), // 90度移相的DCM时钟输出

.CLKDV(CLKDV), // DCM模块的分频输出,分频比为CLKDV_DIVIDE

.CLKFX(CLKFX), // DCM合成时钟输出,分频比为(M/D)

.CLKFX180(CLKFX180), // 180度移相的DCM合成时钟输出

.LOCKED(LOCKED), // DCM锁相状态输出信号

.CLKFB(CLKFB), // DCM模块的反馈时钟信号

.CLKIN(CLKIN), // DCM模块的时钟输入信号

.RST(RST) // DCM 模块的异步复位信号

);

// 结束DCM_BASE模块的例化过程

在综合结果分析时,DCM系列原语的RTL结构如图3-36所示。



图3-36 DCM模块的RTL级结构示意图
返回列表