本发明属于实时计算技术,涉及一种串行背板总线节点间RTC时钟同步方法。
背景技术:
通过ARINC659串行背板总线连接的节点上,各个节点中央处理单元通过背板总线中断触发执行周期任务。RTC时钟电路能够使得系统提高时钟自主性和可维护性,但如果在每个节点上设置RTC时钟电路,不仅成本高而且时钟一致性不易保证。本发明提出一种方法,仅在一个节点上设置RTC电路,依靠节点之间的串行背板总线链路,实现各个节点RTC时钟的同步。特别地,对于系统中的自监控节点,也能够实现自监控节点的同步。
技术实现要素:
本发明的目的是:为ARINC659串行背板总线互联的节点(其中包括自监控节点)间提供一种RTC时钟同步方法。
本发明的技术方案是:一种串行背板总线的节点间RTC时钟同步方法,其特征在于,所述方法包括以下步骤:
步骤一:主节点的X支路读取RTC电路中的RTC时间值RTCx,同时读取总线时间TB,生成时间基准对;
步骤二:主节点的X支路将时间基准对通过双口RAM发送给主节点上的Y支路;
步骤三:主节点的Y支路从双口RAM接收X支路的时间基准对;
步骤四:主节点的X支路和Y支路向总线输出时间基准对,在指定的时间内T1内等待总线比较器返回发送成功,1ms<=T1<=100ms;
步骤五:总线比较器循环比较X和Y支路发送的时间对,如果都收到且一致,向总线上的所有节点广播该时间基准对;
步骤六:总线上各个节点收到该时间基准对;
步骤七:总线向各个节点中的各个支路发送一致的周期中断信号,触发支路 的周期执行,同时更新各个支路的总线时间Tb,Tb的分辨率为1ms;
步骤八:总线上各节点,包括主节点,收到周期中断信号后,读取该支路的总线时间Tb,计算总线时间差值ΔT=Tb-TB,然后计算本节点的RTC=RTCx+ΔT。
本发明的方法有如下有益效果:同步一致性好,总线上的各个节点的各个支路在每一个帧周期都有一致的RTC时钟,精确度为1毫秒,而且RTC电路少,仅主节点上的X支路需要设计RTC电路。当系统接受外部RTC授时的时候,在更新RTC电路中存储的时间同时,由主节点广播时间基准对即可。
附图说明
图1是总线和节点的示意图。其中,支路X和支路Y对总线的写操作需要经过总线比较器,比较结果一致才能进行总线写操作;对总线的读操作无此限制。总线对各节点中各支路的心跳是微秒级同步的,给各个支路的总线时间寄存器的值是相同的。
具体实施方式
下面以一个主节点和两个节点为例,结合说明书附图对本发明做详细说明。
1)主节点的X支路读取RTC电路中的RTC值,例如2016-01-01 12:00:00,同时读取总线时间寄存器的值,例如1234ms,形成时间基准对为<2016-01-01 12:00:00,1234>。
2)主节点的X支路通过双口RAM将上述时间基准对发送给Y支路。
3)主节点的Y支路也收到同样的时间基准对<2016-01-01 12:00:00,1234>。
4)主节点的X支路和Y支路向总线输出时间基准对,由于输出时刻有差异,当有一个支路已输出而另一个未输出时,总线比较器向支路返回失败,直到两个支路同时输出相同值时返回成功。
5)时间基准对通过总线到达两个从节点的4个支路。
6)总线触发各个支路(包括主节点的2个支路)的中断,为各个支路产生一致的心跳,同时更新各个支路的总线时间寄存器,假设为20000ms;
7)各个支路计算毫秒时间差值ΔT=20000ms-1234=18766ms,本地节点 的RTC值为2016-01-01 12:00:00+18766/1000,即2016-01-01 12:00:18766ms,完毕。