一种嵌入式处理器片内振荡器的高精度校准方法

文档序号:7546342阅读:312来源:国知局
一种嵌入式处理器片内振荡器的高精度校准方法
【专利摘要】本发明涉及一种嵌入式处理器片内振荡器的高精度校准方法,该方法利用一个精准的参考时钟源,通过软/硬件配合完成对片内一个或者多个振荡器的校准,同时还可以利用已经完成校准的振荡器输出的时钟对芯片内部其他振荡器进行校准。本发明旨在使用嵌入式芯片内部的处理器,配合较少的硬件资源,完成振荡器的高精度校准,在大幅降低了校准复杂度的同时,提高了校准的精度。
【专利说明】一种嵌入式处理器片内振荡器的高精度校准方法

【技术领域】
:
[0001]本发明涉及嵌入式处理器片内振荡器的高精度校准方法,尤其是满足该方法的软硬件流程以及硬件实现架构。

【背景技术】
[0002]嵌入式处理器芯片,时钟源一般分为三类:芯片外接时钟、芯片外接晶振、片内振荡器。使用片内振荡器的嵌入式处理器,由于制造工艺的偏差,不同芯片内的振荡器所产生的时钟频率差异较大。为了能够使芯片的时钟频率更为准确,在设计片内振荡器时,一般都会添加控制字(Code)来控制振荡器内部的电流或者电压,或者调节电阻/电容大小,来对时钟频率进行调整,控制字和时钟频率之间的关系为单调(增/减)关系,通过对控制字的控制来调整振荡器的输出频率。现有技术中,对于时钟的校准精度较低,校准复杂度高,所需资源多。


【发明内容】

[0003]本发明要解决的技术问题是:本发明提供了一种嵌入式处理器片内振荡器的高精度校准方法,该方法是使用一个精准的参考时钟源(Ext_ref_clock或In_ref_clock),利用处理器,配合较少的硬件资源,快速的完成对一个或多个时钟振荡器输出时钟(Calib*_clock)的精确校准,还可以利用同一套电路,使用校准好的时钟再对芯片内部其他的时钟(Calib*_clock)进行校准。
[0004]本发明要解决的技术问题是:本发明提供一整套软件、硬件交互流程的解决方案。该解决方案中,整个流程受软件控制,每次校准由软件调度硬件电路开始工作,硬件电路完成特定工作之后,通过中断反馈给软件,之后软件再根据目前得到的结果决定是否启动下一次校准,最终完成时钟的校准。
[0005]在该校准流程中,使用二分法及递归求最小排序法,进行快速迭代。最多仅需N次迭代,即可完成时钟的校准,同时找到最精确的时钟所对应的控制字。N为时钟振荡器的控制字的BIT数。
[0006]本发明提供了硬件设计的电路框图及对应的时序说明,硬件电路主体为两个定时器(Timerl和Timer2),通过两个定时器之间的特定时序关系,握手完成定时,然后上报中断,完成单次定时。
[0007]本发明提供的解决方案,为保证校准后的时钟振荡器的精度,需要提供一个高精度的参考时钟源,在此条件下,本发明可以把时钟校准精度提高至几个PPM甚至更低。
[0008]若芯片内部有多个需要校准的时钟,可以利用同一套硬件电路,通过参考时钟直接对芯片内部所有待校准的时钟振荡器进行校准。
[0009]若芯片内部有多个需要校准的时钟,也可以通过参考时钟先对高频率的内部时钟振荡器进行校准,然后再利用这个已经校准完的高频率时钟振荡器,利用同一套电路,再对芯片内部其他低频率的时钟进行校准。这种方式相对于上文提到的直接利用参考时钟对片内所有时钟校准的方法,在参考时钟频率较低时,可以大幅度降低校准成本、提高精度。
[0010]本发明的有益效果是:该方法利用一个精准的参考时钟源,通过软/硬件配合完成对片内一个或者多个振荡器的校准,同时还可以利用已经完成校准的振荡器输出的时钟对芯片内部其他振荡器进行校准。本发明旨在使用嵌入式芯片内部的处理器,配合较少的硬件资源,完成振荡器的高精度校准,在大幅降低了校准复杂度的同时,提高了校准的精度。

【专利附图】

【附图说明】
[0011]图1时钟校准实现框图;
[0012]图2利用参考时钟对内部待校准时钟Calib_clock校准软件流程图;
[0013]图3校准硬件电路实现时序图;
[0014]图4利用内部已校准时钟Calib_clock对其它待校准时钟CalibN_clock校准软件流程图;

【具体实施方式】
:
[0015]为了使本发明所要解决的技术问题、技术方案及有益效果更佳清楚、明白,以下结合附图和实施例,对本发明进行进一步的详细说明,应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。
[0016]本发明的整体思路为:通过软件对整体流程的控制,调度硬件电路完成参考时钟和待校准时钟的定时控制,完成定时之后,软件根据回读的定时结果确定时钟频率需要增加还是减少,然后利用二分法配置时钟控制字,同时使用递归求最小排序法保存最接近的控制字及其对应的差值,重复上述操作,直至找到最接近理论值的控制字,完成校准。在完成一个时钟校准之后,可以使用同一套硬件电路,使用参考时钟对片内其他待校准时钟进行校准;或者,也可以利用同一套硬件电路,使用刚才已经完成校准的时钟,再对芯片内其他待校准时钟进行校准。若使用已校准时钟对其他时钟进行校准,则建议先校准高频时钟,再使用高频时钟校准其他低频时钟,但该建议并不限制于本发明。
[0017]下文将以时钟控制字(Code)为7bit,且待校准时钟的频率相对于控制字是单调增加为例,讲述具体的实施方式,假设待校准时钟名称为Calib_clock。本发明不限于7bit控制字的说明,也不限于时钟和控制字的关系是单调增加的。
[0018]如图1所示,是本发明的软/硬件实现框图100,包括处理器(CPU)lOl、硬件电路部分104、内部参考时钟107、内部待校准时钟振荡器0SC1108、内部待校准时钟振荡器OSCN109、存储器(Memory) 110。CPUlOl用于控制整个校准流程,调度硬件电路104部分为其工作完成整个校准过程,硬件电路104包括:定时器Timerll02、定时器Timer2103、Timerl时钟选择单元105、Timer2时钟选择单元106。Timerl和Timer2使用不同的时钟进行计数,
[0019]时钟选择单元105和106,根据不同的芯片时钟架构,设计有所差异:
[0020]?根据使用参考时钟的不同,Timerl的时钟选择单元有所不同,可以使用芯片外部直接提供的精确参考时钟,也可以使用芯片内部精确的参考时钟,比如晶体振荡器或者PLL输出的时钟。
[0021]?根据片内所需校准的时钟个数不同,Timerl和Timer2时钟选择单元不一样,具体根据片内所需校准时钟个数决定。
[0022]?若有多个时钟需要校准,则根据校准的方法不同,时钟选择单元不一样:
[0023]-若使用一个参考时钟(内部或者外部)对片内所有待校准时钟进行校准,则图中111/112则可以不需要,只需要把待校准时钟连接至Timer2的时钟选择单元即可
[0024]-若先使用一个参考时钟对片内一个待校准时钟进行校准,然后利用已经完成校准的时钟对芯片其他待校准时钟进行校准,则需要把待校准时钟连接至Timerl时钟选择单元上面。
[0025]针对硬件电路104部分:利用参考时钟对内部待校准时钟进行校准,Timerl的时钟需要选择参考时钟,用于控制一次校准所用的时间,Timer2用于对被校准的时钟进行计数,得到计数值(M-1),通过中断上报给软件该计数值。假设Timerl计数为N,则单次计数所需的计数时间为T = N*l/fMf elk,其中fMf elk为参考时钟的时钟频率。若使用已经完成校准的时钟对其他待校准时钟进行校准,相反,Timerl则用于内部其他待校准时钟进行定时,Timer2用于内部已完成校准的时钟定时。
[0026]首先说明利用参考时钟直接对内部待校准时钟(一个或者多个)进行校准。如图2所示,是本发明的软件流程图,是对图101中CPU执行的详细说明,用于说明时钟校准的整个流程,本发明所使用的校准算法为二分法以及递归求最小排序法,通过二分法进行迭代校准,加快校准的收敛速度,通过递归求最小排序法找到最准确的校准控制字:
[0027]步骤一,如图2中201为启动校准的准备动作,设置三个变量,同时配置时钟控制字为变量Mid数值。
[0028]步骤二,配置完控制字后需要延时202 —段时间,以确保配置控制字之后,振荡器已根据该配置,改变时钟频率,输出的是稳定的时钟。
[0029]步骤三,待时钟振荡器输出的时钟稳定之后,启动硬件203(也即启动硬件电路的定时功能),硬件电路单次定时过程时序图如图3所示。
[0030]步骤四,软件启动硬件之后,等待硬件触发中断204,待硬件电路完成一次定时计算之后,上报中断给软件。
[0031]步骤五,软件收到中断之后,进入205和206的处理,计算Timer2计数值和理论值的差别205,若该差值为0,则代表已经找到最准确的控制字,直接进入步骤八,找到时钟校准Code。否则的话,记录本次和上次差值的最接近的差值,以及该差值所对应的控制字。若是二分法最后一次迭代,也直接进入步骤八,找到时钟校准Code,使用差值最小对应的Code作为本次校准使用的Code。否则的话进入步骤六208。
[0032]步骤六,判断Timer2计数值和理论值的差值,若相对于理论值偏小了,则说明待校准时钟慢了,需要增加控制字用于调快待校准时钟210 ;相反,若相对于理论值偏大了,则说明待校准时钟快了,需要减少控制字用于调慢待校准时钟209。同时更新二分法三个变量,然后进入步骤七。
[0033]步骤七,配置新的Code值至时钟振荡器,然后转至步骤二。
[0034]步骤八,找到Code值,该值即为时钟校准值,结束校准流程。
[0035]本发明在搜索过程中,首先利用了二分法,其次使用了递归求最小排序法,这样既加快了校准的迭代速度,又能够保证找到的校准控制字是最准确的。
[0036]如图3所示,为本发明的硬件电路的工作时序图,也即两个Timer的工作时序图。Timerl用于对参考时钟进行计时,Timer2用于对待校准时钟进行计时。软件配置启动硬件203之后,首先该配置同步至参考时钟的时钟域,生成计数使能信号cntl_enable, Timerl计数至N-1,然后关闭计数使能信号;同时cntl_enable同步至待校准时钟的时钟域,当该信号有效时,Timer2启动,直至该信号被关闭。当Timerl使能信号关闭时,产生中断信号Interrupt,触发软件回读Timer2的计数值(假设Timer2计数至M-1),用于和理论值比较。
[0037]根据上述的校准实现架构,可以得到:
[0038]每次定时时间为

【权利要求】
1.一种嵌入式处理器片内振荡器的高精度校准方法,其特征在于,所述方法包括: 使用一个精准的参考时钟源,利用处理器,配合较少的硬件资源,快速的完成对时钟振荡器的精确校准,还可以利用同一套电路,使用校准好的时钟再对芯片内部其他的时钟进行校准。
2.根据权利要求1所述的一种嵌入式处理器片内振荡器的高精度校准方法,其特征在于,本发明所使用的精准参考时钟源,可以使用芯片内部或者外部的精准参考时钟源。
3.根据权利要求1所述的一种嵌入式处理器片内振荡器的高精度校准方法,其特征在于,所述发明为通过软件/硬件配合完成时钟的校准,校准精度高达几个ppm甚至更低。
4.根据权利要求1?3所述的一种嵌入式处理器片内振荡器的高精度校准方法,其特征在于,所使用的硬件电路资源少,主体为两个定时器(Timerl和Timer2),通过两个定时器之间的特定时序关系,握手完成定时,然后上报中断,完成单次定时。
5.根据权利要求1?3所述的一种嵌入式处理器片内振荡器的高精度校准方法,其特征在于,软件流程内部使用迭代完成校准,迭代所选择的算法为二分法,同时使用递归求最小排序法,使用了比较选择过程,这种流程首先加快了校准的速度,其次提高了校准的精确度。
6.根据权利要求1?5所述的一种嵌入式处理器片内振荡器的高精度校准方法,其特征在于,可以通过同一套硬件电路,利用同样的方法对一个或多个时钟进行校准。
7.根据权利要求1?5所述的一种嵌入式处理器片内振荡器的高精度校准方法,其特征在于,可以通过同一套硬件电路,利用校准好的时钟作为参考时钟源,对片内其他的一个或多个时钟进行校准。这种校准方法可以使得所有待校准的时钟得到高精度的校准。
8.根据权利要求1?7所述的一种嵌入式处理器片内振荡器的高精度校准方法,其特征在于,可以根据需求,任意设定参数,选择适合自己的校准精度要求。
9.根据权利要求1?8所述的一种嵌入式处理器片内振荡器的高精度校准方法,其特征在于,本校准流程可快速收敛,可快速完成校准流程。若对校准速度还有要求,可以通过设定定时器的参数,加快校准速度。
【文档编号】H03L7/099GK104133520SQ201410366240
【公开日】2014年11月5日 申请日期:2014年7月29日 优先权日:2014年7月29日
【发明者】王和国, 陶建平, 刘勇, 张永攀, 孙振玮 申请人:江苏宏云技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1