时钟自动校准电路及方法与流程

文档序号:21843905发布日期:2020-08-14 16:49阅读:1289来源:国知局
时钟自动校准电路及方法与流程

本发明涉及集成电路技术领域,特别涉及一种时钟自动校准电路及方法。



背景技术:

微控制器中使用的时钟振荡器主要分为三类,一是外接石英晶体的晶体振荡器,二是通过电阻电容选频产生时钟的rc振荡器,三是使用锁相环的振荡器。晶体振荡器的特点是精度高,起振时间慢,成本高。rc振荡器特点是成本低,起振快,但是精度低,有较大的误差,振荡频率易受环境影响。锁相环的特点是频率高,频率调整范围大,但是需要有参考时钟源,使用方式比较复杂。

为了消除工艺与环境对rc振荡器输出频率的影响,一般在微控制器芯片内部有调整rc振荡器输出频率的校准值,通过调整校准值让rc振荡器输出目标校准频率。调整校准值的过程称为时钟校准。目前校准芯片内部时钟频率的方法主要有,一,将内部时钟通过芯片管脚输出,用外部设备进行测量频率,以调整频率校准值,改变频率输出,以达到目标校准频率;二,使用内部定时器,对校准时钟频率与目标校准频率分别计数,采用软件进行计数结果的比对,以调整频率校准值,以达到目标校准频率;上述校准方法缺点非常明显,速度慢,处理复杂,需要有软件与硬件背景的工程师才可以完成频率校准。



技术实现要素:

本发明的目的在于提供一种时钟自动校准电路及方法,以解决现有的rc振荡器时钟频率校准速度慢的问题。

为解决上述技术问题,本发明提供一种时钟自动校准方法,所述时钟自动校准方法包括:

计数模块进行一次或多次计数,每次计数包括:以一定的计数频率,从计数初始值减计数,计数到0后若还未到达单位时间继续加计数;到达所述单位时间后,保存当前计数值与当前计数方向;

所述单位时间的频率或所述计数频率与rc振荡器的振荡频率相关;

状态机模块根据所述当前计数值判断当前校准值是否符合要求;

状态机模块还根据所述当前计数方向与上一次计数的计数方向是否相同,对所述当前校准值采用固定步进值进行校准或采用二分法进行校准。

可选的,在所述的时钟自动校准方法中,所述时钟自动校准方法还包括:

存储初始校准值;

所述状态机模块根据所述当前计数值判断所述初始校准值是否符合要求;若所述初始校准值符合要求,结束校准;

所述状态机模块还将所述初始校准值作为所述当前校准值,进入固定步进值校准循环;

所述状态机模块还将所述固定步进值作为当前步进值,进入二分法校准循环;

所述状态机模块在结束校准时,还将所述当前校准值作为新的所述初始校准值进行存储。

可选的,在所述的时钟自动校准方法中,所述固定步进值循环包括:根据所述固定步进值对所述当前校准值进行校准,然后等待所述计数模块进行新一次计数,新一次计数结束后,根据所述当前计数值判断所述当前校准值是否符合要求;若所述当前校准值符合要求,跳出所述固定步进值循环且结束校准,否则判断所述当前计数方向与上一次计数的计数方向是否相同,若是则继续重复所述固定步进值循环,否则跳出所述固定步进值循环。

可选的,在所述的时钟自动校准方法中,所述二分法校准循环包括:将所述当前步进值减半,根据所述当前步进值对所述当前校准值进行校准,然后等待所述计数模块进行新一次计数,新一次计数结束后,根据所述当前计数值判断所述当前校准值是否符合要求;若所述当前校准值符合要求,跳出所述二分法校准循环且结束校准,否则继续重复所述二分法校准循环。

可选的,在所述的时钟自动校准方法中,所述初始校准值符合要求包括:

将所述当前计数值与误差允许值进行比较,若所述当前计数值小于所述误差允许值,则所述初始校准值符合要求;

所述误差允许值等于频率允许误差与单位时间理论计数值的乘积;

所述单位时间理论计数值作为所述计数初始值。

可选的,在所述的时钟自动校准方法中,所述固定步进值为初始步进值或第一次计数得到的当前计数值。

本发明还提供一种实施如上所述的时钟自动校准方法的时钟自动校准电路,所述时钟自动校准电路包括参考时钟模块、若干选择器、第一寄存器及第二寄存器,其中:

所述rc振荡器包括高频rc振荡器及低频rc振荡器;

所述第一寄存器存储所述高频rc振荡器的初始校准值,所述第二寄存器存储所述低频rc振荡器的初始校准值;

所述选择器被配置为选择所述低频rc振荡器的振荡频率或所述参考时钟模块的输出频率作为单位时间基准;

所述选择器还被配置为选择所述高频rc振荡器的振荡频率或所述参考时钟模块的输出频率作为所述计数频率。

可选的,在所述的时钟自动校准电路中,所述选择器被配置为在校准过程中选择所述状态机模块的输出作为所述rc振荡器的校准值,校准结束后选择所述第一寄存器或所述第二寄存器中的初始校准值作为所述rc振荡器的校准值;

所述选择器还被配置为选择所述高频rc振荡器的校准值或所述低频rc振荡器的校准值提供至所述状态机模块,作为所述初始校准值或所述当前校准值。

可选的,在所述的时钟自动校准电路中,所述参考时钟模块包括低速晶振时钟、高速晶振时钟及外部输入时钟,其中:

当所述选择器选择所述低频rc振荡器的振荡频率作为所述单位时间基准时,所述选择器选择所述高速晶振时钟或所述外部输入时钟的输出频率作为所述计数频率,所述单位时间理论计数值等于所述计数频率除以低频rc振荡器的目标校准频率;

当所述选择器选择所述高频rc振荡器的振荡频率作为所述计数频率时,所述选择器选择所述低速晶振时钟或所述外部输入时钟的输出频率作为所述单位时间基准,所述单位时间理论计数值等于高频rc振荡器的目标校准频率除以所述单位时间的频率。

可选的,在所述的时钟自动校准电路中,所述计数模块包括分频电路、边沿采样模块、计数初始值寄存器、计数子模块、当前计数值寄存器、方向模块及当前计数方向寄存器,其中:

所述边沿采样模块检测计数信号的边沿,作为所述单位时间的起点;

所述分频电路对所述单位时间基准进行分频,获取所述单位时间的频率;

所述计数初始值寄存器存储所述计数初始值;

所述当前计数值寄存器存储所述当前计数值;

所述当前计数方向寄存器存储所述当前计数方向;

所述计数子模块对所述计数初始值进行加计数或减计数;

所述方向模块对所述计数子模块的计数方向进行检测。

在本发明提供的时钟自动校准电路及方法中,通过状态机模块根据当前计数值判断当前校准值是否符合要求,或根据所述当前计数方向与上一次计数的计数方向是否相同,对所述当前校准值采用固定步进值进行校准或采用二分法进行校准,实现了根据不同的误差情况进行不同的校准操作,当当前校准值与目标校准值相差较大时自动采用固定步进值进行校准可以大大增加校准效率,避免了起始频率与目标校准频率相差较大,校准时间会很长的问题;当当前校准值与目标校准值接近时,采用二分法进行校准可以提高校准精度,避免校准过度,即避免在校准的过程中频率改变较大,影响最终时钟校准精度的问题。

附图说明

图1是本发明一实施例时钟自动校准方法示意图;

图2是本发明另一实施例时钟自动校准方法单次计数波形示意图;

图3是本发明另一实施例时钟自动校准方法多次计数波形示意图;

图4是本发明另一实施例时钟自动校准电路示意图;

图5是本发明另一实施例时钟自动校准电路中计数模块示意图;

图6是本发明另一实施例时钟自动校准电路校准结果示意图。

具体实施方式

以下结合附图和具体实施例对本发明提出的时钟自动校准电路及方法作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。需说明的是,附图均采用非常简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。

本发明的核心思想在于提供一种时钟自动校准电路及方法,以解决现有的rc振荡器时钟频率校准速度慢的问题。

为实现上述思想,本发明提供了一种时钟自动校准电路及方法,所述时钟自动校准方法包括:计数模块进行一次或多次计数,每次计数包括:以一定的计数频率,从计数初始值减计数,计数到0后若还未到达单位时间继续加计数;到达所述单位时间后,保存当前计数值与当前计数方向;所述单位时间的频率或所述计数频率与rc振荡器的振荡频率相关;状态机模块根据所述当前计数值判断当前校准值是否符合要求;状态机模块还根据所述当前计数方向与上一次计数的计数方向是否相同,对所述当前校准值采用固定步进值进行校准或采用二分法进行校准。

<实施例一>

本实施例提供一种时钟自动校准方法,所述时钟自动校准方法包括:计数模块进行一次或多次计数,每次计数包括:如图2~3所示,以一定的计数频率,从计数初始值arr减计数,计数到0(即图2中时间udf时的end点)后若还未到达单位时间miss(即图3中ref每两个下降沿中的一个)则count继续加计数;到达所述单位时间miss后,保存当前计数值fcap与当前计数方向fdir;如图3所示,所述单位时间的间隔(图3中ref方波的频率)或计数频率(图3中tclk的频率)与rc振荡器的振荡频率相关;状态机模块根据所述当前计数值判断当前校准值fcap是否符合要求(小于图2中的felim的值);状态机模块还根据所述当前计数方向fdir与上一次计数的计数方向fdir是否相同,对所述当前校准值采用固定步进值进行校准或采用二分法进行校准。

如图1所示,在所述的时钟自动校准方法中,所述时钟自动校准方法还包括:步骤s0:存储初始校准值,下一步进入步骤s1;步骤s1:所述状态机模块根据所述当前计数值判断所述初始校准值是否符合要求,若所述初始校准值符合要求,结束校准进入步骤s4,否则进入步骤s2;步骤s2:所述状态机模块将初始校准值作为当前校准值,进入固定步进值校准循环,若满足跳出条件则进入步骤s3或步骤s4,否则自循环;步骤s3:所述状态机模块将所述固定步进值作为当前步进值,进入二分法校准循环,若满足跳出条件则进入步骤s4,否则自循环;步骤s4:所述状态机模块在结束校准时,将所述当前校准值作为新的初始校准值进行存储,进入步骤s0。

具体的,在所述的时钟自动校准方法中,所述固定步进值循环包括:根据所述固定步进值(图5中的adj_val)对所述当前校准值进行校准,然后等待所述计数模块进行新一次的计数,新一次计数结束后,根据所述当前计数值判断所述当前校准值是否符合要求;若所述当前校准值符合要求,跳出所述固定步进值循环且结束校准,进入步骤s4,否则判断所述当前计数方向与上一次计数的计数方向是否相同,若是则继续重复所述固定步进值循环(自循环),否则跳出所述固定步进值循环,进入步骤s3。

进一步的,在所述的时钟自动校准方法中,所述二分法校准循环包括:将所述当前步进值减半,根据所述当前步进值(图5中的adj_val)对所述当前校准值进行校准,然后等待所述计数模块进行新一次的计数,新一次计数结束后,根据所述当前计数值判断所述当前校准值是否符合要求;若所述当前校准值符合要求,跳出所述二分法校准循环且结束校准,进入步骤s4,否则继续重复所述二分法校准循环(自循环)。

另外,在所述的时钟自动校准方法中,所述初始校准值符合要求包括:将所述当前计数值与误差允许值felim进行比较,若所述当前计数值小于所述误差允许值felim,则所述初始校准值符合要求;所述误差允许值felim等于频率允许误差与单位时间理论计数值的乘积,所述单位时间理论计数值作为所述计数初始值。所述固定步进值为初始步进值或第一次计数得到的当前计数值。rc振荡器的振荡频率与当前校准值之间的关系是单调递增的关系,相邻的两个当前校准值直接的频率误差为rc振荡器振荡频率的最小可调分辨率。最大的当前校准值和最小的当前校准值为rc振荡器振荡频率的可调频率范围。rc振荡器的振荡频率可以通过计数模块在单位时间内计数表现出来。单位时间内当前计数值越大,当前计数频率越高;当前计数值约小,频率越低。

综上,上述实施例对时钟自动校准方法的不同构型进行了详细说明,当然,本发明包括但不局限于上述实施中所列举的构型,任何在上述实施例提供的构型基础上进行变换的内容,均属于本发明所保护的范围。本领域技术人员可以根据上述实施例的内容举一反三。

<实施例二>

本实施例提供一种实施上一实施例的时钟自动校准方法的时钟自动校准电路,如图4所示,其包括校准模块ctrim,所述校准模块ctrim包括上一实施例中的计数模块及状态机模块,所述时钟自动校准电路还包括参考时钟模块、若干选择器、第一寄存器trim_rch及第二寄存器trim_rcl(输出图5中的trim_in),其中:上一实施例中所述的rc振荡器包括高频rc振荡器及低频rc振荡器;所述第一寄存器trim_rch存储所述高频rc振荡器的初始校准值,所述第二寄存器trim_rcl存储所述低频rc振荡器的初始校准值;所述选择器21被配置为选择所述低频rc振荡器的振荡频率rcl或所述参考时钟模块的输出频率(通过ref接口输入至校准模块ctrim)作为所述单位时间的频率;所述选择器22还被配置为选择所述高频rc振荡器的振荡频率rch或所述参考时钟模块的输出频率(通过tclk接口输入至校准模块ctrim)作为所述计数频率。

具体的,在所述的时钟自动校准电路中,当对所述低频rc振荡器进行校准时,所述选择器23被配置为在校准过程中选择所述状态机模块的输出adj_val作为所述低频rc振荡器的校准值(图5中的trim_out),校准结束后选择所述第二寄存器trim_rcl中的初始校准值trim_in作为所述低频rc振荡器的校准值trim_out,所述单位时间理论计数值等于所述计数频率除以低频rc振荡器的目标校准频率;当对所述高频rc振荡器进行校准时,所述选择器24被配置为在校准过程中选择所述状态机模块的输出adj_val作为所述高频rc振荡器的校准值trim_out,校准结束后选择所述第一寄存器trim_rch中的初始校准值trim_in作为所述高频rc振荡器的校准值trim_out,所述单位时间理论计数值等于高频rc振荡器的目标校准频率除以所述单位时间的频率;所述选择器25还被配置为选择所述高频rc振荡器的校准值或所述低频rc振荡器的校准值trim_out提供至校准模块ctrim中的状态机模块,作为所述初始校准值或所述当前校准值。rc振荡器的振荡频率与rc振荡器的校准值之间的关系是单调递增的关系,相邻两个校准值直接的频率误差为rc振荡的最小可调分辨率。校准值最大最小两个频率为rc振荡可调频率范围,rc振荡器的目标校准频率与目标校准值之间的关系是单调递增的关系。

另外,在所述的时钟自动校准电路中,所述参考时钟模块包括低速晶振时钟xtl、高速晶振时钟xth及外部输入时钟etr,其中:当所述选择器21选择所述低频rc振荡器的振荡频率rcl(通过ref接口输入至校准模块ctrim)作为所述单位时间基准时,所述选择器22选择所述高速晶振时钟xth或所述外部输入时钟etr的输出频率(通过tclk接口输入至校准模块ctrim)作为所述计数频率;当所述选择器22选择所述高频rc振荡器的振荡频率rch(通过tclk接口输入至校准模块ctrim)作为所述计数频率时,所述选择器21选择所述低速晶振时钟xtl或所述外部输入时钟etr的输出频率(通过ref接口输入至校准模块ctrim)作为所述单位时间基准。

如图5所示,在所述的时钟自动校准电路中,所述计数模块包括分频电路prs、边沿采样模块edg_det、计数初始值寄存器arr、计数子模块count、当前计数值寄存器fcap、方向模块dir及当前计数方向寄存器fdir,其中:所述边沿采样模块edg_det检测计数信号tclk的边沿,作为所述单位时间ref的起点;所述分频电路prs对所述单位时间ref的频率基准进行分频,获取所述单位时间ref的间隔;所述计数初始值寄存器arr存储所述计数初始值;所述当前计数值寄存器fcap存储所述当前计数值;所述当前计数方向寄存器fdir存储所述当前计数方向dir;所述计数子模块count对所述计数初始值arr进行加计数或减计数;所述方向模块dir对所述计数子模块count的计数方向进行检测。

在本发明提供的时钟自动校准电路及方法中,通过状态机模块根据当前计数值fcap判断当前校准值是否符合要求,或根据所述当前计数方向fdir与上一次计数的计数方向是否相同,对所述当前校准值采用固定步进值进行校准或采用二分法进行校准,实现了根据不同的误差情况进行不同的校准操作,当当前校准值与目标校准值相差较大时自动采用固定步进值进行校准可以大大增加校准效率,避免了起始频率与目标校准频率相差较大,校准时间会很长的问题;当当前校准值与目标校准值接近时,采用二分法进行校准可以提高校准精度,避免校准过度,即避免在校准的过程中频率改变较大,影响最终时钟校准精度的问题,特别适用于微控制器使用异步通信时内部rc时钟自动校准电路。当对所述高频rc振荡器进行校准时,单位时间到达后如果计数未到0,说明高频rc振荡器频率偏慢,需要调快高频rc振荡器的振荡频率,反则说明高频rc振荡器的频率偏快,需要调慢高频rc振荡器的振荡频率。当对所述低频rc振荡器进行校准时,单位时间到达后如果计数未到0,说明低频rc振荡器频率偏快,需要调慢低频rc振荡器的振荡频率,反正则说明低频rc振荡器的频率偏慢,需要调快低频rc振荡器的振荡频率。

下面以校准高频rc振荡器为例,说明校准配置:所述高频rc振荡器的振荡频率作为所述计数频率,高频rc振荡器的目标校准频率为48mhz的时钟频率,选择器选择输出频率为32khz的外部输入时钟etr作为单位时间基准,校准精度要求即频率允许误差在±0.25%以内,分频电路对所述单位时间基准32khz进行16分频,获取所述单位时间的频率为2khz,根据单位时间的频率得到分频后周期为0.5ms,即单位时间为0.5ms,所述单位时间理论计数值等于高频rc振荡器的目标校准频率除以所述单位时间的频率,为:48mhz/2khz=24000,所述单位时间理论计数值作为所述计数初始值arr等于24000,高频rc振荡器的振荡频率作为计数频率,从计数初始值arr开始进行减计数,所述误差允许值felim等于频率允许误差与单位时间理论计数值的乘积,felim=24000*0.25%=60,设置误差允许值felim=60;单位时间结束后,状态机模块判断当前计数值是否大于60,而计数模块引入的误差为1/24000,远远小于精度要求0.25%。

下面以校准低频rc振荡器为例,说明校准配置:在校准低速rc振荡器时,低速rc振荡器的振荡频率作为单位时间基准,所述分频电路对所述单位时间基准进行分频,获取所述单位时间的频率,若分频电路对低速rc振荡器的振荡频率进行了分频,也应在计算单位时间理论计数值时将低频rc振荡器的目标校准频率进行相同倍数的分频,以方便单位时间理论计数值和当前计数值进行比较;低频rc振荡器的目标校准频率为32khz的时钟频率,所述分频电路对低频rc振荡器的目标校准频率进行64分频,分频后频率为0.5khz,选择器选择输出频率为1mhz的外部输入时钟etr作为计数频率,所述单位时间理论计数值等于所述计数频率除以分频后的低频rc振荡器的目标校准频率,1mhz/0.5khz=2000,所述单位时间理论计数值作为所述计数初始值arr等于2000,外部输入时钟etr的输出频率作为计数频率,从2000开始进行减计数,校准精度要求即频率允许误差在±0.5%以内,所述误差允许值felim等于频率允许误差与单位时间理论计数值的乘积,即felim=2000*0.5%=10,单位时间结束后状态机模块判断当前计数值是否大于10,计数模块引入的误差为1/2000=0.05%,远远小于精度要求0.5%。

图6演示了校准动作,初始校准值为128,计数次数为4次,固定步进值为8。如果目标校准值为136或120,则状态机模块根据所述固定步进值对当前校准值进行校准,然后等待所述计数模块进行新一次计数,此时的当前计数值会显示当前校准值符合要求,结束校准,校准只需要1次;同理,如果目标校准值为144、132、124或112,校准过程只需要2次;如果目标校准值为152、148、140、134、130、126、122、116、108或104,校准过程只需要3次;设置合适的固定步进值与初始校准值可以加快校准过程。生成测试过程中在低速rc振荡器的校准时间由原来的接近1s缩短到20ms以内,校准用时减少了50倍。高速rc振荡器的时钟校准精度达到千分之三的精度。校准用时由原来的100ms缩短到20ms以内。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

上述描述仅是对本发明较佳实施例的描述,并非对本发明范围的任何限定,本发明领域的普通技术人员根据上述揭示内容做的任何变更、修饰,均属于权利要求书的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1