一种时间同步方法、装置、网络设备及存储介质与流程

文档序号:20202812发布日期:2020-03-27 20:49阅读:252来源:国知局
一种时间同步方法、装置、网络设备及存储介质与流程

本申请涉及通信技术领域,尤其涉及一种时间同步方法、装置、网络设备及存储介质。



背景技术:

现有的基于网络测量和控制系统的精密时钟同步ieee1588v2协议实现的时间同步,通常可以达到亚微秒级甚至纳秒级的时间精度。设备之间进行时间同步需要互相发送ptp(precisetimeprotocol,精确时间协议)报文,在ptp报文中分别携带时间信息。设备接收到的对端设备发送的ptp报文中,会包含有时间信息和自身接收和发送ptp报文的时间信息,从而可以计算出设备之间的时间偏移,对设备的时间进行修正,以实现设备之间的时间同步。

在asic(applicationspecificintegratedcircuit,专用集成电路)和fpga(fieldprogrammablegatearray,现场可编程门阵列)的逻辑设计中,往往会有多个时钟域之间的信号需要交互,此时,可能需要对端设备的时间信息,而本设备与对端设备使用的时钟源不一样,进而使得本设备与对端设备的时钟域不同,如果直接读取对端设备的时间信息可能会出现亚稳态现象,导致得到的时间信息不够精确。所以,有必要对不同时钟域进行时间精准同步。



技术实现要素:

本申请实施例提供一种时间同步方法、装置、网络设备及存储介质,用于提高跨时钟域同步时间的精确度。

第一方面,提供一种时间同步方法,所述方法包括:

在待同步时钟域的时钟脉冲的连续n个脉冲计数时刻,获取参考时钟域在所述n个脉冲计数时刻对应的连续n个参考时间值,其中,所述待同步时钟域与所述参考时钟域所采用的时钟源不同,n为大于1的整数;

计算所述n个参考时间值按照读取顺序相邻的两个参考时间值之间的时间差值,以获得n-1个时间差值;

判断所述n-1个时间差值是否均小于预定时长;

若所述n-1个时间差值均小于所述预定时长,则根据所述n个参考时间值更新所述待同步时钟域在所述n个脉冲计数时刻对应的n个本地时间值。

在一种可能的设计中,根据所述n个参考时间值更新所述待同步时钟域在所述n个脉冲计数时刻对应的n个本地时间值,包括:

确定所述n个参考时间值中的每个参考时间值对应的补偿时长,以获得所述n个参考时间值对应的n个补偿时长;

将所述n个参考时间值中的每个参考时间值与对应的补偿时长进行叠加,以获得n个叠加后的时间值;

将所述n个叠加后的时间值确定为所述待同步时钟域在所述n个脉冲计数时刻对应的n个本地时间值。

在一种可能的设计中,确定所述n个参考时间值中的每个参考时间值的补偿时长,包括:

确定每个参考时间值的有效判定耗时,其中,每个参考时间值的有效判定耗时为确定该参考时间值与该参考时间值之前的参考时间值之间的时间差值是否小于所述预定时长所耗费的时长;

确定每个参考时间值的设置耗时,其中,每个参考时间值的设置耗时为根据该时间参考值更新对应的本地时间值的预设消耗时长;

将每个参考时间值对应的有效判定耗时与设置耗时之和确定为该参考时间值的补偿时长。

在一种可能的设计中,所述方法还包括:

在所述n-1个时间差值中存在大于或等于所述预定时长的时间差值时,确定在所述n个脉冲计数时刻前相邻的上一本地时间值;

根据所述时钟脉冲的时钟周期和所述上一本地时间值,确定所述n个本地时间值。

在一种可能的设计中,所述方法还包括:

在所述n-1个时间差值中存在大于或等于所述预定时长的时间差值时,丢弃所述n个参考时间值。

在一种可能的设计中,所述待同步时钟域和所述参考时钟域为网络设备中的同一fpga中的两个不同时钟源分别对应的时钟域;或者,

所述参考时钟域使用所述fpga中的时钟源,所述待同步时钟域使用与所述网络设备通信的对端网络设备中的时钟源。

在一种可能的设计中,所述参考时钟域为mac时钟域,所述待同步时钟域为phy时钟域,在根据所述n个参考时间值更新所述待同步时钟域在所述n个脉冲计数时刻对应的n个本地时间值之后,所述方法还包括:

在通过所述网络设备中的phy模块接收所述对端网络设备发送的ptp报文时,在所述phy模块中解码所述ptp报文,并根据更新后的phy时钟域的本地时间值记录接收所述ptp报文的时间戳。

第二方面,提供一种时间同步装置,所述装置包括:

获取模块,用于在待同步时钟域的时钟脉冲的连续n个脉冲计数时刻,获取参考时钟域在所述n个脉冲计数时刻对应的连续n个参考时间值,其中,所述待同步时钟域与所述参考时钟域所采用的时钟源不同,n为大于1的整数;

计算模块,用于计算所述n个参考时间值按照读取时间先后两两相邻的两个参考时间值之间的时间差值,以获得n-1个时间差值;

判断模块,用于判断所述n-1个时间差值是否均小于预定时长;

时间同步模块,用于若所述n-1个时间差值均小于所述预定时长,则根据所述n个参考时间值更新所述待同步时钟域在所述n个脉冲计数时刻对应的n个本地时间值。

在一种可能的设计中,所述时间同步模块,用于:

确定所述n个参考时间值中的每个参考时间值对应的补偿时长,以获得所述n个参考时间值对应的n个补偿时长;

将所述n个参考时间值中的每个参考时间值与对应的补偿时长进行叠加,以获得n个叠加后的时间值;

将所述n个叠加后的时间值确定为所述待同步时钟域在所述n个脉冲计数时刻对应的n个本地时间值。

在一种可能的设计中,所述时间同步模块,用于:

确定每个参考时间值的有效判定耗时,其中,每个参考时间值的有效判定耗时为确定该参考时间值与该参考时间值之前的参考时间值之间的时间差值是否小于所述预定时长所耗费的时长;

确定每个参考时间值的设置耗时,其中,每个参考时间值的设置耗时为根据该时间参考值更新对应的本地时间值的预设消耗时长;

将每个参考时间值对应的有效判定耗时与设置耗时之和确定为该参考时间值的补偿时长。

在一种可能的设计中,所述装置还包括确定模块,用于:

在所述n-1个时间差值中存在大于或等于所述预定时长的时间差值时,确定在所述n个脉冲计数时刻前相邻的上一本地时间值;

根据所述时钟脉冲的时钟周期和所述上一本地时间值,确定所述n个本地时间值。

在一种可能的设计中,所述装置还包括丢弃模块,用于:

在所述n-1个时间差值中存在大于或等于所述预定时长的时间差值时,丢弃所述n个参考时间值。

在一种可能的设计中,所述待同步时钟域和所述参考时钟域为网络设备中的同一fpga中的两个不同时钟源分别对应的时钟域;或者,

所述参考时钟域使用所述fpga中的时钟源,所述待同步时钟域使用与所述网络设备通信的对端网络设备中的时钟源。

在一种可能的设计中,所述参考时钟域为mac时钟域,所述待同步时钟域为phy时钟域,所述装置还包括记录模块,用于:

在所述时间同步模块根据所述n个参考时间值更新所述待同步时钟域在所述n个脉冲计数时刻对应的n个本地时间值之后,在通过所述网络设备中的phy模块接收所述对端网络设备发送的ptp报文时,在所述phy模块中解码所述ptp报文,并根据更新后的phy时钟域的本地时间值记录接收所述ptp报文的时间戳。

第三方面,提供一种网络设备,所述网络设备包括:

存储器,用于存储程序指令;

处理器,用于调用所述存储器中存储的程序指令,按照获得的程序指令执行第一方面中任一方法包括的步骤。

第四方面,提供一种存储介质,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行第一方面中任一方法包括的步骤。

第五方面,提供一种包含指令的计算机程序产品,当所述计算机程序产品在计算机上运行时,使得计算机执行上述各种可能的实现方式中所描述的时间同步方法。

在本申请实施例中,在待同步时钟域的时钟脉冲的连续n个脉冲计数时刻,获取参考时钟域在这n个脉冲计数时刻对应的连续的n个参考时间值,其中,待同步时钟域与参考时钟域所采用的时钟源不同,即,待同步时钟域和参考时钟域是不同的时钟域,然后计算n个参考时间值按照读取顺序相邻的两个参考时间值之间的时间差值,获得n-1个时间差值,进而判断获得的n-1个时间差值是否均小于预定时长,如果均小于,则根据n个参考时间值更新待同步时钟域在n个脉冲计数时刻对应的n个本地时间值,从而实现跨时钟域的时间同步。

也就是说,在获取到的参考时钟域中n个脉冲计数时刻对应的连续n个参考时间值时,如果计算两两相邻的参考时间值的n-1个时间差值均小于预定时长,那就根据参考时钟域的n个参考时间值更新待同步时钟域中的n个对应的本地时间值。一般情况下,跨时钟域读取时间信息会出现亚稳态现象,而在出现亚稳态现象时,上述计算的时间差值可能均会大于某一个时长,例如将该时长称为是预定时长,进而导致跨时钟域读取的时间信息不够准确,而当上述的时间差值小于该预定时长时,可以认为几乎不会出现亚稳态现象,所以在时间差值小于预定时长时跨时钟域读取的时间信息可以认为是比较准确的。通过判断时间差值是否小于预定时长的判断结果,可以较为有效的判断获取的时间信息是否出现了亚稳态现象,进而确定是否更新待同步时钟域的时间值,仅在判断出获取的时间值并未出现亚稳态现象时,才进行跨时钟域之间的时间同步,确保了进行同步的时间值是正确有效的时间值,提高了时间同步的精确性。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

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

图1为本申请实施例提供的应用场景的示意图;

图2为本申请实施例提供的另一应用场景的示意图;

图3为本申请实施例提供的时间同步方法的流程示意图;

图4为现有技术中的触发器发生亚稳态现象时的输入输出信号的时序图;

图5为本申请实施例提供的phy时钟域对本地tod进行计数的示意图;

图6为本申请实施例提供的phy时钟域根据mac时钟域的tod进行本地tod计数的示意图;

图7a为本申请实施例提供的时间同步装置的结构框图;

图7b为本申请实施例提供的时间同步装置的另一结构框图;

图8为本申请实施例提供的网络设备的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚明白,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以不同于此处的顺序执行所示出或描述的步骤。

本申请的说明书和权利要求书及上述附图中的术语“第一”和“第二”是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的保护。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请中的“多个”可以表示至少两个,例如可以是两个、三个或者更多个,本申请实施例不做限制。

另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,在不做特别说明的情况下,一般表示前后关联对象是一种“或”的关系。

在介绍本申请实施例之前,首先对本申请中的部分技术特征进行介绍,以便于本领域技术人员理解。

目前业界涉及的跨时钟域同步方法一般有两种,下面以现有技术中实现fpga(fieldprogrammablegatearray,现场可编程逻辑门阵列)跨时域同步tod(timeofdate,时间信息)为例,对跨时钟域同步时间的两种方法做简单的介绍,需要说明的是,fpga同步tod时间时,一般来说,是将mac(mediaaccesscontrol,媒体介入控制)模块的tod时间同步到phy(physicallayer,物理接口收发)模块。

第一种:“打两拍”,即定义两级寄存器,对输入的数据进行延拍,通过两次时钟上升沿来采集数据。假设第一次上升沿采集数据时采集的是跳变时刻的数据,那么此时的数据就不确定,但是在下一次上升沿时数据基本就已经满足了寄存器的保持时间,进而可以得到一个较为确定的值。不过该方法一般只能同步1个bit,而且该方法一般只有在要同步的数据不会经常变化的前提下,才能保证两个时钟上升沿对应的是同一个数据值。而因为tod是在不断进行计数的,一般情况下,mac模块的计数频率可能比phy模块快,因此该方法不能进行精确的时间同步。

第二种:通过fifo(firstinputfirstoutput,先进先出队列)进行同步。由于phy模块的时钟与mac模块的时钟来源不同,属于不同的时钟域,因此mac模块与phy模块之间的报文传输可以通过一个fifo进行隔离。通过fifo虽然能够实现跨时钟域的时间同步,但是因为引入了不确定的fifo,同步得到的tod时间很容易失去精度,而且误差还会随着fifo深度的变化而产生变化,所以很难进行较为精确的时间同步。

如前所述的,提高跨时钟域时间同步的精确度是目前亟待解决的问题。通过上述第一种方法同步时,要同步的数据必须不经常发生变化,才能保证两个时钟上升沿对应的是同一个数据值,实现时间同步会比较困难,且也不能进行精确的时间同步;通过上述第二种方法同步时,又会因为引入的fifo产生一个不确定的误差,也不能进行精确的时间同步。

鉴于此,本申请实施例提供一种是时间同步方法,在获取到的参考时钟域中n个脉冲计数时刻对应的连续n个参考时间值时,如果计算两两相邻的参考时间值的n-1个时间差值均小于预定时长,即可认为并未发生亚稳态现象,此时就可以根据参考时钟域的n个参考时间值更新待同步时钟域中的n个对应的本地时间值。通过判断时间差值是否小于预定时长的判断结果,确定是否更新待同步时钟域的时间,确保了进行同步的时间值是正确有效的时间值,进而提高了跨时钟域同步时间的精确性。需要说明的是,时间值可以理解为是一个时刻的概念,对于不同时钟域,在自身时钟周期的每个脉冲计数时刻,都会对自身的时间值进行计数,那么每个时钟周期内的时间值即为脉冲计数时刻进行计数后的时间值,也就是说,在脉冲计数时刻进行计数之后,一个时钟周期内的时间值都为脉冲计数时刻计数后的时间值。

为便于理解本申请实施例提供的技术方案,下面对本申请实施例提供的技术方案使用的应用场景做一些简单的介绍,需要说明的是,以下介绍的应用场景仅用于说明本发明实施例而非限定。在具体实施时,可以根据实际需要灵活地应用本申请实施例提供的技术方案。

请参见图1所示,图1为本申请实施例的技术方案能够适用的一种应用场景,在该应用场景中,包括两个网络设备(网络设备1和网络设备2),每个网络设备都包含有两个模块(模块1和模块2),每个网络设备有一个对应的时钟源,即网络设备1由时钟源1提供工作时钟,网络设备2由时钟源2提供工作时钟。在网络设备2向网络设备1发送报文时,网络设备1的模块2接收该报文,在接收报文时模块2需要工作在从报文中恢复出来的cdr(clockdatarecovery,时钟数据恢复)时钟域,该cdr时钟域可以理解为是从报文中恢复出来的网络设备2的时钟源提供工作时钟的时钟域。也就是说,在网络设备1的模块2接收网络设备2发送的报文时,其网络设备1的模块1与模块2的时钟源不一样,而此时如果要同步网络设备1的模块1和模块2的时间,就需要实现跨时钟域的时间同步。需要说明的是,在某个网络设备的模块1和模块2属于不同的时钟域时,可以是将该网络设备中模块1的时间同步到模块2,或者将模块2的时间同步到模块1,本申请实施例不做限制。

再参见图2所示,图2为本申请实施例的技术方案能够适用的另一种应用场景,在该应用场景中,只有一个网络设备,该一个网络设备中包含有两个模块(模块1和模块2),每个模块对应一个时钟源,即模块1对应时钟源1,模块2对应时钟源2。在这种情况下,由于两个模块是通过不同的时钟源提供工作时钟的,所以在同步这两个模块的时间,也可以理解为是跨时钟域同步时间。需要说明的是,在具体的实施过程中,可以将模块1的时间同步到模块2上,也可以将模块2的时间同步到模块1上,本申请实施例也不做限制。

为进一步说明本申请实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本申请实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。所述方法在实际的处理过程中或者装置执行时,可按照实施例或者附图所示的方法顺序执行或者并行执行。

基于上述内容,本申请提供一种时间同步方法。请参见图3所示,本申请实施例中的时间同步方法的流程描述如下:

步骤301:在待同步时钟域的时钟脉冲的连续n个脉冲计数时刻,获取参考时钟域在n个脉冲计数时刻对应的连续n个参考时间值。

其中,待同步时钟域指的是需要将其它时钟域的时间同步到自身时钟域中的那个时钟域,待同步时钟域去获取同步时间的那个时钟域即可以理解为是参考时钟域,而参考时间值即可以理解为是待同步时钟域获取到的参考时钟域的时间值。也就是说,待同步时钟域需要同步的时间是参考时钟域的时间。需要说明的是,时钟域不同可以直接理解为是使用不同的时钟源提供工作时钟,所以,待同步时钟域与参考时钟域所采用的时钟源不同。因为至少需要两个参考时间才能计算时间差值,所以,本申请实施例中的n为大于1的整数,也就是说,在获取参考时间值时,获取的至少是两个参考时间值。

在一种可能的实施方式中,待同步时钟域的时钟脉冲的脉冲计数时刻可以是每个时钟周期的上升沿,脉冲计数时刻即可以理解为是待同步时钟域在每个时钟周期更新自身时间值的时刻。当检测到上升沿时,待同步时钟域的时间值进行一次计数,以更新自身的时间值,同时,待同步时钟域在对应时钟周期的上升沿去获取参考时钟域的时间值,该获取的时间值即为参考时间值,当获取到连续的n个参考时间值时,就可以计算相邻两个参考时间值之间的差值,进而判断是否更新待同步时钟域中的时间值。需要说明的是,脉冲计数时刻也可以每个时钟周期的下降沿,或者也可以是每个时钟周期中的某一个固定时刻,例如是每个时钟周期中达到2/3的时钟周期的固定时刻,等等,对于脉冲计数时刻的设定,本申请实施例不做限制。

步骤302:计算n个参考时间值按照读取顺序相邻的两个参考时间之间的时间差值,以获得n-1个时间差值。

在具体的实施方式中,待同步时钟域获取到参考时钟域的n个参考时间后,就可以计算两两相邻的两个参考时间值之间的时间差值,因为计算的是相邻的参考时间值之间的时间差值,所以计算出的时间差值的数量为n-1个,相应的,当n取最小值2的时候,计算出的时间差值数量只有一个。

步骤303:判断n-1个时间差值是否均小于预定时长。

在具体的实施方式中,在计算出n-1个时间差值后,就需要去判断每个时间差值是否都小于预定时长,在n-1个时间差值均小于预定时长,就执行步骤304。也就是说,如果获取到的时间差值为多个,需要每个时间差值均小于预定时长,如果其中的某一个时间差值大于或者等于预定时长,即,所有时间差值并不是全部都小于预定时长时,则并不执行步骤304,也就是并不根据获取到的参考时间值更新本地时间值。需要说明的是,预定时长可以是根据经验值确定出的时长,也可以是根据某种针对该方法的特定算法确定出的时长,对于预定时长的设置,例如可以是待同步时钟域的时钟脉冲的两个时钟周期,本申请实施例不做限制。

如前所述的,一般情况下,跨时钟域读取时间信息会出现亚稳态现象,下面通过图4对亚稳态现象做简单的介绍。图4所展示的是现有技术中fpga系统中的触发器发生亚稳态现象时的输入输出信号的时序图,其中,输入的数据信号d在定义的时间窗口内发生电平翻转,输出信号q在决断时间(tmet)内徘徊在逻辑0和逻辑1之间的中间电平状态,最终稳定在逻辑1上。当触发器出现亚稳态现象后,由于输出信号最终随机地稳定在逻辑0或逻辑1上,因而会造成输出信号的逻辑误判。在时钟信号的上升沿附近定义了一个时间窗口,若在该时间窗口上输入的数据信号d发生了电平翻转,可能会导致触发器内的某些节点无法稳定在逻辑0或逻辑1的电平状态,从而导致触发器出现亚稳态现象。

其中,该时间窗口可以由上升沿之前的建立时间tsu和上升沿之后的保持时间th组成。也就是说,在时钟信号的上升沿到来之前的tsu时间内、以及上升沿到来之后的th时间内,原则上输入的数据信号d不允许发生电平翻转。若数据信号d在tsu或th中的任意时刻发生电平翻转,则会导致触发器出现亚稳态现象。

而在出现亚稳态现象时,计算出的每相邻两个参考时间之间的时间差值一般可能会远大于某一个预定时长,而当时间差值小于该预设时长时,则可以认为几乎不会出现亚稳态现象。例如根据经验值确定预定时长为时钟脉冲的两个时钟周期对应的时长,那么在时间差值大于或等于时钟脉冲的两个时钟周期的时长时,就可以认为可能会出现亚稳态现象,此时对应获取到的n个参考时间值就有可能是错误的,那就不通过这n个参考时间值更新待同步时钟域中对应的本地时间值,这样,就可以将错误的时间值进行滤除,有效确保了跨时钟域同步时间的可靠性。在时间差值小于时钟脉冲的两个时钟周期的时长时,就可以认为跨时钟域读取的时间信息是比较准确的。而在判断出n-1个时间差值均小于时钟脉冲的两个时钟周期的时长时,就表明此时获取到的待同步时钟域的参考时间值较为准确,进而就可以通过步骤304对待同步时钟域的时间值进行对应更新,提高了时间同步的准确性。

在具体的实施过程中,计算获得的时间差值可以只有一个,也可以有多个。当获得的时间差值只为一个时,那就判断该时间差值是否小于预定时长,如果并不小于预定时长,即大于或等于预定时长时,就可以认为可能会出现亚稳态现象,就不通过对应的两个参考时间值更新待同步时钟域中对应的本地时间值;而在判断出该时间差值小于预定时长时,就表明此时获取到的待同步时钟域的参考时间值较为准确,进而就可以根据对应的两个参考时间值更新待同步时钟域中对应的本地时间值。这样,当该时间差值大于预定时长时,就可以将该可能存在错误的时间值进行滤除,有效确保了跨时钟域同步时间的可靠性。

当获得的时间差值为多个时,那就判断这多个时间差值是否均小于预定时长,如果多个时间差值并不是均小于预定时长,即多个时间差值中只要有一个大于或等于预定时长(当然也可以是全部均大于或等于预定时长)时,就可以认为可能会出现亚稳态现象,此时就不通过对应的参考时间值更新待同步时钟域中对应的本地时间值;而在确定这多个时间差值均小于预定时长时,就表明此时获取到的待同步时钟域的参考时间值较为准确,进而就可以根据对应的参考时间值更新待同步时钟域中对应的本地时间值。

也就是说,在有多个时间差值的情况下,需要这多个时间差值均小于预定时长,才根据对应的参考时间值更新本地时间值,使得确定获得的参考时间值是否会出现亚稳态现象的准确度更高,根据判断结果进行的时间同步也就更准确,有效确保了跨时钟域同步时间的可靠性。

在一种可能的实施方式中,在计算获得的n-1个时间差值中存在大于或等于预定时长时,可以确定在n个脉冲计数时刻前相邻的上一本地时间值,然后根据时钟脉冲的时钟周期和上一本地时间值,确定n个本地时间值。也就是说,当n-1个时间差值中存在大于或等于预定时长的时间差值时,就不通过参考时钟域中获取到的n个参考时间值更新本地时间值,而是根据上一个本地时间值和时钟脉冲的时钟周期确定当前脉冲计数时刻的本地时间值。那么相应的,也就可以将获取到的n个参考时间值进行丢弃。

以phy时钟域对自身的tod时间进行计数为例,phy时钟域自身tod时间即可以理解为是待同步时钟域的本地时间值,对应每个脉冲计数时刻,phy都会对自身的tod时间进行计数,进而获得每个脉冲周期内的对应tod时间。请参见图5所示,图5中的phy时钟域在每个时钟周期的上升沿对本地时钟域的tod时间进行一次计数,此时的上升沿即可以理解为是脉冲计数时刻,δt为一个时钟周期对应的时长,也就是说,当phy时钟域对自身的tod时间进行计数时,每次计数都是在上一个时钟周期的tod时间基础上叠加一个时钟周期的时长。如图5中所示,第一个tod值的数值为tod,检测到第一个上升沿时,就叠加一个时钟周期的时长,即变为tod+δt,当检测第二个上升沿时,就叠加两个时钟周期的时长,即变为tod+2δt。

步骤304:如果n-1个时间差值均小于预定时长,则根据n个参考时间值更新待同步时钟域在n个脉冲计数时刻对应的n个本地时间值。

在具体的实施方式中,在判断出n-1个时间差值均小于预定时长,就表明获取到的n个参考时间值是有效的,那么就根据n个参考时间值更新待同步时钟域在n个脉冲计数时刻对应的n个本地时间值,也就是说,待同步时钟域通过将参考时钟域的时间同步到了自己的时钟域中,那么之后待同步时钟域需要使用参考时钟域中的时间值时,就可以直接读取自身时钟域内更新后的时间值,不需要进行跨时钟域的读取,尽量降低了出现亚稳态现象的概率,由于待同步时钟域使用参考时钟域的时间值时,是直接从自身时钟域中读取的,提高了待同步时钟域读取时间值的读取效率。

在一种可能的实施方式中,在根据n个参考时间值更新待同步时钟域在n个脉冲计数时刻对应的n个本地时间值时,需要先确定对应于n个参考时间值中的每个参考时间值对应的补偿时长,因为在更新本地时间值之前,需要判断获取到的各个参考时间值是否是有效的,这个判断的过程需要消耗一定的时长,以及具体的更新过程也会消耗一定的时长,这些时长的总和就可以理解为是补偿时长,也就是说,补偿时长是一个时间段,在更新本地时间值时,就需要同时考虑到补偿时长的消耗,以确保更新后的本地时间值是准确有效的时间值。

在确定出每个参考时间值对应的补偿时长之后,就可以将n个参考时间值中的每个参考时间值与对应的补偿时长进行叠加,获得n个叠加后的时间值,进而将n个叠加后的时间值确定为待同步时钟域在n个脉冲计数时刻对应的n个本地时间值。也就是说,在具体的实施过程中,如果判断出要更新待同步时钟域的本地时间值,是将参考时间值叠加上对应该参考时间值的补偿时长之后的时间值作为实际的本地时间值的,由于更新之后的本地时间值是综合考虑了判断参考时间值是有效的时长和实际更新过程消耗的时长,所以,在一定程度上确保了更新本地时间值的有效性。

如上所述的,补偿时长可以由两部分组成,一部分是判断每个参考时间值为有效时间值的有效判定耗时,另一部分是根据每个参考时间值进行本地时间值更新过程消耗的设置耗时,获得每个参考时间值对应的有效判定耗时和设置耗时之后,就可以将每个参考时间值对应的有效判定耗时与设置耗时进行叠加,以获得该参考时间值的补偿时长。因为判断每个参考时间值为有效时间值实际判断的是确定根据该参考时间值以及该参考时间值之前的参考时间值确定出的时间差值是否均小于预定时长,所以,每个参考时间值的有效判断耗时也可以直接理解为是确定根据该参考时间值以及该参考时间值之前的参考时间值确定出的时间差值是否均小于预定时长所耗费的时长,而每个参考时间值的设置耗时可以理解为根据对应的时间值更新对应的本地时间值的预设耗时,这个预设耗时可以是根据一定的算法确定出的固定时长,也可以是根据经验值设定的固定时长,对于预设耗时的设定,本申请实施例不做限制。

在一种可能的实施方式中,待同步时钟域和参考时钟域可以是网络设备中的同一现场可编程门阵列fpga中的两个时钟域(例如是mac时钟域和phy时钟域),这两个时钟域可以是fpga中的由两个不同时钟源提供工作时钟的时钟域,即对应于应用场景2,或者,也可以是参考时钟域使用fpga中的时钟源,待同步时钟域使用与网络设备通信的对端网络设备中的时钟源,即对应于应用场景1,具体可按照应用场景1和应用场景2的相关内容进行相同的理解,在此不再赘述。

一般情况下,在使用fpga进行ptp报文的收发和打时间戳时,为了实现比较高的同步时间精度,需要在phy时钟域中来记录接收到ptp报文的时间戳,所以,在通过网络设备中的phy模块接收对端网络设备发送的ptp报文时,要在phy模块中解码该ptp报文,然后根据确定的phy时钟域的本地时间值记录接收ptp报文的时间戳。而接收到报文的时候,phy时钟域的时钟源是对端网络设备的时钟源,对端网络设备可以理解为是向该phy时钟域发送ptp报文的那个网络设备,而由于mac模块一般会工作在一个稳定的工作时钟,因此如果要实现稳定的tod时间计数,一般需要将tod时间在mac模块中进行计数,但是,phy模块需要根据稳定的tod时间对ptp报文打时间戳,所以phy模块就需要将mac模块的tod时间同步到自身模块中。

需要说明的是,如果在判断出获取的mac模块中的tod时间是有效的,那么phy模块就会根据mac模块的tod时间更新自身模块的tod时间,那么在根据tod时间打时间戳时,phy读取自身的tod时间,实际上读取的就是mac模块的tod时间,而在判断出获取的mac模块的tod时间可能存在错误时,那phy模块就不更新自身的tod时间了,也就是说,此时,在打时间戳时,实际上使用的是phy模块自身的tod时间。

在一种可能的实施方式中,以phy时钟域同步mac时钟域的时间为例,对补偿时长的确定做进一步说明。此时,phy时钟域为待同步时钟域,mac时钟域为参考时钟域,phy自身时钟域的tod值为待同步时钟域的本地时间值,获取的mac时钟域的tod值为参考时间值。请参见图6所示,图6中,还是将phy时钟域在每个时钟周期内的上升沿确定为脉冲计数时刻,每个脉冲计数时刻phy会对自身的tod进行计数,同时,也会获取对应该脉冲计数时刻时mac时钟域的tod值进行保存,如6中的todn为第一个上升沿获得的参考时间值,todn+1为第二个上升沿获得的参考时间值,然后判断获取到的mac时钟域的tod是否是有效的,如果是有效的那就需要根据获取的mac时钟域的tod值更新自身的tod值。

图6中,起初的tod值的数值为tod,检测到第一个上升沿时,就叠加一个时钟周期,变为tod+δt,其中,δt表示时钟周期的时长,在第二个上升沿时,判断出对应该上升沿的参考时间值是有效的,那么就可以根据该参考时间值更新对应的本地时间值,假设获取到的参考时间值为两个,判断这两个参考时间值是否有效,即判断这两个参考时间值之间的时间差值是否小于预定时长,如果该时间差值小于预定时长,那么对应第一个参考时间值的有效判断时间即为一个预设判定耗时,对应第二个参考时间值的有效判断时间即为两个预设判定耗时,也就是说,判断每个参考时间值的有效判定耗时,是通过叠加一个固定的预设时间耗时确定的,预设时间耗时可以是根据预定算法获取的耗时,也可以是根据经验值确定的耗时,本申请实施例不做限制。

再例如,获取到的参考时间值为3个,判断这3个参考时间值是否有效,即判断这3个参考时间值之间的时间差值是否均小于预定时长,如果这两个时间差值均小于预定时长,那么对应第一个参考时间值的有效判定耗时即为一个单位的预设判定耗时,对应第二个参考时间值的有效判定耗时即为两个单位的预设判定耗时,对应第三个参考时间值的有效判定耗时即为三个单位的预设判定耗时。确定出每个参考时间值的有效判定耗时和设置耗时之后,就可以将两者进行叠加获得对应的补偿时长,图6中,δt2即可以理解为是确定出的补偿时长,然后就可以将每个参考时间值叠加上对应的补偿时长,获得叠加后的时间值,并将其作为最终的本地tod值。

本申请实施例中,在获取到的参考时钟域中n个脉冲计数时刻对应的连续n个参考时间值时,如果计算两两相邻的参考时间的n-1个时间差值均小于预定时长,那就根据参考时钟域的n个参考时间值更新待同步时钟域中的n个对应的本地时间值。当上述的时间差值小于预定时长时,可以认为几乎不会出现亚稳态现象,所以在时间差值小于预定时长时,跨时钟域读取的时间信息是比较准确的。通过判断时间差值是否小于预定时长的判断结果,确定是否更新待同步时钟域的时间,进而有效确保了时间同步的精确性。

基于同一发明构思,本申请实施例提供了一种时间同步装置,该时间同步装置能够实现前述的时间同步方法对应的功能。该时间同步装置可以是硬件结构、软件模块、或者硬件结构加软件模块。该时间同步装置可以由芯片系统实现,芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。请参见图7a所示,该时间同步装置包括获取模块701、计算模块702、判断模块703和时间同步模块704。其中:

获取模块701,用于在待同步时钟域的时钟脉冲的连续n个脉冲计数时刻,获取参考时钟域在n个脉冲计数时刻对应连续的n个参考时间值,其中,待同步时钟域与参考时钟域所采用的时钟源不同,n为大于1的整数;

计算模块702,用于计算n个参考时间值按照读取时间先后两两相邻的两个参考时间值之间的时间差值,以获得n-1个时间差值;

判断模块703,用于判断n-1个时间差值是否均小于预定时长;

时间同步模块704,用于若n-1个时间差值均小于预定时长,则根据n个参考时间值更新待同步时钟域在n个脉冲计数时刻对应的n个本地时间值。

在一种可能的实施方式中,时间同步模块704,用于:

确定n个参考时间值中的每个参考时间值对应的补偿时长,以获得n个参考时间值对应的n个补偿时长;

将n个参考时间值中的每个参考时间值与对应的补偿时长进行叠加,以获得n个叠加后的时间值;

将n个叠加后的时间值确定为待同步时钟域在n个脉冲计数时刻对应的n个本地时间值。

在一种可能的实施方式中,时间同步模块704,用于:

确定每个参考时间值的有效判定耗时,其中,每个参考时间值的有效判定耗时为确定该参考时间值与该参考时间值之前的参考时间值之间的时间差值是否小于所述预定时长所耗费的时长;

确定每个参考时间值的设置耗时,其中,每个参考时间值的设置耗时为根据该时间参考值更新对应的本地时间值的预设消耗时长;

将每个参考时间值对应的有效判定耗时与设置耗时之和确定为该参考时间值的补偿时长。

在一种可能的实施方式中,请参见图7b所示,本申请实施例中的时间同步装置还包括确定模块705,用于:

在n-1个时间差值中存在大于或等于预定时长的时间差值时,确定在n个脉冲计数时刻前相邻的上一本地时间值;

根据时钟脉冲的时钟周期和上一本地时间值,确定n个本地时间值。

在一种可能的实施方式中,请参见图7b所示,本申请实施例中的时间同步装置还包括丢弃模块706,用于:

在所述n-1个时间差值中存在大于或等于所述预定时长的时间差值时,丢弃n个参考时间值。

在一种可能的实施方式中,待同步时钟域和参考时钟域为网络设备中的同一fpga中的两个不同时钟源分别对应的时钟域;或者,

参考时钟域使用fpga中的时钟源,待同步时钟域使用向与网络设备通信的对端网络设备中的时钟源。

在一种可能的实施方式中,参考时钟域为mac时钟域,待同步时钟域为phy时钟域,请参见图7b所示,本申请实施例中的时间同步装置还包括记录模块707,用于:

在时间同步模块704根据n个参考时间值更新待同步时钟域在n个脉冲计数时刻对应的n个本地时间值之后,在通过网络设备中的phy模块接收对端网络设备发送的ptp报文时,在phy模块中解码ptp报文,并根据更新后的phy时钟域的本地时间值记录接收ptp报文的时间戳。

前述的时间同步方法的实施例涉及的各步骤的所有相关内容均可援引到本申请施例中的时间同步装置所对应的功能模块的功能描述,在此不再赘述。

本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

基于同一发明构思,本申请实施例提供一种网络设备,该网络设备例如是路由器、交换机、网关设备等设备。请参见图8所示,该网络设备包括至少一个处理器801,以及与至少一个处理器连接的存储器802,本申请实施例中不限定处理器801与存储器802之间的具体连接介质,图8中是以处理器801和存储器802之间通过总线800连接为例,总线800在图8中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线800可以分为地址总线、数据总线、控制总线等,为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

本申请实施例中的网络设备还可以包括通信接口803,该通信接口803例如是网口,网络设备可以通过该通信接口803传输数据,例如接收其它网络设备发送过来的数据包或者报文,或者,可以向其它网络设备发送数据包或报文。

在本申请实施例中,存储器802存储有可被至少一个处理器801执行的指令,至少一个处理器801通过执行存储器802存储的指令,可以执行前述的时间同步方法中所包括的步骤。

其中,处理器801是网络设备的控制中心,可以利用各种接口和线路连接整个网络设备的各个部分,通过运行或执行存储在存储器802内的指令以及调用存储在存储器802内的数据,时间同步设备的各种功能和处理数据,从而对时间同步设备进行整体监控。可选的,处理器801可包括一个或多个处理单元,处理器801可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器801中。在一些实施例中,处理器801和存储器802可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。

处理器801可以是通用处理器,例如中央处理器(cpu)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的时间同步方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

存储器802作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器802可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(randomaccessmemory,ram)、静态随机访问存储器(staticrandomaccessmemory,sram)、可编程只读存储器(programmablereadonlymemory,prom)、只读存储器(readonlymemory,rom)、带电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、磁性存储器、磁盘、光盘等等。存储器802是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器802还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。

通过对处理器801进行设计编程,可以将前述实施例中介绍的时间同步方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行前述的时间同步方法的步骤,如何对处理器801进行设计编程为本领域技术人员所公知的技术,这里不再赘述。

基于同一发明构思,本申请实施例还提供一种存储介质,该存储介质存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行如前述的时间同步方法的步骤。

在一些可能的实施方式中,本申请提供的时间同步方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在网络设备上运行时,程序代码用于使该网络设备执行本说明书上述描述的根据本申请各种示例性实施方式的时间同步方法中的步骤。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

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