IEEE1588精确网络时钟同步协议简介

[首发于cnblogs,转载请注明。作者:byeyear/告别年代    Email:east3@163.com]

在阅读本文之前,假定您对以太网和NTP有一定的了解。

至少您应该大致理解以下名词或缩写:

NTP,MAC,PHY,TimeStamp

IEEE1588是一个主要运行于以太网的网络时钟同步协议,主要目标是在局域网范围内实现高于微秒级的同步精度。与常见的时钟同步协议NTP相比,区别在于下面几点:

1. TimeStamp是在硬件级打上去的,这样相比于NTP就没有了App发起packet到硬件将packet发送出去之间的延迟,所以1588能做到很高的精度。TimeStamp可以在MAC层打,也可以在PHY层打。打在MAC层实现较方便,但精度不如打在PHY层,因为在MAC和PHY之间存在着数据抖动。一般来说,做在MAC层能实现100ns以内的同步误差,打在PHY层能实现25ns以内的同步误差。但是也正因为在硬件层打TimeStamp,所以实现1588要求修改ETH硬件,并修改底层协议栈,实现起来较复杂。顺便说下,协议本身并不强制在硬件级打TimeStamp,纯软件的实现也是存在的,但其同步精度无法保证,一般将纯软件实现作为验证协议栈的一种手段,而不用于现场环境。

2.  IEEE1588使用广播或组播传递协议包,这就限制了1588只能用在支持广播或组播的网络上。

3.  IEEE1588没有专门的时间服务器,但存在着主从层次结构。网络上运行该协议的设备通过协议包的交换确立主从层次结构,并在网络拓补发生改变时重新确立主从层次。

IEEE1588协议有两个版本,分别是早期的1588-2002和最新的1588-2008。协议包不兼容。不过现在支持该协议的设备都使用了新版协议,所以兼容性基本上不是问题。

该协议也被接纳为IEC标准:IEC-61588。

我们国家有该协议的翻译稿:

GB/T 25931-2010 网络测量和控制系统的精确时钟同步协议

在后面的介绍中,若不作特别说明,均针对1588-2008。

实际上,1588本身并不限制仅用于以太网,只要是支持广播或组播的网络(比如CAN/485等),理论上都可以运行该协议。不过目前市场上能看到的支持该协议的硬件几乎都是以太网的,所以我们的介绍也将以Ethernet为例子。

 

支持1588协议的设备在规范中称为“时钟”,下文中我们同样用“时钟(clock)”来指代支持1588协议的设备。

1588拓补结构

当1588运行于以太网时,虽然以太网本身禁止环路,但1588为了能在非以太网环境下运行,协议本身也能够检测到环路,并在逻辑上将其断开。对于非以太网环境,我们暂时不去关注它。对使用以太网介质的1588同步系统来说,一条同步链路的两端分别是master clock和slave clock;master clock周期性发出携带自身时钟信息的同步报文,slave提取报文中的时钟信息,并利用该信息来不断修正自身的时钟。最简单的情况是,整个系统由两个网络终端构成:

|M| -------------------- |S|

Master和Slave分别是两个终端。

如果系统中存在两个以上的网络终端,那么需要一台支持1588的交换机:

|----M----M----M----M----|

     |    |    |    |

    |S|  |S|  |S|  |S|

上图是一台4端口1588交换机,每个端口上都挂一台终端。交换机的每个端口都是master,所有的终端都是slave clock。交换机的每个端口都同步到交换机内部的同一个时钟,所以4个端口之间是彼此同步的,而slave又分别和与其相连的交换机端口同步,于是最终4个slave也是同步的。

但也有可能挂在交换机上的某个终端是master:

|----S----M----M----M----|

     |    |    |    |

    |M|  |S|  |S|  |S|

此时4个网络终端中的一个是master,与之相连的交换机端口是slave。交换机将自身时钟同步到终端M,并将同步后的自身时钟信息用同步报文发送给其余三个终端。这样,交换机同步到终端M,而三个S终端又同步到交换机,于是4个终端仍然是同步的。此时,终端M是同步的源头。

当然,交换机是可以级联的,这样就形成了Tree结构。Tree的root节点我们称其为Grandmaster,所有的下层节点最终都将同步到Grandmaster。Grandmaster可以是

1)支持1588的交换机,此时交换机的每个端口都是master;

2)网络终端,该网络终端或者连接到交换机,或者连接到另一个终端

    a. 如果连接到另一个终端,那么另一个终端就是slave;

    b  如果连接到交换机,那么该交换机与之相连的端口是slave,其余端口是master。

 

image

上图引自IEEE1588-2008。图中clock-1是grandmaster,也是Tree的root。

我们将在下面一篇文章中讲述上图中的两个名词:Ordinary clock,Boundary clock,以及没有出现在图中但与之相关的E2E Transparent clock和P2P Transparent clock。

  • 5
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
IEEE 1588是一种用于网络系统中实现精确时钟同步协议。基于STM32F107VC的IEEE 1588精密时钟同步的分析与实现可以如下描述: 首先,STM32F107VC是一款高性能的32位微控制器,具有强大的计算能力和丰富的外设接口。它的时钟系统非常精确,并且能够提供高精度和稳定的时钟信号。 为了实现IEEE 1588精密时钟同步,需要在STM32F107VC上集成一个IEEE 1588协议栈,该协议栈负责处理网络中的时钟同步通信。在协议栈的基础上,还需要编写相应的应用程序,以实现更高级别的时钟同步功能。 在具体的实施过程中,首先需要将STM32F107VC连接到网络中,可以使用以太网接口或其他网络接口进行通信。然后,通过软件或硬件实现IEEE 1588的相关协议,并在STM32F107VC上运行。 在STM32F107VC上实现IEEE 1588精密时钟同步时,需要注意以下几个关键点: 1. 必须确保时钟信号的精确度和稳定性,可以使用STM32F107VC提供的时钟源,并进行相应的校准和校验。 2. 需要实现IEEE 1588协议中的时钟同步功能,包括时钟同步开始和结束的消息传输、时钟同步周期的计算以及时钟差的估计和调整。 3. 在实现过程中,要注意处理网络延迟、抖动和时钟漂移等因素对时钟同步的影响,选择合适的算法和策略来调整时钟信号,以保证同步精度。 通过以上的分析与实现,基于STM32F107VC的IEEE 1588精密时钟同步可以有效地实现,从而能够在网络系统中提供精确且可靠的时钟同步功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值