USB3.0中的8/10b编码技术详细解释

USB3.0在Physical layer中定义了超速USB的信号传输技术,在其中最关键的就是引入了8/10b编码技术,如下图中的红色部分。

8/10b编码和解码的的流程如下图所示,在编码时将ABCDE映射为adcdei,FGH映射为fghj,关于8/10B编解码的传输的详细定义可以在ANSIX3.230-1994获得。

      

       8b/10b编码技术优点

        8/10b编码将8位数据编码成10位数据再进行传输,这种做法是为了避免在传输高速数据的时候,还要再单独传输一路高频率的时钟信号,这很容易就会产生EMI(电磁干扰)问题。8/10b技术同时将时钟信号也编码了进去,从而避免了这个问题。

     8b/10b编码的另外一个特性是保证DC 平衡,采用8b/10b编码方式,可使得发送的“0”、“1”数量保持基本一致,连续的“1”或“0”不超过5位,即每5个连续的“1”或“0”后必须插入一位“0”或“1”,从而保证信号DC平衡,它就是说,在链路超时时不致发生DC失调。通过8b/10b编码,可以保证传输的数据串在接收端能够被正确复原,除此之外,利用一些特殊的代码( 在PCI-Express总线中为K码) ,可以帮助接收端进行还原的工作,并且可以在早期发现数据位的传输错误,抑制错误继续发生。

       8b/10b编码技术详解

        8b/10b编码是将一组连续的8位数据分解成两组数据,一组3位,一组5位,经过编码后分别成为一组4位的代码和一组6位的代码,从而组成一组10位的数据发送出去。相反,解码是将1组10位的输入数据经过变换得到8位数据位。数据值可以统一的表示为DX.Y或KX.Y,其中D表示为数据代码,K表示为特殊的命令代码,X表示输入的原始数据的低5位EDCBA,Y 表示输入的原始数据的高3位HGF,“D.a.b”是资料码(D即是Data),“K.a.b”指控制码(K即是Key),。

        8b/10b编码将原8位(一个字节) 数据编码成为10位字符,增加了数据中的高低电平变换(即“1”/“0”变换) ,有利于实现转换前后的时钟同步,此外还能帮助实现直流平衡,以使接收器的输入没有直流(DC)漂移。由于采用了这种编码,链路可以是交流(AC)耦合的,这样就给任一端的设备厂商提供了更大的灵活性。而且这种编码有利于检测出传输过程中单个和多个的比特误码,同时编码设计中的一些特殊码组还有助于比特流的码组定位和信息识别。 

         例如一组8位元的资料是 10110101:

         首先,分成两组 101 与 10101

         a=10101(21) b=101(5),符号为 D21.5,a(EDCBA)经过5B/6B编码为abcdei,b(HGF)经过3B/4B编码为fghj。

    8b/10b编码输出位元数目总共是10个位元,但只有“+2”“+0”“-2”三种组合。其中“+2”是指4个位元0,与6个位元1;“+0”是指5个位元“0”,与5个位元“1”;“-2”是指6个位元“0”,与4个位元“1”,利用这种“不均等性— Disparity”的特性而具有强大的直流平衡(DC Balance)功能,可使得发送的“0”、“1”数量保持一致,连续的“1”或“0”基本上不超过5位。

 8/10b编码技术在高速率总线上很常见,如:SATA和PCI Express。USB 3.0在设计上和PCI Express有很多相似的地方,如相同的8/10b编码技术、界面速率/数据速率、相同的双向差分传输等。

在USB3.0的physical layer中8/10b编码中同时提供了特殊符号来描述不用的传输状态,如下图,可以看出均为“K.a.b”即控制码(K即是Key),

简而言之,在USB3.0中引入8/10虽然会降低一部分的数据传输率(此时的数据传输率5Gbps/10=500Mb/s),但是通过这部分的牺牲保证了数据传输时候的DC(直流)平衡,并且避免在传输高速数据的时候,还要再单独传输一路高频率的时钟信号,从而使得传输速率能够比2.0提高,并很好的避免了电磁干扰(EMI)问题。

你可能感兴趣的:(USB3.0中的8/10b编码技术详细解释)