一种实时时钟计时误差补偿方法与流程

文档序号:15729626发布日期:2018-10-23 17:00阅读:492来源:国知局
一种实时时钟计时误差补偿方法与流程
本发明涉及一种实时时钟计时误差补偿方法。
背景技术
:如图1所示,实时时钟计时最小单位为“秒”,其原理是对晶体振荡器输出频率为32768Hz方波进行分频1Hz,1Hz方波驱动产生“秒”的时间和日历逻辑电路,进一步产生分、时、日、月、星期日历逻辑。晶体振荡器输出标准频率为32768Hz,但是,由于温度变化、石英晶体的制造工艺误差等原因,晶体振荡器输出的频率往往存在误差。通常,把晶体振荡器输出的频率相对于标准频率32768Hz的相对误差作误差衡量标准,如下公式所示,单位为PPM(一百万分之一)。为了补偿晶体振荡器输出的频率与标准频率32768Hz之间的误差,现有技术中,通常采用固定时间点补偿方法针对相对误差进行补偿,根据固定时间点如每隔10秒,查找相对误差(ERR)对应的需要补偿时钟个数,改变分频计数器(CNT)计数值。如图2所示,每隔10秒补偿时,10秒钟,分频计数器共计数基准频率时钟个数为32768*10=327680所以,10秒分频计数器CNT多加1,相当于对基准频率做+3PPM的补偿,少加一次相当于对基准频率做-3PPM的补偿。通常,对ERR的采样率为0.1Hz,补偿数据ERR有效值为3PPM,补偿后的最大误差为1.5PPM。所述固定时间点补偿方法对ERR的采样率越低,补偿数据的有效值越高,但是,采样率低会引入频谱混叠误差。所以,所述方法对ERR的采样率,既不能太高,也不能太低,存在ERR采样率设置和最终补偿精度的矛盾关系。技术实现要素:本发明的目的在于提供一种相对误差ERR采样率可调,且补偿精度更高的实时时钟计时误差补偿方法。为达成上述目的,本发明的解决方案为:一种实时时钟计时误差补偿方法,包括以下步骤:包括计算步骤和补偿步骤:计算步骤一,循环减法寄存器M2赋值,循环减法寄存器M1=循环减法寄存器M2=;对累积误差周期个数寄存器M3赋值0,其中,S1用于调节ERR有效值,S2用于调节补偿电路工作频率,S3用于调节计算次数,执行步骤二;二,等Hz时钟上升沿到达时,对补偿标志寄存器COM赋值为0,对M2执行减法,M2=M1-︱ERR*S1︱,M1=M2,执行步骤三;三,判断M2,若M2<0时,执行对M2赋值,M2=M1+,M1=M2,并对补偿标志寄存器COM赋值为1,执行步骤四;否则,执行步骤二;四,判断ERR*S1,若ERR*S1﹥0,执行M3=M3+,否则,执行M3=M3-,执行步骤二;补偿步骤一,对分频计数器CNT赋值0,执行步骤二;二,等待1Hz时钟上升沿到达时,对补偿标志寄存器FLAG赋值1,执行步骤三;三,判断FLAG、M3,若FLAG=1且M3<0成立,则等待CNT=S4时,执行步骤四;若FLAG=1、CNT=0且M3>0成立,执行步骤五;否则,执行步骤二;四,执行赋值,CNT=0、M3=M3+S4、FLAG=0,重新执行步骤二,其中S4为1秒中最多补偿周期个数;五,执行赋值,CNT=S4、M3=M3-S4、FLAG=0,重新执行步骤二。采用上述方案后,本发明实时时钟计时误差补偿方法中,S1、S2、S3、S4参数可调节,采用本发明所述方案使得相对误差ERR采样率可调,且补偿精度更高。附图说明图1是实时时钟原理图;图2是现有技术固定时间补偿方法示意图;图3是标准频率与实际频率基本关系图;图4是累积误差计算时序示意图;图5是累积误差计算实施时序示意图;图6是误差补偿方法示意图;图7是误差补偿方法实施时序流程图。具体实施方式以下结合实施例对本发明作进一步详细说明。根据相对误差ERR的基本定义,可知标准频率(32768Hz)与实际频率(32768*(1-ERRppm)基本关系,由标准频率(32768Hz)与实际频率(32768*(1-ERRppm)基本关系可以计算出标准周期与实际周期之间的关系,如图3所示,经过1个周期相差1*ERR/106个周期,经过2个周期相差2*ERR/106个周期,经过106/ERR个周期相差(106/ERR)*ERR/106=1个周期。因此,经过N个周期,标准频率和实际频率相差W个周期个数的关系如表1所示:表1NW1即N:W=106/ERR:1,经过106/ERR个周期,需补偿1个周期。在实际补偿时,106/ERR个周期通常转换为106-ERR作循环减法,减到等于0,或为负数时,即补偿1个周期。由于106数字较大,而相对误差ERR较小,因此,导致循环减法的次数很大,使得电路的功耗很大;相对误差ERR数值较小如1.001,存在小数点,而数字电路无法计算小数,只能取ERR=1,而0.001无法参与计算,影响补偿精度。因此,对N和W数量关系做变换得到如表2所示:表2NW其中,S1,S2,S3所代表的含义如表3所示:表3参数控制量参数控制量S1ERR有效值S3计算次数S2补偿电路工作频率S1的作用在于提高补偿精度,补偿精度提高S1倍(S1取正整数,1、2、3、……N),如当ERR=1.001时,由于,数字电路无法计算小数,只能取ERR=1,而0.001无法参与计算,式中,当S1取1000时,ERR×S1=1001,使得数字电路可以对1001进行计算,补偿精度提高1000倍。表4,参数S1举例说明:NW补偿精度1=1分式中,S1可以调节补偿精度。如表4中,设置S1=1000,S2=1,S3=1,补偿精度提高1000倍。由表4可知,经过个基准频率周期,补偿1个周期。ERR的单位为PPM,ERR’单位为PPM/1000=0.001PPM。因为,ERR’的单位为0.001PPM,所以,补偿数据ERR’可以精确到0.001PPM,补偿精度为0.001PPM。S1可调的优点是:可以提高补偿的精度。S1的取值范围为:S1为正整数(1、2、3、……、N)。S2的作用在于调节补偿电路的工作频率,从而降低电路的功耗,表5对S2参数举例说明:表5,参数S2说明:NW补偿电路的工作频率S2可以调节补偿电路的工作频率。关系式是除法运算,在实现电路中为了节省芯片版图面积、节省成本,转换成减法运算实现计数的目的,以S2×T(T为基准频率周期)为周期做循环减法,上次减法运算的差值作为本次减法的被减数,减数为ERR。被减数初始值为106,当差值为负数时,表示已经经过了个S2×T,完成1次补偿计算循环,需要补偿S2个T。例如,表5设置S1=1,S2=8,S3=1,补偿电路是以8T为周期做循环减法,即补偿电路的工作频率为(f为基准频率),降低补偿电路工作频率,从而降低电路的功耗。S2的取值范围:S2为正整数(1、2、3、……、N)。S3的作用在于调节完成一次补偿循环的计算次数,减小被减数,减小减法器运算的位数,从而减少补偿运算电路的版图面积、节约成本,表6对S3参数举例说明:表6,参数S3说明:NW被减数初始值S3,在确定S1,S2的取值后,调节S3,可以调节完成1次补偿循环的计算次数。例如,如表6所示设置S1=1,S2=16,S3=16。由S2参数说明可知,补偿电路每隔16T时间做1次减法。S3的作用是:设定循环减法的被减数初始值为。S3=16,则循环减法的被减数初始值设定为,与被减数初始值设定为106相比,完成1次补偿计算循环的计算次数减少16倍。等效于被除数(循环减法的被减数初始值)减小16倍,除数(循环减法运算中的减数ERR)不变,则商(1次补偿循环的计算次数)也减小16倍。当1次补偿计算循环结束,经过个16T时间后,补偿1个T。S3可调的优点是:减小被减数,减小减法器运算的位数,从而减少补偿运算电路的版图面积、节约成本。S3的取值范围是:同时属于和的因数。例如,S1=1,S2=16,S3可取值16,因为106*1/16=15625,1*16/16=1都能整除,同时属于和的因数S3,还可以取值2,4,8。综上所述,经过个周期需要补偿个周期,而个周期不能在1秒钟全部补偿完成,如此使得该1秒显得很长,或者显得很短,让人无法接受。因此,确定1秒钟最多只能补偿S4个周期个数。所以,补偿W()个周期个数,需要W/S4秒完成,如表7所示。表7,参数S4说明:S4最大补偿误差8取值范围是:1、2、3、……32768S4定义为1秒钟最多补偿的基准频率周期个数,最大补偿误差为。例如,如表7所示,S4=8,则1秒钟最多补偿8个基准频率周期,则最大补偿误差为每秒钟都补偿8个基准频率周期,对应的补偿量为,其中,S4的取值范围是:1、2、3、……32768。应用举例:设置参数S1=1000,S2=32768,S3=512,S4=16。表8,N和W的关系:NW由表8得到:经过个周期后,需要对分频计数器CNT补偿64个周期个数。补偿电路工作频率为基准频率周期的32768倍(32768T),即为1秒。循环减法被减数初始值设定为。取S4=16,即1秒钟最多补偿16个周期个数。表8中ERR’=ERR*1000,ERR单位为1PPM,ERR’的单位为0.001PPM,即十亿分之一,补偿精度为0.001PPM。如图4所示,累积误差计算时序示意图,经过个基准频率周期时间,累积误差达到64个基准频率周期个数。1秒钟为32768个基准频率周期时间,所以,秒钟,累积误差达到64个基准频率周期个数,并记录这个误差。其中,M1,M2为两个24位寄存器。在0秒时刻,赋初始值1953125,1秒、2秒、、、N秒时刻都做1次减法运算,把上1秒钟减法运算的差作为被减数,减去ERR’的绝对值。等到秒钟时,M2<0,此时经过个基准频率周期时间,累积误差达到64个基准频率周期个数,M3寄存器加/减64记录累积误差周期个数。ERR’符号的正负反映晶振频率的正负误差,晶振频率偏小时,ERR’定义为正,晶振频率偏大时,ERR’定义为负。可能除不尽,M2为负数,由此带来的误差,在后面的循环中消除,以后每个循环的开始,M2赋初始值为M1+1593125。如图5所示,累积误差计算实施时序示意图,其中,COM为1位寄存器,为补偿标志寄存器,当累积误差达到64个周期个数时COM为高电平,对M3寄存器加/减64。完成对M3寄存器加/减64后,COM寄存器重新被置0。寄存器M1,M2的运算操作同步时钟为1Hz频率,即为32768个基准频率。图5完成从基准频率误差ERR’(单位为0.001ppm),到累积误差等于多少个基准频率周期个数的转换。其主要操作是,M1,M2赋予初值为1953126,每1秒钟对M1,M2寄存器中的数据,做一次减法运算,减去ERR’的绝对值,COM赋值0。并且每1秒钟对上1秒钟减法运算的差作判断,若差大于或者等于0,则当前1秒继续减1次ERR’的绝对值;若差小于0,则累积误差达到64个时钟周期,并对M2赋初值M2<=1953125+M1,M1<=M2,COM=1,同时对寄存器M3加/减64。若ERR’>0,则M3<=M3+64;若ERR’<0,则M3<=M3-64。如图6所示,误差补偿方法示意图,M3寄存器为累积误差周期个数寄存器。若M3>0,则晶振频率偏小,时钟偏慢,补偿措施是当CNT=0时,CNT赋值为16,从而加快时钟16个基准频率周期,同时M3=M3-16记录已经补偿了16个周期;若M3<0,则晶振频率偏大,时钟偏快,补偿措施是当CNT=16时,CNT复位为0,从而减慢时钟16个基准频率周期,同时M3=M3+16记录已经补偿了16个周期。如图7所示,误差补偿方法实施时序流程图,其中,M3为累积误差周期个数寄存器,CNT为基准频率32.768KHz分频到1Hz频率的计数器的低5位。该计数器一共有15位,误差补偿只需要对该计数器的低5位进行译码判断即可,从而减少了译码电路的版图面积,同时降低了功耗。FLAG为标志寄存器,用于保证1秒钟最多补偿1次。根据累积误差基准频率周期个数M3,对“秒”一级的时间进行补偿。补偿方法是对CNT计数器进行干预。具体做法是,在1Hz时钟的上升沿时,对标志寄存器FLAG置位为“1”。对M3、CNT判断,若M3<0,则当CNT=16且FLAG=1时,对CNT计数器的最高位复位为“0”,即计数器减16,同时对FLAG复位为“0”;若M3>0,则当CNT=0且FLAG=1时,对CNT计数器的最高位置位为“1”,即计数器加16,同时对FLAG复位为“0”。标志寄存器FLAG只有在1Hz时钟上升沿置位为“1”,补偿后复位为“0”,作用是1秒钟最多补偿1次。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1