CN112152748B - 一种以太网时间戳产生方法及系统 - Google Patents
一种以太网时间戳产生方法及系统 Download PDFInfo
- Publication number
- CN112152748B CN112152748B CN202011156504.4A CN202011156504A CN112152748B CN 112152748 B CN112152748 B CN 112152748B CN 202011156504 A CN202011156504 A CN 202011156504A CN 112152748 B CN112152748 B CN 112152748B
- Authority
- CN
- China
- Prior art keywords
- dis
- mii
- distance
- sfd
- pcs
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0638—Clock or time synchronisation among nodes; Internode synchronisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0682—Clock or time synchronisation in a network by delay compensation, e.g. by compensation of propagation delay or variations thereof, by ranging
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
本发明涉及一种以太网时间戳产生方法及系统,属于通信技术领域,解决以太网物理层引入的延迟带来的不确定性问题;方法包括测量MII接口上PTP包头的帧起始定界符SFD到同步码块AM之间的距离MII_DIS;将距离MII_DIS转换为Serdes接口上的帧起始定界符SFD到同步码块AM之间的距离SD_DIS;在Serdes接口上检测同步码块AM的时间TSAM;根据所述时间TSAM和所述距离SD_DIS得到在Serdes接口上的帧起始定界符SFD时间戳TSSFD。本发明产生的时间戳克服了在PCS和FEC核引入的时间戳带来的不确定性,使时间戳更加精确。
Description
技术领域
本发明涉及通信技术领域,尤其是一种以太网时间戳产生方法及系统。
背景技术
当今社会已经步入信息时代,随着分布式网络广泛普及和下一代通信技术(5G网络)的发展,许多设备和应用都会时钟同步提出了严苛的需求,更需要给网络系统中的设备提供一个更加精确的时钟来实现高精度的时间同步。IEEE1588是一种网络时间同步协议,通过它可以实现主从设备简单时钟同步,但是很难将精度提高到纳秒的级别。因为以太网物理层的设计实现非常的复杂,PCS和FEC会带来不确定的时间延迟,例如同步数据块AM(alignment marker)的插入,FEC的校验码生产,变速器,异步FIFO等。这些设计引入的延迟都会影响测量的精度。
发明内容
鉴于上述的分析,本发明旨在公开了一种以太网时间戳产生方法及系统,解决以太网物理层引入的延迟带来的不确定性问题。
本发明公开了一种以太网时间戳产生方法,包括:
测量MII接口上PTP包头的帧起始定界符SFD到同步码块AM之间的距离MII_DIS;
将距离MII_DIS转换为Serdes接口上的帧起始定界符SFD到同步码块AM之间的距离SD_DIS;
在Serdes接口上检测同步码块AM的时间TSAM;
根据所述时间TSAM和所述距离SD_DIS得到在Serdes接口上的帧起始定界符SFD时间戳TSSFD;其中,TSSFD=TSAM+SD_DIS×UI,UI为serdes接口上每传输一个Serdes符号所需要的时间。
进一步地,所述距离MII_DIS的测量在PCS层进行,包括传输方向上或接收方向上的测量;
在传输方向上,所述距离MII_DIS的测量包括:
在MII侧找到帧起始定界符SFD,进行SFD指示标识,并将SFD指示标识随着数据一起传向PCS层的AM insertion模块;
在AM insertion模块中插入同步码块AM,进行同步码AM指示标识;
测量AM指示标识和SFD指示标识相差的时钟周期;将所述相差的时钟周期转换为距离MII_DIS;
在接收方向上,所述距离MII_DIS的测量包括:
在PCS层的AM remove模块中找到同步码块AM,进行同步码AM指示标识;将AM指示标识随着数据传递给MII接口;
在MII接口上发现帧起始定界符SFD时,进行SFD指示标识;
测量SFD指示标识和AM指示标识在MII接口相差的时钟周期;将所述相差的时钟周期转换为距离MII_DIS。
进一步地,在25G~400G速率范围内以太网的MII接口上的传输方向上和接收方向上距离MII_DIS为:
25G:MII_DIS=(Nt–1)×64+MII_OFFSET×32–8;
40G/50G:MII_DIS=(Nt–1)×64+MII_OFFSET×64–8;
100G:MII_DIS=(Nt–1)×2×64+MII_OFFSET×64–8;
200G:MII_DIS=(Nt–1)×4×64+MII_OFFSET×64–8;
400G:MII_DIS=(Nt–1)×8×64+MII_OFFSET×64–8;
其中,Nt为在MII接口上AM指示标识和SFD指示标识相差时钟周期,MII_OFFSET为帧起始定界符SFD的起始bit在64-bit位宽的MII接口上的偏移量。
进一步地,在包括RS-FEC的以太网中,将距离MII_DIS转换为距离SD_DIS的公式为:
SD_DIS=CW_DIS+LEFT_DIS;
其中,CW_DIS为距离转换过程中由FEC码字数量整位数引起的距离;LEFT_DIS为距离转换过程中不够一个完整的FEC码字的bit数引起的距离。
进一步地,只通过一条Serdes通道传输数据时,所以距离CW_DIS为:CW_DIS=CW_N×L;
其中,CW_N为所述FEC码字数量;CW_N=MII_DIS/m/n;L为FEC码字的bit数。
进一步地,LEFT_DIS=LEFT_257B;获得LEFT_257B,包括:
同步码块AM的插入位置在FEC码字的头部,其中不够一个完整的FEC码字的bit数LEFT_64B为:LEFT_64B=MII_DIS–CW_N×m×n;
LEFT_64B中包含257-bit transcode数据块,每一个257-bit transcode数据块包含4×64-bit数据块,LEFT_64B中257-bit transcode的数据块数量TC_N=LEFT_64B/4/64,保留TC_N的整数位;
根据257-bit transcode数据块的数量计算距离LEFT_257B:LEFT_257B=TC_N×257+(LEFT_64B–4×64×TC_N)+(LEFT_64B%256==0?0:1)。
进一步地,通过多条Serdes通道传输数据时,
1)按照只有一条Serdes通道进行距离转换,计算出由FEC码字数量整位数CW_N引起的距离和不够一个完整的FEC码字的bit数引起的距离LEFT_257B;
2)根据Serdes通道数量和距离LEFT_257B来判断帧起始定界符SFD落在Serdes接口的某一条Serdes通道上;
3)在该条Serdes通道上,根据RS-FEC的编码格式,计算CW_DIS和LEFT_DIS;
CW_DIS=CW_N×L/R;
LEFT_DIS=(LEFT_257B/10/R)×10+LEFT_257B%10;
其中,L为FEC码字的bit数,R为Serdes的通道数量。
进一步地,在不带RS-FEC的以太网的100G/40G AUI模式中,40G AUI模式物理层接口有4条PCS通道,100G AUI模式有20条PCS通道;
在进行距离转换时,数据块会分发到4条或者20条PCS通道上;根据下式确定SFD落在某一条PCS通道上;
40G:PCS_LANE=MII_DIS%64==0?(MII_DIS/64)%4:(MII_DIS/64+1)%4;
100G:PCS_LANE=MII_DIS%64==0?(MII_DIS/64)%20:(MII_DIS/64+1)%20;
在包含SFD的PCS通道上SFD与同步码块之间的距离SD_DIS为PCS_DIS:
40G:
PCS_DIS=MII_DIS/(64×4)×66+(MII_DIS%(64×4)==0?0:(MII_DIS%64?66:MII_DIS%64));
100G:
PCS_DIS=MII_DIS/(64×20)×66+(MII_DIS%(64×20)==0?0:(MII_DIS%64?66:MII_DIS%64))。
进一步地,在Serdes接口上检测同步码块AM的第一个pattern,当第一个pattern的最低位出现在serdes接口时,记录下当前同步码块AM的时间TSAM;当同步码块AM的pattern出现在Serdes接口上的位置SD_R×[k]位时;修正同步码块AM的时间为TSAM+k×UI。
本发明还公开了一种根据上所的以太网时间戳产生方法的时间戳产生系统,其特征在于,包括:
距离测量模块,用于测量MII接口上PTP包头的帧起始定界符SFD到同步码块AM之间距离MII_DIS;
距离转换模块,用于将距离MII_DIS转换为Serdes接口上的帧起始定界符SFD到同步码块AM之间距离SD_DIS;
时间检测模块,用于在Serdes接口上检测同步码块AM的时间TSAM;
时间戳计算模块,用于根据时间TSAM和距离SD_DIS得到在Serdes接口上的帧起始定界符SFD时间戳TSSFD为:TSSFD=TSAM+SD_DIS×UI,式中UI为serdes接口上面每传输一个Serdes符号需要的时间。
本发明至少可实现以下有益效果之一:
本发明解决了数据经过物理层PCS/FEC会引入,包括以下几方面的不确定性的延迟,
周期性的插入AM或CM(Alignment/Codeword Marker);
RS-FEC的插入的校验符号(parity symbol);
多条Serdes通道(Serdes lane)之间的偏斜(skew)和偏斜抖动(skewvariation);
时钟频率的补偿;
以及其他的因素(对于100G/200G/400G,初始SFD的位置不一定是对齐到第一条Serdes通道lane0;变速器模块;以及FEC encoder/decoder缓存引入的延迟等等);
本发明可以消除PCS和FEC核引入的时间戳生成的不确定性;
并且对跨时钟域所带来的采样时钟戳的偏差进行补偿,使补偿后回路的时钟采样延迟减少1/2。
附图说明
附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。
图1为本实施例中的产生以太网高精度时间戳的系统连接示意图;
图2为本实施例中的以太网高精度时间戳产生方法流程图;
图3为本实施例中的在传输方向AM和SFD相差的时钟周期计算原理示意图;
图4为本实施例中的在接收方向AM和SFD相差的时钟周期计算原理示意图;
图5为本实施例中的40G~400G以太网SFD在MII接口上面出现的位置示例图;
图6为本实施例中的25G以太网SFD在MII接口上面出现的位置示例图;
图7为本实施例中的补偿跨时钟采样示意图;
图8为本实施例中的以太网高精度时间戳产生系统组成连接示意图。
具体实施方式
下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理。
以太网物理层PHY的PCS和FEC会带来不确定延迟,为了消除不确定延迟,系统产生时间戳的位置离物理层越接近越准确。所以把PTP帧的帧起始定界符SFD(start framedelimiter)在MII侧出现位置转换成在Serdes接口上的位置,从而达到在物理层的Serdes接口识别出PTP帧的SFD并产生时间戳,以达到的消除延迟目的。如下图1所示,在物理层PHY最上面与RS层相连接的是MII接口,最下面的是Serdes接口。
帧起始定界符SFD在经过PCS时会被加扰并且有可能分配到多条Serdes通道(serdes lanes),所以在Serdes接口上很难去识别出原有的帧。但是同步码块AM(alignment marker)的样式(pattern)是固定的,它会周期性的出现并且不会参与加扰过程,所以可以在Serdes接口上找到同步码块AM。因此,在Serdes接口可以使用同步码块AM作为一个参考点,一旦得到了同步码块AM离开或者到达Serdes接口的时间和AM到SFD之间的距离,就可以计算出SFD离开或者到达Serdes接口的时间。
由于SFD难于在Serdes接口上面发现,所以即使得到了同步码块AM起始点在Serdes接口上面的时间也很难测量出SFD与AM之间的距离。本实施例公开的方法通过在MII接口测量出SFD与AM的距离,再通过算法计算出Serdes接口上面SFD与AM的距离的方法来解决这一难题,产生以太网高精度时间戳HETS(High-accurate Ethernet Time Stamping)。
本实施例公开了一种以太网高精度时间戳产生方法,如图2所示,包括以下步骤:
步骤S1、测量MII接口上PTP包头的帧起始定界符SFD到同步码块AM之间距离MII_DIS;
步骤S2、将距离MII_DIS转换为Serdes接口上的帧起始定界符SFD到同步码块AM之间距离SD_DIS;
步骤S3、在Serdes接口上检测同步码块AM的时间TSAM;
步骤S4、根据时间TSAM和距离SD_DIS得到在Serdes接口上的帧起始定界符SFD时间戳TSSFD为:TSSFD=TSAM+SD_DIS×UI,式中UI为serdes接口上面每传输一个Serdes符号需要的时间。
具体的,所述距离MII_DIS的测量包括传输方向上和接收方向上的测量;
在传输方向上,如图3所示,在PCS层数据流经64/66B编码器(encoder),扰码器(scrambler),同步码块插入模块(Am insertion),译码器(transcode),变速器(gearbox)等。每个模块中都会有2个左右的时钟周期的延迟。所以为了更精确的测量出SFD与AM的距离,在MII测找到SFD时,会把这个SFD指示标识并随着数据一起打拍传向下游模块,直到AMinsertion模块。在AM insertion模块中会在数据中插入固定样式的同步码块(AMpattern),并且给出AM指示标识。因为SFD的指示信号也传递到了AM insertion模块中,所以我们可以在同一个基准模块中测量出AM指示和SFD指示相差的时钟周期。通过时钟周期再转换为它们在MII接口上距离。
在接收方向上,如图4所示,同步码块AM通常会在到达MII接口前被移除掉,但是要知道SFD和AM的相对位置关系就必须要保留AM pattern直到MII侧接口。因此,本实施例中在AM remove模块中会找到同步码块AM,进行同步码AM指示标识,将AM指示标识随着数据传递给下游模块直到MII的接口。因为SFD在MII的接口上是一个固定的样式,比较容易找到。当在MII接口上发现PTP的SFD时,进行SFD指示标识,测量SFD指示和AM指示在MII接口相差的时钟周期;将所述相差的时钟周期转换为距离MII_DIS。
根据802.3协议中的规定,前导码(preamble)和SFD在MII lane上以八位组(octets)连续传输。对于40G~400G,第一个前导码八位组被替换成start控制符并且对齐到MII lane0。在lane1到lane2上面的传输preamble,lane7传输SFD如下图5。因此SFD在MII接口上面出现的位置会在MII lane7上。
对于25G,MII接口上有4条lane如下图6,数据在MII接口上传输与40G~400G类似,SFD会出现在lane3。
25G/40G/50G模式下只会占有一条MII lane,所以SFD只会在当前传输的MII lane上出现。但是100G/200G/400G会占有多于一条MII lane,所以SFD的位置可能会出现在其他的lane上。因此需要根据不同的速率模式来计算SFD在MII上出现的偏移量并且计算出SFD的距离。下表给出了25G~400G不同MII lane上出现SFD的一种可能的示例。
假设在MII接口上AM指示标识和SFD指示标识相差时钟周期为Nt,SFD的起始bit在64-bit位宽的MII port上的偏移量为MII_OFFSET。那么25G~400G速率的SFD和AM在MII接口上的距离MII_DIS为:
25G:MII_DIS=(Nt–1)×64+MII_OFFSET×32–8;
40G/50G:MII_DIS=(Nt–1)×64+MII_OFFSET×64–8;
100G:MII_DIS=(Nt–1)×2×64+MII_OFFSET×64–8;
200G:MII_DIS=(Nt–1)×4×64+MII_OFFSET×64–8;
400G:MII_DIS=(Nt–1)×8×64+MII_OFFSET×64–8。
由于SFD的第一个bit总是出现在第3个或者第7个byte上,所以MII_DIS的计算中会在满MII port的MII_OFFSET的基础上减去8,以保证距离MII_DIS的准确性。
在步骤S2的距离转换中,数据在MII接口流向Serdes接口中经过PCS/FEC功能模块,这些模块会引入不确定的延迟如下:
1.64/66B encoder会在64-bit MII block数据中增加2个bit;
2.Transcoding会在每4个66B block中删除7个bit;
3.RS编码的校验位,RS(528,514)会增加140bit,RS(544,514)会增加300bit,RS(257,272)会增加150bit;
4.Serdes lane编号。因为SFD有可能分配到任何一条serdes lane上,所以需要知道SFD的起始位在哪一条lane上;
5.以太网速率。不同的速率模式下,数据会有不同的交织,多路选择分配方式,这些都会影响SFD起始位出现在Serdes lane上的位置。
本实施例把上述提到的不确定性补偿回来,把MII上的距离SFD与AM之间的距离推算到SFD在Serdes通道上的位置。
具体的,在包括RS-FEC的以太网中,将距离MII_DIS转换为距离SD_DIS:
SD_DIS=CW_DIS+LEFT_DIS;
其中,CW_DIS为距离转换过程中由FEC码字数量整位数引起的距离;LEFT_DIS为距离转换过程中不够一个完整的FEC码字的bit数引起的距离。
进一步地,所述FEC码字数量为CW_N;每个FEC码字包含m×n-bit数据块,那么CW_N=MII_DIS/m/n,保留CW_N的整数位;
在只通过一条Serdes通道传输数据时,所以距离CW_DIS为:CW_DIS=CW_N×L;L为FEC码字的bit数。
进一步地,同步码块AM的插入位置是在FEC码字的头部,其中不够一个完整的FEC码字的bit数LEFT_64B为:LEFT_64B=MII_DIS–CW_N×m×n;
LEFT_64B中包含257-bit transcode数据块,每一个257-bit transcode数据块包含4×64-bit数据块,LEFT_64B中257-bit transcode的数据块数量TC_N=LEFT_64B/4/64,保留TC_N的整数位;
根据257-bit transcode数据块的数量计算距离LEFT_257B:
LEFT_257B=TC_N×257+(LEFT_64B–4×64×TC_N)+(LEFT_64B%256==0?0:1);
在只通过一条Serdes通道传输数据时,LEFT_DIS=LEFT_257B。
进一步地,在Serdes接口包括多条Serdes通道时,
1)按照只有一条Serdes通道进行距离转换,计算出由FEC码字数量整位数CW_N引起的距离和不够一个完整的FEC码字的bit数引起的距离LEFT_257B;
2)根据Serdes通道数量和距离LEFT_257B来判断帧起始定界符SFD落在Serdes接口的某一条Serdes通道上;
3)在该条Serdes通道上,根据RS-FEC的编码格式,计算CW_DIS和LEFT_DIS;
CW_DIS=CW_N×L/R;
LEFT_DIS=(LEFT_257B/10/R)x10+LEFT_257B%10;
其中,L为FEC码字的bit数,R为Serdes的通道数量。
特殊的,在不带RS-FEC的100G/40G AUI模式中,40G AUI模式物理层接口有4条PCS通道,100G AUI模式有20条PCS通道;
在进行距离转换时,数据块会分发到4条或者20条PCS通道上;根据下式确定SFD落在某一条PCS通道上;
40G:PCS_LANE=MII_DIS%64==0?(MII_DIS/64)%4:(MII_DIS/64+1)%4;
100G:PCS_LANE=MII_DIS%64==0?(MII_DIS/64)%20:(MII_DIS/64+1)%20;在包含SFD的PCS通道上SFD与同步码块之间的距离SD_DIS为PCS_DIS:
40G:
PCS_DIS=MII_DIS/(64×4)×66+(MII_DIS%(64×4)==0?0:(MII_DIS%64?66:MII_DIS%64));
100G:
PCS_DIS=MII_DIS/(64×20)×66+(MII_DIS%(64×20)==0?0:(MII_DIS%64?66:MII_DIS%64))。
下面的部分会具体的描述以太网25G~400G速率模式下的距离转换算法。
1、25G距离转换
25G插入的同步码块为CM(Codeword Marker)与其他速率的同步码块AM形式和作用相同,只是命名不同。
设SFD与同步码块CM之间的相差的FEC codeword数量为CW_N。每个codeword包含80×64-bit数据块,那么CW_N=MII_DIS/64/80,保留CW_N的整数位。
因为CM的插入位置总是在FEC codeword的头部,不够一个完整的codeword的bit数LEFT_64B为:LEFT_64B=MII_DIS–CW_N×80×64.
每一个257-bit transcode数据块包含4×64-bit数据块,257-bit transcode的数据块数量TC_N:为TC_N=LEFT_64B/4/64,保留TC_N的整数位。
Transcoding后剩余的bit数量LEFT_257B为:LEFT_257B=TC_N×257+(LEFT_64B–4×64×TC_N)+(LEFT_64B%256==0?0:1),公式中最后加的1个bit是因为每一个新的transcode会多1个bit的开销。
因为25GBASE-R速率下只会用到一条Serdes通道,所以与CM相差的codeword的距离CW_DIS为:CW_DIS=CW_N×5280。
除了CW_DIS之外剩下的距离LEFT_DIS为:LEFT_DIS=LEFT_257B。
基于上述的运算结果,最终在SFD与CM相差在Serdes接口上的距离SD_DIS为:SD_DIS=CW_DIS+LEFT_DIS。
2、50G距离转换(默认以RS-FEC(544,514)和RS(528,514)计算)
设SFD与AM之间相差的FEC codeword数量为CW_N。每个codeword包含80×64-bit数据块,CW_N=MII_DIS/64/80,保留CW_N的整数位。在FEC-RS(272,257)算法下,每个codeword包含40×64-bit数据块,CW_N=MII_DIS/64/40,保留CW_N的整数位。
因为AM的插入位置总是在FEC codeword的头部,不够一个完整的codeword的bit数LEFT_64B为:LEFT_64B=MII_DIS–CW_N×80×64.在FEC-RS(272,257)算法下,LEFT_64B=MII_DIS–CW_N×40×64.
每一个257-bit transcode数据块包含4×64-bit数据块,257-bit transcode的数据块数量TC_N:为TC_N=LEFT_64B/4/64,保留TC_N的整数位。
Transcoding后剩余的bit数量LEFT_257B为:LEFT_257B=TC_N×257+(LEFT_64B–4×64×TC_N)+(LEFT_64B%256==0?0:1),公式中最后加的1个bit是因为每一个新的transcode会多1个bit的开销。
50G BASE-R2有2条serdes lane,数据会以10-bit FEC symbol为单位,round-robin的方式分发到两条serdes lane上。SFD会出现在的Serdes lane为SD_LANE,SD_LANE=(LEFT_257B%10==0)?(LEFT_257B/10)%2:(LEFT_257B/10+1)%2。需要注意的是SD_LANE从1开始,如果SD_LANE的计算结果是0,意味着SFD落在了最后一条lane上。
在某条Serdes lane上,不同FEC-RS算法的SFD与AM相差的codeword的距离CW_DIS为:
RS(544,514):CW_DIS=CW_N×5440/2;
RS(528,514):CW_DIS=CW_N×5280/2;
RS(272,257):CW_DIS=CW_N×2720/2。
除了CW_DIS之外剩下的距离LEFT_DIS为:LEFT_DIS=(LEFT_257B/20)×10+LEFT_257B%10;
基于上述的运算结果,最终在SFD与CM相差在Serdes上的距离SD_DIS为:SD_DIS=CW_DIS+LEFT_DIS。
在50G BASE-R1模式下,2条Serdes lane的数据会按bit交织成1条Serdes lane,所以最终的SD_DIS为SD_DIS=2×(CW_DIS+LEFT_DIS)
3、100G距离转换(默认以RS-FEC(544,514)和RS(528,514)计算)
设SFD与AM之间相差的FEC codeword数量为CW_N。每个codeword包含80×64-bit数据块,CW_N=MII_DIS/64/80,保留CW_N的整数位。在FEC-RS(272,257)算法下,每个codeword包含40×64-bit数据块,CW_N=MII_DIS/64/40,保留CW_N的整数位。
因为AM的插入位置总是在FEC codeword的头部,不够一个完整的codeword的bit数LEFT_64B为:LEFT_64B=MII_DIS–CW_N×80×64.在FEC-RS(272,257)算法下,LEFT_64B=MII_DIS–CW_N×40×64;
每一个257-bit transcode数据块包含4×64-bit数据块,257-bit transcode的数据块数量TC_N:为TC_N=LEFT_64B/4/64,保留TC_N的整数位。
Transcoding后剩余的bit数量LEFT_257B为:LEFT_257B=TC_N×257+(LEFT_64B–4×64×TC_N)+(LEFT_64B%256==0?0∶1);
公式中最后加的1个bit是因为每一个新的transcode会多1个bit的开销。
100G BASE-KR4有4条Serdes lane,数据会以10-bit FEC symbol为单位,round-robin的方式分发到4条Serdes lane上。SFD会出现在的Serdes lane为D_LANE=(LEFT_257B%10==0)?(LEFT_257B/10)%4:(LEFT_257B/10+1)%4S。
需要注意的是SD_LANE从1开始,如果SD_LANE的计算结果是0,意味着SFD落在了最后一条lane上。
在某条Serdes lane上,不同FEC-RS算法的SFD与AM相差的codeword的距离CW_DIS为:
RS(544,514):CW_DIS=CW_N×5440/4;
RS(528,514):CW_DIS=CW_N×5280/4;
RS(272,257):CW_DIS=CW_N×2720/4。
除了CW_DIS之外剩下的距离LEFT_DIS为:LEFT_DIS=(LEFT_257B/40)×10+LEFT_257B%10;
基于上述的运算结果,最终在SFD与CM相差在Serdes上的距离SD_DIS为:SD_DIS=CW_DIS+LEFT_DIS。
100G BASE-KR2/CR2模式下,4条Serdes lane的数据会按bit交织成2条serdeslane,所以最终的SD_DIS为SD_DIS=2×(CW_DIS+LEFT_DIS)。
4、200G/400G距离转换(默认以RS-FEC(544,514)计算)
设SFD与AM之间相差的FEC codeword数量为CW2_N。每2个codeword包含2×80×64-bit数据块,CW2_N=MII_DIS/64/80/2,保留CW2_N的整数位。在FEC-RS(272,257)算法下,每2个codeword包含2×40×64-bit数据块,CW2_N=MII_DIS/64/40/2,保留CW2_N的整数位。
因为AM的插入位置总是在FEC codeword的头部,不够2个完整的codeword的bit数LEFT_64B为:LEFT_64B=MII_DIS–CW2_N×80×64×2.在FEC-RS(272,257)算法下,LEFT_64B=MII_DIS–CW2_N×40×64×2.
每一个257-bit transcode数据块包含4×64-bit数据块,257-bit transcode的数据块数量TC_N:为TC_N=LEFT_64B/4/64,保留TC_N的整数位。
Transcoding后剩余的bit数量LEFT_257B为:LEFT_257B=TC_N×257+(LEFT_64B–4×64×TC_N)+(LEFT_64B%256==0?0:1),公式中最后加的1个bit是因为每一个新的transcode会多1个bit的开销。
200G和400G数据会以10-bit FEC symbol为单位,round-robin的方式分发到8(200G)和16条(400G)serdes lane上。SFD会出现在第几组的Serdes lane为LANE_DIST_N,
200G:LANE_DIST_N=(LEFT_257B%80==0)?LEFT_257B/80:LEFT_257B/80+1;
400G:LANE_DIST_N=(LEFT_257B%160==0)?LEFT_257B/160:LEFT_257B/160+1;
假设IS_CWA==1时SFD是落在codewordA上。IS_CWA==0,SFD是落在codewordB上。IS_CWA计算如下:IS_CWA=(LEFT_257B%20>10or LEFT_257B%20==0)?0:1;
SFD会出现在的Serdes lane为SD_LANE,SD_LANE的计算由以下步骤:首先由LANE_DIST_N得出SFD所在的serdes lane组数,如果是在奇数组(serdes lane distribution按照codeword ABAB的形式排列),则对serdes lane数求余数计算出SFD所在的serdes lane。如果是在偶数组(serdes lane distribution按照codeword BABA的形式排列):在IS_CWA为1的情况下对serdes lane数求余数计算出SFD所在的serdes lane+1。IS_CWA为0的情况下对serdes lane数求余数计算出SFD所在的serdes lane-1。Serdes lane的distribution是按照symbol(10比特位)为单位计算的,所有(LEFT_257B/10)的计算结果不足1个symbol的,会补齐一个symbol来计算(LEFT_257B/10+1)。
具体公式如下:
200G:SD_LANE=
(LANE_DIST_N%2==1)?
((LEFT_257B%10==0)?(LEFT_257B/10)%8:(LEFT_257B/10+1)%8):
((LEFT_257B%10==0)?(IS_CWA?(LEFT_257B/10)%8+1:
((LEFT_257B%160==0)?8-1:(LEFT_257B/10)%8–1)):
(IS_CWA?(LEFT_257B/10+1)%8+1:
(((LEFT_257B/10+1)%16==0?8-1:(LEFT_257B/10+1)%8-1)));
400G:SD_LANE=
(LANE_DIST_N%2==1)?
((LEFT_257B%10==0)?(LEFT_257B/10)%16:(LEFT_257B/10+1)%16):
((LEFT_257B%10==0)?(IS_CWA?(LEFT_257B/10)%16+1:
((LEFT_257B%320==0)?16-1:(LEFT_257B/10)%16–1)):
(IS_CWA?(LEFT_257B/10+1)%16+1:
(((LEFT_257B/10+1)%32==0?16-1:(LEFT_257B/10+1)%16-1)));
需要注意的是SD_LANE从1开始,如果SD_LANE的计算结果是0,意味着SFD落在了最后一条lane上。
在某条Serdes lane上,不同RS-FEC算法的SFD与AM相差的codeword的距离CW_DIS为:
200G RS(544,514):CW_DIS=CW2_N×5440*2/8;
200G RS(272,257):CW_DIS=CW2_N×2720*2/8;
400G RS(544,514):CW_DIS=CW2_N×5440*2/16;
400G RS(272,257):CW_DIS=CW2_N×2720*2/16。
除了CW_DIS之外剩下的距离LEFT_DIS为:
200G:LEFT_DIS=(LEFT_257B/80)×10+LEFT_257B%10;
400G:LEFT_DIS=(LEFT_257B/160)×10+LEFT_257B%10。
基于上述的运算结果,最终在SFD与AM相差在Serdes上的距离SD_DIS为:SD_DIS=CW_DIS+LEFT_DIS。
200G BASE-R4和400GR8模式下,serdes lane的数据会按每bit交织成4条(200G)和8条(400G)serdes lane,所以最终的SD_DIS为SD_DIS=2×(CW_DIS+LEFT_DIS)。
5、100G/40G AUI模式距离转换
40G/100G AUI是不带RS-FEC的,所以距离转换和上述的算法有所不同。40G AUI模式物理层接口有4条pcs lane,100G AUI模式有20条pcs lane。66-bit的数据块会按照round-robin的方式分发到4条或者20条pcs lane上。设SFD出现在PCS_LANE上,
40G:PCS_LANE=MII_DIS%64==0?(MII_DIS/64)%4:(MII_DIS/64+1)%4;
100G:PCS_LANE=MII_DIS%64==0?(MII_DIS/64)%20:(MII_DIS/64+1)%20;
需要注意的是SD_LANE从1开始,如果SD_LANE的计算结果是0,意味着SFD落在了最后一条lane上。
设SFD在pcs lane上与AM之间的距离为PCS_DIS;
40G∶PCS_DIS=MII_DIS/(64×4)×66+(MII_DIS%(64×4)==0?0:(MII_DIS%64?66∶MII_DIS%64));
100G∶PCS_DIS=MII_DIS/(64×20)×66+(MII_DIS%(64×20)==0?0:(MII_DIS%64?66∶MII_DIS%64));
100G AUI模式还有另外的2种PMA交织方式。100G AUI4会按照round-robin方式把5条pcs lane数据交织到一条serdes lane上。100G AUI10会按照round-robin方式把2条pcs lane数据交织到一条serdes lane上。所以最终的SFD在serdes lane上与AM之间的距离SD_DIS为:
100G AUI4:SD_DIS=PCS_DIS×5–(PCS_LANE%5==0?0∶5-PCS_LANE%5);
100G AUI10:SD_DIS=PCS_DIS×2–(PCS_LANE%2==0?0∶2-PCS_LANE%2)。
通过上述的算法可以计算出在不同速率下SFD与AM在Serdes lane上的距离SD_DIS(以bit为单位)。
当在Serdes接口上检测到第一个AM的pattern时,在Serdes接口上检测同步码块AM的时间TSAM时,会记录下当前的时间TS(AM)。因为AM pattern出现在Serdes接口上面位置不一定是对齐到serdes的最低位。如果发现上述的情况,HETS需要去修正AM pattern的起始位。例如一个32-bit位宽的serdes接口SD_RX[31:0],假设AM pattern的起始位出现在SD_RX[6](Serdes接口的第6个bit),这种情况下HETS采样AM的时间戳TS(AM)会被修改成TS(AM)+6x UI,UI(bit interval)是在serdes接口上面每传输一个Serdes Symbol需要的时间,单位为ps。
下表中列出了不同速率模式下对应的UI值:
综上所述,本实施例提供的以太网时间戳产生方法,消除了如上面所提到的数据经过物理层PCS/FEC会引入不确定性的延迟,主要有下面的几个方面:
周期性的插入AM或CM(Alignment/Codeword Marker);
RS-FEC的插入的校验符号(parity symbol);
多条Serdes通道(Serdes lane)之间的偏斜(skew)和偏斜抖动(skewvariation);
时钟频率的补偿;
以及其他的因素(对于100G/200G/400G,初始SFD的位置不一定是对齐到第一条Serdes通道lane0;变速器模块;以及FEC encoder/decoder缓存引入的延迟等等);
下表中列出了不同速率下最糟糕的情况下的通路延迟(单位ns)。通过使用本实施例的方法,消除PCS和FEC core引入的时间戳生成的不确定性。
除此之外还有一个跨时钟域所带来的采样时钟戳的偏差。因为在采样AM时间戳的位置是在Serdes接口,设serdes接口下的时钟频率设为HSS_CLK,设系统时钟频率为SYS_CLK.在Serdes接口上找到AM pattern后需要采样SYS_CLK下的时间戳,跨时钟域的操作会引入最多1个SYS_CLK的采样延迟。HETS会减去半个SYS_CLK的延迟来补偿跨时钟采样带来的延迟如图7所示。补偿前TX和RX回路的采样延迟会有2ns,补偿后回路采样延迟减少1/2,只有1ns。
本实施例还公开了一种根据上述以太网时间戳产生方法的时间戳产生系统,如图8所示,包括:
距离测量模块,用于测量MII接口上PTP包头的帧起始定界符到同步码块之间距离MII_DIS;
距离转换模块,用于将距离MII_DIS转换为Serdes接口上的帧起始定界符到同步码块之间距离SD_DIS;
时间检测模块,用于在Serdes接口上检测同步码块的时间TSAM;
时间戳计算模块,用于根据时间TSAM和距离SD_DIS得到在Serdes接口上的SFD时间戳TSSFD为:TSSFD=TSAM+SD_DIS×UI,式中UI为serdes接口上面每传输一个Serdes符号需要的时间。
本时间戳产生系统的技术细节和有益效果与上述以太网时间戳产生方法中的技术细节和有益效果基本相同,在此就不一一赘述了。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
Claims (9)
1.一种以太网时间戳产生方法,其特征在于,包括:
测量MII接口上PTP包头的帧起始定界符SFD到同步码块AM之间的距离MII_DIS;
将距离MII_DIS转换为Serdes接口上的帧起始定界符SFD到同步码块AM之间的距离SD_DIS;
在Serdes接口上检测同步码块AM的时间TSAM;
根据所述时间TSAM和所述距离SD_DIS得到在Serdes接口上的帧起始定界符SFD时间戳TSSFD;其中,TSSFD=TSAM+SD_DIS×UI,UI为serdes接口上每传输一个Serdes符号所需要的时间;
所述距离MII_DIS的测量在PCS层进行,包括传输方向上或接收方向上的测量;
在传输方向上,所述距离MII_DIS的测量包括:
在MII侧找到帧起始定界符SFD,进行SFD指示标识,并将SFD指示标识随着数据一起传向PCS层的AM insertion模块;
在AM insertion模块中插入同步码块AM,进行同步码AM指示标识;
测量AM指示标识和SFD指示标识相差的时钟周期;将所述相差的时钟周期转换为距离MII_DIS;
在接收方向上,所述距离MII_DIS的测量包括:
在PCS层的AM remove模块中找到同步码块AM,进行同步码AM指示标识;将AM指示标识随着数据传递给MII接口;
在MII接口上发现帧起始定界符SFD时,进行SFD指示标识;
测量SFD指示标识和AM指示标识在MII接口相差的时钟周期;将所述相差的时钟周期转换为距离MII_DIS。
2.根据权利要求1所述的以太网时间戳产生方法,其特征在于,
在25G~400G速率范围内以太网的MII接口上的传输方向上和接收方向上距离MII_DIS为:
25G:MII_DIS=(Nt–1)×64+MII_OFFSET×32–8;
40G/50G:MII_DIS=(Nt–1)×64+MII_OFFSET×64–8;
100G:MII_DIS=(Nt–1)×2×64+MII_OFFSET×64–8;
200G:MII_DIS=(Nt–1)×4×64+MII_OFFSET×64–8;
400G:MII_DIS=(Nt–1)×8×64+MII_OFFSET×64–8;
其中,Nt为在MII接口上AM指示标识和SFD指示标识相差时钟周期,MII_OFFSET为帧起始定界符SFD的起始bit在64-bit位宽的MII接口上的偏移量。
3.根据权利要求2所述的以太网时间戳产生方法,其特征在于,在包括RS-FEC的以太网中,将距离MII_DIS转换为距离SD_DIS的公式为:
SD_DIS=CW_DIS+LEFT_DIS;
其中,CW_DIS为距离转换过程中由FEC码字数量整位数引起的距离;LEFT_DIS为距离转换过程中不够一个完整的FEC码字的bit数引起的距离。
4.根据权利要求3所述的以太网时间戳产生方法,其特征在于,
只通过一条Serdes通道传输数据时,所以距离CW_DIS为:CW_DIS=CW_N×L;
其中,CW_N为所述FEC码字数量;CW_N=MII_DIS/m/n;L为FEC码字的bit数。
5.根据权利要求4所述的以太网时间戳产生方法,其特征在于,LEFT_DIS=LEFT_257B;获得LEFT_257B,包括:
同步码块AM的插入位置在FEC码字的头部,其中不够一个完整的FEC码字的bit数LEFT_64B为:LEFT_64B=MII_DIS–CW_N×m×n;
LEFT_64B中包含257-bit transcode数据块,每一个257-bit transcode数据块包含4×64-bit数据块,LEFT_64B中257-bit transcode的数据块数量TC_N=LEFT_64B/4/64,保留TC_N的整数位;
根据257-bit transcode数据块的数量计算距离LEFT_257B:LEFT_257B=TC_N×257+(LEFT_64B–4×64×TC_N)+(LEFT_64B%256==0?0:1);
(LEFT_64B%256==0?0:1)表示当LEFT_64B%256的余数为0时,取0,余数不为0时,取1。
6.根据权利要求3所述的以太网时间戳产生方法,其特征在于,通过多条Serdes通道传输数据时,
按照只有一条Serdes通道进行距离转换,计算出由FEC码字数量整位数CW_N引起的距离和不够一个完整的FEC码字的bit数引起的距离LEFT_257B;
根据Serdes通道数量和距离LEFT_257B来判断帧起始定界符SFD落在Serdes接口的某一条Serdes通道上;
在该条Serdes通道上,根据RS-FEC的编码格式,计算CW_DIS和LEFT_DIS;
CW_DIS=CW_N×L/R;
LEFT_DIS=(LEFT_257B/10/R)×10+LEFT_257B%10;
其中,L为FEC码字的bit数,R为Serdes通道数量。
7.根据权利要求2所述的以太网时间戳产生方法,其特征在于,
在不带RS-FEC的以太网的100G/40G AUI模式中,40G AUI模式物理层接口有4条PCS通道,100G AUI模式有20条PCS通道;
在进行距离转换时,数据块会分发到4条或者20条PCS通道上;根据下式确定SFD落在某一条PCS通道上;
40G:PCS_LANE=MII_DIS%64==0?(MII_DIS/64)%4:(MII_DIS/64+1)%4;
上式表示,当MII_DIS%64的余数为0时,PCS_LANE=(MII_DIS/64)%4,余数不为0时,PCS_LANE=(MII_DIS/64+1)%4;
100G:PCS_LANE=MII_DIS%64==0?(MII_DIS/64)%20:(MII_DIS/64+1)%20;
上式表示,当MII_DIS%64的余数为0时,PCS_LANE=(MII_DIS/64)%20,余数不为0时,PCS_LANE=(MII_DIS/64+1)%20;
在包含SFD的PCS通道上SFD与同步码块之间的距离SD_DIS为PCS_DIS:
40G:
PCS_DIS=MII_DIS/(64×4)×66+(MII_DIS%(64×4)==0?0:(MII_DIS%64?66:MII_DIS%64));
上式表示,当MII_DIS%(64×4)的余数为0时,PCS_DIS=MII_DIS/(64×4)×66,余数不为0时,PCS_DIS=MII_DIS/(64×4)×66+(MII_DIS%64?66:MII_DIS%64);式(MII_DIS%64?66:MII_DIS%64)表示当MII_DIS%64成立,即余数为0时,PCS_DIS=MII_DIS/(64×4)×66+66,当MII_DIS%64不成立,即余数不为0时,PCS_DIS=MII_DIS/(64×4)×66+MII_DIS%64;
100G:
PCS_DIS=MII_DIS/(64×20)×66+(MII_DIS%(64×20)==0?0:(MII_DIS%64?66:MII_DIS%64));
上式表示,当MII_DIS%(64×20)的余数为0时,
PCS_DIS=MII_DIS/(64×20)×66,余数不为0时,
PCS_DIS=MII_DIS/(64×20)×66+(MII_DIS%64?66:MII_DIS%64);
式(MII_DIS%64?66:MII_DIS%64)表示当MII_DIS%64成立,即余数为0时,PCS_DIS=MII_DIS/(64×20)×66+66,当MII_DIS%64不成立,即余数不为0时,PCS_DIS=MII_DIS/(64×20)×66+MII_DIS%64。
8.根据权利要求1所述的以太网时间戳产生方法,其特征在于,
在Serdes接口上检测同步码块AM的第一个pattern,当第一个pattern的最低位出现在serdes接口时,记录下当前同步码块AM的时间TSAM;当同步码块AM的pattern出现在Serdes接口上的位置SD_R×[k]位时;修正同步码块AM的时间为TSAM+k×UI。
9.一种根据权利要求1-8任一项所述的以太网时间戳产生方法的时间戳产生系统,其特征在于,包括:
距离测量模块,用于测量MII接口上PTP包头的帧起始定界符SFD到同步码块AM之间距离MII_DIS;
距离转换模块,用于将距离MII_DIS转换为Serdes接口上的帧起始定界符SFD到同步码块AM之间距离SD_DIS;
时间检测模块,用于在Serdes接口上检测同步码块AM的时间TSAM;
时间戳计算模块,用于根据时间TSAM和距离SD_DIS得到在Serdes接口上的帧起始定界符SFD时间戳TSSFD为:TSSFD=TSAM+SD_DIS×UI,式中UI为serdes接口上面每传输一个Serdes符号需要的时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011156504.4A CN112152748B (zh) | 2020-10-26 | 2020-10-26 | 一种以太网时间戳产生方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011156504.4A CN112152748B (zh) | 2020-10-26 | 2020-10-26 | 一种以太网时间戳产生方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112152748A CN112152748A (zh) | 2020-12-29 |
CN112152748B true CN112152748B (zh) | 2023-08-01 |
Family
ID=73954979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011156504.4A Active CN112152748B (zh) | 2020-10-26 | 2020-10-26 | 一种以太网时间戳产生方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112152748B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240007214A1 (en) * | 2022-06-29 | 2024-01-04 | Microchip Technology Incorporated | Timestamp at a parallel interface of a serdes coupling a phy with a physical transmission medium |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104052588A (zh) * | 2013-03-14 | 2014-09-17 | 阿尔特拉公司 | 用于为利用fec编码器的系统实现按ieee 1588的精确时间戳的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150055644A1 (en) * | 2013-08-22 | 2015-02-26 | Lsi Corporation | Precise timestamping of ethernet packets by compensating for start-of-frame delimiter detection delay and delay variations |
CN111193567B (zh) * | 2018-11-14 | 2023-09-26 | 深圳市中兴微电子技术有限公司 | 一种时间同步的方法、设备及存储介质 |
-
2020
- 2020-10-26 CN CN202011156504.4A patent/CN112152748B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104052588A (zh) * | 2013-03-14 | 2014-09-17 | 阿尔特拉公司 | 用于为利用fec编码器的系统实现按ieee 1588的精确时间戳的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112152748A (zh) | 2020-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112187394B (zh) | 一种基于以太网同步码产生sfd时间戳的方法及系统 | |
US5408473A (en) | Method and apparatus for transmission of communication signals over two parallel channels | |
EP1900166B1 (en) | Method and apparatus for synchronizing data channels using deskew channel | |
CN110224775B (zh) | 一种时间信息确定的方法、装置及设备 | |
CA2010144C (en) | Network clock synchronisation | |
WO2019055196A1 (en) | SYSTEM AND METHOD FOR CLASSIFYING AND HORODATING PACKETS | |
CN109699199B (zh) | 一种报文处理的方法和网络设备 | |
WO2016054245A1 (en) | Confirming data accuracy in a distributed control system | |
US20150055644A1 (en) | Precise timestamping of ethernet packets by compensating for start-of-frame delimiter detection delay and delay variations | |
JPH05235883A (ja) | 低帯域幅の通信チャネルを高帯域幅の通信チャネルに変換するための方法及び装置 | |
US7835401B2 (en) | System and method for inverse multiplexing using transcoding and frame alignment markers | |
US7065101B2 (en) | Modification of bus protocol packet for serial data synchronization | |
JP3246872B2 (ja) | バイト整列およびフレーム同期装置 | |
CN112152748B (zh) | 一种以太网时间戳产生方法及系统 | |
JP2008017111A (ja) | ビット速度判定装置 | |
JP2004032784A (ja) | アドホック・タイミング信号の分配および復元 | |
EP1142241B1 (en) | Communications system and associated deskewing methods | |
WO2001069835A2 (en) | System and method for communications link calibration using a training packet | |
US6782066B1 (en) | Method and system for detecting frame slips in a digital communications channel | |
CN111464252A (zh) | 通信方法和光模块 | |
US9143420B2 (en) | Data transport system, receiver and transmitter | |
US6198736B1 (en) | Telecommunications system | |
US6744788B2 (en) | Multiplexing digital signals | |
WO2009121421A1 (en) | Method and apparatus for transferring timing information between clock domains | |
US7928884B2 (en) | Analog-to-digital converter with a balanced output |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |