从时钟设备到主时钟设备的延迟
从时钟设备发送DelayReq消息,主时钟设备予以响应发送DelayResp消息。利用这些消息,从时钟设备可以计算从时钟设备到主时钟设备的通信路径延迟。
在时间点Ts3(图3),从时钟设备软件读取当前本地系统时间(Ts3),将其插入DelayReq消息中,并送出该消息。
图3. 测量从主通信延迟 DelayReq消息在稍后的时间点Tm3'到达主时钟设备,由主时钟设备软件在时间点Tm3处理。然后,该软件读取时间戳以获取到达时间Tm3',将其插入DelayResp消息中,并在时间点Tm4发送至从时钟设备。当从时钟设备软件在时间点Ts4收到DelayResp消息时,它可以提取时间Tm3',并通过公式2计算从主通信延迟Tsmd。
| | (2) | 公式1和公式2中均有一个未知变量,即主从时间差Tms,因此无法单独求得Tmsd或Tsmd。但是,如果我们合理地假设通信路径是对称的,即
| | (3) | ——这是IEEE 1588成立的关键假设——那么,将公式1与公式2相加可以得出:
| | (4) | 由于从时钟设备寻求与主时钟设备同步,因此所有这些计算均由这些设备执行。从时钟设备从主时钟设备的Followup消息获得Tm1',从其Rx(接收)时间戳获得Ts1',从其Tx(发送)时间戳获得Ts3',并通过主时钟设备的DelayResp消息获得Tm3'。
如何计算从时钟与主时钟的时间差
一旦获得通信路径延迟Td,便可利用公式1或公式2轻松计算从时钟与主时钟的时间差,如公式5和公式6所示。
| | (5) |
| | (6) | 如何调整从时钟设备的时间
知道与主时钟的时间差之后,各从时钟需要调整自己的本地时间,与主时钟保持一致。该任务包括两方面。第一,从时钟设备需要加上时间差以调整绝对时间,使其时间在此刻与主时钟时间完全一致。第二,从时钟设备需要调整各自的时钟频率,与主时钟的频率保持一致。我们不能单靠绝对时间,因为时间差仅在一定期间内应用,可能是正值,也可能是负值;调整的结果是从时钟时间向前跳跃或向后倒退。因此,在实际操作中,调整分两步执行:
如果时间差过大,例如1秒以上,则应用绝对时间调整。 - I如果时间差较小,则使从时钟的频率改变某一百分比。
一般而言,该系统会变成一个控制环路,其中主时钟时间是参考命令,而从时钟时间是跟踪主时钟时间的输出,二者之差驱动可调整时钟。可以使用PID控制来实现特定跟踪性能,这是许多IEEE 1588实施方案常用的方法。图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-2002支持1 ns的时间分辨率,IEEE 1588-2008则支持2–16 ns的时间分辨率。216 (!) GHz(甚至1 GHz)的时钟是不现实的。本地时钟的量化会影响本地时间测量和控制的精度。 Sync消息的发送周期:从时钟的更新频率最终会影响同步精度。因为时间误差是从时钟频率误差的整体累积值,所以发送周期越长,下一个Sync所观察到的时间误差一般会越大。 - 延迟测量的频率:以预期相邻采样点之间延迟没有明显变化的间隔时间,定期执行延迟测量。如果IEEE 1588网络的延迟变化较大,则增加延迟测量频率可以改善时钟同步性能。
哪个是主时钟?
在考虑如何精确确定主时钟设备与从时钟设备之间的时间差之后,下一个相关问题是:在成百上千台互连设备中,如何确定哪一台设备充当主时钟。
IEEE 1588定义了一种称为“最佳主时钟”(BMC)算法的方法,用于选择主时钟设备。这种方法要求IEEE 1588网络的每台设备均提供一个数据集,描述其本地时钟的性质、质量、稳定性、唯一识别符和首选设置。当一台设备加入IEEE 1588网络时,它会广播其时钟的数据集,并接收所有其它设备的数据集。利用所有参与设备的数据集,每台设备均运行同一BMC算法,以确定主时钟及其自己的未来状态(主时钟或从时钟)。由于所有设备均采用同样的数据独立执行同一算法,因此结论将会相同,设备之间不需要进行任何协商。有关BMC算法的更多详细信息,请看参考文献2和3。
ADSP-BF518处理器支持IEEE 1588
ADI公司Blackfin DSP系列最近新增一款产品:ADSP-BF518处理器。像前款产品ADSP-BF537,4一样,该处理器内置“以太网媒体访问控制器”(EMAC)模块。它还具有TSYNC模块,进一步扩展了支持IEEE 1588标准EMAC功能的能力;还提供其它额外特性,可支持以太网的各种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输出
“每秒脉冲”(PPS)信号是时间信息的物理表示。它名义上是一个1-Hz信号,在每个1秒转换时间发出一个脉冲。它可用来控制本地设备,或者在发生网络故障时提供辅助时间通道。它也可以用于测试。两台设备的PPS信号之间的相位差是二者时间偏移的物理量度。
ADSP-BF518处理器提供灵活的PPS输出。它利用可编程“开始时间”(PPS_ST)和周期(PPS_P)产生一个在时间(PPS_ST + n × PPS_P)发出脉冲的信号,其中n = 1, 2, 3…。基本用法是将PPS_P设置为1秒,并将PPS_ST设置为用秒数表示的将来任一时刻,从而产生PPS信号。参考基本用法,可以利用这种PPS输出功能产生具有可编程频率和开始时间的周期性信号。
辅助快照
一些应用可能需要按照标志信号切换指示,给某一事件加上时间戳。ADSP-BF518的TSYNC模块通过辅助“快照”功能,使用一个专用引脚来接收外部标志,以便实现这种请求。切换标志将触发该模块捕捉时间戳寄存器中的当前本地时间,供软件访问。
报警
如果应用需在特定时间执行一项任务,则可以用TSYNC模块的“报警”功能。这项功能可以设置本地绝对时间,到达该时间时,就会触发处理器中断。然后,软件便可利用中断执行任务。
可调时钟
TSYNC模块的可调时钟是一种“基于加数”的时钟。如图6所示,它获得一个固定输入时钟信号,并输出该输入的“盗取脉冲”版本信号:对于每个输入时钟,“加数”的值增加到累加器中,并且每次累加器溢出时,进位位就会驱动“本地时间计数器”,从而产生以脉冲计数值表示的本地时间。更改加数可以调整本地时钟的频率,因为加数决定累加器溢出的频率,从而决定本地时间计数器递增的频率。如果输入时钟的频率为Fin,且加数的值为A,则本地时钟频率为:
| | (7) |
图6. 基于加数的可调时钟 采用ADSP-BF518处理器的IEEE 1588实施方案
ADSP-BF518处理器上构建了一个完整的IEEE 1588-2008兼容系统,如图7所示。
图7. 采用ADSP-BF518的IEEE 1588实施方案 处理器的TSYNC模块检测送入和送出的IEEE 1588消息,并通过硬件给事件消息加上时间戳。由IXXAT (IXXAT Automation GmbH)提供的IEEE 1588协议栈软件可实现标准所要求的消息交换协议。它利用TSYNC驱动程序读取、写入并调整TSYNC时钟,并使用MAC控制器驱动程序在以太网MAC层(开放系统互连模型的第二层)发送和接收消息。它还可实现P2P延迟测量的控制法则和过滤。以太网PHY选择具有低抖动延迟特性的National Semiconductor DP838486 。为简明起见,TSYNC模块时钟源选择处理器的系统时钟(80 MHz)。
图8. ADSP-BF518上IEEE 1588系统的从时钟误差直方图 图8是两个完全相同的ADSP-BF518 IEEE 1588系统之间的测量误差直方图,由此可看出该器件的时钟同步性能。在约1700秒的时间内共进行了6938次测量。最终平均误差为0.015 ns,标准差为12.96 ns。该测试所用的Sync消息间隔为0.25秒。
结论
IEEE 1588标准提供了一种高精度、低成本的分布式时钟同步方法。虽然IEEE 1588并未明文要求硬件支持,但硬件辅助消息检测和时间戳对于实现极高同步精度至关重要。ADSP-BF518为IEEE 1588-2002和IEEE 1588-2008提供硬件支持,包括各种应用的支持功能。利用ADSP-BF518处理器和IXXAT IEEE 1588-2008协议软件实施IEEE 1588技术,已证明可以实现高精度时钟同步。 |