DLL( Delay-Locked Loop ),周清海,2,目录,DLL作用 PLL原理 数字倍频 数字移相 DLL原理 DLL应用,3,DLL作用,原因:FPGA芯片规模增大,工作频率高,片内时钟分配质量和时钟延迟变得重要、传统的时钟树无法保持片内高速时钟的精确同步需求 作用:1、消除时钟延迟,可实现零传输延迟,使时钟输入信号与整个芯片内部时钟引脚之间偏差最小每个DLL驱动两个全局时钟网络 2、先进的多时钟控制对Spartan-II系列FPGA有四个DLL,可实现2倍频,以及使时钟按1.5,2,2.5,3,4,5,8 ,16分频,时钟树,零传输延迟,PLL和DLL主要有三个功能:参考page1 1,消除时钟延迟;2,频率合成(包括倍率和分频);3,时钟校正(包括占空比和相移),4,时钟树,图示是典型的片上时钟树图,共6级时钟 先垂直方向后水平方向分配时钟,各级时钟最长线4mm第一级时钟4mm驱动2个第二级时钟,第二级时钟用3mm匹配线驱动4个第三级时钟..(图中只画出上面部分,下部分未画出),,,,,,,,,,,,,,,,,1,3,3,2,3,3,5,5,4,5,6,6,6,6,,5,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,典型的时钟树分布图,,5,零传输延迟,DLL技术能够实现零传输延迟,使分布于整个器件的时钟引脚间的偏差最小。
零传输延迟指前面的时钟信号经过若干延时,能够达到与后面的时钟信号的同步,最终实现零传输延迟,,,,,,,,,,,,,,,,,,,,,,,,,,参考时钟,延迟信号,信号,,,,延时,同步,6,PLL锁相环,锁相环由鉴相器、环路滤波器和压控振荡器组成鉴相器用来鉴别输入信号Ui与输出信号Uo之间的相位差 ,并输出误差电压Ud Ud 中的噪声和干扰成分被低通性质的环路滤波器滤除,形成压控振荡器(VCO)的控制电压Uc Uc作用于压控振荡器的结果是把它的输出振荡频率fo拉向环路输入信号频率fi ,当二者相等时,环路被锁定 ,称为入锁7,下图是另一种PLL原理图,控制电路由上图的鉴 相器和低通滤波器组成调整振荡器的频率和相 位就可以补偿时钟分布造成的时间延迟,压控 振荡器,控制 逻辑电路,时钟分布网络,PLL原理图,,,,,,,,输入时钟,输出时钟,8,DPLL数字锁相环,数字鉴相器,数字低通滤波器,数字控制振荡器; DPD比较clk_dpd与Data_in相位超前或滞后关系; DPL根据DPD输出进行加/减计数,达到一定模值,产生进/借位对DCO控制,即实现对相位差控制和滤除DPD噪声,clk_DLF是clk_DPD的两倍; DCO利用外部时钟进行分频,其中分频系数由DLF产生的信号调整,从而使输出逼近输入,,9,DLF digital low filter,DPL根据DPD输出的sign,sign _ready进行加/减计数,达到模值时,产生进/借位对DCO控制,即利用相位差控制;另外,因为只有噪声连续出现的次数达到了计数器模值时才会产生对DCO的分频系统调整,故可以产生滤除DPD噪声的效果;此外clk_DLF是clk_DPD的两倍,可以提高滤波精度; 更智能的方法是利用锁相环状态检测电路,当没有达到锁定时,增大计数模值,使锁相器快速进入稳定;进入稳定后,再逐步减小模值,使其再度失锁,如此可得最佳模值,提高锁相精度。
如下图,10,相比前面的DPLL,最主要的变化是增加了锁相环检测电路,用于检测是否锁定,原理如下页,11,锁相环检测电路,由触发器与单稳态振荡器构成 fin输入参考时钟,fout为锁相 器振荡器输出时钟的移相90度 fout对fin的抽样送入单稳态振荡器,锁定状态fout与fin有稳定的相位关系 fout对fin抽样应全部为0或1这样不会激发振荡器振荡,从而lock将输出低电平;而失锁状态时fout与fin出现相位之间的滑动,抽样时就不会出现长时间的0或1,单稳态振荡器振荡,使lock输出高电平锁相环的锁定状态保持时间的认定,可以通过设置振荡器的性能12,微分型单稳态触发器,稳态时,vi等于0,vd等于0,vi2等于vdd ,vo等于0,vo1等于vdd,电容Cd两端的电压等于0;触发脉冲到达时,vi大于vth,vd大于vth,vo1等于0,vi2等于0,vo等于vdd,电容c开始充电,电路进入暂稳态.当电容c两端的电压上升到vth时,即vi2上升到vth时,vo等于0,电路退出暂稳态,电路的输出恢复到稳态显然,输出脉冲宽度等于暂稳态持续时间路退出暂稳态时,vd已经回到0(这是电容cd和电阻rd构成的微分电路决定的,所以vo1等于vdd,vi2等于vth+vdd电容c通过G2输入端的保护电路迅速放电。
当vi2下降到vdd时,电路内部也恢复到稳态因为CMOS门电路的输入电阻很高,所以其输入端可以认为开路电容cd和电阻rd构成一个时间常数很小的微分电路,它能将较宽的矩形触发脉冲vi变成较窄的尖触发脉冲vd.,13,数字倍频,倍频器的功能即在两脉冲之间等间隔插入一定数量的脉冲,使经过倍频器的信号输出频率为输入频率的整数倍最简单的数字倍频器可将输入时钟进行适当延迟,然后与原始时钟相异或,生成的信号为原信号的两倍频,原始信号clk1,延迟信号clk2,异或输出clk0,输出倍频信号的脉宽由延迟器件决定,同时也可看出,这种电路也是信号边沿检测的一种电路,14,另一种方法常用的倍频方法如图:fc是数字倍频器晶振的高频时钟,fi为输入,fo为倍频输出且fo =kfi,即fo是fi的K倍频图中,fc对fi计数Nfc /fi,再将N除以倍频系数K所得商整数部分作为下一步分频系数则fo=fc /|N/k|.即 fo Kfi.,15,利用数字倍频器对信号进行延时操作可以达到可控精度的移相操作实现原理是把输入信号的周期Tin转化为原来的1/data,Tin/data即移相精度,即data倍频如data=360则精度为1度,data=720则精度为0.5度.然后利用得到的倍频信号计数N延迟输出原信号,就可以得到原信号的(N*单位精度)的移相信号。
如:精度为1度时,只要利用倍频信号计数90次,然后再输出原信号,那么此时相对原信号的相移就为90度,数字移相原理,16,DLL原理,一个最简单的延时锁相环DLL与PLL主要不同在于DLL用延时线(Delay Line)代替了PLL的压控振荡器延时线产生输入时钟的延时输出,时钟分布网络把时钟送到内部寄存器的时钟端口,控制逻辑对输入时钟和反馈时钟抽样、比较,调整延时线压控 振荡器,控制 逻辑电路,时钟分布网络,,,,,,,,输入时钟,输出时钟,PLL原理图,可变 延时线,控制 逻辑电路,时钟分布网络,,,,,,,,输入时钟,输出时钟,,,反馈时钟,反馈时钟,DLL原理图,,,17,DLL就是在输入时钟与反馈时钟间插入延时脉冲,直到这两个时钟上升沿对齐达到同步,DLL才能锁定这样两个时钟没有了差别也就补偿了时钟分配网络造成的时间延时,有效改善了时钟源与负载之间延时 区别: DLL与PLL模拟电路实现时有精确的时序,而数字电路实现时:抗噪声,低功耗,抗抖动,移植性好 PLL的振荡器有不稳定,相位偏移的积累而DLL技术稳定,没有累积相位偏移,因而在延时补偿和时钟调整时常用DLL,18,DLL应用,在virtex库中DLL简化宏符号BUFGDLL,该模块可为整个芯提供快速有效的零传输延迟的系统时钟。
更多的库元件可查看xilinx提供的技术资料(本文下载了一个virtex and virtex-E library guide 及using_virtex_DLL),,,19,下图为两个DLL库原形,分别是标准的DLL宏符号CLKDLL和高频DLL宏符号CLKDLLHF,具有DLL一切特性,用于更复杂的场合标准的DLL宏 符号CLKDLL,高频DLL宏符号 CLKDLLHF,输入时钟CLKIN必须在数据手册规定的低频范围内,只有CLK0,CLK2X可以接CLKFB,,,20,1、on-chip synchronization CLKFB必接由BUFG驱动的同一DLL的CLK0或CLK2X,而CLKIN接由IBUFG驱动的系统时钟 On-chip synchronization is achieved by connecting the CLKFB input to a point on the global clock network driven by a BUFG, a global clock buffer . The BUFG connected to the CLKFB input of the CLKDLL must be sourced from either the CLK0 or CLK2X outputs of the same CLKDLL. The CLKIN input should be connected to the output of an IBUFG, with the IBUFG input connected to a pad driven by the system clock. 2、off-chip synchronization CLKFB接由IBUFG驱动的外部时钟,CLK0,CLK2X如要用,必接OBUF用以隔离及增加驱动 Off-chip synchronization is achieved by connecting the CLKFB input to the output of an IBUFG, with the IBUFG input connected to a pad. Either the CLK0 or CLK2X output can be used but not both. The CLK0 or CLK2X must be connected to the input of OBUF , an output buffer .,21,利用DLL产生4倍频(virtex-E Devices),,CLKDLL1没有达到稳定时LOCKED为低,则CLKDLL2的RST为高,不工作。
CLK0CLK270分别为移相输出,占比为50/50,可通过DUTY_CYCLE_CORRECTION来控制,默认为TURE,当FALSE时,输出与输入占空比相同 CLKDV为N分频输出,默认N2,可取1.5、2、2.5、3、4、5、8、16,由CLKDIVIDE设定,22,CLKDLL输出时序,CLK0,CLK90,CLK180,CLK270,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,DUTY_CYCLE_CORRECTION=FALSE,,,,,,DUTY_CYCLE_CORRECTION=TURE,TURE时,输出占空比50/50;FALSE时,输出具有与输入相同的占空比,23,DLL属性(properties),Duty Cycle Correction Property DUTY_CYCLE_CORRECTION (TRUE,FALSE) 参考dll_mirror_1.vhd Clock Divide Property CLKDV_DIVIDE (1.5,2,2.5,3,4,5,8,16) Startup Delay Property STARTUP_WAIT (TRUE,FALSE) Virtex Series DLL Location Constraints LOC (eg. LOC=DLL2),,24,1.Standard Usage,下图是BUFGDLL宏的重新实现,以提供RST,LOCKED引脚;verilog实现,// Standard DLL Example module dll_standard (CLKI。