编码
8b/10b编码将串行的数据以8bit为一个单位进行编码处理得到一个10bit的数据,具体怎么操作呢,假设原始8位数据从高到低用HGFEDCBA表示,将8位数据分成高3位HGF和低5位EDCBA两个子组。经过5B/6B编码,将低5位EDCBA映射成abcdei;高3位经过3B/4B编码,映射成fghj,最后合成abcdeifghj发送。
查表算法
D.x.A7用在:
x=17 x=18 x=20当RD=-1时;
x=11 x=13 x=14 当RD=+1时。
其他情况下x.A7码不能被使用,只能使用P7码
K.28组成了一部分K码,包括了K.28.0至K.28.7
K.23.7、K.27.7、K.29.7、K.30.7编码由D.23、D.27、D.29、D.30和K.x.7编码组成
解码
解码是编码的逆向,首先通过6b查找解析出5bit和k.28代表的K码
然后由K.x.7编码解析出由D.23、D.27、D.29、D.30组成的K.23.7、K.27.7、K.29.7、K.30.7
代码解析
k28代表K.28.X的K 码,1有效
在4位解析中,根据k28标识解析出K和D码
is_k是输出K码标识
k28表达式中,个人理解可以将d10[8]、d10[9]去掉
极性
+/-RD代表着同一个码型的两种编码方式。再举个例子比如:在表1中,对于D.x.4(100),其对应的4B码字有两种:1101和0010,若此时RD为负,则取1101作为其对应的4B码字作为输出,同时检验此时的编码是否为完美编码,如果是完美编码,则保持RD的极性不变;否则改变RD的极性。通过控制RD的极性,同时在编码时根据RD的极性选择相对应的编码值,使得编码后的数据流有更好的直流平衡特性,达到我们的缓解长“0”或长“1”的目的。