一种电表用的SOC芯片实时时钟高精度补偿方法转让专利

申请号 : CN201310548177.0

文献号 : CN104635193B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 史元袁颖傅有炜李全栋朱昊

申请人 : 钜泉光电科技(上海)股份有限公司

摘要 :

本发明公开了一种电表用的SOC芯片实时时钟高精度补偿方法,其中:对于每次补偿时获取得到的补偿值所舍弃的小数点部分误差进行累加,之后得到实际补偿值;对实际补偿值进行微调,以实现将长时间的秒脉冲累积校正误差控制在一个目标范围之内。本发明公开的高精度补偿方法,是在SOC芯片包含的实时时钟和低精度补偿的基础上采用软件处理的方法,不需要更换芯片,就将输出的秒脉冲精度提高了一个数量级。本发明所使用的实例中,补偿方法检测间隔越长,平均的秒脉冲误差就越小,对于任意长的检测时间,其总时长的最大补偿误差均在正负0.5LSB(相当于0.8ppm)之内,对于20秒检测就在0.04ppm之内。

权利要求 :

1.一种电表用的SOC芯片实时时钟高精度补偿方法,其特征在于:对于每次补偿时获取得到的补偿值所舍弃的小数点部分误差进行累加,之后得到实际补偿值;

对实际补偿值进行微调,以实现将长时间的秒脉冲累积校正误差控制在一个目标范围之内,并具体包括下列步骤:S1、设定一段检测时间,从该段检测时间中的第一秒钟开始操作;

S2、获取该SOC芯片在该秒钟的温度值Tdata,通过温度和补偿值的关系函数f(x)计算需要的补偿值Cal_f;

S3、定义上一次校正剩余的值为delta,用delta加上Cal_f并减去Cal_f四舍五入后的整数值后获得累积的小数校正值Sdelta,delta的初始值为0;

S4、在Cal_f四舍五入后的整数值的基础上累加Sdelta四舍五入后的整数值后获得实际写入RTCCAL寄存器的校正值Cal_i;

S5、更新本次校正后的剩余值delta;

S6、时间跳至下一秒钟,重复步骤S2,直至该段检测时间结束。

2.根据权利要求1所述电表用的SOC芯片实时时钟高精度补偿方法,其特征在于,在Sdelta基础上减去Sdelta四舍五入后的整数值得到每次校正后的剩余值delta。

3.根据权利要求1所述电表用的SOC芯片实时时钟高精度补偿方法,其特征在于,对于任意长的所述检测时间,总时长的最大补偿误差均在正负0.5LSB之内。

说明书 :

一种电表用的SOC芯片实时时钟高精度补偿方法

技术领域

[0001] 本发明涉及电能计量领域的精度补偿方法,尤其涉及一种电表用的SOC芯片实时时钟高精度补偿方法。

背景技术

[0002] 随着大规模集成电路的逐渐发展及片上系统SOC技术的日益成熟,电能表计量方案逐步进入SOC单芯片设计方案时代。
[0003] 实时时钟(RTC)是需要实时数据的应用中的关键元件,很多实时采集数据的软件往往要求具有精确的RTC,以便进行复杂数据分析。RTC精度直接取决于其晶体时基的频率,环境的变化,包括温度、湿度、压力以及振动都会降低晶体谐振频率的精度,而在这些因素中温度起伏是最主要并且影响最大的因素。
[0004] 早先的SOC芯片RTC补偿方法如图1流程所示,SOC芯片的TPS模块负责每秒测量芯片的温度值Tdata,然后根据测量的Tdata值计算需要的补偿值Cal_f=f(Tdata)。其中f(x)代表了温度和补偿值的关系函数,不同的温度会对应不同的补偿值,Cal_f表示计算得到的补偿值,带有1位小数。
[0005] 之后再对Cal_f四舍五入,得到整数值的Cal_i,该值即为写入RTCCAL内的值,其中round(x)表示对x值四舍五入取整。该补偿的过程如图2所示:其中,time一列代表时间,在本方案中总共为20秒,Err(ppm)表示当前秒的实际补偿值Cal_i和理论补偿值Cal_f之间的差所引入的秒脉冲精度误差,Err(ppm)=(Cal_f-Cal_i)*1.5,1个LSB(leastsignificant bit)对应的误差是1.5ppm。
[0006] 最后一行是对对应列的求和,可以看到,理论上总共需要补偿的值Cal_f为204.5,实际补偿的为201,导致的误差Err(ppm)=(204.5-201)*1.5=5.3ppm,相当于每秒的误差为0.265ppm。
[0007] 当前的电能计量SOC芯片一般都带有秒脉冲(RTC)输出,随着国网对精度要求的提高,许多SOC芯片在硬件性能上已经无法满足需求。为了进一步满足国网的要求,许多电能芯片厂商不得不重新研发新的芯片,改进RTC模块的硬件性能来达到新的性能要求,这不仅加重了芯片厂商的研发生产成本,也会增加芯片的价格,提升电表的成本。
[0008] 目前国网检测RTC精度一般一定时间间隔检测一次,比如10秒,20秒等。秒脉冲精度发生变化的主要原因是晶振受温度的影响导致,不同温度下,芯片外灌的晶振频率会发生变化,进而影响秒脉冲的精度。一般对于RTC进行补偿,都会测量出晶振的频率-温度曲线,然后使用SOC芯片的温度测量(TPS)模块,测得芯片的实时温度,进而计算得到需要的补偿值RTCCAL。
[0009] 在补偿时RTCCAL寄存器的精度就直接决定了补偿时的最大误差,早先国网要求的RTC精度为1ppm,RTCCAL最低位(LSB)对应的精度是1.5ppm(举例,不同厂商可能会有些差别),每秒的最大补偿误差为正负0.75ppm,如果20秒检测,总的最大误差也只有15ppm,相当于每秒最大0.75ppm。而目前国网对RTC的精度不断提高,甚至要求达到0.2ppm以内,如果采用之前的方法,将无法满足国网的需求。

发明内容

[0010] 有鉴于此,本发明的目的是提供一种电表用的SOC芯片实时时钟高精度补偿方法,以解决现有技术中的不足。
[0011] 为了达到上述目的,本发明的目的是通过下述技术方案实现的:
[0012] 一种电表用的SOC芯片实时时钟高精度补偿方法,其中:
[0013] 对于每次补偿时获取得到的补偿值所舍弃的小数点部分误差进行累加,之后得到实际补偿值;
[0014] 对实际补偿值进行微调,以实现将长时间的秒脉冲累积校正误差控制在一个目标范围之内。
[0015] 上述电表用的SOC芯片实时时钟高精度补偿方法,其中,包括下列步骤:
[0016] S1、设定一段检测时间,从该段检测时间中的第一秒钟开始操作;
[0017] S2、获取该SOC芯片在该秒钟的温度值Tdata,通过温度和补偿值的关系函数f(x)计算需要的补偿值Cal_f;
[0018] S3、定义上一次校正剩余的值为delta,用delta加上Cal_f并减去Cal_f四舍五入后的整数值后获得累积的小数校正值Sdelta,delta的初始值为0;
[0019] S4、在Cal_f四舍五入后的整数值的基础上累加Sdelta四舍五入后的整数值后获得实际写入RTCCAL寄存器的校正值Cal_i;
[0020] S5、更新本次校正后的剩余值delta;
[0021] S6、时间跳至下一秒钟,重复步骤S2,直至该段检测时间结束。
[0022] 上述电表用的SOC芯片实时时钟高精度补偿方法,其中,在Sdelta基础上减去Sdelta四舍五入后的整数值得到每次校正后的剩余值delta。
[0023] 上述电表用的SOC芯片实时时钟高精度补偿方法,其中,对于任意长的所述检测时间,总时长的最大补偿误差均在正负0.5LSB之内。
[0024] 与已有技术相比,本发明的有益效果在于:
[0025] 引入了∑-Δ的概念,能够将每次补偿时舍弃的小数部分误差进行累加,当累加的值大于0.5时便产生一个进位,对实际补偿值Cal_i进行微调,能将长时间的秒脉冲累积校正误差控制在1LSB之内,相对于早先的补偿方法,在不增加硬件性能的条件下,可以将长时间的秒脉冲累积误差降低至最小。

附图说明

[0026] 构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0027] 图1是现有技术中SOC芯片RTC补偿方法的流程示意图;
[0028] 图2是现有技术中SOC芯片RTC补偿方法的结果显示示意图;
[0029] 图3是本发明SOC芯片RTC补偿方法的流程示意图;
[0030] 图4是本发明SOC芯片RTC补偿方法的结果显示示意图。

具体实施方式

[0031] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0032] 需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
[0033] 本发明是对于每次补偿时获取得到的补偿值所舍弃的小数点部分误差进行累加,之后得到实际补偿值,然后再对实际补偿值进行微调,以实现将长时间的秒脉冲累积校正误差控制在一个目标范围之内。
[0034] 具体来说,参看图3所示,包括下列步骤:
[0035] S1、设定一段检测时间,从该段检测时间中的第一秒钟开始操作;
[0036] S2、获取该SOC芯片在该秒钟的温度值Tdata,通过温度和补偿值的关系函数f(x)计算需要的补偿值Cal_f=f(Tdata);
[0037] S3、计算累积的小数校正值Sdelta,定义上一次校正剩余的值为delta,用delta加上Cal_f并减去Cal_f四舍五入后的整数值后获得累积的小数校正值Sdelta,delta的初始值为0,即Sdelta=delta+Cal_f-round(Cal_f);
[0038] S4、在Cal_f四舍五入后的整数值的基础上累加Sdelta四舍五入后的整数值后获得实际写入RTCCAL寄存器的校正值Cal_i,当|Sdelta|>=0.5时,round(Sdelta)将产生进位,实际的写入RTCCAL寄存器的校正值Cal_i=round(Cal_f)+round(Sdelta);
[0039] S5、更新本次校正后的剩余值delta,delta=Sdelta-round(Sdelta)。
[0040] S6、时间跳至下一秒钟,重复步骤S2,直至该段检测时间结束,在本发明的优选实施例中,检测时间总共为20s。
[0041] 采用本方法补偿后的结果如图4所示,理论上总共需要补偿的值Cal_f为204.5,实际补偿的值为204,导致的误差Err(ppm)=(204.5-204)*1.5=0.8ppm,相当于每秒的误差为0.04ppm,相对于早先的补偿方法,可见本方法在不改变硬件的条件下秒脉冲精度可以提高一个数量级。
[0042] 本发明公开的电表用的SOC芯片实时时钟高精度补偿方法,是在SOC芯片包含的实时时钟和低精度补偿的基础上采用软件处理的方法,不需要更换芯片,就将输出的秒脉冲精度提高了一个数量级。对于本发明所使用的实例,其补偿方法检测间隔越长,平均的秒脉冲误差就越小,对于任意长的检测时间,其总时长的最大补偿误差均在正负0.5LSB(相当于0.8ppm)之内,对于20秒检测就在0.04ppm之内。
[0043] 本发明也同样适用于其他使用软件累加硬件的舍入误差,进而提高补偿精度的方法。
[0044] 以上对本发明的具体实施例进行了详细描述,但本发明并不限制于以上描述的具体实施例,其只是作为范例。对于本领域技术人员而言,任何等同修改和替代也都在本发明的范畴之中。因此,在不脱离本发明的精神和范围下所作出的均等变换和修改,都应涵盖在本发明的范围内。