目录
1. 初始化阶段(协商出一个master)
在初始化阶段,每个被设置为master的节点都会发送包含了自身时钟参数的SYNC packets,每个接收到SYNC packets的有潜能作为master的节点的软件会将自身的时钟参数与接收到的时钟参数进行比较,如果别人家的时钟更好,该节点的软件就老实地做slave,并且不再发SYNC packets,它会暂时将这个比它更好的节点当作master,它心有不甘,它会不停地接收别人发的SYNC packets,并将它与自己的master比较,如果别人家的更好,它会毫不犹豫地转认新master,最终所有节点会找出来那个最强的节点作为master,其他的节点都是slave,都要听命于这个最强master。
2. 同步阶段(时钟同步和时间同步)
时间同步阶段分为时钟同步阶段和时间同步阶段。
2.1 时钟同步阶段(频率同步,有相位差)
这个阶段,slave根据master的时钟校准自己的时钟。
1)master软件发送SYNC packets后,会设置一个标志位,以通知master硬件记录发送时间,master硬件将该时间放在一个寄存器中,master软件读取该寄存器的值,将其放在Follow_UP packets。
2)slave会捕获SYNC packets,记录自己的接收时间T2,slave之后会捕获Follow_UP packets,从中获取master软件发送SYNC packets的时间T1,slave软件会根据T1和T2计算出master使用自己的时钟时连续的packets之间的时间间隔,然后slave软件以此为目标,调整自己的时钟以达到同样的时间间隔。使用此种方法完成slave时钟校准到master时钟。
图2.1 时钟同步阶段图示
2.2 时间同步阶段(无相位差)
这个阶段,slave实现时间同步,达到完全同步至master。
图2.2 时间同步阶段图示
master软件发送Sync packets,通知master硬件记录发送时间T1,slave软件通知slave硬件记录接收时间T2,master再发送Follow_Up packets,里面会携带T1,slave软件之后会返回Delay_Req packets,slave硬件会记录发送时间T3,master软件接收到Delay_Req packets后,通知master硬件记录接收时间T4,master软件再发送Delay_Response packets,里面会携带T4,slave软件接收到该packets后,它就获取到了T1、T2、T3和T4,根据下面的公式可以计算出slave需要调整的时间,最终实现时间同步。
Slave Adjust Time = - [(T2-T1) - (T4-T3)] / 2
2.3 ACS9521的例子
图 2.3 Block diagram of PTP functions
需要关注几点:
- 当ACS9521工作在slave模式,上图红色框内的目的在于产生path delay,它用于实现slave与master的相位同步(时间同步)。
- 当ACS9521工作在master模式,Frequency and Time Generator产生的PTPoutClk[3:0]与1PPS/1Hz/1PPns[1:0]时间同步,后者与PTPInClk[7:0]中的一个时间同步,所以最终,这三个都是时间同步的。
- PTP Ports工作在MAC层,即是说PTP message在以太网帧中封装,使用下图的格式:
图2.4 PTP Message Over Layer 2
- 时间戳使用Frequency and Time Generator产生的本地时间基准。