Felix

技术源于积累,成功始于执着! 个人邮箱:justlxy@mail.dhu.edu.cn QQ:1576109464

以太网扫盲——64b/66b编码

2
阅读(13019)

64b/66b编码技术是IEEE 802.3工作组为10G以太网提出的,目的是减少编码开销,降低硬件的复杂性,并作为8b/10b编码的另一种选择,以支持新的程序和数据。当前,64b/66b编码主要应用于Fiber Channel 10GFC和16GFC、10G以太网、100G以太网、10G EPON、InfiniBand、Thunderbolt和Xilinx的Aurora协议。

64b/66b编码将64bit数据或控制信息编码成66bit块传输,66bit块的前两位表示同步头,主要由于接收端的数据对齐和接收数据位流的同步。同步头有“01”和“10”两种,“01“表示后面的64bit都是数据,“10”表示后面的64bit是数据和控制信息的混合,其中紧挨着同步头的8b是类型域,后面的56bit是控制信息或者数据或者两者的混合。64b/66b编码格式图如下图所示,其中D表示数据编码,每个数据码8bit;Z表示控制码,每个控制码7bit;S表示包的开始,T表示包的结束。S只会出现在8字节中的第0和第4字节,T能够出现在任意的字节。除同步码外,64bit的数据必须经过扰码以后才能进行传输。10G以太网的64b/66b编码所使用的扰码器为X58+X39+1.

注: 此外还有Block Type为0x2d,0x66,0x55,0x4b等情况没有列出。不同的协议的格式可能不尽相同,具体应以协议的Spec为准。

一个18 bytes的数据块的传输过程的例子,如下图所示:

与前几代串行通信系统中常用的8b/10b编码相比,64b/66b严格意义上并不能算作编码,其只是2bit的同步头与扰码后的64bits数据的组合。扰码是一种将数据重新排列或者进行编码以使其岁佳话的发布方法,主要作用是将数字通信中的"0"和"1"分布随机化,从而使比特信息模式被随机化,进一度减轻了抖动个码间串扰,提高了通信的可靠性。从本质上讲,扰码正式为了达到上述目的而在待传输数据进入信道传输之前,对其进行的比特层的随机化处理过程,与扰码过程相对应的解随机化过程称之为解扰。扰码的数学原理使用了多项式,多项式的选择通常是基于扰码的特性,包括生成数据的随机度,以及打乱连0和连1的能力。一个简单的扰码器包含一组排列好的触发器,用于移位数据流。大部分的触发器只需要简单地输出下一个比特流即可,但是在缪谢复杂的扰码电路中,触发器需要与数据流中的历史比特进行逻辑运算(与和或运算)。基本的扰码电路如下所示:

64b/66b编码过程如下图所示:

64b/66b与8b/10b的简单比较如下图所示:

blob.png

需要注意的是,64b/66b编码没有办法限制Run Length(即数据流中的连续的0或者连续的1长度)到一个比较小的值,只能通过选择合适的多项式来取得相对最优的DC Balance和相对较低的较大值得Run Length的概率。显然,采用64b/66b编码,对串行收发器的CDR提出了非常高的要求。

  • 注:实际上,各种协议所采用的扰码多项式并非完全相同。从理论上来讲,任何一种扰码多项式都存在与之对应的Critical Data Pattern,会导致很长的Run Length出现。考虑到采用64b/66b编码的串行协议几乎都是基于数据包(Packet)传输的,而数据包往往存在包头包尾等具备明确特征的信息。因此,可以基于该协议数据包的特征找到最适合该协议的扰码多项式,可以将最大Run Length限制在一定的范围之内,或者将出现较大Run Length的概率降低。除此之外,扰码器的种子(随机数种子)和周期(或者不定期)的复位扰码器等都是控制Run Length和DC Balance的手段。

随着高速串行通信技术的发展,越来越多的标准(协议)开始采用64b/66b编码(以及其演进的编码技术,如128b/130b)。整理如下:

采用64b/66b编码的有:10/40/100G Ethernet、Xilinx Aurora、Camera Link HS、CPRI、Fibre Channel 10GFC、InfiniBand和Thunderbolt等;

采用128b/130b(或者128b/132b等)编码的协议有:NV-Link、PCIe Gen3/4/5、SATA 3.2、SAS4、USB3.1和DisplayPort2.0等;

采用256b/257b编码的有:Fibre Channel Gen6/7/8。


主要参考文献:

1、https://fmad.io/blog-10g-ethernet-layer1-64b-66b.html

2、https://howlingpixel.com/i-en/64b/66b_encoding

3、https://blog.csdn.net/qq_36134761/article/details/80385755

4、https://blog.csdn.net/hit_wzj/article/details/50405060

5、http://www.edadoc.com/cn/TechnicalArticle/Show.aspx?id=1158

6、IEEE 802.3-2018 Section 6, Ch82

7、PCIe Spec V3.0