欢迎进入上海锐呈电气有限公司官方网站!

服务热线 400-021-0499

首页 > 新闻动态 > 行业新闻

上海IEEE1588时钟的工作原理
日期:2021年05月26日    来源:
大家下午好,下面来聊上海IEEE1588时钟的基本工作原理,即基本同步报文交互过程,其次再来聊聊上海IEEE1588时钟软硬件的实现。

1. Master发送Sync报文,记下该报文的本地发送时间t1;
2. Slave接收到Sync报文,并记下其接收到该报文的本地时间t2;
3. Master有两种方式告诉Slave该Sync报文的发送时间t1;
  1) 将t1时间嵌入到Sync报文中,这需要某种硬件处理以获得高精度;
  2)在后续的Follow_Up报文中发送;
4. Slave发送Delay_Req报文往Master,并记下发送时间t3;
5. Master接收到Delay_Req,并记下该报文到达时间t4;
6. Master发送Delay_Resp报文告知Slave t4。
利用这四个时间可以算出从钟与主钟之间的offset,以及两个钟之间的平均延时,(如上图即为t-ms and t-sm的平均值 )计算的前提是假设主钟到从钟和从钟到主钟的时延是相同的。
Offset=t2-t1
Meanpathdelay=((t2 - t1) + (t4 - t3))/2

上海IEEE1588时钟软硬件的实现

IEEE1588方式表示接收时间戳和发送时间戳的获取,完全是应用软件实现的。例如应用软件识别到接收到了一个1588sync包,再去取当前的系统时间作为t2。这是很差的实现,精度只能达到ms级。图中B方式表示时间戳的获取,在内核中断服务里实现,但同样是中断服务识别接收 到一个1588同步包之后才去获得接收时间;在内核识别到一个1588同步帧要被发送才去取发送时间。无论收发时间戳都不是很准确的,所以只能达到几百us的精度。B、C都是纯软件的实现方式。A是硬件辅助实现。关键是在MAC或者PHY层,接收和发送时,都以帧首界定符SFD为采样点取时间戳,并有机制把时间戳传递给上层软件。phy层的时间戳传递更加困难,因为MDC/MDIO 的带宽有限;所以一些1588phy能把时间戳直接插入到1588 数据包传递上去。因为硬件取到的收发时间戳是非常精确的,之后无论在B层还是C层维护1588状态机都没有关系,后面都能做到10ns的精度。

上海锐呈电气有限公司
sVbkeVNJwHELV9yI+Ft7LhTGmIEaFkycG5cB8O6V/J2REpzt4lu1xO16EcM0UY6bOOzEoChWJKYAxJKipRzKXNRm8EzfSKjXOmCZYs8FYQ0EjX5H26vPXg==