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
通过判断上一个6B/4B的RD来决定下一个4B/6B的RD值,从而决定encoding的数值而不是以8b/10b来做判断.
5B/6B
3B/4B
Control
通常用于指示帧开始、帧结束、链路空闲、跳过和类似的链路级条件