arm ieee1588 - chinaelectrondevices.seu.edu.cn

5
42 卷第 2019 12 电子器件 Chinese Journal of Electron Devices Vol 42 No 6 Dec. 2019 收稿日期:2018-12-19 修改日期:2019-01-08 Implementation of IEEE1588 Precision Clock Synchronization Protocol Based on ARM WANG Jinqi Chen Hong ( School of Instrument and ElectronicsNorth University of ChinaTaiyuan 030051China) Abstract: Distributed systems are widely used in militaryindustrial and other fields because of their high efficiencyflexibility and remote controllabilitybut their time synchronization is difficult to guarantee. The precise clock synchronization protocol of IEEE 1588 provides a method to establish the time synchronization between distributed nodes in the ethernet. ARM is chosen as the main control chip and the physical layer chip to mark the time stamp in the physical layerso as to reduce the network delay and improve the accuracy of clock synchroniza ̄ tion. The clock synchronization system can achieve nanosecond clock synchronization through experimentsimprove synchronization accuracy and reduce the structure complexity and cost of the model. It can be widely used in distri ̄ buted systems requiring high precision timing. Key words:embedded systemdistributed control systemtime synchronizationIEEE1588timestamps EEACC:12652732K doi:10.3969 / j.issn.1005-9490.2019.06.035 基于 ARM IEEE1588 精密时钟同步协议实现 王晋祺鸿 ( 中北大学仪器与电子学院太原 030051) :分布式系统以高效灵活远程可控的特性在军事工业等领域有着广泛应用但其时间同步性难以保证IEEE 1588 精确时钟同步协议提供了一种在以太网中建立分布式节点之间时间同步的方法选择 ARM 作为主控芯片与物理层芯片相结 合来实现在物理层标记时间戳以达到降低网络延时提高同步精度的目的此时钟同步系统经过实验可实现纳秒级的时 钟同步提高精度的同时降低了模型复杂度和成本可广泛应用于需要高精度对时的分布式系统中关键词:嵌入式分布式系统时钟同步IEEE 1588时间戳 中图分类号:TP393 文献标识码:文章编号:1005-9490( 2019) 06-1527-05 分布式系统 [] 从结构上由分布式主机和若干个 测控子站点组成分布式主机用于与各个子站点的 数据采集模块进行信息和数据交换以实现远程测量 及控制的目的而测控子站点则负责完成数据的采集 与传输分布式系统以其高效灵活远程可控等特性 在现代军事工业等领域有着广泛的应用但其时间 同步性难以保证因此如何实现各个节点间的高精度 时钟同步成为了分布式测控系统中的关键问题目前主流的时钟同步方法可以分为硬件同步 和软件同步硬件同步方法例如美国的 GPS [ ] 我国自主研发的北斗授时系统 [ ] 其主要优势是精 度高抗干扰能力强但是由于每个子节点都需要 添加专用模块所以成本较高对于纯软件的同步 方法例如网络时间协议 [ 4-5] ( NTP )ꎬ原理是将主时 钟节点的时间信息封装在报文里然后通过以太网 传输给各个子节点传输过程中的网络延时导致 NTP 协议只能实现毫秒级的时钟同步精度难以满 足一些对时钟同步精度要求较高的分布式测控系统 的需求IEEE1588 精确时钟同步协议 [ 6-7] PTP ( Precision Time Protocol ) 协议是在软件同步方式 NTP 协议的基础上通过硬件平台辅助实现在以太 网物理层打时间戳的方式降低网络传输过程中设 备响应报文的随机性延迟利用多次报文收发来降 低往返路径延时经过测试同步精度可达到纳秒级

Upload: others

Post on 21-Apr-2022

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ARM IEEE1588 - chinaelectrondevices.seu.edu.cn

第 42 卷 第 6 期

2019 年 12 月

电 子 器 件Chinese Journal of Electron Devices

Vol1049008 42  No1049008 6Dec 2019

收稿日期2018-12-19    修改日期2019-01-08

Implementation of IEEE1588 Precision ClockSynchronization Protocol Based on ARM

WANG JinqiꎬChen Honglowast(School of Instrument and ElectronicsꎬNorth University of ChinaꎬTaiyuan 030051ꎬChina)

AbstractDistributed systems are widely used in militaryꎬ industrial and other fields because of their highefficiencyꎬflexibility and remote controllabilityꎬbut their time synchronization is difficult to guarantee The preciseclock synchronization protocol of IEEE 1588 provides a method to establish the time synchronization betweendistributed nodes in the ethernet ARM is chosen as the main control chip and the physical layer chip to mark thetime stamp in the physical layerꎬso as to reduce the network delay and improve the accuracy of clock synchroniza ̄tion The clock synchronization system can achieve nanosecond clock synchronization through experimentsꎬimprovesynchronization accuracy and reduce the structure complexity and cost of the model It can be widely used in distri ̄buted systems requiring high precision timingKey wordsembedded systemꎻdistributed control systemꎻtime synchronizationꎻIEEE1588ꎻtimestampsEEACC12652ꎻ732K        doi103969 jissn1005-9490201906035

基于 ARM 的 IEEE1588 精密时钟同步协议实现

王晋祺ꎬ陈  鸿lowast

(中北大学仪器与电子学院ꎬ太原 030051)

摘  要分布式系统以高效灵活远程可控的特性在军事工业等领域有着广泛应用ꎬ但其时间同步性难以保证ꎮ IEEE 1588精确时钟同步协议提供了一种在以太网中建立分布式节点之间时间同步的方法ꎬ选择 ARM 作为主控芯片与物理层芯片相结

合来实现在物理层标记时间戳ꎬ以达到降低网络延时ꎬ提高同步精度的目的ꎮ 此时钟同步系统经过实验ꎬ可实现纳秒级的时

钟同步ꎬ提高精度的同时降低了模型复杂度和成本ꎬ可广泛应用于需要高精度对时的分布式系统中ꎮ

关键词嵌入式ꎻ分布式系统ꎻ时钟同步ꎻIEEE 1588ꎻ时间戳

中图分类号TP393        文献标识码A        文章编号1005-9490(2019)06-1527-05

    分布式系统[1]从结构上由分布式主机和若干个

测控子站点组成ꎮ 分布式主机用于与各个子站点的

数据采集模块进行信息和数据交换ꎬ以实现远程测量

及控制的目的ꎬ而测控子站点则负责完成数据的采集

与传输ꎮ 分布式系统以其高效灵活远程可控等特性

在现代军事工业等领域有着广泛的应用ꎬ但其时间

同步性难以保证ꎬ因此如何实现各个节点间的高精度

时钟同步成为了分布式测控系统中的关键问题ꎮ目前ꎬ主流的时钟同步方法可以分为硬件同步

和软件同步ꎮ 硬件同步方法例如美国的 GPS[2] 和

我国自主研发的北斗授时系统[3]ꎬ其主要优势是精

度高抗干扰能力强ꎮ 但是ꎬ由于每个子节点都需要

添加专用模块ꎬ所以成本较高ꎮ 对于纯软件的同步

方法ꎬ例如网络时间协议[4-5](NTP)ꎬ原理是将主时

钟节点的时间信息封装在报文里ꎬ然后通过以太网

传输给各个子节点ꎬ传输过程中的网络延时导致

NTP 协议只能实现毫秒级的时钟同步精度ꎬ难以满

足一些对时钟同步精度要求较高的分布式测控系统

的需求ꎻ IEEE1588 精确时钟同步协议[6-7] 即 PTP(Precision Time Protocol) 协议是在软件同步方式

NTP 协议的基础上ꎬ通过硬件平台辅助实现在以太

网物理层打时间戳的方式ꎬ降低网络传输过程中设

备响应报文的随机性延迟ꎬ利用多次报文收发来降

低往返路径延时ꎬ经过测试同步精度可达到纳秒级ꎮ

电  子  器  件 第 42 卷

图 1 表示 NTP 与 PTP 协议捕获时间戳的位置[8]ꎮ

图 1  NTP 与 PTP 协议捕获时间戳的位置

1  PTP 时钟同步技术

在同步系统中ꎬ作为同步时钟源的节点被称为

最佳主时钟ꎬ可以由用户指定或由 PTP 协议来确

定ꎮ IEEE 1588 协议定义了一种基于时钟特性和系

统拓扑的算法ꎬ称为最佳主时钟[9]BMC(Best MasterClock)算法ꎬ该算法通过比较各个节点的数据集及

状态来选取ꎬ其余时钟节点被称为从时钟ꎮ PTP 时

钟同步协议的基本原理是通过交换同步报文ꎬ使系

统中的从时钟节点与主时钟节点保持同步ꎮ11  时钟同步模型

在 PTP 协议中ꎬ时钟从工作类型上可分为普通

时钟边界时钟和透明时钟ꎮ 普通时钟 OC(OrdinaryClock)是一般意义上的时钟ꎬ它只有一个用于 PTP 同

步的端口ꎬ可以作为主时钟源或从时钟使用ꎻ边界时

钟 BC(Boundary Clock)有多个用于精准同步的端口ꎬ可以对系统进行简化分解ꎬ降低拓扑结构难度ꎻ透明

时钟 TC[10-11](Transparent Clock)是对边界时钟进行

了优化ꎬ通过将 PTP 报文传输过程中在自身所花费

的驻留时间添加到报文校正域ꎬ减少级联之间的时

间延迟累积ꎬ提高同步精度ꎮ 一个简单的 PTP 时钟

同步模型如图 2 所示ꎮ

图 2  PTP 时钟同步模型

12  同步报文类型

PTP 时钟同步协议将报文分为两类通用报文

和事件报文ꎮ 两者区别在于事件报文在收发时需要

加盖硬件时间戳ꎮ通用报文包括Follow_Up 跟随报文 Delay_ Resp

延时请求应答报文Announce 通知报文Management管理报文Signaling 信号报文和针对透明时钟的Pdelay_Resp_Follow_Up 对等延时请求应答跟随报文ꎮ

事件报文包括Sync 同步报文Delay_Req 延时

请求报文针对透明时钟的 Pdelay_Req 对等延时请

求报文Pdelay_Resp 对等延时请求应答报文ꎮ报文的详细说明如表 1ꎮ

表 1  同步报文类型

报文类型 报文名称 报文功能

通用报文

事件报文

延时请求应答报文 Delay_Resp 主时钟对从时钟请求的应答ꎬ内部含有请求报文到达主时钟的时间信息

跟随报文 Follow_Up 传递同步报文 Sync 发出的精确时间

通知报文 Announce 将 PTP 时钟网络中的时钟进行层次的划分ꎬ包含了时钟的主时钟信息ꎮ

对等延时请求应答跟随报文Pdelay_Resp_Follow_Up 对报文在透明时钟中停留的时间进行运算

信息报文 Management 传递管理信号ꎬ更新和维护 PTP 相应数据集

信号报文 Signaling 传递时钟请求和命令

同步报文 Sync 主时钟发出ꎬ从时钟接收后记录时间戳

延时请求报文 Delay_Req 由从时钟发出ꎬ主时钟收到后向从时钟发送 Delay_Resp 报文ꎮ 从时钟根据报文中的信息运算得出主从时钟之间的相位偏差与网络延时

对等延时请求报文 Pdelay_Req 应用于透明时钟ꎬ用于计算从一个时钟端口到另一个时钟端口的时间

对等延时请求应答报文 Pdelay_Resp 是 Pdelay_Req 的回应ꎬ应用于透明时钟ꎬ计算报文的驻留时间

13  时钟同步原理

IEEE1588 协议有两种传输机制ꎬ一种被称为端

对端 E2E(End to End)ꎬ在此模式下工作ꎬ是通过延

时请求响应机制ꎬ测量主时钟与从时钟之间的平均

8251

第 6 期 王晋祺ꎬ陈  鸿基于 ARM 的 IEEE1588 精密时钟同步协议实现    

路径延时ꎻ 另一种被称为点对点 P2P ( Peer toPeer)ꎬ此模式下通过对等延时机制测量主从节点之

间的分段路径延时ꎬ并将这些延时逐步累加ꎮ 协议

根据请求应答机制的不同划分了两种工作模式一步模式和两步模式ꎮ 两者之间区别主要在于ꎬ在一

步模式下同步报文所需要发送的硬件时间戳包含在

自身报文中ꎬ而两步模式同步报文需要发送的硬件

时间戳则由跟随报文携带ꎮ 图 3 利用端对端模式下

的两步模式来说明 PTP 精密时钟同步协议的原理ꎮ

图 3  PTP 时钟同步协议原理

第 1 步  根据定义好的时钟间隔ꎬ主时钟节点

会周期性地向从时钟节点发送同步报文ꎬ并且记录

同步报文的发送时刻为 t1ꎬ随后将时间戳 t1 与跟随

报文打包发送给从时钟节点ꎮ第 2 步  从时钟节点收到主时钟发送的同步报

文后ꎬ记录下收到报文的时刻为 t2ꎮ第 3 步  从时钟节点收到跟随报文后ꎬ解析并

记录报文中所携带的 t1 时间戳ꎬ达到预设的时间间

隔后ꎬ向主时钟节点发送延时请求报文ꎬ并记录报文

的发出时刻为 t3ꎮ第 4 步  主时钟节点收到延时请求报文并记录

收到时刻为 t4ꎬ然后将时间戳 t4 打包通过延时请求

应答报文发送给从时钟节点ꎮ到此为止ꎬ从时钟节点已经获取了硬件时间戳

t1ꎬt2ꎬt3ꎬt4ꎮ 记主从节点之间的时间偏差为 Offsetꎬ报文从主时钟到从时钟的传输延迟为 Delayꎮ 根据

上述已知数据ꎬ可以得到Delay = t2-t1-Offset (1)Delay = t4-t3+Offset (2)

可以得到链路延迟 Delay 和时钟差 OffsetDelay =( t2-t1+t4-t3) 2 (3)Offset =( t2-t1+t3-t4) 2 (4)

也可以记作Offset =( t2-t1)-Delay (5)

2  PTP 时钟同步的实现

21  PTP 时钟的硬件实现

本文设计的基于 IEEE1588 时钟同步协议的硬

件平台是以 ARM 为核心ꎬ由时钟同步模块和主控模

块组成ꎮ 选择美国微芯科技公司(Microchip)设计研

发的 KSZ8463[12-13] 芯片作为时钟同步模块主芯片ꎬ选择同公司生产研发的 KSZ9692[14]作为微处理器芯

片ꎮ KSZ8643 是一款自带 PTP 引擎ꎬ支持 IEEE1588协议的以太网物理层芯片ꎬ可以实现时间戳的捕获ꎬ并且有大量的 GPIO 端口可以输入输出脉冲信号ꎮKSZ9692 是一款基于 ARM922T 内核的 32 位 SOC(System on Chipꎬ即片上系统)ꎬ自带以太网控制器ꎬ只需外接支持 PTP 协议硬件捕获时间戳功能的物理

层芯片即可实现时钟同步ꎮ 图 4 为硬件实物图ꎮ

图 4  硬件平台实物图

22  PTP 时钟的软件实现

PTP 协议是一种次微秒级精度的时钟同步应用

层协议ꎬ协议中的报文通常是以 UDP 数据包的形式

传输ꎮ 为了便于用户开发ꎬMicrochip 公司提供了开

源的 PTP 驱动程序和封装好的 APIs 函数ꎬ用于主

时钟的选择和时钟同步ꎮksz_ptpc 和 ksz_ptph 文件包括了实现 PTP 协

议的主要网络驱动ꎮ 网络驱动程序需要声明所需的

数据结构并实现以下功能ptp_readꎬptp_writeꎬptp_acquire 和 ptp_releaseꎮ 此外ꎬ它还需要实现代码以

支持 PTP 操作ꎮ驱动程序在初始化期间需要调用函数 ptp_initꎮ

当设备打开时ꎬ可以调用 ptp_start 来启动 PPSꎬ若程

序执行完成ꎬ则调用函数 ptp_close 关闭设备ꎬ卸载

驱动程序时调用函数 ptp_exitꎮ 启动 PTP 操作时调

用函数 ptp_init_stateꎬ它通常由应用程序执行 PTP协议栈工作来触发ꎮ 停止处理 PTP 消息时应调用

函数 ptp_exit_stateꎮAPI 函数包括初始化函数ꎬ文件 I O 函数ꎬIoctl

9251

电  子  器  件 第 42 卷

函数ꎮ 其中文件 I O 和 Ioctl 函数提供了两种类型

的访问控制ꎮ Ioctl 常用于立即检索信息直接访问ꎬ对于有一定延迟的访问使用文件 I Oꎮ 初始化函数

主要利用 tsm_ init( )函数打开设备并进行初始化ꎬtsm_ cleanup( )函数用于清除被设备占用的数据缓

冲ꎬtsm_ exit( )用来关闭设备ꎻ文件 I O 类函数中ꎬ主要使 tsm_ recv( )ꎬtsm_ send( )函数来检索时间

戳信息数据和发送命令ꎬ还有一系列 tsm_ cmd 函数

发送报文请求调整硬件设置ꎻIoctl 类函数通过 set_hw 系列函数来配置时钟同步系统的运行模式ꎬrx_

event( )和 tx_ event( )函数ꎬ前者用于启用事件探

测ꎬ后者用于启用触发输出ꎬ get _ clock ( ) set _clock( )adj_ clock( )函数用于配置和调整时钟ꎬget_ delay( )set_ delay( )函数用于获取设置端口

和硬件延迟ꎬget_ utc_ offset( )set_ utc_ offset( )等一系列函数用来调整时钟ꎬget_ rx_ timestamp( )get_ tx_ timestamp( )函数用于获取及接收时间戳信

息ꎮ 综合以上函数组成了基于 PTP 协议的同步软

件结构ꎮ图 5 为主从时钟对时流程图ꎮ

图 5  主从时钟对时流程图

3  PTP 时钟系统测试

驱动在初始化时将物理层芯片 KSZ8463 的

GPIO6 管脚设置为秒脉冲输出模式ꎬ以便于同其他

系统进行同步比对ꎮ 图 6 为测试模型ꎮ在本次测试系统中ꎬ两个硬件平台分别作为两

个节点ꎬ通过网线与 PC 主机连接ꎬGPIO6 端连接至

示波器ꎬ观察示波器如图 7 所示ꎮ上方的波形是硬件系统初始化后所确定的最佳

主时钟输出的秒脉冲作为参考ꎬ下方两个波形是从

时钟所输出的脉冲信号ꎮ 图中中间波形与主时钟的

时钟差表现为上升沿的之间 52 ns 的偏差ꎬ是脉冲

信号经过硬件平台后的时钟抖动值ꎻ最下方的波形

3 与主时钟相差 58 nsꎬ可见在此 PTP 时钟模型中ꎬ波形 2 作为透明时钟存在ꎬ使得两个从时钟的对时

精度误差不大ꎮ由此可见此时钟同步系统可以满足精度为纳秒

级的对时要求ꎮ

0351

第 6 期 王晋祺ꎬ陈  鸿基于 ARM 的 IEEE1588 精密时钟同步协议实现    

图 6  PTP 时钟同步系统测试模型

图 7  测试结果图

4  总结

为了满足一些分布式测控系统对时间同步精度

的要求ꎬ本文基于 IEEE 1588 精密时钟同步协议ꎬ设

计了嵌入式软硬件平台ꎬ经过测试精度可达到纳秒

级ꎮ 整个时钟同步系统具有结构简单移动性好成本低精度高等优势ꎬ可以广泛应用于对时钟同步性

有高要求的测控系统中ꎮ

参考文献

[1]   孙祥祥 分布式系统时钟同步协议的研究与实现[D] 杭州杭州电子科技大学ꎬ2014

[2] 黄翔ꎬ江道灼 GPS 同步时钟的高精度守时方案[J] 电力系统

自动化ꎬ2010ꎬ34(18)74-77[3] 郭彬 基于北斗 GPS 双模授时的电力系统时间同步技术研究

[D] 长沙湖南大学ꎬ2010[4] 陈敏 基于 NTP 协议的网络时间同步系统的研究与实现[D]

武汉华中科技大学ꎬ2005[5] 孙娜ꎬ熊伟ꎬ丁宇征 时钟同步的研究与应用[ J] 计算机工程

与应用ꎬ2003ꎬ39(27)177-179[6] Eidson JꎬKang L IEEE Standard for a Precision Clock Synchroni ̄

zation Protocol for Networked Measurement and Control Systems[C] IEEE Std IEEEꎬ20081-300

[7] 张先富ꎬ冯冬芹 基于加权最小二乘法的精确时钟同步算法研

究与实现[J] 传感技术学报ꎬ2008ꎬ21(9)1556-1560[8] 张端阳ꎬ肖力ꎬ付忠敏 基于 stm32f407 的精确时钟同步协议的

实现[J] 计算机与数字工程ꎬ2018ꎬ46(3)620-626 DOI103969 jissn1672-9722201803043

[9] 戴宝峰ꎬ崔少辉ꎬ常健 IEEE1588 最佳主时钟算法的分析与实

现[J] 仪表技术ꎬ2008(2)29-31[10] 邓德杨 基于以太网交换机的 IEEE1588V2 时钟同步协议研究

与实现[D] 杭州杭州电子科技大学ꎬ2014[11] 陈金凤ꎬ华宇ꎬ孙中尉 IEEE1588v2 透明时钟研究与实现[ J]

宇航计测技术ꎬ2013ꎬ33(3)11-16[12] 吕海宁 水下分布式传感器系统数据同步技术设计[D] 哈尔

滨哈尔滨工程大学ꎬ2015[13] KSZ8463 ̄Ethernet 3 ̄Port Switch with IEEE 1588v2 and RMII MII

Interface[ DB OL] ( 2014 - 6 - 11) https www microchipcom wwwproducts en KSZ8463

[14] ksz9692pb [DB OL] ( 2011 - 5) https www microchip com wwwproducts en KSZ9692

王晋祺(1992-)ꎬ女ꎬ硕士研究生ꎬ主要

研究方向为嵌入式时间同步ꎬwjqydd163comꎻ

陈  鸿(1963-)ꎬ男ꎬ通信作者ꎬ博士ꎬ教授ꎬ主要研究方向为测试计量技术

及仪器ꎬ自动化测试与控制技术光电

检测技术ꎬ64406912 qqcomꎮ

1351

Page 2: ARM IEEE1588 - chinaelectrondevices.seu.edu.cn

电  子  器  件 第 42 卷

图 1 表示 NTP 与 PTP 协议捕获时间戳的位置[8]ꎮ

图 1  NTP 与 PTP 协议捕获时间戳的位置

1  PTP 时钟同步技术

在同步系统中ꎬ作为同步时钟源的节点被称为

最佳主时钟ꎬ可以由用户指定或由 PTP 协议来确

定ꎮ IEEE 1588 协议定义了一种基于时钟特性和系

统拓扑的算法ꎬ称为最佳主时钟[9]BMC(Best MasterClock)算法ꎬ该算法通过比较各个节点的数据集及

状态来选取ꎬ其余时钟节点被称为从时钟ꎮ PTP 时

钟同步协议的基本原理是通过交换同步报文ꎬ使系

统中的从时钟节点与主时钟节点保持同步ꎮ11  时钟同步模型

在 PTP 协议中ꎬ时钟从工作类型上可分为普通

时钟边界时钟和透明时钟ꎮ 普通时钟 OC(OrdinaryClock)是一般意义上的时钟ꎬ它只有一个用于 PTP 同

步的端口ꎬ可以作为主时钟源或从时钟使用ꎻ边界时

钟 BC(Boundary Clock)有多个用于精准同步的端口ꎬ可以对系统进行简化分解ꎬ降低拓扑结构难度ꎻ透明

时钟 TC[10-11](Transparent Clock)是对边界时钟进行

了优化ꎬ通过将 PTP 报文传输过程中在自身所花费

的驻留时间添加到报文校正域ꎬ减少级联之间的时

间延迟累积ꎬ提高同步精度ꎮ 一个简单的 PTP 时钟

同步模型如图 2 所示ꎮ

图 2  PTP 时钟同步模型

12  同步报文类型

PTP 时钟同步协议将报文分为两类通用报文

和事件报文ꎮ 两者区别在于事件报文在收发时需要

加盖硬件时间戳ꎮ通用报文包括Follow_Up 跟随报文 Delay_ Resp

延时请求应答报文Announce 通知报文Management管理报文Signaling 信号报文和针对透明时钟的Pdelay_Resp_Follow_Up 对等延时请求应答跟随报文ꎮ

事件报文包括Sync 同步报文Delay_Req 延时

请求报文针对透明时钟的 Pdelay_Req 对等延时请

求报文Pdelay_Resp 对等延时请求应答报文ꎮ报文的详细说明如表 1ꎮ

表 1  同步报文类型

报文类型 报文名称 报文功能

通用报文

事件报文

延时请求应答报文 Delay_Resp 主时钟对从时钟请求的应答ꎬ内部含有请求报文到达主时钟的时间信息

跟随报文 Follow_Up 传递同步报文 Sync 发出的精确时间

通知报文 Announce 将 PTP 时钟网络中的时钟进行层次的划分ꎬ包含了时钟的主时钟信息ꎮ

对等延时请求应答跟随报文Pdelay_Resp_Follow_Up 对报文在透明时钟中停留的时间进行运算

信息报文 Management 传递管理信号ꎬ更新和维护 PTP 相应数据集

信号报文 Signaling 传递时钟请求和命令

同步报文 Sync 主时钟发出ꎬ从时钟接收后记录时间戳

延时请求报文 Delay_Req 由从时钟发出ꎬ主时钟收到后向从时钟发送 Delay_Resp 报文ꎮ 从时钟根据报文中的信息运算得出主从时钟之间的相位偏差与网络延时

对等延时请求报文 Pdelay_Req 应用于透明时钟ꎬ用于计算从一个时钟端口到另一个时钟端口的时间

对等延时请求应答报文 Pdelay_Resp 是 Pdelay_Req 的回应ꎬ应用于透明时钟ꎬ计算报文的驻留时间

13  时钟同步原理

IEEE1588 协议有两种传输机制ꎬ一种被称为端

对端 E2E(End to End)ꎬ在此模式下工作ꎬ是通过延

时请求响应机制ꎬ测量主时钟与从时钟之间的平均

8251

第 6 期 王晋祺ꎬ陈  鸿基于 ARM 的 IEEE1588 精密时钟同步协议实现    

路径延时ꎻ 另一种被称为点对点 P2P ( Peer toPeer)ꎬ此模式下通过对等延时机制测量主从节点之

间的分段路径延时ꎬ并将这些延时逐步累加ꎮ 协议

根据请求应答机制的不同划分了两种工作模式一步模式和两步模式ꎮ 两者之间区别主要在于ꎬ在一

步模式下同步报文所需要发送的硬件时间戳包含在

自身报文中ꎬ而两步模式同步报文需要发送的硬件

时间戳则由跟随报文携带ꎮ 图 3 利用端对端模式下

的两步模式来说明 PTP 精密时钟同步协议的原理ꎮ

图 3  PTP 时钟同步协议原理

第 1 步  根据定义好的时钟间隔ꎬ主时钟节点

会周期性地向从时钟节点发送同步报文ꎬ并且记录

同步报文的发送时刻为 t1ꎬ随后将时间戳 t1 与跟随

报文打包发送给从时钟节点ꎮ第 2 步  从时钟节点收到主时钟发送的同步报

文后ꎬ记录下收到报文的时刻为 t2ꎮ第 3 步  从时钟节点收到跟随报文后ꎬ解析并

记录报文中所携带的 t1 时间戳ꎬ达到预设的时间间

隔后ꎬ向主时钟节点发送延时请求报文ꎬ并记录报文

的发出时刻为 t3ꎮ第 4 步  主时钟节点收到延时请求报文并记录

收到时刻为 t4ꎬ然后将时间戳 t4 打包通过延时请求

应答报文发送给从时钟节点ꎮ到此为止ꎬ从时钟节点已经获取了硬件时间戳

t1ꎬt2ꎬt3ꎬt4ꎮ 记主从节点之间的时间偏差为 Offsetꎬ报文从主时钟到从时钟的传输延迟为 Delayꎮ 根据

上述已知数据ꎬ可以得到Delay = t2-t1-Offset (1)Delay = t4-t3+Offset (2)

可以得到链路延迟 Delay 和时钟差 OffsetDelay =( t2-t1+t4-t3) 2 (3)Offset =( t2-t1+t3-t4) 2 (4)

也可以记作Offset =( t2-t1)-Delay (5)

2  PTP 时钟同步的实现

21  PTP 时钟的硬件实现

本文设计的基于 IEEE1588 时钟同步协议的硬

件平台是以 ARM 为核心ꎬ由时钟同步模块和主控模

块组成ꎮ 选择美国微芯科技公司(Microchip)设计研

发的 KSZ8463[12-13] 芯片作为时钟同步模块主芯片ꎬ选择同公司生产研发的 KSZ9692[14]作为微处理器芯

片ꎮ KSZ8643 是一款自带 PTP 引擎ꎬ支持 IEEE1588协议的以太网物理层芯片ꎬ可以实现时间戳的捕获ꎬ并且有大量的 GPIO 端口可以输入输出脉冲信号ꎮKSZ9692 是一款基于 ARM922T 内核的 32 位 SOC(System on Chipꎬ即片上系统)ꎬ自带以太网控制器ꎬ只需外接支持 PTP 协议硬件捕获时间戳功能的物理

层芯片即可实现时钟同步ꎮ 图 4 为硬件实物图ꎮ

图 4  硬件平台实物图

22  PTP 时钟的软件实现

PTP 协议是一种次微秒级精度的时钟同步应用

层协议ꎬ协议中的报文通常是以 UDP 数据包的形式

传输ꎮ 为了便于用户开发ꎬMicrochip 公司提供了开

源的 PTP 驱动程序和封装好的 APIs 函数ꎬ用于主

时钟的选择和时钟同步ꎮksz_ptpc 和 ksz_ptph 文件包括了实现 PTP 协

议的主要网络驱动ꎮ 网络驱动程序需要声明所需的

数据结构并实现以下功能ptp_readꎬptp_writeꎬptp_acquire 和 ptp_releaseꎮ 此外ꎬ它还需要实现代码以

支持 PTP 操作ꎮ驱动程序在初始化期间需要调用函数 ptp_initꎮ

当设备打开时ꎬ可以调用 ptp_start 来启动 PPSꎬ若程

序执行完成ꎬ则调用函数 ptp_close 关闭设备ꎬ卸载

驱动程序时调用函数 ptp_exitꎮ 启动 PTP 操作时调

用函数 ptp_init_stateꎬ它通常由应用程序执行 PTP协议栈工作来触发ꎮ 停止处理 PTP 消息时应调用

函数 ptp_exit_stateꎮAPI 函数包括初始化函数ꎬ文件 I O 函数ꎬIoctl

9251

电  子  器  件 第 42 卷

函数ꎮ 其中文件 I O 和 Ioctl 函数提供了两种类型

的访问控制ꎮ Ioctl 常用于立即检索信息直接访问ꎬ对于有一定延迟的访问使用文件 I Oꎮ 初始化函数

主要利用 tsm_ init( )函数打开设备并进行初始化ꎬtsm_ cleanup( )函数用于清除被设备占用的数据缓

冲ꎬtsm_ exit( )用来关闭设备ꎻ文件 I O 类函数中ꎬ主要使 tsm_ recv( )ꎬtsm_ send( )函数来检索时间

戳信息数据和发送命令ꎬ还有一系列 tsm_ cmd 函数

发送报文请求调整硬件设置ꎻIoctl 类函数通过 set_hw 系列函数来配置时钟同步系统的运行模式ꎬrx_

event( )和 tx_ event( )函数ꎬ前者用于启用事件探

测ꎬ后者用于启用触发输出ꎬ get _ clock ( ) set _clock( )adj_ clock( )函数用于配置和调整时钟ꎬget_ delay( )set_ delay( )函数用于获取设置端口

和硬件延迟ꎬget_ utc_ offset( )set_ utc_ offset( )等一系列函数用来调整时钟ꎬget_ rx_ timestamp( )get_ tx_ timestamp( )函数用于获取及接收时间戳信

息ꎮ 综合以上函数组成了基于 PTP 协议的同步软

件结构ꎮ图 5 为主从时钟对时流程图ꎮ

图 5  主从时钟对时流程图

3  PTP 时钟系统测试

驱动在初始化时将物理层芯片 KSZ8463 的

GPIO6 管脚设置为秒脉冲输出模式ꎬ以便于同其他

系统进行同步比对ꎮ 图 6 为测试模型ꎮ在本次测试系统中ꎬ两个硬件平台分别作为两

个节点ꎬ通过网线与 PC 主机连接ꎬGPIO6 端连接至

示波器ꎬ观察示波器如图 7 所示ꎮ上方的波形是硬件系统初始化后所确定的最佳

主时钟输出的秒脉冲作为参考ꎬ下方两个波形是从

时钟所输出的脉冲信号ꎮ 图中中间波形与主时钟的

时钟差表现为上升沿的之间 52 ns 的偏差ꎬ是脉冲

信号经过硬件平台后的时钟抖动值ꎻ最下方的波形

3 与主时钟相差 58 nsꎬ可见在此 PTP 时钟模型中ꎬ波形 2 作为透明时钟存在ꎬ使得两个从时钟的对时

精度误差不大ꎮ由此可见此时钟同步系统可以满足精度为纳秒

级的对时要求ꎮ

0351

第 6 期 王晋祺ꎬ陈  鸿基于 ARM 的 IEEE1588 精密时钟同步协议实现    

图 6  PTP 时钟同步系统测试模型

图 7  测试结果图

4  总结

为了满足一些分布式测控系统对时间同步精度

的要求ꎬ本文基于 IEEE 1588 精密时钟同步协议ꎬ设

计了嵌入式软硬件平台ꎬ经过测试精度可达到纳秒

级ꎮ 整个时钟同步系统具有结构简单移动性好成本低精度高等优势ꎬ可以广泛应用于对时钟同步性

有高要求的测控系统中ꎮ

参考文献

[1]   孙祥祥 分布式系统时钟同步协议的研究与实现[D] 杭州杭州电子科技大学ꎬ2014

[2] 黄翔ꎬ江道灼 GPS 同步时钟的高精度守时方案[J] 电力系统

自动化ꎬ2010ꎬ34(18)74-77[3] 郭彬 基于北斗 GPS 双模授时的电力系统时间同步技术研究

[D] 长沙湖南大学ꎬ2010[4] 陈敏 基于 NTP 协议的网络时间同步系统的研究与实现[D]

武汉华中科技大学ꎬ2005[5] 孙娜ꎬ熊伟ꎬ丁宇征 时钟同步的研究与应用[ J] 计算机工程

与应用ꎬ2003ꎬ39(27)177-179[6] Eidson JꎬKang L IEEE Standard for a Precision Clock Synchroni ̄

zation Protocol for Networked Measurement and Control Systems[C] IEEE Std IEEEꎬ20081-300

[7] 张先富ꎬ冯冬芹 基于加权最小二乘法的精确时钟同步算法研

究与实现[J] 传感技术学报ꎬ2008ꎬ21(9)1556-1560[8] 张端阳ꎬ肖力ꎬ付忠敏 基于 stm32f407 的精确时钟同步协议的

实现[J] 计算机与数字工程ꎬ2018ꎬ46(3)620-626 DOI103969 jissn1672-9722201803043

[9] 戴宝峰ꎬ崔少辉ꎬ常健 IEEE1588 最佳主时钟算法的分析与实

现[J] 仪表技术ꎬ2008(2)29-31[10] 邓德杨 基于以太网交换机的 IEEE1588V2 时钟同步协议研究

与实现[D] 杭州杭州电子科技大学ꎬ2014[11] 陈金凤ꎬ华宇ꎬ孙中尉 IEEE1588v2 透明时钟研究与实现[ J]

宇航计测技术ꎬ2013ꎬ33(3)11-16[12] 吕海宁 水下分布式传感器系统数据同步技术设计[D] 哈尔

滨哈尔滨工程大学ꎬ2015[13] KSZ8463 ̄Ethernet 3 ̄Port Switch with IEEE 1588v2 and RMII MII

Interface[ DB OL] ( 2014 - 6 - 11) https www microchipcom wwwproducts en KSZ8463

[14] ksz9692pb [DB OL] ( 2011 - 5) https www microchip com wwwproducts en KSZ9692

王晋祺(1992-)ꎬ女ꎬ硕士研究生ꎬ主要

研究方向为嵌入式时间同步ꎬwjqydd163comꎻ

陈  鸿(1963-)ꎬ男ꎬ通信作者ꎬ博士ꎬ教授ꎬ主要研究方向为测试计量技术

及仪器ꎬ自动化测试与控制技术光电

检测技术ꎬ64406912 qqcomꎮ

1351

Page 3: ARM IEEE1588 - chinaelectrondevices.seu.edu.cn

第 6 期 王晋祺ꎬ陈  鸿基于 ARM 的 IEEE1588 精密时钟同步协议实现    

路径延时ꎻ 另一种被称为点对点 P2P ( Peer toPeer)ꎬ此模式下通过对等延时机制测量主从节点之

间的分段路径延时ꎬ并将这些延时逐步累加ꎮ 协议

根据请求应答机制的不同划分了两种工作模式一步模式和两步模式ꎮ 两者之间区别主要在于ꎬ在一

步模式下同步报文所需要发送的硬件时间戳包含在

自身报文中ꎬ而两步模式同步报文需要发送的硬件

时间戳则由跟随报文携带ꎮ 图 3 利用端对端模式下

的两步模式来说明 PTP 精密时钟同步协议的原理ꎮ

图 3  PTP 时钟同步协议原理

第 1 步  根据定义好的时钟间隔ꎬ主时钟节点

会周期性地向从时钟节点发送同步报文ꎬ并且记录

同步报文的发送时刻为 t1ꎬ随后将时间戳 t1 与跟随

报文打包发送给从时钟节点ꎮ第 2 步  从时钟节点收到主时钟发送的同步报

文后ꎬ记录下收到报文的时刻为 t2ꎮ第 3 步  从时钟节点收到跟随报文后ꎬ解析并

记录报文中所携带的 t1 时间戳ꎬ达到预设的时间间

隔后ꎬ向主时钟节点发送延时请求报文ꎬ并记录报文

的发出时刻为 t3ꎮ第 4 步  主时钟节点收到延时请求报文并记录

收到时刻为 t4ꎬ然后将时间戳 t4 打包通过延时请求

应答报文发送给从时钟节点ꎮ到此为止ꎬ从时钟节点已经获取了硬件时间戳

t1ꎬt2ꎬt3ꎬt4ꎮ 记主从节点之间的时间偏差为 Offsetꎬ报文从主时钟到从时钟的传输延迟为 Delayꎮ 根据

上述已知数据ꎬ可以得到Delay = t2-t1-Offset (1)Delay = t4-t3+Offset (2)

可以得到链路延迟 Delay 和时钟差 OffsetDelay =( t2-t1+t4-t3) 2 (3)Offset =( t2-t1+t3-t4) 2 (4)

也可以记作Offset =( t2-t1)-Delay (5)

2  PTP 时钟同步的实现

21  PTP 时钟的硬件实现

本文设计的基于 IEEE1588 时钟同步协议的硬

件平台是以 ARM 为核心ꎬ由时钟同步模块和主控模

块组成ꎮ 选择美国微芯科技公司(Microchip)设计研

发的 KSZ8463[12-13] 芯片作为时钟同步模块主芯片ꎬ选择同公司生产研发的 KSZ9692[14]作为微处理器芯

片ꎮ KSZ8643 是一款自带 PTP 引擎ꎬ支持 IEEE1588协议的以太网物理层芯片ꎬ可以实现时间戳的捕获ꎬ并且有大量的 GPIO 端口可以输入输出脉冲信号ꎮKSZ9692 是一款基于 ARM922T 内核的 32 位 SOC(System on Chipꎬ即片上系统)ꎬ自带以太网控制器ꎬ只需外接支持 PTP 协议硬件捕获时间戳功能的物理

层芯片即可实现时钟同步ꎮ 图 4 为硬件实物图ꎮ

图 4  硬件平台实物图

22  PTP 时钟的软件实现

PTP 协议是一种次微秒级精度的时钟同步应用

层协议ꎬ协议中的报文通常是以 UDP 数据包的形式

传输ꎮ 为了便于用户开发ꎬMicrochip 公司提供了开

源的 PTP 驱动程序和封装好的 APIs 函数ꎬ用于主

时钟的选择和时钟同步ꎮksz_ptpc 和 ksz_ptph 文件包括了实现 PTP 协

议的主要网络驱动ꎮ 网络驱动程序需要声明所需的

数据结构并实现以下功能ptp_readꎬptp_writeꎬptp_acquire 和 ptp_releaseꎮ 此外ꎬ它还需要实现代码以

支持 PTP 操作ꎮ驱动程序在初始化期间需要调用函数 ptp_initꎮ

当设备打开时ꎬ可以调用 ptp_start 来启动 PPSꎬ若程

序执行完成ꎬ则调用函数 ptp_close 关闭设备ꎬ卸载

驱动程序时调用函数 ptp_exitꎮ 启动 PTP 操作时调

用函数 ptp_init_stateꎬ它通常由应用程序执行 PTP协议栈工作来触发ꎮ 停止处理 PTP 消息时应调用

函数 ptp_exit_stateꎮAPI 函数包括初始化函数ꎬ文件 I O 函数ꎬIoctl

9251

电  子  器  件 第 42 卷

函数ꎮ 其中文件 I O 和 Ioctl 函数提供了两种类型

的访问控制ꎮ Ioctl 常用于立即检索信息直接访问ꎬ对于有一定延迟的访问使用文件 I Oꎮ 初始化函数

主要利用 tsm_ init( )函数打开设备并进行初始化ꎬtsm_ cleanup( )函数用于清除被设备占用的数据缓

冲ꎬtsm_ exit( )用来关闭设备ꎻ文件 I O 类函数中ꎬ主要使 tsm_ recv( )ꎬtsm_ send( )函数来检索时间

戳信息数据和发送命令ꎬ还有一系列 tsm_ cmd 函数

发送报文请求调整硬件设置ꎻIoctl 类函数通过 set_hw 系列函数来配置时钟同步系统的运行模式ꎬrx_

event( )和 tx_ event( )函数ꎬ前者用于启用事件探

测ꎬ后者用于启用触发输出ꎬ get _ clock ( ) set _clock( )adj_ clock( )函数用于配置和调整时钟ꎬget_ delay( )set_ delay( )函数用于获取设置端口

和硬件延迟ꎬget_ utc_ offset( )set_ utc_ offset( )等一系列函数用来调整时钟ꎬget_ rx_ timestamp( )get_ tx_ timestamp( )函数用于获取及接收时间戳信

息ꎮ 综合以上函数组成了基于 PTP 协议的同步软

件结构ꎮ图 5 为主从时钟对时流程图ꎮ

图 5  主从时钟对时流程图

3  PTP 时钟系统测试

驱动在初始化时将物理层芯片 KSZ8463 的

GPIO6 管脚设置为秒脉冲输出模式ꎬ以便于同其他

系统进行同步比对ꎮ 图 6 为测试模型ꎮ在本次测试系统中ꎬ两个硬件平台分别作为两

个节点ꎬ通过网线与 PC 主机连接ꎬGPIO6 端连接至

示波器ꎬ观察示波器如图 7 所示ꎮ上方的波形是硬件系统初始化后所确定的最佳

主时钟输出的秒脉冲作为参考ꎬ下方两个波形是从

时钟所输出的脉冲信号ꎮ 图中中间波形与主时钟的

时钟差表现为上升沿的之间 52 ns 的偏差ꎬ是脉冲

信号经过硬件平台后的时钟抖动值ꎻ最下方的波形

3 与主时钟相差 58 nsꎬ可见在此 PTP 时钟模型中ꎬ波形 2 作为透明时钟存在ꎬ使得两个从时钟的对时

精度误差不大ꎮ由此可见此时钟同步系统可以满足精度为纳秒

级的对时要求ꎮ

0351

第 6 期 王晋祺ꎬ陈  鸿基于 ARM 的 IEEE1588 精密时钟同步协议实现    

图 6  PTP 时钟同步系统测试模型

图 7  测试结果图

4  总结

为了满足一些分布式测控系统对时间同步精度

的要求ꎬ本文基于 IEEE 1588 精密时钟同步协议ꎬ设

计了嵌入式软硬件平台ꎬ经过测试精度可达到纳秒

级ꎮ 整个时钟同步系统具有结构简单移动性好成本低精度高等优势ꎬ可以广泛应用于对时钟同步性

有高要求的测控系统中ꎮ

参考文献

[1]   孙祥祥 分布式系统时钟同步协议的研究与实现[D] 杭州杭州电子科技大学ꎬ2014

[2] 黄翔ꎬ江道灼 GPS 同步时钟的高精度守时方案[J] 电力系统

自动化ꎬ2010ꎬ34(18)74-77[3] 郭彬 基于北斗 GPS 双模授时的电力系统时间同步技术研究

[D] 长沙湖南大学ꎬ2010[4] 陈敏 基于 NTP 协议的网络时间同步系统的研究与实现[D]

武汉华中科技大学ꎬ2005[5] 孙娜ꎬ熊伟ꎬ丁宇征 时钟同步的研究与应用[ J] 计算机工程

与应用ꎬ2003ꎬ39(27)177-179[6] Eidson JꎬKang L IEEE Standard for a Precision Clock Synchroni ̄

zation Protocol for Networked Measurement and Control Systems[C] IEEE Std IEEEꎬ20081-300

[7] 张先富ꎬ冯冬芹 基于加权最小二乘法的精确时钟同步算法研

究与实现[J] 传感技术学报ꎬ2008ꎬ21(9)1556-1560[8] 张端阳ꎬ肖力ꎬ付忠敏 基于 stm32f407 的精确时钟同步协议的

实现[J] 计算机与数字工程ꎬ2018ꎬ46(3)620-626 DOI103969 jissn1672-9722201803043

[9] 戴宝峰ꎬ崔少辉ꎬ常健 IEEE1588 最佳主时钟算法的分析与实

现[J] 仪表技术ꎬ2008(2)29-31[10] 邓德杨 基于以太网交换机的 IEEE1588V2 时钟同步协议研究

与实现[D] 杭州杭州电子科技大学ꎬ2014[11] 陈金凤ꎬ华宇ꎬ孙中尉 IEEE1588v2 透明时钟研究与实现[ J]

宇航计测技术ꎬ2013ꎬ33(3)11-16[12] 吕海宁 水下分布式传感器系统数据同步技术设计[D] 哈尔

滨哈尔滨工程大学ꎬ2015[13] KSZ8463 ̄Ethernet 3 ̄Port Switch with IEEE 1588v2 and RMII MII

Interface[ DB OL] ( 2014 - 6 - 11) https www microchipcom wwwproducts en KSZ8463

[14] ksz9692pb [DB OL] ( 2011 - 5) https www microchip com wwwproducts en KSZ9692

王晋祺(1992-)ꎬ女ꎬ硕士研究生ꎬ主要

研究方向为嵌入式时间同步ꎬwjqydd163comꎻ

陈  鸿(1963-)ꎬ男ꎬ通信作者ꎬ博士ꎬ教授ꎬ主要研究方向为测试计量技术

及仪器ꎬ自动化测试与控制技术光电

检测技术ꎬ64406912 qqcomꎮ

1351

Page 4: ARM IEEE1588 - chinaelectrondevices.seu.edu.cn

电  子  器  件 第 42 卷

函数ꎮ 其中文件 I O 和 Ioctl 函数提供了两种类型

的访问控制ꎮ Ioctl 常用于立即检索信息直接访问ꎬ对于有一定延迟的访问使用文件 I Oꎮ 初始化函数

主要利用 tsm_ init( )函数打开设备并进行初始化ꎬtsm_ cleanup( )函数用于清除被设备占用的数据缓

冲ꎬtsm_ exit( )用来关闭设备ꎻ文件 I O 类函数中ꎬ主要使 tsm_ recv( )ꎬtsm_ send( )函数来检索时间

戳信息数据和发送命令ꎬ还有一系列 tsm_ cmd 函数

发送报文请求调整硬件设置ꎻIoctl 类函数通过 set_hw 系列函数来配置时钟同步系统的运行模式ꎬrx_

event( )和 tx_ event( )函数ꎬ前者用于启用事件探

测ꎬ后者用于启用触发输出ꎬ get _ clock ( ) set _clock( )adj_ clock( )函数用于配置和调整时钟ꎬget_ delay( )set_ delay( )函数用于获取设置端口

和硬件延迟ꎬget_ utc_ offset( )set_ utc_ offset( )等一系列函数用来调整时钟ꎬget_ rx_ timestamp( )get_ tx_ timestamp( )函数用于获取及接收时间戳信

息ꎮ 综合以上函数组成了基于 PTP 协议的同步软

件结构ꎮ图 5 为主从时钟对时流程图ꎮ

图 5  主从时钟对时流程图

3  PTP 时钟系统测试

驱动在初始化时将物理层芯片 KSZ8463 的

GPIO6 管脚设置为秒脉冲输出模式ꎬ以便于同其他

系统进行同步比对ꎮ 图 6 为测试模型ꎮ在本次测试系统中ꎬ两个硬件平台分别作为两

个节点ꎬ通过网线与 PC 主机连接ꎬGPIO6 端连接至

示波器ꎬ观察示波器如图 7 所示ꎮ上方的波形是硬件系统初始化后所确定的最佳

主时钟输出的秒脉冲作为参考ꎬ下方两个波形是从

时钟所输出的脉冲信号ꎮ 图中中间波形与主时钟的

时钟差表现为上升沿的之间 52 ns 的偏差ꎬ是脉冲

信号经过硬件平台后的时钟抖动值ꎻ最下方的波形

3 与主时钟相差 58 nsꎬ可见在此 PTP 时钟模型中ꎬ波形 2 作为透明时钟存在ꎬ使得两个从时钟的对时

精度误差不大ꎮ由此可见此时钟同步系统可以满足精度为纳秒

级的对时要求ꎮ

0351

第 6 期 王晋祺ꎬ陈  鸿基于 ARM 的 IEEE1588 精密时钟同步协议实现    

图 6  PTP 时钟同步系统测试模型

图 7  测试结果图

4  总结

为了满足一些分布式测控系统对时间同步精度

的要求ꎬ本文基于 IEEE 1588 精密时钟同步协议ꎬ设

计了嵌入式软硬件平台ꎬ经过测试精度可达到纳秒

级ꎮ 整个时钟同步系统具有结构简单移动性好成本低精度高等优势ꎬ可以广泛应用于对时钟同步性

有高要求的测控系统中ꎮ

参考文献

[1]   孙祥祥 分布式系统时钟同步协议的研究与实现[D] 杭州杭州电子科技大学ꎬ2014

[2] 黄翔ꎬ江道灼 GPS 同步时钟的高精度守时方案[J] 电力系统

自动化ꎬ2010ꎬ34(18)74-77[3] 郭彬 基于北斗 GPS 双模授时的电力系统时间同步技术研究

[D] 长沙湖南大学ꎬ2010[4] 陈敏 基于 NTP 协议的网络时间同步系统的研究与实现[D]

武汉华中科技大学ꎬ2005[5] 孙娜ꎬ熊伟ꎬ丁宇征 时钟同步的研究与应用[ J] 计算机工程

与应用ꎬ2003ꎬ39(27)177-179[6] Eidson JꎬKang L IEEE Standard for a Precision Clock Synchroni ̄

zation Protocol for Networked Measurement and Control Systems[C] IEEE Std IEEEꎬ20081-300

[7] 张先富ꎬ冯冬芹 基于加权最小二乘法的精确时钟同步算法研

究与实现[J] 传感技术学报ꎬ2008ꎬ21(9)1556-1560[8] 张端阳ꎬ肖力ꎬ付忠敏 基于 stm32f407 的精确时钟同步协议的

实现[J] 计算机与数字工程ꎬ2018ꎬ46(3)620-626 DOI103969 jissn1672-9722201803043

[9] 戴宝峰ꎬ崔少辉ꎬ常健 IEEE1588 最佳主时钟算法的分析与实

现[J] 仪表技术ꎬ2008(2)29-31[10] 邓德杨 基于以太网交换机的 IEEE1588V2 时钟同步协议研究

与实现[D] 杭州杭州电子科技大学ꎬ2014[11] 陈金凤ꎬ华宇ꎬ孙中尉 IEEE1588v2 透明时钟研究与实现[ J]

宇航计测技术ꎬ2013ꎬ33(3)11-16[12] 吕海宁 水下分布式传感器系统数据同步技术设计[D] 哈尔

滨哈尔滨工程大学ꎬ2015[13] KSZ8463 ̄Ethernet 3 ̄Port Switch with IEEE 1588v2 and RMII MII

Interface[ DB OL] ( 2014 - 6 - 11) https www microchipcom wwwproducts en KSZ8463

[14] ksz9692pb [DB OL] ( 2011 - 5) https www microchip com wwwproducts en KSZ9692

王晋祺(1992-)ꎬ女ꎬ硕士研究生ꎬ主要

研究方向为嵌入式时间同步ꎬwjqydd163comꎻ

陈  鸿(1963-)ꎬ男ꎬ通信作者ꎬ博士ꎬ教授ꎬ主要研究方向为测试计量技术

及仪器ꎬ自动化测试与控制技术光电

检测技术ꎬ64406912 qqcomꎮ

1351

Page 5: ARM IEEE1588 - chinaelectrondevices.seu.edu.cn

第 6 期 王晋祺ꎬ陈  鸿基于 ARM 的 IEEE1588 精密时钟同步协议实现    

图 6  PTP 时钟同步系统测试模型

图 7  测试结果图

4  总结

为了满足一些分布式测控系统对时间同步精度

的要求ꎬ本文基于 IEEE 1588 精密时钟同步协议ꎬ设

计了嵌入式软硬件平台ꎬ经过测试精度可达到纳秒

级ꎮ 整个时钟同步系统具有结构简单移动性好成本低精度高等优势ꎬ可以广泛应用于对时钟同步性

有高要求的测控系统中ꎮ

参考文献

[1]   孙祥祥 分布式系统时钟同步协议的研究与实现[D] 杭州杭州电子科技大学ꎬ2014

[2] 黄翔ꎬ江道灼 GPS 同步时钟的高精度守时方案[J] 电力系统

自动化ꎬ2010ꎬ34(18)74-77[3] 郭彬 基于北斗 GPS 双模授时的电力系统时间同步技术研究

[D] 长沙湖南大学ꎬ2010[4] 陈敏 基于 NTP 协议的网络时间同步系统的研究与实现[D]

武汉华中科技大学ꎬ2005[5] 孙娜ꎬ熊伟ꎬ丁宇征 时钟同步的研究与应用[ J] 计算机工程

与应用ꎬ2003ꎬ39(27)177-179[6] Eidson JꎬKang L IEEE Standard for a Precision Clock Synchroni ̄

zation Protocol for Networked Measurement and Control Systems[C] IEEE Std IEEEꎬ20081-300

[7] 张先富ꎬ冯冬芹 基于加权最小二乘法的精确时钟同步算法研

究与实现[J] 传感技术学报ꎬ2008ꎬ21(9)1556-1560[8] 张端阳ꎬ肖力ꎬ付忠敏 基于 stm32f407 的精确时钟同步协议的

实现[J] 计算机与数字工程ꎬ2018ꎬ46(3)620-626 DOI103969 jissn1672-9722201803043

[9] 戴宝峰ꎬ崔少辉ꎬ常健 IEEE1588 最佳主时钟算法的分析与实

现[J] 仪表技术ꎬ2008(2)29-31[10] 邓德杨 基于以太网交换机的 IEEE1588V2 时钟同步协议研究

与实现[D] 杭州杭州电子科技大学ꎬ2014[11] 陈金凤ꎬ华宇ꎬ孙中尉 IEEE1588v2 透明时钟研究与实现[ J]

宇航计测技术ꎬ2013ꎬ33(3)11-16[12] 吕海宁 水下分布式传感器系统数据同步技术设计[D] 哈尔

滨哈尔滨工程大学ꎬ2015[13] KSZ8463 ̄Ethernet 3 ̄Port Switch with IEEE 1588v2 and RMII MII

Interface[ DB OL] ( 2014 - 6 - 11) https www microchipcom wwwproducts en KSZ8463

[14] ksz9692pb [DB OL] ( 2011 - 5) https www microchip com wwwproducts en KSZ9692

王晋祺(1992-)ꎬ女ꎬ硕士研究生ꎬ主要

研究方向为嵌入式时间同步ꎬwjqydd163comꎻ

陈  鸿(1963-)ꎬ男ꎬ通信作者ꎬ博士ꎬ教授ꎬ主要研究方向为测试计量技术

及仪器ꎬ自动化测试与控制技术光电

检测技术ꎬ64406912 qqcomꎮ

1351