5G 技术的到来,似乎整个世界都在以一个非常大的加速度在快速的奔跑,通信技术领域的影响和发展最为关键。
光在快速发展,铜缆也毫无逊色。其中 USB 技术也随着手机等终端设备的升级也在不断的更新。在上一文章《USB3.0 的 5Gbit/s 为何不能等同于 625MB/s?》中提到,USB 3.X 标准中引入两个新的传输模式:
(1)USB 3.0 引入了 SuperSpeed(超高速)传输模式;
(2)USB 3.1 引入了 SuperSpeed+(超高速)传输模式;USB 3.2 保留了 SuperSpeed 和 SuperSpeed+两种传输模式;
文章中还说到 USB 3.0、USB 3.1 和 USB 3.2 引用了与 USB 1.X 和 USB 2.0 不一样的传输技术,第三代 USB 技术的数据传输是基于一种线路代码,即编码方案。其中 USB 3.0 使用的是 8b/10b 编码方案,USB 3.1 和 USB 3.2 使用的是 128/132(64b/66b)编码方案。

8b/10b 编码方案
8b/10b 编码是什么
8b/10b 编码是 1983 年由 IBM 的 Al Widmer 与 Peter Franaszek 所提出,应用于 ESCON,后来申请成专利。目前广受串列总线所采用。例如:IEEE 1394b、SATA、PCI Express、Infini-band、Fiber Channel、RapidIO 等总线,都是采用 8b/10b 编码。2008 年推出的 USB 3.0 规格书亦明言采用了 8b/10b 编码。
8b/10b 编码的工作原理
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 位。
编码表
8b/10b 编码将一组 8 位资料分成两组,一组 3 比特,一组 5 比特,经过编码后形成一组 4 位和一组 6 比特,故送发时是一组 10 比特的资料,解码时再将 10 比特的资料变换得到 8 位资料。编码过程中低位 5 比特的资料会进行 5B/6B 编码,高位 3 比特的资料则进行 3B/4B 编码。
例如一组 8 位的资料是 10110101:
首先,分成两组 101 与 10101
a=10101(21)b=101(5)
二进制的计算过程:


符号为 D21.5,在下表中的位序为 HGFEDCBA,a(EDCBA)经过 5b/6b 编码为 abcdei,b(HGF)经过 3b/4b 编码为 fghj。编码表是实现这种变换的规则,在这里就不一一展示,有兴趣的读者可联系后台进行咨询。
8b/10b 编码是 IBM(国际商业机器公司)的专利,截至目前位置,此专利已失效,此方案已成为大众化技术了。
64b/66b 编码
64b/66b 编码是什么
在数据联网和传输中,64b / 66b 是一种线路代码,可将 64 位数据转换为 66 位线路代码,以提供足够的状态更改,以允许合理的时钟恢复和接收器上数据流的对齐。IEEE 802.3 工作组将其定义为 IEEE 802.3ae-2002 修订版的一部分,该修订版引入了 10 Gbit / s 以太网。在部署 64b / 66b 时,它允许使用 SONET OC-192 所使用的相同激光器传输 10 Gb 以太网,而无需使用预计几年后无法使用的 12.5 Gbit / s 激光器。
编码方案的协议开销是原始有效负载比特数与原始有效负载比特数之比加上相加的编码比特数之比。64b / 66b 编码的开销是每 64 个有效载荷位 2 个编码位或 3.125%。这是对先前使用的 8b / 10b 编码方案的 25%开销的重大改进,该方案将每 8 个有效载荷位增加 2 个编码位。
64b/66b 编码的功能
正如其方案名称所暗示的那样,将 64 个有效载荷位编码为 66 位实体。通过将两个可能的 2 位前同步码之一加到 64 个有效载荷位来构成 66 位实体。
如果前同步码是 012,则 64 个有效载荷位是数据。
如果前同步码是 102,则 64 个有效载荷位保存 8 位类型字段和 56 位控制信息或数据。
前导码 002 和 112 未使用,如果看到,则指示错误。
使用 012 和 102 前同步码可确保每 66 位进行一次位转换,这意味着连续的 0 或 1s 流不是有效数据。由于每 66 位必须看到一次转换,因此还可以简化时钟/定时器的同步。
然后使用自同步加扰器功能对 64 位有效载荷进行加扰。加扰不是要加密数据,而是要确保在传输的数据中找到相对均匀的 1 和 0 分布。加扰器不能保证输出数据永远不会具有 0 或全 1 的长游程长度,或通信中的其他不良特性,但可以对此类事件的概率设置严格的统计界限。实际的设计将选择系统参数,以消除由于长游程引起的误码的可能性。此方法不同于基于代码本的 8b / 10b 编码方法。
编码和加扰通常完全在硬件中实现,加扰器使用线性反馈移位寄存器。软件堆栈的上层不必知道链接层正在使用这些方法。

属性和应用
64b / 66b 的设计目标是时钟恢复,流对齐,DC 平衡,过渡密度和行程长度。8b / 10b 编码保证了 DC 平衡,过渡密度和行程长度的严格界限,而 64b / 66b 提供了这些属性的统计界限。
USB 3.1 使用 128b / 132b 编码,该编码与 64b / 66b 相同,但是复制了每个前同步码位,以减少在那里未检测到错误的风险。64b / 66b 编码是 8b / 10b 编码的一种开销较低的替代方案,每 64 位具有 2 位开销(而不是 8 位)编码数据,所以 64b/66b 在每个标准的较早版本中替换了 8b / 10b 编码。
参考文献:
- Kees Schouhamer Immink(1997 年 3 月)。“无直流多模式代码的性能评估”。IEEE 通信事务。45(3):293–299。doi:10.1109 / 26.558690。
在直流平衡或无直流码,因为它们通常被称为,有着悠久的历史和他们的应用肯定是不局限于记录的做法。
- 美国专利 4,456,905,用于编码二进制数据的方法和设备,1984 年 10 月。
- 1986 年 6 月,美国专利 4,620,311 传输信息的方法,该方法中使用的编码设备和该方法中使用的解码设备。
- Al X.Widmer,Peter A.Franaszek(1983)。“一个 DC 平衡分区块 8B / 10B 传输代码”。IBM 研究与发展杂志。27(5):440–451。doi:10.1147 / rd.275.0440。
- 美国专利 4,486,739 面向字节的 DC 平衡(0,4)8B / 10B 分区块传输代码,1984 年 12 月。