背景技术
图1为现有技术中的锁相环PLL结构框图。如图1所示,现有技术中,锁相环PLL由鉴频鉴相器PFD、电荷泵CP、环路滤波器LF、压控振荡器VCO和环路反馈分频器FB_DIV组成。其中,
鉴频鉴相器将参考信号CLK_ref的频率和相位与经环路反馈分频器处理后的振荡时钟信号CLK_vco的频率和相位进行比较。当比较结果处于稳定时,PLL完成锁定,此时存在关系如下:
Fvco=Fref×Ndiv_fb (1)
其中,Fvco为第二时钟信号的频率,即振荡时钟信号CLK_vco的频率,Fref为参考信号CLK_ref的频率,Ndiv_fb为环路反馈分频器的分频比系数。
在上述PLL的基础上,增加输入分频器IN_DIV和/或输出分频器OUT_DIV,得到带有可编辑分频器的锁相环PLL(下文简称为可编辑PLL)。如图2所示,其中,图2(a)为由输入分频器和锁相环PLL组成的可编辑PLL;图2(b)为由输入分频器、输出分频器和锁相环PLL组成的可编辑PLL。
以图2(a)所示的可编辑PLL为例,输入分频器用于降低基准频率,存在关系如下:
其中,Ndiv_in为输入分频器的分频比系数。
由公式(2)可以看到,通过设置合适的Fref、div_in和div_fb的值,PLL锁定后就可以得到期望的第二时钟信号的频率,即振荡时钟频率Fvco。
在图2(a)所示的可编辑PLL的基础上增加输出分频器,得到如图2(b)所示的可编辑PLL。此时,输入分频器用于降低基准频率,输出分频器用于对振荡时钟信号进行分频,存在关系如下:
其中,Ndiv_out为输出分频器的分频比系数,Fout为第四时钟信号CLK_out的频率。
由公式(3)可以看到,通过设置合适的Fref、div_in、div_fb和div_out的值,PLL锁定后就可以得到期望的第四时钟信号的频率,即输出时钟频率Fout。
在如图2(b)所示的可编辑PLL中增加锁定检测模块Lock_Detect,如图3所示,锁定检测模块接收降低频率后的参考信号,即第三时钟信号CLK_pfd,以及经环路反馈分频器处理后的振荡时钟信号,进行判定,当判定结果显示二者的相位差在一个稳定的较小范围内,锁定信号PLL_LOCK切换至高电平,表示PLL完成锁定。
在一些应用图2所示PLL电路中,外部时钟信号可能会出现不连续的情况。例如一些随路时钟信号,有时发送一个固定的时钟频率,有时不发送时钟信号,而是处于某个直流电平。这时,我们希望片内产生一个稳定的振荡去拟合外部时钟信号。
发明内容
本发明实施例的目的在于解决现有技术存在的缺陷。
为达到上述目的,本发明实施例公开了一种基于PLL的自动恢复外部时钟的系统,包括由锁相环PLL和输出分频器组成的可编辑PLL,以及内部振荡器和分频信号产生电路;其中,
可编辑PLL,通过输入分频器对输入时钟信号进行降频,降频后的输入时钟信号通过锁相环PLL锁定后,输出第二时钟信号;
内部振荡器用于产生第一时钟信号作为可编辑PLL的输入时钟信号;
分频信号产生电路,用于对外部时钟信号进行计数,得到第一计数结果作为可编辑PLL的环路反馈分频器的分频信号;还用于对第一时钟信号进行计数,得到第二计数结果作为可编辑PLL的输入分频器的分频信号;其中,外部时钟信号和第一时钟信号同时存在,对外部时钟信号进行计数得到第三计数结果与对第一时钟信号进行计数得到第二计数结果的时间长度相等;
根据分频信号产生电路提供的信号,使可编辑PLL输出的第二时钟信号拟合近似为外部时钟信号。
一个实例中,分频信号产生电路包括:第一计数器和第二计数器;其中,第一计数器用于对外部时钟信号进行计数,得到第一计数结果;第二计数器用于对第一时钟信号进行计数,得到第二计数结果。
可编辑PLL包括:锁相环PLL和输入分频器;锁相环PLL包括:鉴频鉴相器、电荷泵、环路滤波器、压控振荡器、环路反馈分频器;其中,输入分频器将第二计数结果作为分频信号处理第一时钟信号,输出第三时钟信号;锁相环PLL对第三时钟信号进行锁相,将第三计数结果作为环路反馈分频器的分频信号处理来自压控振荡器的振荡时钟信号;输出分频器将预设的乘法因子作为分频信号处理来自压控振荡器的振荡时钟信号,输出第二时钟信号。
一个实例中,该系统还包括输出分频器;输出分频器根据预设的乘法因子对第二时钟信号进行分频,输出第四时钟信号;同时,根据乘法因子处理第一计数结果,得到第三计数结果;并采用第三计数结果替代未设置输出分频器时的第一计数结果,作为可编辑PLL的环路反馈分频器的分频信号。
进一步地实例中,分频信号产生电路包括:第一计数器、第二计数器和乘法器;其中,第一计数器用于对外部时钟信号进行计数,得到第一计数结果;乘法器用于根据乘法因子处理所述第一计数结果,得到第三计数结果;第二计数器用于对第一时钟信号进行计数,得到第二计数结果。
可编辑PLL包括:锁相环PLL、输入分频器和输出分频器;锁相环PLL包括:鉴频鉴相器、电荷泵、环路滤波器、压控振荡器、环路反馈分频器;其中,输入分频器将第二计数结果作为分频信号处理第一时钟信号,输出第三时钟信号;锁相环PLL对第三时钟信号进行锁相,将第三计数结果作为环路反馈分频器的分频信号处理第二时钟信号;输出分频器将乘法因子作为分频信号处理第二时钟信号,输出第四时钟信号。
本发明实施例的优点在于:通过分频信号产生电路和可编辑PLL对内部振荡器产生的时钟信号进行处理,使其输出近似拟合外部时钟信号的时钟。在外部时钟信号不稳定的情况下,可以在片内产生与外部时钟信号近似相同时钟,且不再依赖外部时钟信号。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在如图2(a)所示的可编辑PLL的基础上,建立本发明实施例的一种基于PLL的自动恢复外部时钟的系统,如图4所示。该系统包括:可编辑PLL,内部振荡器和分频信号产生电路。通过该系统得到的时钟信号拟合近似为外部时钟信号。以便于在外部时钟信号不稳定的情况下,由片内提供稳定的与外部时钟信号近似相同的时钟信号。
系统工作过程中,内部振荡器产生第一时钟信号,并将第一时钟信号发送至可编辑PLL和分频信号产生电路。
分频信号产生电路,接收第一时钟信号,并对其进行计数,得到第二计数结果;同时,分频信号产生电路接收外部时钟信号,并对其进行计数,得到第一计数结果。其中,外部时钟信号和第一时钟信号需要同时且稳定存在,并且,对外部时钟信号进行计数得到第一计数结果与对第一时钟信号进行计数得到第二计数结果的时间长度需要相等。
可编辑PLL,接收第一时钟信号。通过输入分频器对第一时钟信号进行降频,而后通过PLL电路锁定后,得到第二时钟信号,即系统的输出信号。可编辑PLL处理第一时钟信号输出第二时钟信号的过程中,接收第二计数结果作为输入分频器的分频信号,将接收第一计数结果作为环路反馈分频器的分频信号。
在某些场合下,由于上述系统中输入分频器对输入时钟进行的降频处理,或其他因素,使得锁相环PLL输出的振荡时钟信号CLK_vco的频率Fvco不符合芯片工作的要求。那么就需要使用如图2(b)所示的电路结构,即,引入输出分频器对第二时钟信号进行分频,以调整时钟频率。在图2(b)所示的可编辑PLL的基础上建立发明实施例的一种基于PLL的自动恢复外部时钟的系统。
对于上述情况,本发明实施例通过引入乘法因子完成自动恢复外部时钟的系统的建立。
一个实例中,系统工作时,内部振荡器产生第一时钟信号,并将第一时钟信号发送至可编辑PLL和分频信号产生电路。
分频信号产生电路,接收第一时钟信号,并对其进行计数,得到第二计数结果;同时,分频信号产生电路接收外部时钟信号,并对其进行计数,得到第一计数结果;将第一计数结果与乘法因子相乘,得到第三计数结果。其中,外部时钟信号和第一时钟信号需要同时且稳定存在,并且,对外部时钟信号进行计数得到第一计数结果与对第一时钟信号进行计数得到第二计数结果的时间长度需要相等。
可编辑PLL,接收第一时钟信号。通过输入分频器对第一时钟信号进行降频,而后通过PLL电路锁定后,再通过输出分频器对锁定后的信号(第二时钟信号)进行分频,得到第四时钟信号,即系统的输出信号。可编辑PLL处理第一时钟信号输出第四时钟信号的过程中,将乘法因子作为输出分频器的分频信号,接收第二计数结果作为输入分频器的分频信号,将接收第三计数结果作为环路反馈分频器的分频信号。
一个具体的实施例中,如图5所示,一种基于PLL的自动恢复外部时钟的系统包括内部振荡器OSC、分频信号产生电路和可编辑PLL。
分频信号产生电路包括:第一计数器CNT1、第二计数器CNT2和乘法器;可编辑PLL包括:鉴频鉴相器PFD、电荷泵CP、环路滤波器LF、压控振荡器VCO、环路反馈分频器FB_DIV、输入分频器IN_DIV和输出分频器OUT_DIV。
预设第一计数器CNT1的计数阈值M,乘法器的乘数因子K为第一分频信号的值。
内部振荡器产生第一时钟信号CLK_osc。
在第一时钟信号CLK_osc和外部时钟信号CLK_ext都稳定时,计数使能信号cnt_start控制第一计数器CNT1和第二计数器CNT2同时开始计数。其中,
第一计数器CNT1接收外部时钟信号CLK_ext并对其计数,当到达计数阈值M时,得到第一计数结果cnt_val1=M,同时,发送停止信号stop至第二计数器CNT2;
第二计数器CNT2接收第一时钟信号CLK_osc并对其计数,当接收到停止信号时停止计数,得到第二计数结果cnt_val2。
乘法器根据乘数因子K处理第一计数结果cnt_val1,得到第三计数结果cnt_val3=cnt_val1*K。
输入分频器接收第一时钟信号CLK_osc,并将其作为可编辑PLL的输入时钟进行处理由输出分频器输出第四时钟信号CLK_out。其中,输入分频器将接收的第二计数结果作为分频信号;环路反馈分频器将接收的第三计数结果作为分频信号;输出分频器将乘数因子K作为分频信号。其中,输入分频器输出第三时钟信号CLK_pfd到鉴频鉴相器,输出分频器接收第二时钟信号,即振荡时钟信号CLK_vco。
设外部时钟信号CLK_ext的频率是Fext,第一时钟信号CLK_osc的频率是Fosc,第四时钟信号CLK_out的频率是Fout,振荡时钟信号CLK_vco的频率是Fvco。附图5中输入分频器接收的第一时钟信号CLK_osc对应于附图2(b)中输入分频器接收的参考信号CLK_ref。
根据公式(3),可以得到输出时钟频率:
其中,cnt_val1和cnt_val2通过第一计数器CNT1和第二计数器CNT2计数得到,当计数阈值M足够大时:
根据公式(4)和(5),得到:
由公式(6)我们可以看出,当计数阈值M足够大时,即公式(5)误差足够小时,可编辑PLL输出的第四时钟信号CLK_out的频率Fout就可以很接近外部时钟信号CLK_ext的频率Fext。
假设外部时钟信号CLK_ext的频率Fext=100MHz,第一时钟信号CLK_osc的频率Fosc=1000MHz,第一计数器CNT1的计数阈值M=16,乘法器乘法因子K,即第一分频信号的分频比系数K=8。
对系统上电,并使计数器工作后,得到第一计数结果cnt_val1=16。根据公式(5)则第二计数结果cnt_val2=16*1000/100=160,第三计数结果cnt_val3=cnt_val1*K=16*8=128。
理想情况下,根据公式(1)和公式(2)可以计算得到可编辑PLL锁定后的振荡时钟信号CLK_vco的频率Fvco=1000*128/160=800MHz,输出时钟信号CLKout的频率Fout=Fvco/8=100MHz,输出时钟信号频率Fout等于外部时钟信号频率Fext。
需要说明,在实际应用中还存在几种影响拟合结果的因素。
第一方面,Fout与Fext的频率存在拟合的偏差。其中,第一种情况是内部振荡器OSC的频偏会产生拟合偏差;第二种情况是第一计数器CNT1和第二计数器CNT2停止计数时,第二计数结果的实际计数数值会产生拟合偏差。
对于第一种情况,如果使用最简单的环路振荡器作为内部振荡器OSC,由于内部振荡器OSC工作在不同的PVT(process工艺,voltage电压,temperature温度)下,Fosc会有很大偏差,可能达到±50%,进而通过本发明实施例的系统进行外部时钟信号拟合时,将产生拟合偏差。例如,设置Fext=100MHz,Fosc为中心在1000MHz,有±50%PVT变化,计数阈值M=16,当锁相环PLL锁定后,输出时钟信号的频率Fout的拟合偏差,如图6所示。图6横轴为Fosc,纵轴为拟合后的Fout相对Fext的频率偏差,如图6所示,Fosc在500MHz到1500MHz之间,PLL的输出时钟信号相对于外部时钟信号的最大频率偏差在±1.2%。当Fosc低时偏差大,当Fosc高时偏差要小一些。
对于第二种情况,由于CLK_osc与CLK_ext可以看作是异步时钟,所以第二计数结果cnt_val2的值可能会有两种结果,进而产生产生拟合偏差。例如,Fext=100MHz,Fosc=990MHz,计数阈值M=16,则根据公式(4)可以得到计算结果cnt_val2=16*990/100=158.4。实际应用中,假设第一计数器和第二计数器均是对时钟信号的上升沿进行计数。那么,如果第一计数器接收使能信号开始计数后立刻经历外部时钟信号的上升沿,第二计数器接收使能信号开始计数后即将经历第一时钟信号的下降沿,则cnt_val2可能为158;如果第一计数器接收使能信号开始计数后立刻经历外部时钟信号的上升沿,第二计数器接收使能信号开始计数后即将经历第一时钟信号的上升沿,则cnt_val2可能为159。更一般地,如果第二计数结果具备小数位,即cnt_val2=M*Fosc/Fext=X.Y;其中,整数部分是X,小数部分是Y。如图6所示,上半部分曲线和下半部分曲线可分别对应当cnt_val2的结果分别是X以及X+1时候的误差曲线。
上述第二种情况中第二计数结果cnt_val2的值带来的拟合偏差,通过扩大计数阈值M的取值,即扩大cnt_val1的取值,可以有效地减小这一拟合偏差。但如果计数阈值M即cnt_val1的取值过大,cnt_val2也会相应增加,进而导致第三时钟信号CLK_pfd的频率Fpfd=Fosc/cnt_val2比较小。锁相环PLL一般要求环路带宽低于1/10的Fpfd,所以会导致更小的环路带宽,这会增加锁相环PLL的锁定时间,也会使锁相环抖动(PLL jitter)特性变差。
第二方面,因为Fvco=Fout*K,所以乘法因子K取值要合适才能使Fvco在合理的范围之内,以减小计数器带来的拟合偏差。
第三方面,控制第一时钟频率Fosc,使其高于外部时钟频率Fext可以更好的完成时钟拟合,使Fvco在合理的范围之内,以减小计数器带来的拟合偏差。
图7给出了上述系统工作过程时各节点的波形示意图。如图7所示,在CLK_ext和CLK_osc都存在时,通过计数使能信号Cnt_start控制第一计数器CNT1和第二计数器CNT2,当计数使能信号Cnt_start为高电平时,第一计数器CNT1和第二计数器CNT2同时开始计数。
第一计数器CNT1对外部时钟信号CLK_ext的上升沿进行计数,当第一计数器CNT1到达计数阈值M时,得到第一计数结果cnt_val1,同时,使停止信号stop切换至高电平。
需要说明,在确定第一计数结果cnt_val1后,乘法器根据乘法因子K处理第一计数结果cnt_val1,得到第三计数结果cnt_val3(图中未示出)。
第二计数器CNT2对第一时钟信号CLK_osc的上升沿进行计数,当停止信号stop切换至高电平时,停止计数得到第二计数结果cnt_val2。
当可编辑PLL的使能信号PLL_start为高电平时,PLL电路开始工作,并根据第二计数结果cnt_val2、第三计数结果cnt_val3和乘法因子K处理输入的第一时钟信号CLK_osc,输出第四时钟信号CLK_out。
经过一段时间,当可编辑PLL完成锁定后,PLL_LOCK信号切换至高电平,此时可编辑PLL输出的第四时钟信号CLK_out近似拟合外部时钟信号CLK_ext。
上述信号变化过程中,当停止信号stop切换至高电平,即两个计数器停止工作后,外部时钟信号CLK_ext如果不再发送时钟也不会影响接下来该系统的工作,即可编辑PLL根据分频信号产生电路的计数结果控制分频器对内部振荡器OSC产生的第一时钟信号CLK_osc进行处理,输出第四时钟信号CLK_out。
当锁定信号PLL_LOCK切换至高电平时,表示PLL电路已经锁定,PLL恢复出希望的时钟,即第一计数器CNT1开始计数至到达计数阈值M期间的外部时钟信号CLK_ext。
需要说明,通过上述方法恢复出的希望的时钟,即第四时钟CLK_out及其对应的频率Fout对应于计数器计数过程中的外部时钟信号CLK_ext及其对应的频率Fext。如果在芯片工作过程中由于温度变化或者电源电压变化导致外部时钟信号发生变化,使变化后新的外部时钟频率Fext’与计数时的Fext相比发生了变化。那么PLL恢复的第四时钟频率Fout与新的外部时钟频率Fext’的误差就增加了。
针对于上述情况,可以在芯片工作过程中,预设本发明实施例的系统对于外部时钟信号的恢复周期,即每隔一段时间就对待恢复的外部时钟信号进行一次恢复。每次将重新计数,并得到新的第一计数结果、第二计数结果和第三计数结果。可编辑PLL根据周期性更新的第一计数结果、第二计数结果和第三计数结果,周期性的提供最接近目前外部时钟信号的第四时钟信号。当然,可编辑PLL根据新的第一计数结果、第二计数结果和第三计数结果进行重新拟合外部时钟信号的过程时,可编辑PLL需要重新锁定,这需要一定的时间。因此,在可编辑PLL重新锁定的这段时间内,第四时钟信号无法作为外部时钟信号提供给芯片。
本发明实施例提供了一种基于PLL的自动恢复外部时钟的系统,通过分频信号产生电路和可编辑PLL对内部振荡器产生的时钟信号进行处理,使其输出近似拟合外部时钟信号的时钟。在外部时钟信号不稳定的情况下,可以在片内产生与外部时钟信号近似相同时钟,且不再依赖外部时钟信号。
以上的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。