8b/10b 编码的目的是什么?

电器工程 串行 编码器
2022-01-21 07:43:21

在 USB 3.0 的物理层中有一个8b/10b 编码器

维基百科说这消除了直流偏移,而我正在阅读的教程说

它是高速串行设计中常见的编码方案

在 USB 环境中这种编码的目的是什么?此外,这种编码在其他类型的设备中提供了哪些其他应用和好处?

3个回答

对于像 8b/10b 这样的编码,简单的答案是它确保编码的数据流至少有一定数量的数据转换。如果没有这样的编码,一长串 0 或 1 会倾向于看起来像是试图通过通道发送 DC。

同样的原理适用于曼彻斯特编码,其中通过通道传输的净带宽是实际数据带宽的两倍。8b/10b 被吹捧的优势是所使用的传输带宽远低于曼彻斯特强加的 2X。

出于多种原因,人们希望通过渠道避免 DC。虽然每个传输通道都有不同类型的要求,但主要考虑的是直流不能很好地通过电容器或变压器耦合电路。另一个重要的考虑因素,即使对于直接耦合电路,也需要转换才能同步接收器端的 PLL 电路,以便可以恢复时钟以允许在正确的时间选通数据位。

除了其他人提到的好特性之外,8b10b 为您提供的其他好处包括: 1. 接收器轻松区分链路控制和数据符号 2. 轻松检测约 75% 的错误。

在可编程逻辑中构建 8b10b 发送器和接收器也非常容易;最初的 IBM 专利指定了所需的所有逻辑操作(如果您懒得这样做,Chuck Benz已经在 Verilog 中为您完成了)。

维基百科在 8b10b 上也有一个非常有用的页面。

稍后将在第 15 页的链接教程中进行解释。

将此编码应用于 USB 3.0 的列出的原因是:

  • 时钟恢复 - 没有编码,1 或 0 的长流看起来像 DC
  • 错误检测——接收端解码10位符号时,有很多不可能的符号;接收其中一个表示错误。

一位同事有另一个假设。释义:

电缆有电感和电容。这平滑了脉冲的攻击前沿。因此,发送单个 1 会使总线处于某种电​​气状态,而发送几个 1 会使总线处于不同的电气状态(更接近于稳态)。因此,在这两种情况下,发送 0 后缀将处于不同的潜力。


第三,这是标准的引用,第 3.2.1 节

接收器需要足够的转换才能从比特流中可靠地恢复时钟和数据。为了确保在比特流中发生与正在传输的数据内容无关的充分转换,发送器使用 8b/10b 代码将数据和控制字符编码为符号。