一种嵌入式系统中高精度时间同步系统及方法与流程

文档序号:11690649阅读:419来源:国知局
一种嵌入式系统中高精度时间同步系统及方法与流程

本发明涉及软件系统技术,具体涉及软件系统中的时间同步技术。



背景技术:

目前在嵌入式系统设备上越来越多的需要用到高精度的时间,且系统在同步完时间后需要自己维护时间。

现有技术中为了高精度的维护时间,常用的方案是给相关芯片提供高频高精度的时钟(要达到0.05ppm,既每秒误差50ns),但这些高精度的时钟源成本高,且随时间老化会影响精度。

由此可见,提供一种低成本且高精度的时间同步方案是本领域亟需解决的技术问题。



技术实现要素:

针对现有嵌入式系统设备在高精度时间维护方面所存在的问题,本发明的目的在于提供一种低成本且精度高的时间方案。该方案主要包括高精度时间同步系统以及相应的同步方法。

为了达到上述目的,本发明采用如下的技术方案:

方案1:一种嵌入式系统中高精度时间同步系统,所述同步系统包括:

高精度时间源,所述高精度时间源定期获取原始的高精度时间,并通知辅助计数器同步时间,且将同步时刻时间信息发送至时间同步及维护模块;

辅助计数器,所述辅助计数器记录高精度时间源同步时刻计数器的值;

时间同步及维护模块,所述时间同步及维护模块获取同时刻高精度时间源的时间和辅助计数器的时间,计算并维护辅助计数器的时间漂移和时间偏移;所述时间同步及维护模块通过维护的时间漂移和时间偏移转换得到高精度的系统时间。

优选的,所述辅助计数器拥有ns级的计数器。

优选的,所述时间同步及维护模块根据两次获取高精度时间源的时间的差值与同一时刻两次获取辅助计数器的时间的差值计算辅助计数器的时间漂移。

优选的,所述时间同步及维护模块根据同一时刻高精度时间源的时间与辅助计数器的时间,计算辅助计数器的时间偏移。

优选的,所述时间同步及维护模块根据辅助计数器的时间漂移确定辅助计数器修正后时间,再利用辅助计数器修正后时间与辅助计数器的时间偏移计算得到高精度的系统时间。

方案2:一种嵌入式系统中高精度时间同步方法,所述同步方法包括

获取同时刻高精度时间源的时间与辅助计数器的时间,所述辅助计数器记录高精度时间源同步时刻计数器的值;

计算辅助计数器的时间漂移和时间偏移;

维护辅助计数器的时间漂移和时间偏移;

获取辅助计数器的时间,再根据时间漂移及时间偏移转换得到高精度的系统时间。

优选的,根据两次获取高精度时间源的时间的差值与同一时刻两次获取辅助计数器的时间的差值计算辅助计数器的时间漂移。

优选的,根据同一时刻高精度时间源的时间与辅助计数器的时间,计算辅助计数器的时间偏移。

优选的,首先根据辅助计数器的时间漂移确定辅助计数器修正后时间,再利用辅助计数器修正后时间与辅助计数器的时间偏移计算得到高精度的系统时间。

优选的,同步的高精度系统时间可以通过相同的同步方法再同步给系统中的其它部件。

由此形成的高精度时间同步方案,通过实时计算校正时钟误差,实现高精度的维护时间,同时本方案稳定性高,成本低,有效解决了时钟芯片精度差,精度易受温度、老化等影响的问题。

附图说明

以下结合附图和具体实施方式来进一步说明本发明。

图1为本发明方案的实现原理图;

图2为本发明应用实例中硬件概要设计图;

图3为本发明应用实例中时间同步的流程图。

具体实施方式

为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。

参见图1,其所示为本方案中高精度时间同步系统的组成原理图。

由图可知,该高精度时间同步系统100主要由高精度时间源模块101、辅助计数器模块102以及时间同步及维护模块103相应配合组成。

其中,高精度时间源模块101与辅助计数器模块102和时间同步及维护模块103数据连接,其定期获取原始的高精度时间,并通知辅助计数器模块102同步时间,同时把同步时刻时间信息提供给时间同步及维护模块103。

本高精度时间源模块101可由相应的硬件元件来实现。

辅助计数器模块102,其拥有一个ns级的计数器,用来维护计数器的时间轴。

该辅助计数器模块102与时间同步及维护模块103数据连接,其用于记录高精度时间源同步时刻计数器的值,以提供给时间同步及维护模块103用来计算计数器的时间偏移和时间漂移。

在具体使用时,根据需要该辅助计数器模块102还可记录其它同步时刻计数器的值,以提供给时间同步及维护模块103用来同步系统中其他功能应用模块的时间。

本辅助计数器模块102可由相应的硬件器件来实现,如可由可编程的fpga来实现。

时间同步及维护模块103,用于计算并维护辅助计数器的时间漂移和时间偏移,并以此来确定高精度时间。

该时间同步及维护模块103通过获取同时刻高精度时间源的时间和辅助计数器的时间,来计算并维护辅助计数器的时间漂移和时间偏移。

其中,时间同步及维护模块103具体根据两次获取高精度时间源的时间的差值与同一时刻两次获取辅助计数器的时间的差值计算辅助计数器的时间漂移。

时间同步及维护模块103根据同一时刻高精度时间源的时间与辅助计数器的时间,计算辅助计数器的时间偏移。

在此基础上,时间同步及维护模块103首先根据辅助计数器的时间漂移确定辅助计数器修正后时间,再利用辅助计数器修正后时间与辅助计数器的时间偏移计算得到高精度的系统时间。

本时间同步及维护模块103可由相应的软件程序来实现,如以嵌入式程序的形式集成在相应的系统中,由系统的cpu模块执行相应的功能。

可见,高精度时间同步系统100,其采用软硬结合的方式,通过高精度时间源模块、辅助计数器模块以及时间同步及维护模块之间的配合实现了全新的高精度时间同步技术,有效解决现有方案所存在的缺陷。

本方案在进行时间同步及维护时,整个过程由时间同步及维护模块103控制完成,其实现过程如下:

(1)获取同一时刻高精度时间源的时间与辅助计数器的时间。

该步骤中,高精度时间源其定期获取原始的高精度时间,然后同步到系统时间并同时通知辅助计数器同步时间;而辅助计数器记录高精度时间源通知时的计数器值。

软件处理中保存最近两次记录的辅助计数器时间,当前获取的为本次,之前获取的为前次。

(2)根据连续两次获取高精度时间源的时间的差值与同一时刻两次获取辅助计数器的时间的差值计算辅助计数器的时间漂移。

连续的是指本次记录的时间是前次记录的时间基础上增加高精度时间源定期同步的时间间隔。

本步骤具体通过如下公式来计算辅助计数器时间漂移:

辅助计数器时间漂移=(本次辅助计数器时间-前次辅助计数器时间)-高精度时间源同步间隔时间。

(3)根据同一时刻高精度时间源的时间与辅助计数器的时间,计算辅助计数器的时间偏移。

本步骤具体通过如下公式来计算辅助计数器的时间偏移:

辅助计数器时间偏移=高精度时间源时间-辅助计数器修正后时间(详见步骤5)。

(4)跳转到步骤(1),定期维护辅助计数器的时间偏移与时间漂移。

(5)当要获取某一时刻系统时间时,通过获取这一时刻辅助计数器的时间,再根据时间偏移及时间漂移转换得到高精度的系统时间。

本步骤中具体通过如下公式来完成高精度系统时间的计算转换:

辅助计数器修正后时间=修正起始辅助计数器时间+(辅助计数器时间-起始辅助计数器时间)-辅助计数器时间漂移*(辅助计数器时间-起始辅助计数器时间)/(高精度时间源同步间隔时间-辅助计数器时间漂移)

高精度系统时间=辅助计数器修正后时间+辅助计数器时间偏移

其中,起始辅助计数器时间=本次辅助计数器时间;

修正起始辅助计数器时间=本次辅助计数器修正后时间。

特别的初始时:

起始辅助计数器时间=0;

修正起始辅助计数器时间=0;

辅助计数器时间漂移=0。

另外,根据需要据此同步的高精度系统时间可以通过相同的同步方案再同步给系统中的其它应用部件200(参见图1),并由软件(时间同步及维护模块)维护这些部件时间轴的偏移和漂移。

以下通过一具体应用实例来进一步说明本高精度时间同步方案。

参见图2,本实例以bcm53003实现cpu系统,u-blox6gps接收器实现高精度时间模块,fpga硬编程逻辑实现辅助计数器,以此实现对bcm56152同步时间,具体实施步骤如下:

本实例方案中采用u-blox6gps接收器实现高精度时间源模块,具体设置方案如下:

(1)u-blox6采用1pps定时通知辅助计数器同步时间。

(2)u-blox6采用uart接口把同步时刻时间信息提供给由bcm53003构成的cpu系统中的软件模块。

本实例方案中用fpga硬编程逻辑辅助实现计数器模块,具体设置方案如下:

(1)fpga硬编程实现ns级的计数器。

(2)fpga硬编程实现记录高精度时间源同步时刻计数器的值。

(3)fpga硬编程实现记录同步bcm56152时刻计数器的值。

本实例方案中在bcm53003构成的cpu系统中安置有时间同步及维护软件,其具体的功能和设置方案如上,此处不加以赘述。

由此,本实例方案首先由安置有时间同步及维护软件的bcm53003构成的cpu系统完成高精度系统时间同步,接着以同样的同步方案对bcm56152同步时间,其过程如下(参见图3):

(1)cpu系统中的时间同步及维护软件获取同一时刻高精度时间源的时间与辅助计数器的时间。

当u-blox6产生1pps时,软件通过标准的uart接口,按u-blox6要求的协议获取gps标准时间;通过标准的i2c接口,按fpga自定义的协议获取辅助计数器的时间。

(2)如果没有连续2次获取有效时间则跳转到步骤(1)。

(3)软件根据两次获取高精度时间源的时间的差值与同一时刻两次获取辅助计数器的时间的差值计算辅助计数器的时间漂移。

以下时间单位均为ns

mistake_its表示起始辅助计数器时间,初始为0;

mistake_ts表示修正起始辅助计数器时间,初始为0;

mistake_ps表示辅助计数器时间漂移,初始为0;

ifpgatime表示这次辅助计数器时间;

fpgatime表示这次辅助计数器修正后时间;

oldifpgatime表示上次辅助计数器时间。

根据步骤(5)计算得到的fpgatime:

mistake_its=ifpgatime;

mistake_ts=fpgatime;

mistake_ps=(ifpgatime-oldifpgatime)–1000000000。

(4)软件根据本次同一时刻高精度时间源的时间与辅助计数器的时间,计算辅助计数器的时间偏移。计算过程如下:

gpssubfpga=gpstime–fpgatime;

其中,gpssubfpga表示辅助计数器时间偏移;

gpstime表示高精度时间源时间。

(5)跳转到(1),定期维护辅助计数器的时间偏移与时间漂移。

(6)当软件要获取某一时刻系统时间时,通过获取这一时刻辅助计数器的时间,再根据时间偏移及时间漂移转换得到高精度的系统时间。具体的计算过程如下:

以下ifpgatime表示某一时刻辅助计数器时间

以下fpgatime表示某一时刻辅助计数器修正后时间

systime表示ifpgatime时刻与gps同步后的时间

fpgatime=mistake_ts+(ifpgatime-mistake_its)-mistake_ps*

(ifpgatime-mistake_its)/(1000000000-mistake_ps);

systime=fpgatime+gpssubfpga。

(7)同步的高精度系统时间可以通过相同的算法同步给系统中的bcm56152,并由软件维护bcm56152时间轴的偏移和漂移,过程如上。

本应用实例中由软件实时计算校正时钟误差,有效解决了时钟芯片精度差,精度易受温度、老化等影响的问题。

再者,本应用实例中在gps信息一直保持有效的情况下能使同步后的误差保持在100ns以内,即使gps短暂失效也有很高的精度保证。

另外需要说明的,本实例中的高精度时间源可以用北斗定位接收器等其他高精度时间源变通实现,辅助计数器模块、cpu模块亦可变通实现,同时对实际的应用模块没有任何限制。

以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

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