8b_10b编码

介绍

在高速串行通信中,常用到8b/10b编码。主要为了在数据中提供足够的跳变以恢复时钟,并达到直流平衡。此时物理总线的速率是有效数据速率的1.26倍。

目前使用8b/10b编码的接口有:

工作原理

目标:编码后10bit中'0'和‘1’的个数基本保持一致。

编码方式:将原8bit数据从高位MSB到低位LSB分别记为 H、G、F、E、D、C、B、A,高三位称为y组(0~7),低5位称为x组(0~31)。因此原始数据可以表示为Dx.y。

MSB LSB
bit 7 6 5 4 3 2 1 0
标记 H G F E D C B A
分组 y y y x x x x x

分别对x、y进行编码,EDCBA经过5b/6b编码后为abcdei,HGF经过3b/4b编码后为fghj。

数据极性

完美的情况是编码后的10bit数据中0的个数等于1的个数。但是这种情况可用编码不够,因此退一步使得个数相差最小。

由于3b/4b或5b/6b编码后位数是偶数,因此0和1的个数最少相差2。

定义:

数据极性:Disparity 不均等性,不一致性

运行不一致性

运行不一致:RD(Running Disparity),表示发送多个数据时积累的不一致性。

此处RD=+1不表示1比0多1个,只要多就是+1,没有其他值。

不一致性执行规则

上次RD 数据极性 选用的数据极性 本次RD
-1 0 0 -1
-1 ±2 +2 +1
+1 0 0 +1
+1 ±2 -2 -1

编码表

控制符号

对于多余的编码组合,可以组成多个控制符号,可以使用这些控制符号进行同步、定界等操作。