当前位置: 首页 > 范文大全 > 公文范文 >

基于IEEE1588协议的局域网精确时钟同步研究

时间:2022-04-04 09:58:54  浏览次数:

摘要:文章首先介绍IEEE1588时钟同步基本原理,然后搭建了在ARM11微处理器S3C6410A下采用WinCE6.0系统的测试平台。在该测试平台下,给出了时钟同步的纯软件和硬件辅助设计,硬件辅助设计中采用了半导体芯片DP83640。经过测试,纯软件设计的时钟同步精度可达次毫秒级,而硬件辅助设计的时钟同步精度可达到次微秒级。

关键词: IEEE1588;时钟同步;DP83640;S3C6410A

中图分类号:TN949.199   文献标识码:B

Study on LAN High-accuracy Clock Synchronization Based on IEEE1588 protocol

LIU gao, JIN Shi-qun

(School of Instrument Science and Opto-electronics Engineering, Hefei University of Technology, Hefei Anhui 230009, China)

Abstract: This article first introduces the basic principle of IEEE1588 clock synchronization and then set up a test platform based on the ARM11 microprocessor S3C6410A, using the WinCE6 system. Under this platform, this article provides software design and hardware assisted design for the clock synchronization. Hardware assisted design uses the semiconductor chip DP83640. According to test, the clock synchronization precision of the software design is sub-millisecond, however the clock synchronization precision of the hardware assisted design can reach the sub-microsecond.

Keywords: IEEE1588; clock Synchronization; DP83640; S3C6410A

引言

随着分布式系统的飞速发展,越来越多的领域需要使用精确的时钟同步服务。时钟同步是分布式系统核心技术之一,其目的是维护一个全局一致的物理或逻辑时钟,使得系统内各个节点中与时间有关的信息、事件及行为有全局一致的解释。为了解决时钟同步能力不足的问题,NTP(network time protocol)一直用于以太网各分布节点的时钟同步,使用NTP协议可以使同步精度达到10ms[1],而SNTP(simple network time protocol)可以使网络时钟节点的同步精度达到几个毫秒级[2],虽然这两种协议提高了网络设备之间的定时同步能力,但是仍然不能满足网络通信和测量仪器所需的准确度。为此,IEEE1588协议应运而生,IEEE1588协议的全称是“网络测量和控制系统的精密时钟同步协议标准”(Precision clock synchronization protocol for networked measurement and control systems),也可简称为PTP(Precision Time Protocol)[3]。IEEE1588精确时钟协议是当前分布式测试系统中时钟同步研究的热点。该协议具有实现简单、占用网络带宽小和对系统资源要求低等优点,从而成为最有发展前途的局域网时钟同步协议。本文在硬件的帮助下,采用IEEE1588精确时钟协议可以使时钟同步精度达到次微秒级,为工厂自动化、测试和测量以及通信等领域需要高精度时钟同步的应用提供了一种有效的解决方案

1 IEEE1588精密时钟同步的基本原理

IEEE1588协议由一个精确的主时钟周期性地对网络中所有从时钟进行校正。同步的过程中包含从时钟偏移量的修正和传输时延的修正,需要用到四种报文[3]:(1)同步报文Sync;(2)跟随报文Follow_Up;(3)延时请求Delay_Req报文;(4)延时回应报文Delay_Resp。

IEEE1588协议原理如图1所示。主时钟周期性地向网络上广播发送同步Sync报文(可不携带报文离开主时钟的时间戳),与此同时,主时钟监视上述同步报文实际发送的时间T1作为同步报文的精确时间戳,并在随后的Follow Up报文中携带T1。网络中的所有其它从时钟在收到Sync同步报文后,首先记下报文的精确到达时间T2,然后接收到Follow Up报文,从Follow Up报文中取出时间戳T1。为了得到主从时钟的传输时延,网络中的所有从时钟以单播方式向主时钟发送延时请求Delay_Req报文,同时记录该报文在网络接口处的实际发送时间T3。相应地,主时钟每次接收到延时请求报文时都会记下此报文的精确到达时间T4,并在随后的Delay Resp报文中发送T4给相应的从时钟,从时钟接受到Delay Resp报文后,从中取出时间戳T4。这样从时钟便得到时间戳T1、T2、T3、T4,根据这四个时间值便可以计算出主从时钟的偏移量Toffset和传输延时Tdelay,从而可以实现主从时钟同步。

因此,要想获得精确的IEEE1588时钟同步,关键是要获得精确的时间戳值。

2 时钟同步实现方式

时钟同步主要有两种实现方式:(1)纯软件实现方式;(2)硬件辅助实现方式。

这两种实现方式的主要区别是获取数据报文出入本地时钟端口时间的位置不同,它们获取时间位置的示意图[4]如图2所示。

2.1 纯软件实现方式

纯软件实现时钟同步方式获取时间的位置在应用层,采用的是WinCE6.0系统,是在基于ARM11的S3C6410A处理器平台下实现的,其主频为533MHz。IEEE1588协议PTP报文由报文头、报文主体及报文扩展字段(可选)等部分组成,在以太网中,按照TCP/IP协议模型,IEEE1588规定数据报文封装在UDP中。所以首先将PTP报文封装到UDP数据包中,为识别其为PTP报文数据,PTP报文的第一字节(Byte)应紧跟在UDP报文头(Header)的最后一字节之后。加入IP协议的IP包头后,再封装到以太网帧中形成具有一定格式的报文,最终形成可以在物理介质上传输的比特流[5]。因此精密时钟报文向下层逐层封装和传输以及向上层逐层拆封和传输将不可避免的产生一些运算处理,就需要一定的时间。同时由于协议栈操作的大部分都由软件实现,这些运算处理的实际过程会受到CPU中断和操作系统调度的影响,所有这些时间都是不确定的。实验表明,基于ARM11的S3C6410A处理器平台下利用纯软件方式实现IEEE1588精确时钟同步协议的时钟同步精度仅仅能达到110~180μs左右。推测其原因主要为其处理器执行代码速度较慢以及操作系统和协议栈的线程等因素,因此,更改实现方案,采用硬件辅助实现方案。

2.2 硬件辅助实现方式

硬件辅助实现方式获取时间戳的位置是在物理层和MAC层之间的介质无关接口(MII)层。其时间戳获取的位置靠近了物理层,较之纯软件获取时间戳的位置更加接近数据包出入本地时钟端口的位置,因此,其精度较之纯软件实现方式更高。为了完全消除操作系统与协议栈对时钟同步精度产生的影响,选择在靠近物理层的MII层上进行时间标记。这样在时钟节点处的延时主要为物理层延时,由于物理层电路对报文的传输延迟很小且几乎没有延时抖动,这在很大程度上提高了同步精度。在运用MII层上打时标方法后,IEEE1588的时钟同步过程可以进一步用图3来描述。

硬件辅助方式实现IEEE1588精确时钟同步方式主要是监听MII接口上的数据报文,其原理框图如图4所示。本文采用的是三星公司制造的一款低功耗和高性价比的RISC嵌入式微处理器S3C6410A,它基于ARM11内核(ARM1176JZF-S),拥有强大的内部资源和视频处理能力,可稳定运行在667MHz主频以上。为了提高时钟同步精度,本文采用美国国家半导体公司推出的DP83640物理层芯片支持IEEE1588标准,其内置高精度IEEE1588时钟,并集成了能够对收发数据包加盖时间戳的硬件,可以在最靠近网线的位置记录时间戳,避免了操作系统执行软件协议过程中的延时。由于本文使用的S3C6410A型ARM11处理器内部没有集成MAC控制器,而DP83640芯片只是PHY收发器,因此二者之间需要增加MAC芯片。这里选用DM9000AE芯片作为MAC芯片。ARM11处理器、MAC芯片与PHY芯片三者之间的关系是MAC芯片向上通过其处理器接口与ARM处理器的高级外设总线连接,向下通过其媒体独立接口MII与PHY芯片连接,然后PHY芯片与RJ45接口连接,里面内置变压器。这里要实现S3C6410A与DM9000连接,必须对两者间的数据、地址、控制三大总线进行连接和转换,且DM9000AE中断信号使用S3C6410A处理器中断EINT7信号。

ARM11(主时钟)处理器每隔2s向从时钟发起一次时钟同步过程,主时钟的DP83640的发送报文信息分析模块监视由上层硬件发送而来的事件报文包。当检测到IEEE1588事件报文时,DP83640的PTP发送时间戳寄存器将捕获发送时间戳并且提供给软件,事件报文从物理层发送模块转换成差分信号发送到以太网络。因为软件知道信息包发送的顺序,所以只记录时间戳,而没有必要记录大量的发送报文序列号,DP83640可以缓存4个时间戳[6]。同样,DP83640的接收报文信息分析模块监视由物理层接收模块得到的接收包数据以检测IEEE1588事件报文。当检测到IEEE1588事件报文时,DP83640的PTP接收时间戳寄存器将捕获接收时间戳并且提供给软件。除时间戳以外,该寄存器还将记录16位的序列号、4位的消息类型,并且当一个接收时间戳准备好以后可以产生一个中断。

3 实验测试

为了测量硬件辅助方式时钟同步的精度,首先确定好主从时钟,主从时钟通过一根5m长的交叉网线直接相连,如图5所示。可以通过示波器比较主从时钟在同一频率点上的输出脉冲信号,得到主从时钟的同步精度。测试环境为:室温25℃、网速为8Mbps、晶振为80MHz温补晶振、PTP同步间隔时间为2s,测试时间为2小时。

经测试与分析可得出以下结论。

(1) 采用5m长的交叉网线直接相连,主从时钟同步精度的偏差可达到0.58~0.64μs;当把5m长的交叉网线改成10m长时,主从时钟同步精度的偏差可达到0.62~0.67μs,说明交叉网线的长短对时钟同步精度影响不大;

(2) 当把PTP同步间隔时间2s设置成1s时,主从时钟同步精度的偏差可达到0.45~0.49μs;当把PTP同步间隔时间2s设置成0.5s时,主从时钟同步精度的偏差可达到0.31~0.37μs;当把PTP同步间隔时间为2s设置成0.1s时,主从时钟同步精度的偏差可达到0.08~0.12μs,说明PTP同步间隔时间对时钟同步精度影响较大;

(3) 当把主从时钟分别利用5m长的交叉网线连接到路由器上,主从时钟同步精度的偏差可达到3.15~5.78μs,说明增加了路由器对时钟同步精度影响很大,推测原因为数据报文在路由器先进行缓存然后再转发到相应的端口[7],所以PTP协议计算的线路延迟出现比较大的误差,因此同步精度比较差。

4 结 论

IEEE1588时钟同步的硬件辅助实现方式比纯软件实现方式精度高很多,原因是硬件辅助时钟同步方式的时间戳获取位置是在物理层和MAC层之间的MII层,完全消除了操作系统与协议栈对时钟同步精度产生的影响。本文中IEEE1588时钟同步的硬件辅助实现方式精度可以达到次微秒级,满足了系统时钟同步的高精度要求。如果本文考虑到时钟的不稳定性和时钟分辨率因素,那么IEEE1588时钟同步的精度将会进一步提高,同时也可以采用数理统计方法来提高时钟同步,因此IEEE1588时钟同步的精度还有提高空间。

参考文献

[1] The NetWork Time Protocol (NTP) Distribution. March 2004.

[2] 孙文杰. 局域网时钟同步精确时间标记方法的研究[D]. 华中科技大学硕士论文,2007.

[3] IEEE Std.1588-2002.IEEE standard for a Precision clock Synchronization Protocol for Networked Measurement and Control Systems[S]. 2002.

[4] 魏 丰,孙文杰. IEEE-1588协议时钟同步报文的精确时间标记方法研究[J]. 仪器与仪表学报,2009,30(1).

[5] 田宏安,赵 健. 高精确度时间同步的LXI仪器接口设计与实现技术研究[D]. 西安电子科技大学硕士学位论文,2009.

[6] DP83640 Precision PYTER-IEEE 1588 Precision Time Protocol Transceiver [S]. National Semiconductor Corporation, 2008.

[7] 钟世春. LXI仪器中网络发现协议和时钟同步协议的研究与实现[D]. 电子科技大学硕士学位论文,2010.

作者简介:刘 高(1981-),男,安徽合肥人,硕士研究生,研究方向为自动光学检测技术,E-mail:liugao198344@126.com。

推荐访问: 局域网 时钟 精确 同步 协议