作者:Dr. Jiang Wu and Robert Peloquin
1588年推出的IEEE 2002标准定义了在网络上同步分布式时钟的协议。它正在成为许多不同应用的首选时钟同步方法,包括测试和测量、电信和多媒体流。这种标准化的时钟同步方法具有成本效益,支持异构系统,并提供纳秒级同步精度。
本文介绍了原始 IEEE 1588-2002 标准以及作为更新的 IEEE 1588-2008 版本的一部分所包含的增强功能。针对IEEE 1588的专用硬件支持已集成到ADSP-BF518中1Blackfin嵌入式处理器,因为IEEE 1588在其某些目标应用中的重要性日益增加。本文概述了其功能,然后举例说明了ADSP-BF518处理器解决方案获得的时钟同步性能结果。
现在 几点钟?
系统通常需要使用本地振荡器来保持自己的时间感。图 1 显示了硬件和软件如何结合以在系统内生成时间信息。
图1.本地计时。
此时信息可由系统内的硬件和软件资源使用。在硬件中,一个或多个物理时钟信号(时钟输出)来自振荡器的时钟,可用于驱动或触发系统的其他部分。软件中维护的时间通常称为系统时间。系统时间可以用时钟脉冲数或秒/纳秒表示法表示。系统软件从振荡器时钟脉冲的数量及其频率信息中得出时间,并提供应用程序编程接口(API)功能,软件的其他部分使用该函数来检索和设置时间。如果需要绝对时间,则提供的时间与预定义的纪元相关联,该纪元标识参考时间点。
同步您的手表
许多应用需要两个独立的器件才能以同步方式运行。如果每个器件仅依靠自己的振荡器,则各个振荡器的特定特性和工作条件之间的差异将限制时钟同步运行的能力。解决这些限制的一些可能的简单解决方案包括:
所有器件都可以使用单个物理振荡器。这仅适用于近距离的分布式系统;高频时钟信号无法可靠地长距离传输。
所有器件都可以使用具有几乎相同特性的振荡器。这种方法是不切实际的,因为很难获得几乎相同的振荡器并防止它们随着时间的推移而漂移。更重要的是,每个振荡器将受到不同的工作条件的影响。
如果所有设备都通过以太网等通信网络互连,则它们可以通过网络交换时间消息,将其各个时钟动态调整为单个“主”时钟。使用网络时间协议(NTP)(传统的时间同步协议),系统中的每个设备都会根据从NTP时间服务器检索的时间信息调整其时钟。但是,该协议只能实现毫秒量级的同步精度。
IEEE 1588 定义了能够实现纳秒级同步精度的较新协议。以下各节将讨论如何实现此级别的时钟同步。
IEEE 1588 的作用
IEEE 1588 标准定义了用于时间同步设备的协议,这些设备地理位置分散,但通过某种形式的通信技术(例如以太网)互连。通过在设备之间交换定时消息,它们可以保持相同的绝对系统时间,以秒和纳秒表示。
实现此目标的一种直观方法是让具有“最佳”(最准确)时钟并被指定为主时钟设备的一个设备将其时间广播到其他设备。其他设备将调整其时间以匹配主时钟发送的时间。但是,此解决方案有几个限制:
主时钟设备不能以无穷小的间隔广播时间,因此“从”时钟设备必须使用自己独立的“劣质”振荡器来插值来自主时钟设备的两次广播之间的时间点。这会导致在主时钟更新之间的时间内同步降级。
广播路径上不可避免地存在延迟,其幅度取决于通信技术,例如,物理信号沿着电线从一个设备传输到另一个设备所需的时间。此延迟导致主时钟和每个从时钟之间产生额外的偏移。
主时钟设备和每个从时钟设备之间的广播路径之间的差异将进一步降低各个从时钟设备之间的同步。
IEEE 1588 指定了一种协议,该协议通过测量路径延迟来解决第二个和第三个问题。它还允许调整从时钟以匹配主时钟的节奏,以缓解第一个问题。在可能的情况下,可以通过使用更小的广播间隔和更高质量的振荡器来进一步减少第一个问题。
IEEE 1588 如何测量通信延迟
IEEE 1588-20022定义四条消息来测量正向(主站到从站)和后向(从站到主站)路径的通信延迟:同步、跟踪、延迟Req和延迟Resp。较新版本 IEEE 1588-2008,3提供了进一步的机制来测量具有三个附加消息的对等延迟:PdelayReq、PdelayResp 和 PdelayRespFollowup。
在这些消息中,Sync、DelayReq、PdelayReq 和 PdelayResp,即所谓的事件消息,在它们离开并到达设备时必须带有时间戳(记录本地时间)。有两种方法可以为数据包添加时间戳:
当消息由软件处理时,会出现软件时间戳。时间戳通常发生在消息的接收/发送中断服务例程 (ISR) 中,时间戳是系统时间的当前值。
当消息实际到达或离开设备时,将发生硬件时间戳。时间戳操作由硬件执行,硬件维护自己的连续时间信息。
在 IEEE 1588 中,这两种时间戳方法都是可以接受的,但硬件时间戳可以提供明显更好的精度,如下所示。
从主时钟设备到从时钟设备的延迟
消息同步和跟进由主时钟设备发送;从时钟设备负责接收它们并计算从主时钟设备到从时钟设备的通信路径延迟。
在图 2 中,在时间 Tm1 处,主时钟设备软件读取当前本地系统时间(Tm1,软件时间戳),将其插入同步消息,然后将消息发送出去。该消息稍后离开主时钟设备,即硬件时间戳 Tm1'。它以 Ts1'(从时钟设备本地时间)到达从时钟硬件,并在稍后的时间 Ts1 由从时钟设备软件接收。软件将读取硬件时间戳以获取 Ts1'。如果没有通信延迟,Ts1' 应等于 (Tm1' + Tms),其中 Tms 是主时钟和从时钟之间的时间差。该协议的最终目标是补偿这种差异。
图2.测量主时钟和从时钟设备之间的通信延迟。
发送同步消息后,主时钟设备软件通过时间戳单元读取同步消息的离开时间 Tm1',将其插入后续消息,并在 Tm2 发送该消息。此消息由 Ts2 的从时钟设备软件接收。此时,从时钟设备软件有两个时间,Ts1'(同步到达时间)和Tm1'(同步出发时间)。主从路径延迟Tmsd由公式1确定。
(1) |
从时钟设备到主时钟设备的延迟
DelayReq 消息由从时钟设备发送,DelayResp 消息由主时钟设备发送作为响应。通过这些消息,从时钟器件可以计算从时钟器件到主时钟器件的通信路径延迟。
在时间Ts3(图3),从时钟设备软件读取当前本地系统时间(Ts3),将其插入DelayReq消息,然后将消息发送出去。发送消息后,从时钟设备软件读取时间戳以获取消息的离开时间Ts3',并等待来自主时钟设备的响应。
图3.测量从主通信延迟。
DelayReq 消息稍后到达主时钟设备 Tm3',并由主软件在 Tm3 进行处理。然后,软件读取时间戳以获取到达时间Tm3',将其放入DelayResp消息中,并发送到Tm4的从时钟设备。当从时钟器件软件在Ts4处收到DelayResp消息时,它可以提取时间Tm3',并通过公式2计算从机到主站延迟Tsmd。
(2) |
在等式1和等式2中,都有一个未知变量,即主从时差Tms。因此,不可能单独获得Tmsd或Tsmd。但是,如果做出通常可接受的假设,即通信路径是对称的
(3) |
—IEEE 1588正常工作的关键假设—然后,将等式1和等式2相加得到
(4) |
所有这些计算都是由从时钟设备执行的,因为正是它们寻求将自己与主时钟设备同步。它们从主时钟设备的后续消息中获取 Tm1',从其 Rx(接收)时间戳中获取 Ts1',从其 Tx(传输)时间戳中获取 Ts3',从主时钟设备的 DelayResp 消息中获取 Tm3'。
如何计算从时钟和主时钟之间的时间差
一旦获得通信路径延迟Td,就可以使用公式1或公式2轻松计算从主时间差,如公式5和公式6所示。
(5) | |||
(6) |
如何调整从时钟设备的时间
由于已知与主时钟的时间差,每个从时钟设备都需要调整自己的本地时间以匹配主时钟。这项任务有两个方面。首先,从时钟设备需要通过添加时差来调整其绝对时间,使其时间与此时的主时钟时间完美匹配。然后,每个从时钟设备需要调整其时钟频率以匹配主时钟的频率。我们不能仅仅依靠绝对时间,因为时间差只适用于某个时期,可以是正数,也可以是负数;结果,调整将使从时钟时间跳跃甚至倒退。因此,在实践中,调整需要两个步骤。
如果时差太大,例如大于一秒,则应用绝对时间调整。
如果时间差很小,则对从时钟应用频率的百分比变化。
一般来说,系统成为一个控制回路,其中主时钟时间是参考命令,从时钟时间是跟踪主时钟时间的输出,它们的差异驱动可调时钟。许多IEEE 1588实现常用的PID控制可用于实现特定的跟踪性能。图4显示了此控制环路。
图4.IEEE 1588 控制回路。
点对点延迟
修订版IEEE 1588-2008引入了一种测量路径延迟的新机制,称为点对点(P2P)延迟。相比之下,前几节中讨论的主从机制是端到端 (E2E) 延迟。在支持 IEEE 1588-2008 的网络中,主时钟设备可以直接或通过多个跃点(级)链接到从时钟设备。E2E 延迟实际上是从主时钟设备到从时钟设备的总延迟,包括两者之间的所有跃点。但是,P2P 延迟仅限于两个直接连接的设备。路径上的总体延迟是所有跃点的 P2P 延迟之和。从保持路径对称性的角度来看,P2P机制提供了更好的精度。
如前所述,IEEE 1588-2008 包括三个附加消息,PdelayReq、PdelayResp 和 PdelayRespFollowup,用于测量 P2P 延迟。它们的工作方式与上述类似。参考文献 3 提供了更多详细信息。
影响同步性能的因素
精心设计的IEEE 1588器件能够实现高精度的时钟同步,但重要的是要认识到直接影响性能的关键因素。其中一些包括:
路径延迟:如前所述,IEEE 1588的路径延迟测量假设通信路径延迟是对称的,即正向路径的传输延迟等于反向传输延迟。此外,延迟测量期间不应变化。测量过程中延迟的变化会产生不对称和延迟抖动,直接影响同步精度。虽然延迟对称性和抖动无法在 IEEE 1588 设备边界之外进行控制,但如果测量基于硬件时间戳,则可以在器件内改善路径对称性和抖动。硬件时间戳消除了由于中断延迟、上下文切换和线程调度而导致的软件时间戳导致的显著抖动。
时钟的漂移和抖动特性:主时钟的频率和相位代表跟踪控制系统的输入,从时钟是控制对象。主时钟的任何时变行为都会对控制系统造成干扰,并导致稳态和瞬态误差。因此,漂移和抖动较小的时钟将提高同步精度。
控制法:控制方法确定在从时钟的调整中如何纠正从时钟设备时间的误差。包括建立时间、过冲和稳态误差在内的控制律参数将直接影响时钟同步性能。
时钟的分辨率:如图1所示,本地时间的分辨率由时钟的频率决定;时间的最小增量是时钟信号的一个周期。IEEE 1588 协议的运行时间为 IEEE 1-1588 的分辨率为 2002 ns,2–16适用于 IEEE 1588-2008。时钟为 2 是不切实际的16(!)千兆赫(甚至 1 千兆赫)。本地时钟的量化预计将影响本地时间测量和控制的精度。
发出同步消息的频率:从时钟的更新频率最终会影响同步的精度。较长的周期通常会导致在下一次同步时观察到较大的时间误差,因为时间误差是从时钟频率误差的积分累积。
进行延迟测量的频率:延迟测量定期执行,间隔基于相邻样本之间延迟不会发生显着变化的预期。如果 IEEE 1588 网络遇到较大的延迟变化,则增加延迟测量频率将提高时钟同步性能。
哪个是主时钟?
在考虑了如何准确确定主时钟设备和从时钟设备之间的时间差之后,一个相关的问题是如何确定在可能数百个互连设备中哪个设备将作为主时钟。
IEEE 1588 定义了一种称为最佳主时钟 (BMC) 算法的方法来选择主时钟设备。对于这种方法,IEEE 1588 网络的每个设备都维护一个数据集,描述其本地时钟的性质、质量、稳定性、唯一标识符和偏好。当设备加入IEEE 1588网络时,它将广播自己的时钟数据集,并从所有其他设备接收数据集。使用所有参与设备的数据集,每个设备都运行相同的BMC算法来决定主时钟及其自己的未来状态(主时钟或从时钟)。由于相同的算法由同一数据上的所有设备独立执行,因此所有设备都会得出相同的结论,而无需它们之间进行任何协商。有关 BMC 算法详细信息的详细信息,请参阅参考文献 2 和 3。
ADSP-BF518处理器对IEEE 1588的支持
ADI公司的ADSP-BF518处理器最近加入了ADI公司的Blackfin DSP系列。与其前身ADSP-BF537一样,4它具有内置的以太网媒体访问控制器(EMAC)模块。它支持IEEE 1588标准中的EMAC功能的能力通过附加的TSYNC模块以及支持以太网上各种IEEE 1588应用的额外功能进行了扩展。图 5 显示了 TSYNC 模块的框图。ADSP-BF51x Blackfin处理器硬件参考提供了更多信息。5
图5.ADSP-BF518处理器TSYNC模块框图。
数据包检测
ADSP-BF518处理器可以检测所有IEEE 1588事件消息(包括传入和传出数据包)并提供硬件时间戳。IEEE 1588 系统的精度在很大程度上取决于事件消息时间戳的准确性及其采用的位置,因为这些会影响对路径延迟的对称性和恒定性的要求。ADSP-BF518的TSYNC模块持续监控MAC控制器与以太网物理接口收发器(PHY)之间的硬件接口,即媒体无关接口(MII),并在检测到事件消息时生成硬件时间戳,该功能可提高ADSP-BF518的同步精度。
事件消息的检测,设计为可编程的,基本上可以配置为支持 IEEE 1588-2002(默认)或 IEEE 1588-2008。此外,这种可编程性允许支持未来版本的IEEE 1588以及其他需要时间戳的通用协议,包括配置为对进出处理器的每个以太网数据包进行时间戳。
灵活的时钟源
本地时钟的属性对于 IEEE 1588 系统的性能非常重要。为了满足各种应用的要求,ADSP-BF518处理器为本地时钟源提供了三种选择:系统时钟、外部时钟或以太网时钟。如果应用程序有特定的时钟要求,它可以选择外部时钟并提供自定义时钟源。如果主时钟设备和从时钟设备背靠背连接,以太网时钟选项可以提供良好的精度,因为时钟是从以太网线路推断的,并且两个设备在同一时钟上运行。一般应用程序可以将处理器的系统时钟作为其时钟源。
选定的源时钟也由 TSYNC 模块驱动,作为处理器的输出,通过特定的引脚 Clockout,供系统的其他部分用于本地时间信息。
缴费灵输出
每秒脉冲数 (PPS) 信号是时间信息的物理表示。它标称是一个 1 Hz 信号,每一秒转换一个脉冲。它可用于控制本地设备或在网络故障时提供辅助时间通道。它也可以用于测试。两个器件的PPS信号之间的相位差是其时间偏移的物理测量值。
ADSP-BF518处理器提供灵活的PPS输出。它使用可编程的开始时间 (PPS_ST) 和周期 (PPS_P) 来生成脉冲在 (PPS_ST + n × PPS_P 发生频率的信号,其中 n = 1, 2, 3...在基本用法中,只需将PPS_P设置为 1 秒即可创建 PPS 信号,并将PPS_ST到任何未来的时刻作为秒的倍数。这种PPS输出能力允许将其用作生成具有完全可编程频率和启动时间的周期信号的参考。
辅助快照
某些应用程序可能需要为标志信号切换指示的特定事件添加时间戳。ADSP-BF518的TSYNC模块通过提供辅助快照功能(使用专用引脚接受外部标志)来促进这一请求。切换标志将触发模块在时间戳寄存器中捕获当前本地时间,以供软件访问。
报警
如果应用程序需要在特定时间执行任务,则可以利用TSYNC模块的告警功能。此功能允许设置绝对本地时间,以便在时间到来时触发处理器中断。然后,软件可以为中断提供服务并运行任务。
可调时钟
TSYNC 模块的可调时钟是基于加法的时钟。如图6所示,它采用固定的输入时钟信号并输出输入的“脉冲窃取”版本:在每个输入时钟处将加法值添加到累加器中,每次累加器溢出时,进位驱动本地时间计数器,该计数器根据计数的脉冲数给出本地时间。本地时钟的频率可以通过更改加法来调整,因为加法决定了累加器溢出的频率,因此本地时间计数器增加的频率。如果输入时钟的频率为F在,并且加法的值为 A,则本地时钟频率为
(7) |
图6.基于附加的可调时钟。
在ADSP-BF1588处理器上实现IEEE 518
完整的IEEE 1588-2008兼容系统基于ADSP-BF518处理器构建,如图7所示。
图7.IEEE 1588在ADSP-BF518上的实现。
处理器的 TSYNC 模块检测传入和传出的 IEEE 1588 消息,并使用硬件为事件消息添加时间戳。由IXXAT(IXXAT Automation GmbH)提供的IEEE 1588堆栈软件实现了标准要求的消息交换协议。它使用 TSYNC 驱动程序来读取、写入和调整 TSYNC 时钟,并使用 MAC 控制器驱动程序在以太网 MAC 层(开放系统互连模型的第 2 层)上发送和接收消息。它还实现了P2P延迟测量的控制律和滤波。以太网 PHY 是美国国家半导体公司 DP83848,6 因其低抖动延迟特性而被选中。为简单起见,选择处理器的系统时钟 (80 MHz) 作为 TSYNC 模块时钟源。
图8.ADSP-BF1588上IEEE 518系统的从时钟误差直方图。
图8显示了该器件的时钟同步性能,作为两个相同的ADSP-BF518 IEEE 1588系统之间测量误差的直方图。在大约 6938 秒的时间内进行了 1700 次测量。得到的平均误差为0.015 ns,标准差为12.96 ns。此测试使用了 0.25 秒的同步消息间隔。
结论
IEEE 1588 标准为同步分布式时钟提供了一种高精度、低成本的方法。虽然 IEEE 1588 没有明确要求硬件支持,但硬件辅助消息检测和时间戳对于实现最高级别的同步精度至关重要。ADSP-BF518处理器为IEEE 1588-2002和IEEE 1588-2008提供硬件支持,包括可支持各种应用的特性。通过使用ADSP-BF1588处理器和IXXAT IEEE 518-1588协议软件实现IEEE 2008技术,已经证明了高精度时钟同步。
审核编辑:郭婷
-
处理器
+关注
关注
68文章
19135浏览量
228955 -
嵌入式
+关注
关注
5064文章
18992浏览量
302590 -
振荡器
+关注
关注
28文章
3810浏览量
138844
发布评论请先 登录
相关推荐
评论