DCM主要功用
1. 分频倍频:DCM能够将输入时钟进行MulTIply或许Divide,然后得到新的输出时钟。
2. 去Skew:DCM还能够消除Clock的Skew,所谓Skew便是因为传输引起的同一时钟抵达不同地址的推迟差。
3. 相移:DCM还能够完结对输入时钟的相移输出,这个相移一般是时钟周期的一个分数。
4. 大局时钟:DCM和FPGA内部的大局时钟分配网络紧密结合,因而功用优异。
5. 电平转化:经过DCM,能够输出不同电平规范的时钟。
DCM的特色与才能(Spartan-3系列为例)
数量:4 DCM / FPGA(也有破例)
— 应该够用了
数字频率归纳器输入(CLKIN):1-280MHz
推迟锁相环输入(CLKIN):18-280MHz
时钟输入源(CLKIN):
Global Buffer Input Pad
Global Buffer Output
General-Purpose I/O (No Deskew)
Internal Logic (No Deskew)
— 上面最终两个分别是外部的一般IO口和内部的逻辑,没有Deskew,所以时钟质量不会很好。
频率归纳器输出(CLKFX、CLKFX180):是CLKIN的M/D倍,其间
M=2..32
D=1..32
— 这样看来最大能倍频32倍,最小能16分频。
时钟Dividor输出(CLKDV):是CLKIN的下列分频
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, Or 16
— 发现没有,最大的分频也是16。不过能支撑半分频,比用频率归纳器便利。
倍频输出(CLK2X、CLK2X180):CLKIN的2倍频
时钟CondiTIoning、占空比调整:这个对一切时钟输出都施加,占空比为50%。
1/4周期相移输出(CLK0/90/180/270):是CLKIN的1/4周期相移输出。
半周期相移输出(CLK0/180、CLK2X/180、CLKFX/180):相差为180度的成对时钟输出。
相移精度:最高精度为时钟周期的1/256。
时钟输出:9个
到大局时钟网的时钟输出:最多9个中的4个
到General Purpose互联:最多9个
到输出脚:最多9个
— 可见9个时钟输出能够随意链接内部信号或许外部输出,可是进入大局时钟网的途径最多只需4个。
DCM的方位在哪?
咱们以Spartan3系列为例。
FPGA看上去便是一个四方形。最边际是IO Pad了。除掉IO Pad,内部仍是一个四方形。四个角上各趴着一个DCM。上边际和下边际中心则各趴着一个大局Buffer的MUX。这样的优点是四个DCM的输出能够直接衔接到大局Buffer的进口。
下面是手绘简图,很丑是吧,呵呵。
DCM是大局时钟网络可选的一部分
一般,时钟经过一个“大局输入Buffer”和“大局时钟Buffer” 进入大局时钟网络。如下所示
GCLK —》( IBUFG —》 BUFG) —》 Low Skew Global Clock Network
在需求的时分,DCM也成为大局时钟网络的一环。
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级结构示意图
Spartan-3 DCM的兼容性
S3 的DCM和 Virtex-II 以及Pro的DCM 功用根本相同。可是S3 DCM的技能归于3代技能,因而在抗噪功用、相移才能方面有进一步进步。(客观的说,对咱们的一般运用,不是特别重要。)
可是和Spartan-2系列比较,有很大改善。S2系列不叫DCM叫DLL,可见DFS和PS等功用完全是新参加的,所以S2系列其实除了二倍频几乎没有倍频和分频才能。从这点来讲,S3真的是用起来很爽了。
DCM 输入时钟的约束
和一切物理器材相同,DCM的工作规模也是受限的。因为DLL和DFS的要求各不相同,因而DCM的输入频率的约束也视乎是否一起运用DLL和DFS仍是独自运用其间之一。假如一起运用,则取约束较严厉者作为整个DCM体系的约束。咱们来看两者的独立约束。
呵呵,这部分内容不必记哦,需求的时分查一下软件或许手册就能够了。只需理解“CLKIN输入频率有约束,并且DLL、DFS一起运用时取其严厉者” 这些道理就能够了。
除了时钟约束之外,关于时钟的质量也有必定约束,主要有3个:
1. CLKIN Cycle-To-Cycle Jitter:约束了前后两个CLKIN周期的差异;
2. CLKIN Period Jitter:约束了100万个Cycle中最大周期和最小周期之间的差异;
3. CLKFB Path Delay Variation:约束了从外部进来的反应回路的推迟动摇,这种推迟动摇在概念上其实和Jitter千篇一律。
详细数值请查手册,知道有这么回事就能够了。
LOCKED信号的行为方法
LOCKED信号用于指示整个DCM体系现已和CLKIN同步,从LOCKED信号有用开端,输出时钟才能够运用,在此之前,输出时钟可能会处于各种杂乱的不安稳状况。咱们来看一下LOCKED信号的行为状况机。
FPGA装备:
If (CLKIN现已安稳) Next_state = 判别同步;
Else Next_state = RST_DCM;
判别同步:
If (现已同步) Next_state = 判别同步;
Else Next_state = 同步失利;
同步失利: Next_state = RST_DCM;
RST_DCM: Next_state = FPGA装备;
现在来看看各个状况下的输出。
Case (State)
FPGA装备: LOCKED = 0;
判别同步: LOCKED = 1;
同步失利: LOCKED = 0;
RST_DCM:LOCKED = 0;
Endcase
RST 信号——重启确定
RST信号用于在时钟不安稳或许失掉确守时,将DCM的相关功用重置,然后重新发动确定追寻。
作为一个输入信号,RST无法被DCM本身置位,因而需求咱们的运用规划来操控这个RST信号,不然需将其接地。
置位RST会将推迟Tap的方方位0,因而可能会发生Glitch或许是Duty Cycle 发生变化,别的相位偏移也会重置回到默许值。
DCM 生成导游
安装了ISE就能得到一系列Accessories。运用其间的Architecture Wizard 咱们能够生成DCM模块。生成的DCM将发生3种输出:
1. 一个例化了DCM的逻辑归纳文件(选用生产商特定格局的VHDL / Verilog)
2. 一个UCF文件操控特定完结
3. 一切其他用户设置都保存到XAW(Xilinx Architecture Wizard)文件中。
接下来描绘一下导游运用进程。
1. 从ISE或许Arch Wizard中发动界面;
2. 第一个页面做根本装备:途径、XAW文件名、VHDL / Verilog挑选、归纳东西、FPGA类型;
3. 进行General Setup,一看就理解,不细说,留意一下几点:
– CLKIN Source 假如选 External 则 DCM 的 CLKIN 会主动衔接到 IBUFG。
– Feedback假如选 Internal 则反应来自 BUFG。
4. 高档设置
– 挑选FPGA的装备进程是否包括DCM的确定,假如是,则装备完结信号DONE将在LOCKED信号有用后方能有用。
– 挑选CLKIN是否要除2。因为DCM的输入频率有限,关于过高的输入时钟经过除2使之可用。
– Deskew调整,这个选项主张在咨询Xilinx工程师后再运用。
5. 时钟输出口 Buffer 设置
– 默许情况下一切输出口都链接 BUFG 大局时钟网络进口
– 因为大局时钟网络的进口有限,用户能够定制时钟输出口衔接到其他类型的Buffer
– Global Buffer:进入大局时钟网络的进口Buffer,共有4个,简称BUFG
– Enabled Buffer:仍是上面的4个大局时钟Buffer,可是装备为有使能信号操控,简称BUFGCE
– Clock MUX:仍是上面的4个大局时钟Buffer,可是装备为 2-To-1 MUX类型,由S信号操控选出,简称BUFGMUX
– Low Skew Line:没有Buffer了,只能运用 Skew 比较小的连线
– Local Routing:连到本地,Skew的要求不是很严厉
– None:制止输出
– 关于Enabled Buffer类型和Clock Mux类型,需求指定En口的姓名
– 需求为输出时钟信号指定姓名或许运用默许
6. 设置DFS
– 设置方针输出频率,然后按Calculate,主动生成 M/D 值和 Jitter 值
– 或许手动设置 M/D 值,然后按Calculate,主动生成频率和 Jitter 值
7. 最终输出所需的3种文件。