我们通过对TOD信息的提取,获得相应的年、月、日、时、分、秒,并通过连续的2S中断和20ms中断维护精确的GPS时钟,以保持与国际标准时(UTC)同步,见图3。
absMiddle" border="0" onload="return imgresize(this);" onclick="javascript:window.open(this.src);" style="cursor:pointer;"/>
2.GPS时钟算法描述
此算法假设硬件时钟具有不确定性。通过串口可以读取当前时钟并能通过此算法在任何时候均能校正时钟。由于2S中断和1.25ms中断是通过GPS卫星传递的时钟信号解调而来,并且20ms中断是由1.25ms中断合成的,所以我们假定2S中断和20ms中断是可信任的。
定义有穷自动机:
M=(Q,∑,δ,S0,F)
其中Q={Si|当前维护的GPS软件时钟的状态,0≤i≤n};∑={0,1|2S中断中20ms中断个数是100,2S中断中20ms中断个数不是100};δ是转移函数,若事件б∈∑,状态Si∈Q,0≤i≤n,则转移函数δ(Si, б)表示状态机在发生事件б后由状态Si转移到下一个状态。当条件参数值为0时,GPS时钟自动机转入下一个状态Si+1(Sn例外,条件参数值为0时在本状态循环),当条件参数值为1时,GPS时钟自动机转入初始状态S0;GPS时钟自动机初始状态为S0,终态F是Sn。
设S0、S1、S2.......Sn分别表示当前维护的GPS时钟自动机的状态,我们假设GPS时钟自动机初始是不稳定的,则GPS时钟自动机状态转移过程由图4来表示。其中0,1为状态参数转移条件,因为n为某个未定的值,因此转移状态队列用虚线表示。经过一系列的条件转移状态,若满足适当的条件,自动机进入稳定态Sn。
absMiddle" border="0" onload="return imgresize(this);" onclick="javascript:window.open(this.src);" style="cursor:pointer;"/>
在状态S0、S1、S2.......Sn的迁移过程中,在不同状态下分别完成打开GPS时钟、读取GPS时钟、计算GPS时钟、关闭GPS时钟等一系列动作。在状态Sn处,我们已通过串口获得GPS软件时钟,且此软件时钟中20ms中断维护计数器加1(此GPS时钟的精度单位为20ms),保证时钟正常运行;在某个循环周期内通过2S中断重新获取时钟,并对时钟精度进行校正。在正确得到GPS时钟后,通常情况下,时钟处于稳定状态,此时GPS时钟自动机在状态Sn处循环运行。
当时钟自动机条件转移参数值为1时,此状况通常由以下情况造成:
情况一:GPS时钟模块在信号的解析过程中丢失了一个1.25 ms中断;
情况二:GPS时钟模块在信号的解析过程中丢失了一个2S中断;
情况三:其他原因(如多了一个1.25ms中断或多了一个2S中断等情况)。
若状态转移参数值为1,自动机状态将迁移到初始状态S0,并重新获取并校正GPS时钟。每经过一个2S中断,时钟状态将根据条件转移参数值的不同进行状态间的迁移,重新取时钟并进行时钟校正。若GPS时钟的2S中断和20ms中断连续稳定,自动机将处于稳定态Sn,并且由20ms中断继续维护当前的软件时钟,为上层提供持续不断的时钟,时钟校正后更新当前时钟。
此自动机具有如下性质: