一种在非实时系统中校准PTP主时钟的方法与流程

文档序号:16899281发布日期:2019-02-19 17:48阅读:520来源:国知局
一种在非实时系统中校准PTP主时钟的方法与流程

本发明实施例涉及时钟同步技术领域,具体涉及一种在非实时系统中校准ptp主时钟的方法。



背景技术:

ptp(precisiontimeprotocol,精确时间协议)是一种时间同步的协议,其本身可用于设备之间的高精度时间同步,也可被借用于设备之间的频率同步。相比ntp(networktimeprotocol,网络时间协议),ptp能够满足更高精度的时间同步要求,ntp一般只能达到亚秒级的时间同步精度,而ptp则可达到亚微秒级,实时性非常高。

在一些非实时操作系统中,以linux操作系统为例,linux本身具有强大的网络功能,而且具有开源的ptp协议栈,但是标准linux并不提供强实时性。基于此,本发明提供一种在非实时系统中校准ptp主时钟的方法,用于方便的校准ptp主时钟的精度,满足大多数ptp时间系统的要求。



技术实现要素:

本发明实施例提供了一种在非实时系统中校准ptp主时钟的方法,用于校准ptp主时钟的精度,校准精度达到亚微秒级,满足大多数ptp时间系统的精度要求。

为了解决上述技术问题,本发明实施例公开了如下技术方案:

一种在非实时系统中校准ptp主时钟的方法,所述方法包括以下步骤:

在非实时系统中配置ptp芯片,并校准ptp芯片时间的准确性;

在非实时系统中设置检测系统时钟变化及秒脉冲跳变的定时器线程;

非实时系统检查卫星报文和秒脉冲信号,并当卫星报文和秒脉冲信号有效时,以卫星时间为基准进行phy硬件时间的调整,然后根据phy硬件时间进行系统时间调整。

基于上述方案,本方法做如下优化:

进一步的,所述配置ptp芯片,校准ptp芯片时间的准确性,包括下述步骤:

将ptp芯片与运行非实时系统的处理器连接;

调整ptp触发配置寄存器ptp_trig,将gpio2配置为输出phy生成的触发信号;

调整ptp时间寄存器ptp_tdr,将触发信号配置为脉宽输出,上升沿触发。

进一步的,所述在非实时系统中设置检测系统时钟变化及秒脉冲跳变的定时器线程,包括下述步骤:

将gps/北斗接收模块及cpld处理模块与运行非实时系统的处理器连接;

在非实时系统中设置检测系统时钟变化及秒脉冲跳变的定时器线程,如果发生秒脉冲跳变,系统发送检查心跳命令到看门狗程序模块,看门狗程序模块执行心跳检查;

系统检查gps/北斗接收模块报文发送中的秒脉冲有效位,并根据有效位判断是否进行系统时间的调整和phy硬件时间的调整。

进一步的,所述非实时系统进行phy硬件时间和系统时间调整,包括下述步骤:

将phy硬件时钟生成的秒脉冲和gps/北斗接收模块的秒脉冲接入cpld处理模块;

cpld处理模块对主板秒脉冲与phy秒脉冲出现的时间差进行记数;

cpld记数完成后产生中断,然后由输出电路通过总线将所记数据输出至非实时系统的处理器,非实时系统将所记数据取走,并根据所取数据对phy硬件时间进行调整。

所述cpld处理模块输入50mhz频率对主板秒脉冲与phy秒脉冲出现的时间差进行记数,并使用两个16位计数器进行计数。

优选的,非实时系统调整phy硬件时间主要通过单步时间调整、固定速率调整和临时速率调整三种方式实现,具体实现包括如下步骤:

在有效中断的前n次内,实时更新计数的脉冲偏差计数值;

在有效中断的第n+1次时,对时间和固定速率进行一次粗调,调整的时间通过下述公式(1)计算

其中,,ppscount为脉冲偏差计数值,ratedival为phy输出时钟有效分频值;

调整的固定速率通过下述公式(2)计算

其中,preppscount为上一次秒脉冲的计数值;

接下来,当脉冲偏差计数值ppscount来临时进行去极值滤波,滤波完成后进行时间的单步调整,固定速率的调整参数通过下述公式(3)计算

rate=prerate+34.3597×ppscount(3)

其中,prerate为上一次的计算调整值,每次调整的值在上一次调整值的基础上进行步进,且采用平均值滤波算法,每m次调整一次。

优选的,在上述调整phy硬件时间的步骤中,所述n的取值为15,m的取值为10。

进一步的,如上所述的一种在非实时系统中校准ptp主时钟的方法,所述运行非实时系统的处理器采用arm处理器,ptp芯片采用dp83640芯片。

本申请提供的技术方案包括以下有益效果:

本申请提供的一种在非实时系统中校准ptp主时钟的方法,包括配置ptp芯片,校准ptp芯片时间的准确性;在非实时系统中设置检测系统时钟变化及秒脉冲跳变的定时器线程;非实时系统检查卫星报文和秒脉冲信号,并当卫星报文和秒脉冲信号有效时进行phy硬件时间和系统时间调整。本申请的在非实时系统中校准ptp主时钟的方法,简化了外围信号的处理难度,实时性高,非实时操作系统可以非常方便的用来校准ptp主时钟的精度,校准的精度达到亚微秒级,满足大多数ptp时间系统的要求,是对本地时钟校正的一个新的快速有效的方法。

附图说明

此处的附图被并入说明书中并构成说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

图1为本申请实施例提供的一种在非实时系统中校准ptp主时钟方法的流程示意图;

图2为本申请实施例提供的一种在非实时系统中校准ptp主时钟方法的硬件连接示意图;

图3为图1中ptp芯片的配置过程流程图;

图4为图1中定时器线程的工作流程图;

图5为cpld处理模块的频率计数电路图。

具体实施方式

为使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

图1、图2分别为本申请实施例提供的一种在非实时系统中校准ptp主时钟方法的流程示意图及硬件连接示意图。本实施例中,软件上采用linux操作系统,对linux操作系统进行设置,运行ptp协议栈;硬件上采用可运行linux系统的arm处理器、cpld处理器、gps/北斗接收模块和ptp芯片,且ptp芯片采用dp83640芯片。

由图1可知,本实施例的一种在非实时系统中校准ptp主时钟的方法,包括以下步骤:

s1、配置ptp芯片,校准ptp芯片时间的准确性;

s2、在linux系统中设置检测系统时钟变化及秒脉冲跳变的定时器线程;

s3、linux系统检查卫星报文和脉冲信号,并当卫星报文和脉冲信号有效时进行phy硬件时间和系统时间调整。

具体而言,所述步骤s1中,ptp芯片的配置过程包括:

将ptp芯片与运行linux系统的处理器连接;

调整ptp触发配置寄存器ptp_trig,将gpio2配置为输出phy生成的trigger信号;

调整ptp时间寄存器ptp_tdr,将trigger信号配置为脉宽输出,上升沿触发。

进一步来说,在上述步骤s1中,ptp芯片的具体配置过程如图3所示:首先检测是否存在dp83640芯片,检测不到芯片函数将会退出;然后清零ptp事件寄存器ptp_event和触发配置寄存器ptp_trig,为配置两个寄存器做准备;使能dp83640芯片10m网络支持;然后初始化时钟源输出配置寄存器ptp_coc和时钟源寄存器ptp_clksrc,在输出时钟信号初始化过程中,配置ptp_clkouten位输出clk信号,分频值设为4,配置ptp时钟源默认选择内部pgm;置位控制寄存器的ptp_enable位使能ptp时钟;初始化ptp触发配置寄存器ptp_trig,将gpio2配置为输出phy生成的秒脉冲,trigger信号作为dp83640的输出信号,配置为脉宽输出,周期为1s,上升沿触发,占空比为10%,设置顺序是首先通过ptp控制寄存器选择触发功能,trig_load开始ptp加载过程,随后写入trigger信号秒脉冲的上升沿触发时间(trigger信号的上升沿时刻以dp83640的本地1588硬件时钟准秒时刻为基准,设置为相对于ieee1588硬件时间滞后1s)、触发方式、脉冲高低电平的时间;接下来初始化发送配置寄存器和输出配置寄存器,禁止发送时间戳和接收时间戳功能,清空发送接收时间戳;使能linux系统gpio中断;再接下来初始化ptp状态寄存器,使能中断,ptp芯片配置结束。

在初始化ptp发送时间戳操作中,ptp发送配置寄存器ptp_txcfg0中置位ip1588_en、tx_l2_en、tx_ipv4_en和tx_ts_en。使能ieee1588自定义的ip地址过滤机制,使能ieee802.3/ethernet封包的ptp事件消息时间戳的检测,使能ipv4封包的ptp事件消息时间戳的检测并且使能发送时间戳功能。初始化ptp发送配置寄存器ptp_txcfg1,用于匹配ptp消息中的byte0。初始化ptp接收时间戳和初始化ptp发送时间戳操作类似,配置5个ptp接收配置寄存器ptp_rxcfg和ptp接收哈希值寄存器以使能接收哈希值。最后配置ptp中断控制寄存器使能gpio中断,配置ptp状态寄存器ptp_sts使能发送时间戳rdy中断、接收时间戳rdy中断、触发完成中断和事件时间戳rdy中断。

具体的,所述步骤s2中,在linux系统中设置检测系统时钟变化及秒脉冲跳变的定时器线程,包括下述步骤:

将gps/北斗接收模块及cpld处理模块与运行linux系统的处理器连接;

在linux系统中设置检测系统时钟变化及秒脉冲跳变的定时器线程,如果发生秒脉冲跳变,系统发送检查心跳命令到看门狗程序模块,看门狗程序模块执行心跳检查;

系统检查gps/北斗接收模块报文发送中的秒脉冲有效位,并根据有效位判断是否进行系统时间的调整和phy硬件时间的调整。定时器线程的工作流程如图4所示。

具体的,所述步骤s3中,linux系统进行phy硬件时间和系统时间的调整,包括下述步骤:

将phy硬件时钟生成的秒脉冲和gps/北斗接收模块的秒脉冲接入cpld处理模块;

cpld处理模块对主板秒脉冲与phy秒脉冲出现的时间差进行记数;

cpld记数完成后产生中断,然后由输出电路通过总线将所记数据输出至linux系统的处理器,linux系统将所记数据取走,并根据所取数据对phy硬件时间进行调整。

进一步的,cpld处理模块是由cpld输入的50mhz频率对主板秒脉冲与phy秒脉冲出现的时间差进行记数,并使用两个16位记数器达到32位记数范围。数据记数完成后cpld产生中断,随后由输出电路通过总线将数据输出至arm处理器,linux软件系统分两次将记数值取走,并根据所取数据对系统时间及phy硬件时间进行调整。频率计数电路如图5所示。

linux系统调整phy硬件时间主要通过单步时间调整、固定速率调整和临时速率调整三种方式实现,具体实现步骤如下:

(1)在有效中断的前15次内,实时更新计数的脉冲偏差计数值,防止由于初始计数值不稳定导致phy芯片时间的过度震荡;

(2)在有效中断的第16次时,对时间和固定速率进行一次粗调,调整的时间通过下述公式(1)计算

其中,ppscount为脉冲偏差计数值,ratedival为phy输出时钟有效分频值;

调整的固定速率通过下述公式(2)计算

其中,preppscount为上一次秒脉冲的计数值;

(3)在接下来的调整中,为了减少phy硬件时钟的抖动,每当脉冲偏差计数值ppscount来临时进行去极值滤波,去掉过大的偏差值,滤波完成后进行时间的单步调整,固定速率的调整参数通过下述公式(3)计算

rate=prerate+34.3597×ppscount(3)

其中,prerate为上一次的计算调整值,每次调整的值在上一次调整值的基础上进行步进,且采用平均值滤波算法,每10次调整一次。

本实施例的一种在非实时系统中校准ptp主时钟的方法,基于arm与cpld架构的核心单元,arm处理器结合linux系统实现网络协议栈,cpld处理器调理外围信号,简化了arm处理器外围信号的处理难度。此外,本方法在维护主时钟dp83640本地时钟源的设计下,采用cpld来处理卫星秒脉冲和phy生成的秒脉冲,并将两者秒脉冲进行比对,比对的误差送入linux系统处理,快速有效,是对dp83640phy本地时钟源校正的一个新的方法。

以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1