8B/10B 编码

8B/10B 编码

解决的问题

8B/10B 编码是 1983 年 IBM 公司提出的传输编码标准,通常用于高速收发器中,常见的 JESD204B、SATA 等接口协议,使用查表就可以实现编码和解码。

在这些高速收发器的接收端需要通过 CDR 技术去恢复时钟与数据的相位关系,在这个过程中需要不断的检测数据边沿和数据中心,从而调整时钟和数据的相位,因此需要保证接收的数据需要不断的变化,从而给CDR提供足够多的待检测数据边沿。

另外高速接口电路一般采用交流耦合方式进行连接,在交流耦合电路中的信号线会接电容(隔直通交),如果传输的数据在一段时间内全是 1 或全是 0,那么这段时间传输的信号可以等效成直流信号,会产生直流偏移,在通过电容时,有可能解码错误。

因此通过 8B/10B 编码,保证编码后的数据在一定时间内 0 的个数与 1 的个数保持相等。

编码规则

在这里插入图片描述

8B/10B 编码把 8 位数据分为高3位和低5位,分别进行 3B/4B、5B/6B 编码,结果为10位数据。

通常把编码前的低 5 位数据 EDCBA 的十进制数值记为 x,把编码前的高 3 位数据 HGF 的十进制数值记为 y,原始 8 位数据可以表示为 D.x.y 或 K.x.y。

极性偏差(running disparity,RD)用来记录上一次编码结果中 0 和 1 个数的多少。RD = -1 表示编码结果 1 多于 0,RD = 1 表示编码结果 0 多于 1。

如果编码结果的 1 和 0 个数相等,称为平衡编码,此时 RD 的数值保持不变。如果编码结果 1 和 0 个数不等,称为非平衡编码,此时 RD 的数值翻转,下次编码采用 RD 对应数值的编码作为编码结果。

将上次 8B/10B 编码结果的RD数值用作本次 5B/6B 编码的起始 RD,而 3B/4B 编码的起始 RD 等于 5B/6B 编码结果的 RD,3B/4B 编码结果的 RD 作为本次 8B/10B 编码的 RD,对应的编码状态跳转如下图所示。

在这里插入图片描述

在这里插入图片描述

注:D.x.7 有两套编码,分别是 D.x.P7 (主要,Primary)和 D.x.A7(备用,Alternate),这是为了避免与前面的 5B/6B 代码组合时出现 5 个连续的 0 或 1

  • 当 RD = -1,5B/6B编码 x = 17,18或20时,如果选择 D.x.P7 则会出现 5 个连续的 1,所以需要选择备用编码D.x.A7
  • 当 RD = -1,5B/6B编码 x = 11,13或24时,如果选择 D.x.P7 则会出现 5 个连续的 0,使用需要选择备用编码D.x.A7

编码表

D.x.y

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

K.x.y

在这里插入图片描述

相关推荐

  1. FPGA 8b10b编码

    2024-07-11 23:36:05       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 23:36:05       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 23:36:05       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 23:36:05       57 阅读
  4. Python语言-面向对象

    2024-07-11 23:36:05       68 阅读

热门阅读

  1. 在Linux中使用Typora将Markdown文档导出为docx格式

    2024-07-11 23:36:05       19 阅读
  2. 编程语言与数据结构的关系:深度解析与探索

    2024-07-11 23:36:05       21 阅读
  3. 华为OD机考题(HJ108 求最小公倍数)

    2024-07-11 23:36:05       18 阅读
  4. 探究kubernetes 探针参数periodSeconds和timeoutSeconds

    2024-07-11 23:36:05       24 阅读
  5. 《大语言模型》赵鑫

    2024-07-11 23:36:05       20 阅读
  6. C++ 例外处理 try throw catch

    2024-07-11 23:36:05       24 阅读
  7. ts和js的关系

    2024-07-11 23:36:05       25 阅读
  8. 单商户和多商户的区别

    2024-07-11 23:36:05       22 阅读
  9. 对比多种方法执行命令行命令

    2024-07-11 23:36:05       21 阅读
  10. 白骑士的C++教学基础篇 1.5 数据结构

    2024-07-11 23:36:05       21 阅读
  11. 百日筑基第十七天-消息队列入门

    2024-07-11 23:36:05       22 阅读
  12. Mojo 编程语言:AI开发者的新宠儿

    2024-07-11 23:36:05       23 阅读
  13. C#如何从中级进阶到高级开发

    2024-07-11 23:36:05       26 阅读