gPTP时间同步流程
gPTP时间同步流程可以按照如下先后顺序来进行,彼此之间存在依赖关系:
最佳主时钟选择原理
在gPTP时间同步协议中可能在同一域内存在多个可用的全局时间源,就需要通过一种方式来选择全局最佳主时钟,这种方法被称为Best Master
Clock Algorithm,简称BMCA算法。
系统上电之后,所有设备都可以通过一条报文来参与主时钟的竞选,报文中包含各个设备的时钟信息,每个设备都会主动比较自身与其他节点时钟的信息,竞选失败的将退出,如此反复,直至最后选择最佳主时钟。
针对车载以太网,无需通过考虑最佳主时钟选择,车载以太网属于静态网络,均已提前设定好。
频率同步原理
我们知道主从时钟底层都是通过晶振驱动来进行计时,但是不可避免的是晶振会受到外部温度,老化等因素影响进而产生时钟偏移。
因此为了更为精确地保证主从时钟的同步,因此需要将主从时钟之间的晶振频率差异考虑在内,进而解决主从端口晶振精度不准带来的时间同步误差。
计算方法如下图3所示:
图3 主从时钟频率同步测量原理
基于图3中的两个周期性的sync报文与follow-up报文,其中followup报文传输的是sync报文在主时钟节点发送时刻的时间戳,考虑主从时钟节点对于总线传输的延时都是固定的,T1,T2,T3,T4都是物理层获取的时间戳,因此主从时钟节点的时钟偏差可以通过如下公
式来体现:
频率同步计算公式
Path延时时间测量原理
从时钟节点为了能够跟主时钟同步,除了上述主从时钟节点的时钟频率偏差带来的差异外,还存在一个非常重要的延时即以太网总线传输延时需要进行精确测量,才能够保证时间同步的精度,测量原理如下图4所示:
图4 gPTP延时时间测量原理
注意,Pdelay_Req报文发起方既可以是Time Master也可以是Time Slave,本文只不过以Time Slave为例。
延时时间Pdelay time的测量具体步骤如下:
S1:Time Slave节点发送Pdelay_Req报文,Time Slave节点记录该报文发送时刻的时间戳T1;
S2:Time Master记录MAC层收到Pdelay_Req报文的时间戳T2;
S3:Time Master将上述T2时间通过Pdelay_Resp报文发送至Time Slave,同时Time
Master记录发送该报文的时间戳T3,Time Slave记录收到该报文的时间戳T4;
S4:Time Master将上述T3时间通过Pdelay_Resp_Follow_Up报文发送至Time Slave,当Time
Slave收到该报文时便知道了T1,T2,T3,T4时间戳;
考虑到主从时钟之间的时钟频率偏差以及主从时钟之间的延时对称原理,因此Pdelay time的计算方法如下所示:
Pdelay计算公式
值得注意的是上述公式中如果主从时钟频率一致,那么此时P=1。
时间同步原理
基于上述计算出来的总线延时时间Pdelaytime以及主从时间频率的比值,也被称为NeighborRateRatio,那么便可以完成从时钟节点与主时钟之间的同步,其同步原理如下图5所示:
图5 gPTP时间同步原理
如上图5所示,基于gPTP的时间同步协议通过SYNC报文与FollowUp报文来实现同步,同步流程如下:
S1:Time Master发送SYNC报文,该报文如果是单步模式,那么就需要携带T1时间戳信息,如果是双步模式,该报文无需发送任何有效信息;
S2:Time Slave收到SYNC报文之后,MAC层会记录对应时刻的时间戳T2;
S3:若基于双步模式,Time Master再发送Follow up报文,该报文中携带着SYNC报文外发时刻的时间戳T1;
基于上述流程,我们便可以得到从时钟节点与主时钟节点的时间同步关系,设某时刻Time Master的全局时间为T6,对应此时刻的Time Slave本地时间为T5,因此时间同步关系如下:
其中Pdelay time通过上述延时时间测量过程得到,最终得到的Time Master与Time Slave的同步时间关系。
注意:gPTP时间同步过程可分为单步模式与双步模式,单步模式(onestep)对以太网PHY硬件要求较高,需要能够精准获取发送时刻的时间,因此普遍采用双步模式来完成时间同步,以便降低集成难度。
对于AUTOSAR规范中定义的gPTP时间同步协议而言,默认采用双步模式(two step)。