利用IEEE 1588和Blackfin嵌入式处理器实现设备时钟同步
分组检测
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 DP83848 。为简明起见,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技术,已证明可以实现高精度时钟同步。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论