8b10b编码的原理-FPGA常见问题论坛-FPGA CPLD-ChipDebug

8b10b编码的原理

 

 

8B/10B编码

8B/10B是由一个3B/4B编码和一个5B/6B编码组成。高3位是3B/4B编码,低5位是5B/6B编码组成,共组成了 2 32 = 256 2^{32} = 256 232=256种数据编码形式,为了更好的传送同步、起始等标志以及控制信息,增加了12种控制字编码。
为了更好的满足数据流的直流平衡特性(整个数据流不能连续出现5个0或者5个1,尽量满足整个数据流的0和1趋于相等),所以设计了两套编码方式RD+和RD-。我们在传输下一个8B/10B的字节时,会对前面数据流中的0和1的个数进行判断,当1的个数大于0的个数时,RD为正,下一个字节需要传输RD+的编码方式,来使整个编码的结果具有很好的直流平衡性。
RD的状态转移图

5B/6B编码规则

5B/6B码有6种不同的映射规则,得根据设计的需求去选择对应的变换规则。
WDS(码字数字和)=0,表示 6B 码字中含有 3 个“0”和 3 个“1”,其码字数为 C 6 3 = 6 ∗ 5 ∗ 4 3 ∗ 2 ∗ 1 = 20 C^3_6 = frac{6*5*4} {3*2*1} = 20 C63=321654=20
同理,WDS=+2 的码 字 数 为 15 个,WDS=-2 的 码字数也 为 15 个,因此 可 供 选 择 的 具 有 较 小WDS的码字一共有 50 个。 然而 5B 码仅有 32 个码字,那么只需要从中选择 32 个 6B 码码字。为了减少码字中连 “1” 和连 “0” 的数目,删除:000011、110000、001111 和 111100 4 个码字,当然也禁止使用 WDS=±4和WDS=±6 的码字。[1]

[1]:袁玉英,张连俊,袁慧祥,李鑫磊,罗永刚.基于FPGA的5B6B编译码器的设计与测试[J].中国测试,2015,41(10):76-80.
[2]:8B10B数值查找表
/agx/agx_52004.pdf)
[3]:靳鹏.基于FPGA的8B/10B编码器的设计与实现[J].电子世界,2018(08).

 

请登录后发表评论

    没有回复内容