具体实施方式
一种数字控制振荡器通过使用数字相位和频率检测器反应于振荡器输出与参考时钟相关信号的比较而受到控制。计数振荡器输出的循环率,于预定数目的循环后重设该计数,并且该重设频率与该参考时钟相关信号作比较。
输入除法器可以耦接至参考时钟输入,用来将该参考时钟信号除以多个预先设定除率的其中一个。输出除法器可以耦接至该振荡器输出,用来将该振荡器输出信号除以多个预先设定除率的其中一个。各除法器可以具有控制输入用来选择各自的除率。
该数字控制振荡器包括多个逻辑单元。第一组的逻辑延迟单元提供相对大的信号延迟;第二组的逻辑延迟单元提供相对小的延迟。此环形振荡器的基本延迟单元包括与非门,该与非门可以在非常短的脉波中完全重设DCO。具有控制输入的逻辑负载组件包含于该振荡器中,用来微调该振荡器输出。
数字相位和频率检测器包括控制信号产生器,该控制信号产生器能够产生多个二进制控制信号分别输出至该振荡器的多个逻辑单元。该控制信号产生器反应于该除得的参考时钟信号。第一比较器输入耦接至该输入除法器,第二比较器输入耦接至该计数器,而比较器的入输出耦接控制信号产生器。移位产生器的第一输入耦接至该输入除法器,而移位产生器的第二输入耦接至该比较器输出。移位产生器施加额外的控制信号至振荡器。移位产生器可以包括多个串联连接的正反器,各正反器具有输出耦接以反应于振荡器的各自控制输入。
数字相位和频率检测器另包括异步循环控制产生器,具有一个输入耦接至振荡器输出和另一个输入耦接至除得的参考时钟信号。固定控制信号产生器二进制输出控制信号以捕获参考时钟信号的频率,而异步循环控制产生器反应于相关于除得的参考信号的振荡器输出信号。
最初,于比较除得的参考时钟信号与振荡器回授期间可以实施二进制搜寻,以决定用于逻辑延迟单元和逻辑负载组件的各种二进制控制信号的状态。这些二进制控制信号调整振荡器输出的频率和相位。计数振荡器输出信号的循环,于预定数目的循环后重设循环数。于各重设计数比较振荡器输出与除得的参考时钟信号。锁检测器反应于输入除法器和输出除法器的除率以产生锁住输出信号。如果已检测到输入除法器和输出除法器其中任一者的除率改变,则解锁产生器将输出重设信号重新起始二进制搜寻。
于图1方块图中所示的PLL系统接收参考时钟输入信号“clkin”并且产生输出信号“clkout”。PLL电路包括纯粹由逻辑组件组成,而没有电容器、电阻器、或其它模拟组件的模块。除法器12接收输入时钟信号“clkin”并且用2DR除其频率以产生具有50%任务周期的输出时钟信号“clkout”。于图1中,当设定输入DR时,该DR的值可以于1至15之间改变。输出时钟信号“clkout”耦接至数字相位和频率检测器(DPFD)14的输入,DPFD14产生二进制控制信号,该二进制控制信号由数字控制振荡器(DCO)16接收。可以使用视情况需要选择使用的输出时钟除法器18以接收DCO输出信号“dco_out”并且产生具有较低频率的输出时钟信号。可以通过输入DP设定输出除法器值,例如于1、2、4、8。计数器20的输入耦接至DCO16的输出。计数器20的输出“clkf”施加至DPFD14。DCO输出信号“dco_out”亦耦接至DPFD14的另一个输入。除法器12亦产生输出致能DCO输出信号“dco_out”信号“Dco_en”,该信号“Dco_en”被用来重设DCO和计数器(F)于各clk2r循环的开始。
于操作期间,通过比较clk2r信号与来自计数器20的clkf输出信号,DPFD14将检测DCO输出时钟频率dco_out是否高于或低于期望值。若DCO输出时钟信号dco_out不在可接受的范围内,则DPFD14产生数字控制信号c、asc、和postc,该等信号用来增加或减少DCO输出时钟频率。控制信号c、asc、和postc是在二进制数目的形式。于图1的范例实施例中,c由14个二进制字符c[0]至c[13]组成,asc由单一二进制字符组成,而postc具有6个字符postc0至postc5。DCO数字控制振荡器(DigitalControlOscillator),根据c、asc、和postc的值而数字方式改变环形振荡器的延迟的一种环形振荡器,可以调整DCO输出时钟频率。
当输入信号“pll_en”转为高时,图1中的PLL系统将开始振荡。除法器12用2DR除输入时钟信号clkin以产生具有50%任务周期时钟的输出时钟信号clk2r。时钟信号clk2r被送到DPFD14。由除法器12产生的信号dcoen信号为非常小的脉波(例如,约200ps),其仅发生于clk2r的上升缘之前。dco_en信号被用来于每一个clk2r循环的开始重设DCO16和计数器20。
DCO输出dco_out为高频信号,其被用作为计数器20的时钟。计数器20将于每一个clk2r循环的开始处从0开始计数。当计数到达DF[7:0]时,计数器的输出clkf将转至高。DF[7:0]为8字符用户定义二进制数。如图6中所示,来自除法器12的输出信号dco_en重设clkf至低于clk2r的上升缘。
于“clk2r”的各下降缘,DPFD14将检测clkf是否为高或低。若clkf为高,则此意味着DCO输出时钟频率高于期望值。若clkf为低,则此意味着DCO输出时钟频率低于期望值。若DCO输出时钟信号高于或低于期望值,则DPFD14将因此调整数字控制位c[13:0]、asc、和postc[5:0],如此将使得DCO输出频率改变,直到于某clk2r循环clk2r下降缘和clkf上升缘完全匹配为止。于那状况,DCO输出时钟dco_out频率将等于DF/DR乘上clkin的频率。输出除法器18时钟“pll_clk”的频率将等于“clkin”的频率的(DF/DR)/2DP倍。通过多任务器22产生PLL输出“clkout”。使用“旁通”信号控制多任务器22以选择是否提供其pll_clk输入或其clkin输入作为PLL输出clkout信号。
图2为可以使用于图1的PLL电路的DCO16的详细示意图。DCO16为环形振荡器用来产生频率可调整输出时钟。虽然此DCO完全由逻辑单元组成,但是其被设计调谐一些晶体管参数。一般而言,可以通过选择将包含于环形振荡器中延迟单元的数目和改变延迟单元负载的量而调谐DCO的频率。此种设计使得可能获得较宽的频率范围和较佳的分辨率。使用来自c控制信号的C[13:10]的值,以改变包含于环形振荡器中延迟单元的数目,同时使用来自c控制信号的C[9:0]的值,以改变延迟单元的负载。
与非门30(于图形中组件符号仅表示了一些的与非门30)被使用为用于环形振荡器的基本延迟单元。于图2中,使用奇数个NAND基本延迟单元形成基本环形振荡器组构。明确地说,当C[13:10]皆为0时,N1、N2、N3、N4、N8、N9、N13组成环形振荡器(参看图2中粗线)。使用与非门基本延迟单元的优点为其将被禁能者致能,并且在非常短的时间内重设。此情形防止任何抖动累积至次一个clk2r循环,因此实质上减少长时期的抖动。举例而言,非常短的负脉波(大约200ps)于“dco_en”上clk2r循环的开始能够被完全重设DCO至已知状态(W1=1、W2=0、W3=1、W4=0、W8=1、W9=0、W13=1),而使得任何抖动将不会累积到次一个clk2r循环。另一方面,若反相器要使用为基本延迟单元,则“EN”脉波宽度必须大于整个回路延迟,否则环形振荡器于“EN”脉波后不能从已知状态开始,如图3A和3B中所例示。图3A和3B分别为用于反相器环形振荡器架构和NAND环形振荡器架构的逻辑单元图。
于可以被选用包含于环形中的DCO中有3个大延迟单元(LargeDelayCell,LDC)32。控制信号c[13:12]控制有多少个LDC包含于环形中。依于c[13:12]组合(2’b00:0、2’b01:1、2’b10:2、2’b11:3),一个或多个LDC可以包含于环形中,或者可以排除所有的三个LDC。DCO亦包含3个小延迟单元(SDC)34,该SDC34可以被选择包含于环中。控制信号c[11:10]控制有多少个SDC包含于环形中。依于c[11:10]组合(2’b00:0、2’b01:1、2’b10:2、2’b11:3),一个或多个SDC可以包含于环形中,或者可以排除所有的三个SDC。以不同数目的LDC和SDC于环中,因此将可以改变环形振荡器的周期。
于图2中DCO亦包含负载单元用来改变于与非门N1、N2、N3、N8、和N13上负载的数量。于与非门N1、N2、N3的输出,有依照控制信号c[9:6]连接的负载单元(DL9、DL8、DL7、和DL6)。对于各负载单元,控制信号导通或切断将改变N1、N2、N3的负载至某值,该值亦将造成环形振荡器输出时钟的周期因此改变。于与非门8的输出,有负载单元(DL5、DL4、DL3、DL2)依照控制信号c[5:2]连接。各自地切换c[5:2]导通或不导通将改变N8的负载,以便改变环形振荡器输出时钟的周期。于NAND4的输出,亦有依照控制信号c[1:0]、postc[5:0]、asc连接的负载单元(DL1、DL0、DLA)。切换c[1:0]、postc[5:0]、asc导通或不导通,将改变N13的负载,以便改变环形振荡器输出时钟的周期。
从c[13]至c[0],于DCO输出时钟周期权重改变变成愈来愈小。欲符合二进制搜寻的需要,小心地调谐用于c[13:0]的权重。控制“postc[5:0]”和“asc”亦为延迟单元负载控制接脚。控制asc用于循环控制,而postc[5:0]用于PLL锁存后的输入时钟抖动容差。
于图2中使用6个循环的AND单元36以切断未使用的单元而使得当DCO振荡时避免不需要的电源消耗。将通过AND单元36从dco_en产生二个信号“dco_en_w”和“dco_en_n”。作为脉波的信号dco_en_w在dco_en_n前转低和在dco_en_n后转高。信号dco_en_w连接至与非门N1,同时信号dco_en_n连接至回路中另一个与非门N1。因此能够去除其输出时钟干扰以确保当DCO开始振荡时整个回路不被阻塞。
图4为可以使用于图1中的PLL电路的DPFD的详细概图。DPFD接收来自DCO16的dco_out、来自除法器12的clk2r、来自计数器20的clkf、和rstn的输入信号。这些信号耦接至DPFD14中的下列电路模块,或者与之互动。
正数产生器(plus_numgenerator)40产生信号正数(plus_num)[3:0],该plus_num[3:0]帮助决定用于每12个dco_out循环有多少个dco_out循环asc将被设定于1的逻辑状态。asc产生器42产生输出信号“asc”用于DCO16。c产生器44产生信号c[13:0]用于DCO16。postc产生器46产生输出信号postc[5:0]用于DCO16。ud产生器48产生信号uda和ud_postc,该uda和ud_postc指示是否DCO16将振荡较快或较慢。锁检测器50检测是否PLL被锁存。解锁检测器52检测PLL是否已失锁。
ud产生器48模块检核于各clk2r信号的下降波缘是否clkf为高或低。若clkf为高,则来自ud产生器48的输出信号uda将是逻辑‘1’状态,否则uda将是逻辑‘0’状态。Uda信号被注入至c产生器44,该c产生器44于致能pll_en后(切换至高)根据于各clk2r循环的uda值产生二进制输出字符串的值用于c[13:0]。
更详述关于图5的数据流程图和图6中所示的波形说明操作。c产生器44使用二进制搜寻以决定用于c[13:0]的值并达成快速锁存。于图4中步骤100当开始二进制搜寻时设定c[13:0]和c_ready二者至逻辑状态0。这些状态被显示于图5中波形描述。于步骤102于clkr2的次一个上升波缘c[13]被设定至逻辑状态1。于clkr2的下降波缘,ud产生器48将更新其值。步骤104为用于值uda的逻辑决定区块。于clkr2的次一个上升波缘,若uda是在逻辑状态1,则信号c[13]固定至逻辑状态1。若不是,则当步骤106信号c[13]固定至逻辑状态0。同时,信号c[12]被设定至逻辑状态1。步骤108为逻辑决定区块,决定是否N等于0,表示搜寻已进行通过所有的c信号设定。若不是,则于步骤110将N减值1且数据流复归至步骤102。重复此等步骤以固定值用于c[12],以及其余的c[11:0]直到c[0]被固定,如于步骤108决定。在这一时点上于步骤112c_ready将通过c产生器44而转至高。从c[13]至c[0],各控制接脚具有不同的权重用来调整DCO输出时钟周期,c[13]具有最长和c[0]具有最短时钟周期。步骤114为逻辑决定区块决定对于于二进制搜寻获得的c值是否PLL被锁存。若系统未被解锁,则流程回到步骤108。若判定系统解锁了,则解锁检测器52发出重设信号将流程返回到步骤100。
在理论上,信号c[12]的权重应该等于信号c[13]的50%,信号c[11]的权重应该等于信号c[12]的50%,等等,而使得信号c[0]的权重将等于c[13]的权重的1/213,大约0.012%。由此提供极精确的值。然而,考虑到也许有工艺变化、温度变化、电压变化,因此实际的比率也许不是正确地等于50%。假设此等变化没有不利的影响,则比率可以调整的稍微较高。下列的表显示对于c[13]至c[0](单位:ps)可能的不同的权重:c[13]-640、c[12]-321、c[11]-185、c[10]-94.7、c[9]-49.3、c[8]-29.3、c[7]-18.4、c[6]-11.2、c[5]-7.86、c[4]-5.66、c[3]-4.14、c[2]-2.69、c[1]-2.13、c[0]-1.41。
固定“c[13:0]”的值后,建立期望的频率的粗捕获。然而,此频率仍不充分准确并且必须作进一步的调谐。虽然可以设计DCO而使得改变“c[0]”的值允许小至1.4ps的调整将被应用于DCO输出时钟循环时间,但是由c控制信号提供的1.4ps调谐准确度仍然不足够。此是因为于通过回授计数器“计数器F”后抖动倍增,并且能够累积以导致于clk2r周期内于最后dco_out有2*DF*1.4ps的抖动。2*DF*1.4ps的抖动十分明显。
欲减少或消除DCO输出时钟抖动,循环控制是通过以下方式影响。当PLL被锁存时,clk2r的一个周期Tclk2r等于各dco_out周期Tdco的2*DF倍。假设c[0]关断,也就是说,显示于图2中其关联的DL0,DCO被停用,并且不加载DCO环形振荡器,则第一个2*DF-1dco_out循环将各具有TDCO-1.4PS的周期。因为dco_en设定dco_out至‘0’于其下降波缘和clk2r的上升波缘(参看图7A[1]od),因此dco_out的2*DF循环将必须被填入一个clk2r周期。因此,由参考数字“1”标记的dco_out的最后一个循环的周期将是
Tlcd=Tclk2r-(2*DF-1)(Tdco-1.4ps)
如图7A中所示,此最后一个dco_out循环的周期要较另一个2*DF-1循环者在其之前较长,而其差值可以对应于2*DF*1.4ps的抖动
Tlcd-(Tdco-1.4ps)=Tclk2r-(2*DF-1)(Tdco-1.4ps)-(Tdco-1.4ps)
=2*DF*Tdco-(2*DF-1)(Tdco-1.4ps)-(Tdco-1.4ps)
=2*DF*1.4ps
同样情况,若c[0]被导通,则2*DF*1.4ps的累积的抖动亦将表现在最后一个dco_out循环,但是此最后一个循环的周期将较另一个2*DF-1循环在其之前为短。因为关联于c[0]的负载单元的大小已经非常小,因此有小的空间透过装置微缩用于准确度改善,而必须部署如此种解决抖动方法的替代方法。
使用一种称之为循环控制的新方法以减少DCO输出时钟抖动。一般而言,循环控制涉及反应于来自“ud产生器”回授调整在单一clk2r时间周期内的一些循环的“dco_out”时间周期,关于是否dco_out频率快于或慢于目标值。因此,不像由“c产生器”产生的c[13:0]控制信号在单一clk2r周期内不能修正设定,施加至DCO的负载设定能够通过具有“asc”信号取得在单一clk2r循环内不同的值而在clk2r周期内改变。此情况允许更高的精确度于调谐DCO至所需要的频率。
负责减少DCO输出“锁存抖动”的信号为由图4中所示asc产生器模块42产生的输出信号asc。asc跟随dco_out的时钟,该dco_out相较于跟随有[c13]至[c0]的clk2r的频率具有较高的频率。于此种方式,在一个clk2r周期内可以于asc值作多个改变。当asc被切换至导通时,将增加各DCO输出时钟循环的周期固定量(例如2ps),当是于asc信号的DLA负载被激活而因此降低该环形振荡器。另一方面,当asc被切换至关断时,DLA被停用,而不作调整。于一个clk2r循环,有2*DF个dco_out循环,若我们设定asc至‘1’于某百分比的dco_out循环,和设定asc至‘0’于其它dco_out循环,则于一个clk2r循环累积抖动将明显地减少。
于clk2r周期内的dco_out循环被群聚成子集,各包括12个dco_out循环(亦可以适用其它数目)。plus_num[3:0]输入信号(其为二进制字符串)的值决定在各12个各子集内dco_out循环的数目,对于各子集asc等于高。于图4中的正数产生器模块40于clk2r信号的上升波缘产生plus_num[3:0]信号。若uda于clk2r上升波缘等于1,则plus_num[3:0]将增值1,其意味着对于各12个子集内的额外的dco_out循环asc将是1,否则对于各12个子集内plus_num[3:0]将减少1。如上述讨论,uda的值‘1’表示dco_out时钟为快速的,而uda的值‘0’表示其为慢速的。因此,asc调整是根据uda产生器指示关于dco_out是否为快速或慢速。
现在参照图7B中的实例,其显示循环控制的应用,uda从左边于第一个clk2r循环的上升波缘为0,因此,asc对于6个dco_out循环为高。同时,uda于第二个clk2r循环的上升波缘为1,因此,asc对于7个dco_out循环为高。
假设于clk2r周期内的dco_out循环被群聚成子集,各包括12个dco_out循环和对dco_out循环的任何调整为2ps,则可以通过使用循环控制而将最大抖动减少至(2*DF/12)*2ps。此是因为当正数值改变值时dco_out循环在clk2r周期内被调整2*DF/12倍。dco_out的最大抖动发生于各clk2r周期的最后dco_out循环。
于二进制搜寻后,固定(亦即,锁存)c[13:0],开始循环控制过程。然后模块锁检测器50将检测是否uda信号于每一个clk2r循环将切换于逻辑状态(0->1,或1->0)之间。若uda对于三个连续的dco_out循环切换至相反值,则锁检测器52将产生逻辑高锁存信号,该信号表示PLL系统被锁存。其后如果参考输入时钟频率(输入除法器比率DR,或输出除法器比率DP)改变,则模块解锁检测器52将检测是否clk2r和clkf的歪斜大于临限延迟。若大于临限延迟,则将产生短正脉波unlockt_rst以重设PLL系统。锁存信号返回至低逻辑状态,而PLL系统将重新开始该二进制搜寻程序以再固定该c[13:0]信号。该系统可再获得该锁存状态于最大的25个除得的参考时钟循环(clk2r)。
当PLL系统是在锁存状态时,postc产生器46操作以增加输入时钟抖动容差。postc产生器模块的功能通过产生二进制输出信号postc[5:0]以增加PLL的容差至输入时钟抖动,该信号postc[5:0]被注入于SCO中并且被用来对DCO频率作最少的调整,而使得其能够追踪输入时钟频率,clkin。
于本说明的实施例中,postc[5:0]为6数字二进制字符串。如显示于图2中DCO原理图,于postc[5:0]二进制字符串中各数字是关联于各自的数字负载DL0。‘0’值停用关联的负载单元,而‘1’值激活关联的负载单元。postc信号的值可以根据ud_postc[1:0]信号的值从ud产生器注入postc产生器而改变。ud_postc[1:0]信号的值根据plus_num[3:0]与uda的结合而依次改变。当plus_num[3:0]等于4’b1011,和uda为0时,则ud_postc[1:0]将是2’b01。若“plus_num[3:0]”等于4’b0000,和“uda”为1时,则“ud_postc[1:0]”将是2’b10,否则“ud_postc[1:0]”将是2’b00。因此可能改变于DCO环形振荡器的负载,并因此反应于输入时钟抖动或较小频率改变而调整DCO_out频率。
图8为依照揭示的一个实施例postc产生器的示意图。postc产生器为双向移位链,ud_postc[1:0]用来控制是否移位该链移位至左或至右。举例而言,当Ud_postc[1:0]=2’b01时,postc[0]至postc[5]链移位至右边和于图8中最左边输出postc[0]设定至1。因此,若postc[0:5]最初具有111000的重设值,则Ud_postc[1:0]=2’b01将导致11100的新的postc[0:5]。另一方面,当Ud_postc=2’b10,则postc[0]至postc[5]链被移位至左边和于图8中最右边输出postc[5]设定至0。因此,具有111000的原来值的postc[0:5]将改变至110000。当Ud_postc=2’b00或2’b11时,没有改变于postc[0:5]。
图9为显示于一般情况、最佳情况、和最差情况对于所有PVT角DCO频率调谐范围:0.885GHz至1.869GHz,DCO输出时钟频率范围的图形表示。最佳情况PVT角:-40C/1.1V/FF。一般情况角:25C/1.0V/TT。最差情况PVT角:125C/0.9V/SS。
总而言之,揭示的数字PLL系统当占有非常小芯片面积时实现良好的性能。实施延迟单元数调整、延迟单元负载调整、和循环控制以数字方式控制DCO频率以涵盖较广频率范围较现存的PLL配置有较小的抖动。使用二进制搜寻以达成最快速锁存。于锁存PLL之后,使用移位扫描链以追踪参考频率改变以便取得较佳输入时钟抖动容差。此PLL系统使用与非门作为基本延迟单元,该基本延迟单元可以于非常短的时间全部禁能和重设DCO,由此避免抖动累积至次一个参考时钟循环。提供稳定的DCO振荡。举例而言,于所揭示实施例的一个例子中,PLL可以使用环球铸造厂的65nmG工艺而被硅验证,该PLL使用仅仅5255um2(或3%PLL芯片面积)。DCO频率范围可以在900MHz至1.8GHz于所有的PVT角。当DCO濒率于1.8GHz时,工作电流大约1.0mA仅1.0V电源供应。此PLL能够非常快速于参考时钟循环除以50(参考时钟除以5us10MHz)被锁存,而其输出时钟抖动小于40ps。
于此揭示发明中显示和说明了本发明的佳实施例但是仅他的多功能性的几个例子。应该了解到本发明能够使用各种其它的组合和环境并且在如本文中表达的本发明概念的范围内能够改变或修饰。例如,考虑到相等的逻辑组件可能够被取代该等说明。