发明内容
本发明所要解决的技术问题是提供一种基于时戳的时钟恢复方法及装置,在时钟恢复过程中,能够对发送端频率突然改变进行跟踪,并快速锁定发送端的发送频率。
为解决上述技术问题,本发明提供方案如下:
一种基于时戳的时钟恢复方法,包括:
接收端接收来自分组传送网的封装有时分复用TDM业务数据的分组报文,并记录所述分组报文的接收时戳;
接收端根据相邻两个分组报文之间的发送时间差和分组报文在分组传送网中传输的分组时延偏差,计算并更新接收端的时钟频率。
优选地,上述时钟恢复方法中,还包括:
接收端从接收到的分组报文中提取TDM业务数据并缓存,以及提取各个分组报文的报头中携带的发送时戳;
所述计算并更新接收端的时钟频率包括:
接收端根据相邻两个分组报文之间的发送时戳的第一差值、用于读取缓存中的所述相邻两个分组报文中的前一个报文的第一TDM业务数据的第一时钟频率、和分组报文在分组传送网中传输的分组时延偏差,计算用于读取缓存中的所述相邻两个分组报文中的后一个报文的第二TDM业务数据的第二时钟频率,其中,所述第二时钟频率使得所述第二TDM业务数据实际读出时刻与所述第一TDM业务数据实际读出时刻之间的第二差值,等于所述第一差值与所述分组时延偏差之和。
优选地,上述时钟恢复方法中,
接收端以所述第二时钟频率从缓存中读取所述第二TDM业务数据并发送给TDM电路。
优选地,上述时钟恢复方法中,
在所述相邻两个分组报文为第n、n+1个分组报文时,进一步按照以下公式计算用于读取第n+1个分组报文的TDM业务数据的读取时钟频率fn+1:
其中,f
n为用于读取第n个分组报文的TDM业务数据的读取时钟频率,l
n+1、l
n分别为第n+1、n个分组报文的TDM业务数据的长度,
为分组报文在分组传送网中传输的分组时延偏差,
分别为第n+1、n个分组报文的接收时戳,t
n+1、t
n分别为第n+1、n个分组报文的发送时戳;
其中, 分别为第n-1、n-k、n-k-1个分组报文的接收时戳,k为一预定正数。
优选地,上述时钟恢复方法中,
在接收到的分组报文发生乱序或丢包时,保持最近一次计算得到的用于读取缓存中的TDM业务数据的时钟频率不变,并利用所述时钟频率去读取缓存中的TDM业务数据,直到乱序或丢包现象消失。
优选地,上述时钟恢复方法中,
接收端进一步从各个分组报文的报头中提取报文序号和包长信息,所述包长信息为所述分组报文中封装的TDM业务数据的长度;
接收端根据所述报文序号,确定分组报文之间的相邻关系,以及根据所述包长信息,确定所述第二TDM业务数据在缓存中的位置,进而从缓存中读取所述第二TDM业务数据对应的数据。
本发明还提供了一种基于时戳的时钟恢复装置,包括:
报文接收模块,用于接收来自分组传送网的封装有时分复用TDM业务数据的分组报文,并记录所述分组报文的接收时戳;
时钟计算模块,用于根据相邻两个分组报文之间的发送时间差和分组报文在分组传送网中传输的分组时延偏差,计算并更新接收端的时钟频率。
优选地,上述时钟恢复装置中,还包括:
存储处理模块,用于从所述报文接收模块接收到的分组报文中提取TDM业务数据并缓存,以及提取各个分组报文的报头中携带的发送时戳;
所述时钟计算模块包括:
时钟恢复模块,用于根据相邻两个分组报文之间的发送时戳的第一差值、用于读取缓存中的所述相邻两个分组报文中的前一个报文的第一TDM业务数据的第一时钟频率、和分组报文在分组传送网中传输的分组时延偏差,计算用于读取缓存中的所述相邻两个分组报文中的后一个报文的第二TDM业务数据的第二时钟频率,其中,所述第二时钟频率使得所述第二TDM业务数据实际读出时刻与所述第一TDM业务数据实际读出时刻之间的第二差值,等于所述第一差值与所述分组时延偏差之和。
优选地,上述时钟恢复装置中,还包括:
读取模块,用于以所述第二时钟频率从缓存中读取所述第二TDM业务数据并发送给TDM电路。
优选地,上述时钟恢复装置中,
所述时钟恢复模块,还用于在所述相邻两个分组报文为第n、n+1个分组报文时,按照以下公式计算用于读取第n+1个分组报文的TDM业务数据的读取时钟频率fn+1:
其中,f
n为用于读取第n个分组报文的TDM业务数据的读取时钟频率,l
n+1、l
n分别为第n+1、n个分组报文的TDM业务数据的长度,
为分组报文在分组传送网中传输的分组时延偏差,
分别为第n+1、n个分组报文的接收时戳,t
n+1、t
n分别为第n+1、n个分组报文的发送时戳;
其中,
分别为第n-1、n-k、n-k-1个分组报文的接收时戳,k为一预定正数。
优选地,上述时钟恢复装置中,
所述读取模块,还用于在接收到的分组报文发生乱序或丢包时,保持最近一次计算得到的用于读取缓存中的TDM业务数据的时钟频率不变,并利用所述时钟频率去读取缓存中的TDM业务数据,直到乱序或丢包现象消失。
优选地,上述时钟恢复装置中,
所述存储处理模块,进一步用于从各个分组报文的报头中提取报文序号和包长信息,所述包长信息为所述分组报文中封装的TDM业务数据的长度;
所述时钟恢复模块,还用于根据所述报文序号,确定分组报文之间的相邻关系;
所述读取模块,还用于根据所述包长信息,确定所述第二TDM业务数据在缓存中的位置,进而从缓存中读取所述第二TDM业务数据对应的数据。
从以上所述可以看出,本发明提供的基于时戳的时钟恢复方法及装置,在时钟恢复过程中考虑到发送端TDM业务净荷封包间隔,使得接收端能够根据封包间隔变化,对发送端频率突然改变进行跟踪并快速锁定。并且,本发明还在时钟恢复中考虑到了PDV,从而减小了PDV对时钟恢复的不良影响。另外,本发明还对报文丢包和乱序情况采取保持恢复出来的读取时钟频率不变的策略,在报文接收正常后再按照相应的时钟恢复算法重新进行时钟恢复,从而能够减小丢包和乱序对接收端的影响。
具体实施方式
本发明提供了一种基于时戳的时钟恢复方法及装置,在进行时钟恢复过程中,能在发送端发送频率发生改变时,进行快速反应。并且,本发明还进一步对分组报文传输过程中的丢包和乱序情况采取了保持时钟频率不变的策略,使得丢包和乱序情况对频率恢复算法的影响大为降低。
以下将结合附图,通过具体实施例对本发明做进一步的说明。
本发明的主体思想,是将发送端、接收端以及PTN网络看成一个“黑匣子”(如图1所示),在保持发送端TDM业务净荷封包间隔与接收端理想的包发送间隔相等,则发送端TDM业务时钟频率在接收端能够得到如实地恢复。上述发送端TDM业务净荷封包间隔可以用分组报文中携带的发送时戳的差值来表征,上述接收端理想的包发送间隔可以用缓存中分组报文的TDM业务数据的理想读出间隔来表征。
本发明实施例所述基于时戳的时钟恢复方法中,接收端接收来自分组传送网的封装有时分复用TDM业务数据的分组报文,并记录所述分组报文的接收时戳;根据相邻两个分组报文之间的发送时间差和分组报文在分组传送网中传输的分组时延偏差,计算并更新接收端的时钟频率。
本实施例所述时钟恢复方法中,在更新接收端时钟频率时,考虑到发送端分组报文的发送时间差以及分组报文的分组时延偏差,使得接收端能够根据发送端封包间隔变化,对发送端频率突然改变进行跟踪并快速锁定,并能够减小了分组时延偏差对时钟恢复的不良影响。
上述发送端分组报文的发送时间差具体可以用分组报文的发送时戳的差值来表征。以下结合图2,对本实施例做进一步的说明。
如图2所示,本发明实施例所述基于时戳的时钟恢复方法,包括以下步骤:
步骤21,接收端接收来自分组传送网的封装有TDM业务数据的分组报文,并记录所述分组报文的接收时戳。接收时戳是指分组报文进入接收端的时刻。
步骤22,接收端从接收到的分组报文中提取TDM业务数据并缓存,以及提取各个分组报文的报头中携带的发送时戳。
步骤23,接收端根据相邻两个分组报文之间的发送时戳的第一差值、用于读取缓存中的所述相邻两个分组报文中的前一个报文的第一TDM业务数据的第一时钟频率、和分组报文在分组传送网中传输的分组时延偏差,计算用于读取缓存中的所述相邻两个分组报文中的后一个报文的第二TDM业务数据的第二时钟频率,其中,所述第二时钟频率使得所述第二TDM业务数据从缓存中的实际读出时刻与所述第一TDM业务数据从缓存中的实际读出时刻之间的第二差值,等于所述第一差值与所述分组时延偏差之和。
在上述步骤23之后,本实施例还可以进一步利用计算得到的所述第二时钟频率,从缓存中读取所述第二TDM业务数据并发送给TDM电路,TDM电路接收到第二TDM业务数据后,恢复相应的TDM码流。这里,接收端可以预先从各个分组报文的报头中提取相应的报文序号和包长信息,所述包长信息为分组报文中封装的TDM业务数据的长度;然后,接收端可以根据所述报文序号,确定分组报文之间的相邻关系,相邻两个分组报文的报文序号的差值为1;以及,在读取所述第二TDM业务数据时,接收端可以根据分组报文的包长信息,确定所述第二TDM业务数据在缓存中的位置(界限),进而从缓存中读取所述第二TDM业务数据对应的数据。
从以上步骤可以看出,上述时钟恢复方法中,由于接收端接收到的分组报文经过了PTN传输,其到达接收端时的时间中就包括了网络传输的分组时延(传输时延),因此接收端缓存中相邻的两个分组报文的TDM业务数据的实际读出间隔(即所述第二差值)中还包含了分组时延偏差。为使发送端TDM业务净荷封包间隔与接收端理想的报文发送间隔(接收端会读取TDM业务数据并发送给TDM电路)相等,则需要第二差值等于所述第一差值与所述分组时延偏差之和。在网络正常运行时,当发送端发送频率突然改变时,将直接反应在发送端封包净荷(净荷为TDM业务数据)的完成时间间隔(发送时戳)上,上述时钟恢复方法在计算第二时钟频率的过程中,考虑到分组报文的发送时戳间隔信息和分组时延偏差,从而能够对发送端频率突然改变进行跟踪,并快速锁定发送端的发送频率。
本实施例中,在接收到的分组报文发生乱序或丢包时,保持最近一次计算得到的用于读取缓存中的TDM业务数据的时钟频率不变,并利用所述时钟频率去读取缓存中的TDM业务数据,直到乱序或丢包现象消失。在报文接收正常后,本实施例再按照上述步骤23计算时钟频率以读取TDM业务数据,从而能够减小丢包和乱序对接收端的影响。
为帮助理解上述步骤,以下通过具体示例做更为详细的说明。
上述分组报文的报头中携带有发送端打上的发送时戳,请参照图3,图3示意性地说明了发送端打发送时戳的一种情况,但本发明并不局限于该示例。首先发送端对TDM链路上传来的TDM业务数据(如T1/E1数据)进行净荷封包,在封包完成时,利用本地时钟,对封包完成的时刻进行定时,具体可以在发送端使用一个50MHz的高速时钟进行定时,在链路初始化时,对定时计数器进行同样的初始化,一个计数节拍代表20ns,发送时戳的单位以ns为单位,发送时戳的编码位宽为32位(bits)。链路和定时计数器初始化完成后,开始对链路发送的包进行定时。在第一个包的净荷完成封装时,将计数器的计数值输入到时戳生成器中,进行发送时戳的生成。发送时戳生成后,封装在PWE3报文的头部时戳(timestamp)位置,占用位宽为32bits。所有发送端发送的报文,采用上述同样的操作。封装完成的分组报文(PWE3报文)通过发送端向PTN网络传输,最终被发送到对应的接收端。
下面对步骤23中的频率恢复的一种具体的计算方式进行说明。
假设报文序号为n的分组报文的包长(即其所封装的TDM业务数据的长度)为l
n,报头里面timestamp显示它在发送端的净荷封包完成时刻为t
n时刻,该报文进入接收端***时刻(即接收时戳)为
其所封装的TDM业务数据从先进先出缓存(FIFO)中的读出时刻为
读出时钟频率为f
n;报文序号为n+1的分组报文的包长为l
n+1,报头里面timestamp显示它在发送端的净荷封包时刻为t
n+1时刻,进入接收端***时刻为
其所封装的TDM业务数据从FIFO的读出时刻为
读出时钟频率为f
n+1。用
分别表示分组报文n和分组报文n+1从进入接收端到流出FIFO的时间差,则有
成立,假设报文从进入接收端到完成头部处理的时间间隔为dt,由于每个报文都是是进行相同的头部处理,故每个报文的dt可以看作是相等的,则有
成立。接收端接收到分组报文后,提取其中的TDM业务数据并缓存,然后将TDM业务数据发送到TDM电路以恢复TDM码流。如果发送端包间隔(相当于发送端TDM业务净荷封包间隔),与接收端理想的包发送间隔时刻(相当于接收端理想的TDM业务数据的读取间隔)相等,也即表明接收端的TDM业务数据的发送频率与发送端的业务时钟频率时刻保持一致,则需以下公式(5)成立:
其中
为分组时延偏差(PDV,Packet Delay Variation),PDV是指分组报文在分组传送网中传输的传输时延的变化程度,其值可以取第n个包的前k个包进入***时相邻两个包之间的间隔差的移动平均值。
公式(5)可转换为以下公式(5’):
若将
看作是上述步骤23中的第二TDM业务数据从缓存中的实际读出时刻,则
是第一TDM业务数据从缓存中的实际读出时刻,上述公式(5’)表示所述第二TDM业务数据实际读出时刻与所述第一TDM业务数据实际读出时刻之间的第二差值(即
),等于所述第一差值(即t
n+1-t
n)与所述分组时延偏差之和。
可以按照以下公式(6)进行更新,其中k为一预定正数:
由上述公式(1)、(2)、(3)、(4)、(5)可得:
进而由公式(7)可得,
由公式(8)可知,第n+1个包的读出时钟频率,取决于第n个包的读出时钟频率、两个包的包长、两个包的发送端发送时刻差以及两个包进入接收端的时刻差,以及第n+1个包的前k个包进入接收端时相邻两个包之间的间隔的移动平均值。当发送端时钟频率突然改变时,将直接反映在发送端TDM业务封包净荷的完成时间间隔上,上述频率调整算法可根据提取到的发送端封包时间间隔信息,对发送端频率突然改变进行跟踪并做出快速反应。
基于上述基于时戳的时钟恢复方法,本实施例还提供了一种基于时戳的时钟恢复装置,请参照图4所示,该时钟恢复装置具体包括:
报文接收模块,用于接收来自分组传送网的封装有时分复用TDM业务数据的分组报文,并记录所述分组报文的接收时戳;
时钟计算模块,用于根据相邻两个分组报文之间的发送时间差和分组报文在分组传送网中传输的分组时延偏差,计算并更新接收端的时钟频率。
基于上述基于时戳的时钟恢复方法,,本实施例还提供了另一种基于时戳的时钟恢复装置,请参照图5所示,该时钟恢复装置具体包括:
报文接收模块,用于接收来自分组传送网的封装有TDM业务数据的分组报文,并记录所述分组报文的接收时戳;
存储处理模块,用于从所述报文接收模块接收到的分组报文中提取TDM业务数据并缓存,以及提取各个分组报文的报头中携带的发送时戳;
时钟计算模块,用于根据相邻两个分组报文之间的发送时间差和分组报文在分组传送网中传输的分组时延偏差,计算并更新接收端的时钟频率。
其中,上述时钟计算模块包括一时钟恢复模块,用于根据相邻两个分组报文之间的发送时戳的第一差值、用于读取缓存中的所述相邻两个分组报文中的前一个报文的第一TDM业务数据的第一时钟频率、和分组报文在分组传送网中传输的分组时延偏差,计算用于读取缓存中的所述相邻两个分组报文中的后一个报文的第二TDM业务数据的第二时钟频率,其中,所述第二时钟频率使得所述第二TDM业务数据实际读出时刻与所述第一TDM业务数据实际读出时刻之间的第二差值,等于所述第一差值与所述分组时延偏差之和。
优选地,上述时钟恢复装置,还包括:
读取模块,用于以所述第二时钟频率从缓存中读取所述第二TDM业务数据并发送给TDM电路。所述读取模块,还用于在接收到的分组报文发生乱序或丢包时,保持最近一次计算得到的用于读取缓存中的TDM业务数据的时钟频率不变,并利用所述时钟频率去读取缓存中的TDM业务数据,直到乱序或丢包现象消失。
具体的,本实施例中,所述时钟恢复模块,还用于在所述相邻两个分组报文为第n、n+1个分组报文时,按照以下公式计算用于读取第n+1个分组报文的TDM业务数据的读取时钟频率fn+1:
其中,f
n为用于读取第n个分组报文的TDM业务数据的读取时钟频率,l
n+1、l
n分别为第n+1、n个分组报文的TDM业务数据的长度,
为分组报文在分组传送网中传输的分组时延偏差,
分别为第n+1、n个分组报文的接收时戳,t
n+1、t
n分别为第n+1、n个分组报文的发送时戳;
其中,
分别为第n-1、n-k、n-k-1个分组报文的接收时戳,k为一预定正数。
所述存储处理模块,还可以用于从各个分组报文的报头中提取报文序号和包长信息,所述包长信息为所述分组报文中封装的TDM业务数据的长度。所述时钟恢复模块,还用于根据所述报文序号,确定分组报文之间的相邻关系。所述读取模块,还用于根据所述包长信息,确定所述第二TDM业务数据在缓存中的位置,进而从缓存中读取所述第二TDM业务数据对应的数据。
最后再结合图6对本发明做进一步的说明。图6通过一个细化的时钟恢复装置的电路模块图,示意性地说明了接收端是如何利用分组报文的发送时戳和本地时戳信息来进行频率调整和恢复的。
图6所示的时钟恢复装置,包括报文接收模块、定时模块、报头处理模块、FIFO缓存器、算术逻辑模块(ALU,Arithmetic Logic Unit)、读出比特计数模块、直接频率合成(DDS,Direct Digital Synthesis)模块以及频率控制算法模块等组成,各模块的连接关系如图6所示。
在接收端,第一定时模块对进入***的每个分组报文进行定时,并将每个分组报文进入***的准确时刻信息(即接收时戳)发送给ALU模块;报头处理模块处理分组报文的报文头部,并将报文中的封装的净荷(TDM业务数据)输入到FIFO缓存器中,同时将报头中的报文序号、发送时戳timestamp以及包长信息发送给ALU模块13;FIFO缓存器用于缓存剥去头部信息后的报文净荷(TDM业务数据),并按DDS模块提供的时钟频率读取FIFO缓存器中的数据并发往TDM电路;ALU模块对提取到的相关信息进行运算,为频率控制算法模块提供相应信息;频率控制算法模块根据ALU模块提供的信息,按照公式(8)计算时钟频率或采取相应的频率调整策略;DDS模块根据频率控制算法模块提供的时钟频率,实施相应的频率调整,用以控制FIFO的读出时钟频率和TDM电路发送时钟频率。
在利用图6进行时钟恢复时,具体包括如下步骤:
步骤51,在接收端,设置好FIFO缓存器的初始读出时钟频率f0、DDS模块的各参数以及定时用的计数器。
这里,接收端使用一个高速时钟,可以是50MHz或者100MHz,作为定时的计数时钟(例如50MHz时钟,则一个计数节拍代表20ns,采用100MHz时钟,一个计数节代表10ns)。本实施例中采用50MHz时钟作计数时钟,采用一个32位的寄存器寄存本地计数时钟信息。接收端初始化时,初始化FIFO缓存器的读出时钟频率,例如,对E1数据初始为其标称频率2.048MHz,对T1数据初始化为其标称时钟频率1.544MHz,同时对第一、第二定时模块进行初始化。
步骤52,在接收端,对每个进入***的报文进行定时,记录每个包进入***的准确时刻信息。
在第一个分组报文进入接收端的***时,第一定时模块将此报文的进入***的时刻信息,发送给ALU模块。并且,在后续的第一个分组报文的TDM业务数据从FIFO缓存器完全读出时,第二定时模块也将此时的定时信息发送回给ALU模块,对后续的每个报文都采取同样操作。
步骤53,在接收端,报头处理模块提取每个报文的报文序号、相应的包长信息、以及相应报头里的timestamp信息。
步骤54,读出比特计数模块对从FIFO缓存器读出数据比特个数进行计数,通过读出比特计数值以及包长信息来确定每个TDM业务数据界限的准确位置。
步骤55,根据TDM业务数据的界限,确定每个TDM业务数据从FIFO缓存器中完全读出的时刻。
步骤56,根据报文序号、以及相应报头部里的timestamp、报文进入***时刻、报文从FIFO读出时刻以及FIFO缓存器当前的读出时钟频率,当前报文的前k个报文中相邻两个报文进入***的间隔信息,ALU模块按照上述公式(8)进行相应的运算,并将运算结果输出给频率控制算法模块,频率控制算法模块根据所获信息,采取相应的频率调整策略,调整DDS的输出频率,以对FIFO缓存器的读出时钟频率进行相应调整。考虑到ALU模块的运算量和速度,具体实现时可以考虑采用软件进行替代。
最后,发明人对本实施例的上述时钟恢复方法进行了仿真测试。仿真时,分组报文内容采用E1业务,对应的测试标准采用G.8261的测试用例,通过对发送端频率发生突变进行仿真,能够发现本实施例能够快速跟踪发送端的频率突变并锁定。在频率锁定后,对最大时间间隔误差(MTIE,Maximum TimeInterval Error)指标和时间偏差(TDEV,Time Deviation)指标进行了测试,测出的指标都获得了很好地满足了相关标准。如果出现丢包,本实施例可以根据报文序号,侦测出丢包;在出现丢包时,采取的策略是保持之前恢复出来的读取时钟频率不变。出现报文乱序时,由于报文序号提取后都存入了ALU模块(预存序号的多少由配置决定),ALU模块对乱序报文的有用信息提取,不会受任何影响,因此,乱序对本实施例时钟恢复方法并没有太大影响。
以上所述仅是本发明的实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。