基于以太网MAC IP核的IEEE1588协议的设计与实现

为了满足网络设备对时间同步精度越来越高的要求,通过对IEEE 1588协议标准和当前以太网时间同步方案的研究,提出了一种采用FPGA硬件来实现时钟同步的方法。基于FPGA与ARM开发平台,自主设计实现了支持IEEE 1588标准的主从时钟同步系统,该系统具有成本低廉,移植性强的特点。通过在该平台上对千兆以太网环境中的时间精度进行测试,标记精度优于50ns。

面对日益复杂的应用环境,以太网存在的一些缺点逐渐显现出来,主要体现在确定性和实时性方面。精确时间同步协议[1](Precision Time Protocol,通常简写为PTP)的出现为其提供了实时性方面的保证。

精确时间同步协议能够提供亚微秒级的时间同步精度,它最初是由IEEE 1588-2002[1] 标准定义,是用于采用多播技术的网络和总线,占用网络带宽小,对系统资源要求低,在局域网中如若采用物理层硬件辅助时间标记技术和边界时钟等技术,其时间同步精度可达亚微秒数量级,网络中主时钟节点(简称主时钟)的时间和时钟频率信息都是通过报文传递到从时钟节点(简称从时钟)的,主从时钟通过周期性的交换带有时间标记的时钟同步报文来测算出节点间的时间偏差和频率偏差,并采用适当的算法调整从节点的时间和频率,从而达到时钟的同步。笔者首先对IEEE 1588在国内的研究现状进行了调研,综合前人的研究成果,得出以下结论:

(1) 采用软件生成时间戳[2]的方式,精度远不如采用硬件辅助方式产生的高,其同步精度大致在百微秒量级[3],而使用硬件辅助打时间戳,精度可达百纳秒。

(2) 采用硬件生成时间戳[4]的方式,需要以太网工作在百兆模式(MII接口)[5]下,并且使用专用ASIC芯片来实现1588报文的识别以及时间戳的生成,以中断的方式通知CPU来处理时间戳[6],在这种模式下,系统各芯片之间的连接关系复杂,系统可移植性很差,并且不便于后期对协议进行升级和维护。除此之外,使用中断有一个很严重的缺点,当网络在某段时间出现拥堵然后又恢复后,系统可能会收到多个1588同步报文,此时很可能频繁触发中断使得CPU无法及时处理上一次中断,造成同步报文和到达时间戳不能正确对应。

(3) 在FPGA上使用软核来模拟CPU[7],这样做虽然硬件成本低,但是用FPGA实现了CPU然后再运行C代码甚至操作系统的话,速度会比真实的CPU慢很多,并且占用逻辑资源较大,如果后期想要加入新的功能会很不方便,比如简单网络管理协议(simple network manage protocol,SNMP)。

(4) 在主从同步校准过程中,如果直接将时间偏差值作为从时钟的修正量,那么无论同步精度如何提高,由于主从时钟本地晶振固有的偏差,经过一段时间的累积后,主从时钟系统之间仍会存在一个较大的时间偏差,并且随着同步间隔的增加,该偏差也逐渐增加。文献[8]对该偏差进行分析之后,引入了晶振频偏的概念,并从理论上提出了一种动态纠偏的方法,将补偿后的时间偏差值作为从时钟的修正量,但最终只在matlab上进行了仿真,没有应用到实际的同步系统中。

综上,为了获得更为精准的时钟同步效果,本文提出了一种采用FPGA硬件来实现时钟同步的方法。最后在硬件平台进行验证,使得同步精度控制在50ns以内。

一、主从模式

1.1 功能概述

IEEE1588时钟主从模式用来实现主时钟与从时钟的时间校准,在一个同步周期之内实现主从时间的同步。同步流程如图1.1所示:

图1.1主从时钟完成一次时间同步过程

根据获取的t1、t2、t3、t4,通过计算出主从时钟的时间偏差,从而实现时钟同步。

1.2 连接关系

主从模式下时钟同步系统的连接关系如图1.2所示:

图1.2主从模式下时钟同步系统连接关系图

主从模式下时钟同步系统的实物连接关系如图1.3所示:

图1.3主从模式下时钟同步系统的实物连接图

1.3 实验数据

主从模式下时间同步过程主要分为两个部分:初始过程和稳定过程。初始过程一开始时间偏差较大,然后慢慢减小,最后趋于平稳。如图1.4所示。

图1.4主从模式下初始过程

经历初始过程后,时间同步过程进入稳定状态,主从时间偏差大约在-20~20ns之间。如图1.5所示。

图1.5主从模式下稳定状态

二、透明模式

2.1 功能概述

IEEE1588时钟透明模式依然是用来实现主时钟与从时钟的时间校准,但是主从时钟之间加入了透明交换机,消除IEEE 1588事件帧在交换机中的驻留时间,从而修正主从时间偏差。由于计算主从时钟时间偏差时,直接去除了驻留时间的影响,因此交换机对于主从时钟来说是透明的,被称为“透明交换机。”

2.2 连接关系

透明模式下时钟同步系统的连接关系如图2.1所示:

图2.1透明模式下时钟同步系统连接关系图

透明模式下时钟同步系统的实物连接关系如图2.2所示:

图2.2透明模式下时钟同步系统的实物连接图

2.3 实验数据

透明模式下时间同步过程主要分为两个部分:初始过程和稳定过程。初始过程一开始时间偏差较大,然后慢慢减小,最后趋于平稳。如图2.3所示。

图2.3透明模式下初始过程

经历初始过程后,时间同步过程进入稳定状态,主从时间偏差大约在-40~40ns之间。如图2.4所示。

图2.4透明模式下稳定状态

三、遇到的问题

3.1 上板验证出现的问题

在实际上板验证过程中,由于最初未考虑频率同步的影响,直接设置了主从时钟的计时周期为8纳秒(FPGA工作在125MHz),遇到了三个问题:

1.即使每一次同步之后,算出了主从时钟之间的时间偏差也对其进行了修正,但是到下一次同步时,又会产生一个新的偏差offset,该差值较大且每一次几乎都稳定在同一个值。增大两次同步之间的时间间隔,该差值也会相应增大。

2.解决掉上述问题之后,每一次同步之后的时间偏差基本稳定,大致在100纳秒左右。但是一旦有人在该同步系统一定距离内走动,或使用风扇对该系统降温时,该偏差值会大幅度波动。

3.解决掉问题1和问题2之后,系统的同步精度和稳定度已经得到了很大的改善,同步后时间偏差的波动范围在正负30纳秒之间。但是经过修改时间同步及频率同步算法、尝试新的本地时间修改方法以后,同步精度始终无法再次提升。

3.2 影响同步精度的因素

针对问题1,本文按以下步骤进行了多次实验:

1.根据PTP协议建议,每完成一次2.3.1所述的同步过程以后,应该等待2秒后再进行下一次同步,根据每次同步计算得到时间偏差并对其进行修正后,新产生的时间偏差如图3.1蓝色折线所示,其均值在330纳秒左右。改变两次同步之间的时间间隔,新产生的时间偏差也随之改变。

图3.1不同时间同步间隔产生的时间偏差结果

2.设定同步间隔为1秒,只进行时间偏差的计算,但不对其做出修正,结果如图3.2所示。

图3.2同步间隔固定为1s时的时间偏差结果

假设主从时钟之间不存在频率偏差,那么图3.2应该是一条平行的直线,所表示的物理意义是,在初始时刻,两个时钟之间的偏差为offset,在以后的对时过程中,该偏差恒定。从图中看出该偏差并不恒定,并且相邻两次对时时刻所累积的时间偏差的增量几乎相等。

由此得出,问题1的出现是由于主从时钟所使用的晶振之间存在频率差,并根据以上数据计算得到了准确的频率差值。

针对问题2,按以下步骤进行试验:

1.对问题1所述的晶振之间的频差进行补偿,得出图3.3所示数据。可以看出时间偏差已经基本恒定(此时没有修改时间偏差)。

图3.3修正晶振之间的频差后的时钟偏差结果

2.对同步系统使用风扇进行降温,得到的数据如图3.4所示。在图中红色箭头处进行降温,时间偏差急剧改变。

图3.4降温时的时间偏差结果

由此得出,晶振本身的温度漂移对同步精度的影响很大,在本系统中成为影响时间偏差的主导因素。

针对问题3,笔者与导师多次探讨了同步过程中可能出现的种种问题,尝试了新的同步方法并参考了他人的研究成果以及技术文档,得出以下结论:PHY芯片贡献了很大一部分传输时延,并且该时延抖动在10纳秒量级。支持这一论述的依据是:

1.PHY芯片中存在编解码、字节对齐和速率匹配、数据的串并转换等相关功能,这些模块引入的延迟值是不固定的[33]。

2.PHY芯片在接收数据时需要使用FIFO进行缓冲处理,这一过程会引入一定程度的时延抖动[34]。

3.在Marvell公司型号为88E1111的PHY芯片手册中对RGMII接口数据接收和发送延迟的描述如表3.1所示[35]。

表3.1 RGMII to 1000BASE-TLatency Timing

最小值

典型值

最大值

单位

发送延迟

76

-

84

纳秒

接收延迟

176

-

208

纳秒

注:本研究所使用的PHY芯片型号为88E1510,但由于Marvell公司未提供该型号的技术文档,所以引入88E1111来说明问题。

本次实现选择在MAC层和PHY层之间打时间戳,那么PHY层引入的延迟被认为是链路延迟,如图3.5所示,该延迟的波动导致了最终同步精度无法进一步提高;同时,当同步链路中存在透传时钟时,该波动进一步累积,导致精度变差。

图3.5路径延迟分析

另外,根据本方案打时间戳的方式,以太网数据帧有效信号和系统采样时钟之间存在如图3.6所示的相位关系。当以太网数据帧到来时,有效信号的上升沿可能刚好处于时间戳生成模块采样时钟的两个上升沿之间,即图中的标号2,经过采样,系统会在图中标号3的位置产生时间戳,不能真实的反映PTP帧到达的时间,两者之间存在误差为τ。τ的取值跟采样时钟的频率有关,由于本系统采样频率为125MHz,所以τ的取值在0~8纳秒之间。

图3.6采样时钟对打时间戳精度的影响示意图

一个PTP事件帧在主从时钟同步的过程中会经过两次RGMII接口,被采样两次,系统完成一次同步需要发送一对事件帧,进行四次采样,所以这里引入的时间误差在0~32纳秒之间。

3.3 问题总结及解决后上板验证

根据前文所述,影响同步精度的四个主要因素是:

1.不同晶振之间的固有频率差值;

2.同一个晶振不同温度下的频率漂移;

3.上下行同步链路之间延迟的不对等性;

4.采样时钟与以太网数据有效信号之间存在相位差。

对于1、2两点,采用了卡尔曼滤波器对晶振频率进行实时的估计,使得同步精度达到了正负20纳秒以内,并且温度漂移特性得到了补偿,其测试结果如图3.7和图3.8所示。

图3.7使用风扇降温时的同步结果图

图3.8撤走风扇后的同步结果图

图中红色箭头表示使用风扇进行降温或者移走风扇,当环境温度发生剧烈变化时,系统的同步精度受到极大的影响,但是当外界温度恒定后,同步系统也逐渐恢复稳定。

对于第3点因素,理论上选择打时间戳的位置越接近底层,链路延迟带来的抖动影响越小。但由于本文旨在设计一个通用的同步系统,该系统要求对硬件特性的依赖较小,所以只能选择在RGMII接口处打时间戳;对于第4点因素,理论上系统的采样频率越高,由该因素导致的时间误差越小,而本系统固定工作在125MHz,所以这一误差不可避免。这也意味着目前该同步系统正负20纳秒的同步精度能提升的空间已接近于0。

四、结束语

如今,不管是控制系统还是通信网络,对时间同步的要求都越来越苛刻。一方面,对GPS系统的过度依赖使得紧急状况下整个网络可能因失步而瘫痪;另一方面,IP化是未来网络业务的发展趋势,各个电信运营商都在紧锣密鼓的部署地面有线传输链路的高精度时间同步方案。因此,基于IP网络的精密时间同步协议在未来的时间同步方案中将会占据越来越大的比重。

本文通过对以太网MAC IP核和IEEE 1588时钟同步标准的深入研究,设计了一种基于FPGA+CPU的时间同步系统,包括主从时钟模型以及透明传输时钟模型,并对其进行了仿真和上板验证,符合最初的设计需求;对设计和测试过程中设计的每一个细节,本文不能一一列举,仅重点分析了本方案中的PTP报文检测模块和硬件时间戳模块的工作原理、影响同步精度的主要因素以及频率同步方法。综合协议标准及已有的研究论文来看,其同步精确度大都在百纳秒级别,而本文所涉及的时钟系统的同步精度达到十纳秒量级,取得了长足的进步。由于PTP时钟系统同步精度高、应用范围广、配置简单且安装和维护的成本低,利用协议报文传递同步信息,可广泛应用于电信、测量和工业控制领域的同步。

目前设计完成的时钟同步系统,FPGA实现部分基于实验室已有的MACIP核,在其基础上添加了PTP打时间戳的功能、完整的AXI接口信号以及中断信号控制逻辑,在实现透明传输时钟的过程中还实现了将当前发送帧的时间戳实时的插入到帧内容中的功能,为实现IEEE 1588第二版提出的“一步式”同步功能奠定了基础,本课题的后续工作将朝着这一方向展开。

在同步系统的测试过程中,笔者发现不同测试板所使用的晶振之间存在固有频偏,并且同一晶振其温度漂移相对于纳秒级的同步精度来说特别明显,对同步后的精度和稳定度都造成了极大的影响,后续研究工作中将考虑自主设计测试板,使用恒温晶振来代替普通晶振,理论上能获得比现有测试结果更高、更稳定的同步精度。

另外,鉴于FPGA上板测试过程中对波形的观察分析极为不便,而仿真测试平台所使用的是Verilog硬件描述语言,该语言对于仿真来说灵活性和测试覆盖率都受到了较大的限制,因此仅对关键模块进行了仿真与验证,其余的功能模块虽然功能正确,但性能方面可能略有欠缺。因此,使用更合适的仿真语言(例如SystemVerilog)和仿真工具(例如UVM平台),也是后期工作中的一个研究方向。

综上,本文设计和实现了支持IEEE 1588协议的时钟同步系统,仿真和板级验证结果符合设计需求,可用于实际科研项目。但依然存在着一些性能上的问题,需要后续研究中进一步改进。

[1] Jahja R H, Dahal S, Suk-SeungH, et al. Improving IEEE 1588v2 time synchronization performance with phaselocked loop[C]// Signals, Systems and Computers, 2014, Asilomar Conference on.IEEE, 2015:252-257.

[2] Zhao B, Wang N. Theimplementation of IEEE 1588 clock synchronization system based onFPGA[C]//Intelligent Control and Information Processing (ICICIP), 2014 FifthInternational Conference on. IEEE, 2014: 216-220.

[3] Eidson J, Lee K. IEEE 1588 standardfor a precision clock synchronization protocol for networked measurement andcontrol systems[C]//Sensors for Industry Conference, 2002. 2nd ISA/IEEE. IEEE,2002: 98-105.

[4] Ch. Kutschera, Ch. Veigl, R.Höller, P. Rössler, N. Kerö, Ch. Weiss, A. Gröblinger, H. Muhr, G. Cadek,"Background IEEE 1588 Clock Synchronization over IEEE 802.3/Ethernet", Cyber-Enabled Distributed Computing and Knowledge DiscoveryConference, pp. 205-209, Oct. 2008

[5] Eidson J, Kang L. IEEE Standardfor a Precision Clock Synchronization Protocol for Networked Measurement andControl Systems[C]// IEEE Std. IEEE, 2008:1-300.

[6] Correll K, Barendt N. DesignConsiderations for Software Only Implementations of the IEEE 1588 PrecisionTime Protocol[C]// Conference on IEEE 1588 Standard for A Precision ClockSynchronization Protocol for Networked Measurement and Control Systems. IEEE,2006.

[7] Ouellette M, Ji K, Liu S, etal. Using IEEE 1588 and boundary clocks for clock synchronization in telecomnetworks[J]. Communications Magazine IEEE, 2011, 49(2):164-171.

[8] http://zedboard.org/product/zedboard.

本文分享自微信公众号 - 网络交换FPGA(gh_cb8502189068)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-07-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券