8B_10B - Charles-Charmless/Charles-Charmless.github.io GitHub Wiki

8B_10B

8B/10B: 将8bit数据转换成10bit数据,目的是为了DC balance, 目标:20个bit中,1和0的个数差距不超过2个,并且没有连续5个1/0

"D.a.b"是资料码(DATA),"K.a.b"是控制码(KEY)
a,b表示输入的原始数据

组合

只有如下3种组合: "+2": 4 bit 0, 6 bit 1
"+0": 5 bit 0, 5 bit 1
"-2": 6 bit 0, 4 bit 1

编码

高 3 bits 用 3B/4B编码,低 5 bits 使用 5B/6B 编码
例如一组8位的资料是 10110101:首先,分成两组 101 与 10101,a=10101(21) b=101(5),符号为 D21.5

4bits 和6bits的parity只能是0,+2,-2 RD Running Disparity,不表示任何东西, 只是一个算法 对于RD=-1, 5b/6b的编码,parity 为0/+2 Disparity = number of "1" - number of "0
RD的初始值是-1

8B/10B disparity

通过判断上一个6B/4B的RD来决定下一个4B/6B的RD值,从而决定encoding的数值而不是以8b/10b来做判断.

5B/6B

5B/6B

3B/4B

3B/4B

Control

通常用于指示帧开始、帧结束、链路空闲、跳过和类似的链路级条件 Control code

Reference

  1. Byte oriented DC balanced (0,4) 8B/10B partitioned block transmission code