4 8b/10b编/解码设计
8b/10b编码的原理是将一组连续的8位数据分解成两组数据,一组3位,一组5位,经过编码后分别成为一组4位的代码和一组6位的代码,从而组成一组10位的数据发送出去。相反,解码是将一组10位的输入数据经过变换得到8位数据位。数据值可以统一的表示为DX.Y或KX.Y,其中D表示为数据代码,K表示为特殊的命令代码。X表示输入的原始数据的低5位EDCBA,Y表示输入的原始数据的高3位HGF。因此8b/10b编码逻辑可分解为两个子逻辑块,一个5b/6b编码器(EDCBA<—>iedcba)和一个3b/4b编码器(HGF<—>jhgf)。编码原理图如下图所示。
在8b/10b编码过程中,会出现字符不一致的情况,即一组字符中“1”和“0”的个数不一致的情况,这种情况称作差异度。当字符中的“0”比“1”多时,称作负极性;“1”比“0”多时,称作正极性;“0”和“1”相等时,为零极性。编码规则规定,非零极性的编码结果(包括4位结果,6位结果和组合的10位结果)的极性必须依次翻转[1]。比如,如果6位编码结果具有正的极性,则接下来的4位结果应该具有负的极性,如果接下来的4位结果具有零极性,则继续要求