一种提高时间戳测量精度的方法及装置与流程

文档序号:12375317阅读:498来源:国知局
一种提高时间戳测量精度的方法及装置与流程

本发明涉及计算机技术领域,具体涉及一种提高时间戳测量精度的方法及装置。



背景技术:

在测量、控制等应用中,越来越多的使用分布式系统。各类设备(例如计算机、传感器、数控设备等)相互连接形成网络,并按照某种协议实现所有设备间的时间同步,从而使各台设备以高度的协调性共同执行任务。不同的应用对时间同步精度的要求不同,例如普通的音频网络仅要求ms级的同步,而工业总线则一般要求亚us级的同步。IEEE-1588精确时间同步协议(PTP)即是出于高精度时间同步的目的制定的,在该协议(包括任何类似的协议)中,对时间同步精度有最直接影响的即是“时间戳”。一个事件的“时间戳”指该事件发生的时刻与参考零时刻的时间间隔,决定“时间戳”精度的是其中的时间测量技术。

精确“时间戳”的给出通常位于协议的底层部分,例如在基于以太网的时间同步网络中,“时间戳”在数据链路层给出,有的PHY芯片具有测量“时间戳”的功能,或者可以在可编程数字逻辑器件(如FPGA)中实现时间测量。

在FPGA中实现时间测量,最简单的方法是时钟计数器,此方法的分辨率即是计数时钟的一个周期,例如对于100MHz时钟即是10ns;另一种方法是时间内插,它的分辨率取决于FPGA内延时链的单元延时,通常可以达到小于100ps。针对不同的应用需求,这两种方法都被广泛使用,时钟计数器方法实现简单,适用于一般的同步系统;时间内插方法更复杂,可以达到非常高的分辨率,很多专用的高精度时间数字转换(TDC)芯片即是基于该原理实现的。

时钟计数器方法的分辨率取决于计数时钟的频率,通常来说对于10ns级别的分辨率是容易达到的,但若要实现更高的分辨率则会对器件(如FPGA)性能以及电路设计等方面都提出较高的要求,因此这是一种仅适用于对同步精度要求不高的网络的技术。而时间内插方法的缺点是实现复杂,需要FPGA内有可作为延时链使用的硬线资源,且要求这些延时单元的延时均匀稳定。这对器件工艺、稳定性和一致性等方面都提出较严苛的要求,因此这是一种相对高成本的方法。



技术实现要素:

针对现有技术中的缺陷,本发明提供一种提高时间戳测量精度的方法及装置,实现起来较为方便,对器件性能要求较低,且根据需要能够达到优于传统时钟计数法的时间精度。

第一方面,本发明提供了一种提高时间戳测量精度的方法,包括:

获取与被测周期信号具有预设频率偏差的采样时钟;其中所述被测周期信号的频率为f1,所述采样时钟的频率为f2,f2=(1+1/N)*f1,N≥2,N为正整数;

利用所述采样时钟对所述被测周期信号进行采样,获得一个周期性采样信号,该周期性采样信号的周期为所述被测周期信号的周期T1的N倍;

采用粗计数器对所述采样时钟的上升沿从0开始连续计数,统计被测事件中包含的采样时钟的周期的个数;

采用细计数器对所述采样时钟的上升沿从0开始连续计数,但在所述周期性采样信号的每个下降沿被复位,该细计数器以所述周期性采样信号的一个周期为长度进行循环计数,统计被测事件中的不足一个采样时钟的周期的部分,细计数器的分辨率为采样时钟的周期T2的1/N倍,即(1/N)*T2

当在某时刻检测到被测事件时,获取与该时刻对应的粗计数器的计数值n,以及与该时刻对应的细计数器的计数值m,并根据所述n和所述m,获取被测事件的时间戳[n+m*(1/N)]*T2,其中,n+m*(1/N)为被测事件所在时刻距离时间零点所跨越的采样时钟的周期数,T2为采样时钟的周期;其中,时间零点为所述采样时钟的第一个上升沿处。

进一步地,所述获取与被测周期信号具有预设频率偏差的采样时钟,包括:

利用锁相环电路或可编程数字逻辑器件FPGA内的锁相环资源产生与被测周期信号具有预设频率偏差的采样时钟。

进一步地,N取值为2、4、8、16、32、64或128。

第二方面,本发明还提供了一种提高时间戳测量精度的装置,包括:

获取单元,用于获取与被测周期信号具有预设频率偏差的采样时钟;其中所述被测周期信号的频率为f1,所述采样时钟的频率为f2,f2=(1+1/N)*f1,N≥2,N为正整数;

采样单元,用于利用所述采样时钟对所述被测周期信号进行采样,获得一个周期性采样信号,该周期性采样信号的周期为所述被测周期信号的周期T1的N倍;

第一计数单元,用于采用粗计数器对所述采样时钟的上升沿从0开始连续计数,统计被测事件中包含的采样时钟的周期的个数;

第二计数单元,用于采用细计数器对所述采样时钟的上升沿从0开始连续计数,但在所述周期性采样信号的每个下降沿被复位,该细计数器以所述周期性采样信号的一个周期为长度进行循环计数,统计被测事件中的不足一个采样时钟的周期的部分;细计数器的分辨率为采样时钟的周期T2的1/N倍,即(1/N)*T2

时间戳获取单元,用于在某时刻检测到被测事件时,获取与该时刻对应的粗计数器的计数值n,以及与该时刻对应的细计数器的计数值m,并根据所述n和所述m,获取被测事件的时间戳[n+m/N]*T2,其中,n+m/N为被测事件所在时刻距离时间零点所跨越的采样时钟的周期数,T2为采样时钟的周期;其中,时间零点为所述采样时钟的第一个上升沿处。

进一步地,所述获取单元具体用于:

利用锁相环电路或可编程数字逻辑器件FPGA内的锁相环资源产生与被测周期信号具有预设频率偏差的采样时钟。

进一步地,N取值为2、4、8、16、32、64或128。

第三方面,本发明还提供了一种提高时间戳测量精度的装置,包括:锁相环电路、采样器、粗计数器、细计数器和处理器;

其中,所述锁相环电路用于获取与被测周期信号具有预设频率偏差的采样时钟;其中所述被测周期信号的频率为f1,所述采样时钟的频率为f2,f2=(1+1/N)*f1,N≥2,N为正整数;

所述采样器用于利用所述采样时钟对所述被测周期信号进行采样,获得一个周期性采样信号,该周期性采样信号的周期为所述被测周期信号的周期T1的N倍;

所述粗计数器,用于对所述采样时钟的上升沿从0开始连续计数,统计被测事件中包含的采样时钟的周期的个数;

所述细计数器,用于对所述采样时钟的上升沿从0开始连续计数,但在所述周期性采样信号的每个下降沿被复位,以所述周期性采样信号的一个周期为长度进行循环计数,用于统计被测事件中的不足一个采样时钟的周期的部分;细计数器的分辨率为采样时钟的周期T2的1/N倍,即(1/N)*T2

所述处理器,用于在某时刻检测到被测事件时,获取与该时刻对应的粗计数器的计数值n,以及与该时刻对应的细计数器的计数值m,并根据所述n和所述m,获取被测事件的时间戳[n+m*(1/N)]*T2,其中,n+m*(1/N)为被测事件所在时刻距离时间零点所跨越的采样时钟的周期数,T2为采样时钟的周期;其中,时间零点为所述采样时钟的第一个上升沿处。

进一步地,N取值为2、4、8、16、32、64或128。

由上述技术方案可知,本发明提供的提高时间戳测量精度的方法使用一个与被测周期信号存在微小频率偏差的采样时钟对所述被测周期信号进行采样,得到周期性采样信号,然后根据所述采样时钟、所述周期性采样信号以及被测事件发生的时刻,利用粗计数器统计的被测事件中包含的采样时钟的周期的个数,以及细计数器统计的被测事件中的不足一个采样时钟的周期的部分,共同获取被测事件的时间戳。本发明提供的提高时间戳测量精度的方法,实现起来较为方便,对器件性能要求较低,且根据需要能够达到优于传统时钟计数法的时间精度。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例一提供的提高时间戳测量精度的方法流程图;

图2是高精度时间测量的原理说明图;

图3是高精度时间测量示例图;

图4是本发明实施例二提供的提高时间戳测量精度的装置的结构示意图;

图5是本发明实施例三提供的提高时间戳测量精度的装置的结构示意图。

具体实施方式

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

本发明实施例一提供了一种提高时间戳测量精度的方法,参见图1,该方法包括如下步骤:

步骤101:获取与被测周期信号具有预设频率偏差的采样时钟;其中所述被测周期信号的频率为f1,所述采样时钟的频率为f2,f2=(1+1/N)*f1,N≥2,N为正整数。

在本步骤中,可以利用锁相环电路PLL或可编程数字逻辑器件FPGA内的锁相环资源产生与被测周期信号具有预设频率偏差的采样时钟。其中,N的取值根据被测周期信号的频率以及对时间戳的精度要求而确定。理论上,在被测周期信号频率确定的情况下,N取值越大,采样时钟与被测周期信号的频率偏差越小,最终确定的待测事件的时间戳也越精确。例如,N取值可以为2、4、8、16、32、64或128。

例如,参见图3,clk_B为被测周期信号,clk_A为获取的与被测周期信号clk_B具有预设频率偏差的采样时钟,clk_A的频率f2为5Hz,clk_B的频率f1为4Hz,f2=(1+1/4)*f1,即N=4。在这种情况下,通过后续采样过程相当于将被测周期信号clk_B的周期T1细分为4份,从而可以达到0.05s的分辨率。又如,继续保持f2=5Hz,f1=4Hz,当N=64时,相当于将被测周期信号clk_B的周期T1细分为64份,从而可以达到3.9ms的分辨率。

又如,当f1为25MHz,f2=(1+1/64)*f1时,相当于将被测周期信号clk_B的周期T1细分为64份,从而可以达到6.25ns的分辨率。

又如,当f1为25MHz,f2=(1+1/128)*f1时,相当于将被测周期信号clk_B的周期T1细分为128份,从而可以达到3.125ns的分辨率。

步骤102:利用所述采样时钟对所述被测周期信号进行采样,获得一个周期性采样信号,该周期性采样信号的周期为所述被测周期信号的周期T1的N倍。

在本步骤中,参见图3,用clk_A对clk_B采样,得到一个周期性采样信号samp,它的周期是被测周期信号clk_B的周期的N=4倍。

步骤103:采用粗计数器对所述采样时钟的上升沿从0开始连续计数,统计被测事件中包含的采样时钟的周期的个数。

在本步骤中,将clk_B在e时刻的上升沿作为被测事件,以0.05s的分辨率来测量该事件的时间戳。图3中,粗计数器rough按照clk_A上升沿连续计数,它指出被测时间中包含的clk_A周期的个数。

步骤104:采用细计数器对所述采样时钟的上升沿从0开始连续计数,但在所述周期性采样信号的每个下降沿被复位,该细计数器以所述周期性采样信号的一个周期为长度进行循环计数,统计被测事件中的不足一个采样时钟的周期的部分,细计数器的分辨率为采样时钟的周期T2的1/N倍,即(1/N)*T2

在本步骤中,参见图3,细计数器fine也按照clk_A上升沿计数,但在samp的每次下降沿时被复位,即它以samp的一个周期为长度进行循环计数,利用细计数器fine可以计算被测时间中的不足一个clk_A周期的部分,则细计数器的分辨率为T1-T2=[(N+1)/N]*T2-T2=(1/N)*T2,即细计数器的分辨率为采样时钟的周期T2的1/N倍,即(1/N)*T2

步骤105:当在某时刻检测到被测事件时,获取与该时刻对应的粗计数器的计数值n,以及与该时刻对应的细计数器的计数值m,并根据所述n和所述m,获取被测事件的时间戳[n+m*(1/N)]*T2,其中,n+m*(1/N)为被测事件所在时刻距离时间零点所跨越的采样时钟的周期数,T2为采样时钟的周期;其中,时间零点为所述采样时钟的第一个上升沿处。

在本步骤中,参见图3,clk_A在c时刻的上升沿时检测到被测事件(clk_B在e时刻的上升沿),此时粗计数器rough=5,表示5个clk_A周期;细计数器fine=3,表示被测事件在clk_A的b沿之后3/4个clk_A周期。综合粗细计数,得到被测事件距离时间零点5.75个clk_A周期,即1.15s,此即被测事件的时间戳。

由上述描述可知,本发明实施例提供的提高时间戳测量精度的方法,使用一个与被测周期信号存在微小频率偏差的采样时钟对所述被测周期信号进行采样,得到周期性采样信号,然后根据所述采样时钟、所述周期性采样信号以及被测事件发生的时刻,利用粗计数器统计的被测事件中包含的采样时钟的周期的个数,以及细计数器统计的被测事件中的不足一个采样时钟的周期的部分,共同获取被测事件的时间戳。本发明实施例提供的提高时间戳测量精度的方法,实现起来较为方便,对器件性能要求较低,且根据需要能够达到优于传统时钟计数法的时间精度。

由于本发明实施例提供的提高时间戳测量精度的方法可以实现的分辨率取决于采样时钟与被测周期信号的频率偏差的精细程度,也即取决于N值的大小,当N取值越大时,获取的待测事件的时间戳就越为精细。即提高N的值可以使分辨率有更多的提高,但N的取值受限于锁相环以及时钟质量。

本发明实施例提供的提高时间戳测量精度的方法,基于类似游标卡尺的基本原理,即两个具有微小频率偏差的时钟的相位差会有规律地、周期性地变化。例如图2中,一个5Hz的时钟clk_A和一个4Hz的时钟clk_B在a时刻时相位对齐,经过1秒钟后clk_A走过了5个周期,clk_B走过了4个周期,则clk_A领先clk_B一个整周期即2π相位而重新达到相位对齐(d时刻)。从a时刻到d时刻的过程中,每经过一个周期二者对应上升沿的时间差依次为0s、0.05s、0.1s、0.15s、2s(0s),即对clk_A的一个周期做了1/4细分,从而可以达到0.05s的分辨率。

理论上,本发明实施例提供的提高时间戳测量精度的方法可以实现的分辨率取决于采样时钟与被测周期信号的频率偏差的精细程度。在设计中,可以利用锁相环电路(或者可编程数字逻辑器件FPGA内的锁相环资源)产生与被测周期信号具有某微小频率偏差的采样时钟。但是一方面,由于实际的锁相环电路无法任意地产生某精确频率的时钟,即无法使采样时钟在频率上任意接近被测周期信号,从这一点上说,本实施例提供的提高时间戳测量精度的方法可以达到的精度受到锁相环电路的频率生成能力的限制。另一方面,由于时钟源、信号线上干扰等因素,采样时钟或被测时钟总是存在边沿抖动(jitter),通常在亚ns量级。当采样时钟与被测信号的频率偏差十分微小,以致于达到的时间分辨率可以与时钟边沿抖动误差比拟时,就无法再由该方法继续提高时间精度了。因此,该方法可以达到的时间精度(分辨率)受到时钟信号质量的限制。在实际设计中,这往往是限制本方法可以达到的时间分辨率的主要因素。一般来说,它将本实施例提供的方法可以达到的时间分辨率限制在1ns以上。

图3展示了如何利用基本原理,将clk_B在e时刻的上升沿作为被测事件,以0.05s的分辨率来测量该事件的时间戳。图3中,clk_A的频率为5Hz,clk_B的频率为4Hz,以clk_A的第一个上升沿处为时间零点。用clk_A对clk_B采样,得到一个周期性采样信号samp,它的周期是clk_A的周期的5倍,是clk_B的周期的4倍。粗计数器rough按照clk_A上升沿连续计数,它指出被测时间中包含的clk_A周期的个数;细计数器fine也按照clk_A上升沿计数,但在samp的每次下降沿时被复位,即它以samp的一个周期为长度进行循环计数,利用细计数器fine可以计算被测时间中的不足一个clk_A周期的部分。图3中,clk_A在c时刻的上升沿时检测到被测事件(clk_B在e时刻的上升沿),此时粗计数器rough=5,表示5个clk_A周期;细计数器fine=3,表示被测事件在clk_A的b沿之后3/4个clk_A周期。综合粗细计数,得到被测事件距离时间零点5.75个clk_A周期,即1.15s,此即被测事件的时间戳。

在图3的示例中,被测事件是周期信号clk_B在e时刻的上升沿。凡具有该示例特点的数据传输应用,即凡是“根据数据时钟来同步传输数据”的情况都可使用本方法。例如以太网数据链路层中的MII子层接口,MII子层协议根据rx_clk来接收数据并根据tx_clk来发送数据,就是可以使用本方法来测量精确时间戳的典型情况。

本发明实施例的关键点在于使用一个与被测周期信号存在微小频率偏差的采样时钟,然后利用图2所示原理实现对一个时钟周期的细分,从而达到更精细的时间分辨率。

本发明实施例提供的提高时间戳测量精度的方法具有如下优势:

1)高分辨率;相对于传统的时钟计数法,本发明实施例提供的方法可以将时间分辨率提高数十倍。

2)低成本;本发明实施例提供的方法在普通的FPGA器件中即可实现,对器件性能没有更高的要求。相对于时间内插方法,本发明实施例可以使用更廉价的器件而到达足够的测量精度。

3)应用较广;本发明实施例所述的方法应用广泛,凡具有“按照数据时钟同步传输数据”特点的应用,都可以使用本发明实施例所述的方法来测量精确时间戳。

本发明实施例二提供了一种提高时间戳测量精度的装置,参见图4,包括:获取单元41、采样单元42、第一计数单元43、第二计数单元44和时间戳获取单元45;

获取单元41,用于获取与被测周期信号具有预设频率偏差的采样时钟;其中所述被测周期信号的频率为f1,所述采样时钟的频率为f2,f2=(1+1/N)*f1,N≥2,N为正整数;例如,N取值可以为2、4、8、16、32、64或128。

采样单元42,用于利用所述采样时钟对所述被测周期信号进行采样,获得一个周期性采样信号,该周期性采样信号的周期为所述被测周期信号的周期T1的N倍;

第一计数单元43,用于采用粗计数器对所述采样时钟的上升沿从0开始连续计数,统计被测事件中包含的采样时钟的周期的个数;

第二计数单元44,用于采用细计数器对所述采样时钟的上升沿从0开始连续计数,但在所述周期性采样信号的每个下降沿被复位,该细计数器以所述周期性采样信号的一个周期为长度进行循环计数,统计被测事件中的不足一个采样时钟的周期的部分;细计数器的分辨率为采样时钟的周期T2的1/N倍,即(1/N)*T2

时间戳获取单元45,用于在某时刻检测到被测事件时,获取与该时刻对应的粗计数器的计数值n,以及与该时刻对应的细计数器的计数值m,并根据所述n和所述m,获取被测事件的时间戳[n+m*(1/N)]*T2,其中,n+m*(1/N)为被测事件所在时刻距离时间零点所跨越的采样时钟的周期数,T2为采样时钟的周期;其中,时间零点为所述采样时钟的第一个上升沿处。

进一步地,所述获取单元41具体用于:

利用锁相环电路或可编程数字逻辑器件FPGA内的锁相环资源产生与被测周期信号具有预设频率偏差的采样时钟。

本发明实施例提供的提高时间戳测量精度的装置可以用于执行上述实施例所述的提高时间戳测量精度的方法,其实现原理和技术效果类似,此处不再详述。

第三方面,本发明还提供了一种提高时间戳测量精度的装置,参见图5,包括:锁相环电路51、采样器52、粗计数器53、细计数器54和处理器55;

其中,所述锁相环电路51用于获取与被测周期信号具有预设频率偏差的采样时钟;其中所述被测周期信号的频率为f1,所述采样时钟的频率为f2,f2=(1+1/N)*f1,N≥2,N为正整数;例如,N取值可以为2、4、8、16、32、64或128。

所述采样器52用于利用所述采样时钟对所述被测周期信号进行采样,获得一个周期性采样信号,该周期性采样信号的周期为所述被测周期信号的周期T1的N倍;

所述粗计数器53,用于对所述采样时钟的上升沿从0开始连续计数,统计被测事件中包含的采样时钟的周期的个数;

所述细计数器54用于对所述采样时钟的上升沿从0开始连续计数,但在所述周期性采样信号的每个下降沿被复位,以所述周期性采样信号的一个周期为长度进行循环计数,用于统计被测事件中的不足一个采样时钟的周期的部分;细计数器的分辨率为采样时钟的周期T2的1/N倍,即(1/N)*T2

所述处理器,用于在某时刻检测到被测事件时,获取与该时刻对应的粗计数器的计数值n,以及与该时刻对应的细计数器的计数值m,并根据所述n和所述m,获取被测事件的时间戳[n+m*(1/N)]*T2,其中,n+m*(1/N)为被测事件所在时刻距离时间零点所跨越的采样时钟的周期数,T2为采样时钟的周期;其中,时间零点为所述采样时钟的第一个上升沿处。

本发明实施例提供的提高时间戳测量精度的装置可以用于执行上述实施例所述的提高时间戳测量精度的方法,其实现原理和技术效果类似,此处不再详述。

在本发明的描述中,需要说明的是,术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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