首页 > 技术知识 > 正文

8B/10B编码方案确保“0”码元与“1”码元个数一致,称为直流均衡;确保字节同步易于实现(在一个比特流中找到字节的起始位);对误码率有足够的容忍能力和降低设计复杂度。8B/10B编码方案是把8bit数据分成2个子分组: 3个最高有效位(y)和5个最低有效位(x)。从最高有效位到最低有效位分别记为H、G、F和E、D、C、B、A。3bit的子分组编码成4bit,记为j、h、g、f;5bit的子分组编码成6bit,记为i、e、d、c、b、a;其映射关系如下图所示,4bit和6bit的子分组再组合成10bit的编码值。

8B/10B、64B/66B编解码(一)-8b0016

编码时,低5bit原数据 EDCBA经过5B/6B编码成为6bit码abcdei,高3bit原数据HGF经3B/4B成为4bit码fghj,最后再将两部分组合起来形成一个10bit码abcdeifghj。10B码在发送时,按照先发送低位、再发送高位的顺序发送。

5B/6B编码和3B/4B编码的映射有标准化的表格,可以通过基于查找表的方式实现。使用“不一致性(Disparity)”来描述编码中”1″的位数和”0″的位数的差值,它仅允许有”+2″(  “0”比”1″多两个)、”0″(”0″与”1″个数相等)以及”-2″(”1″比”0″多两个)这三种状况。由于数据流不停地从发送端向接收端传输,前面所有已发送数据的不一致性累积产生的状态被称为“运行不一致性(Runing Disparity,RD)”。RD仅会出现+1与-1两种状态,分别代表位”1″比位”0″多或位”0″比位”1″多,其初始值是-1。Next RD值依赖于Current RD以及当前6B码或者4B码的Disparity。根据Current RD的值,决定5B/4B和 3B/4B编码映射方式。

8B/10B、64B/66B编解码(一)-8b00161

8B/10B、64B/66B编解码(一)-8b00162

8B/10B编码中将K28.1、K28.5和K28.7作为K码的控制字符,称为“comma”。在任意数据组合中,comma只作为控制字符出现,而在数据负荷部分不会出现,因此可以用comma字符指示帧的开始和结束标志,或始终修正和数据流对齐的控制字符。

8B/10B、64B/66B编解码(一)-8b00163

经过8B/10B编码以后,连续的“1”和“0”基本上不会超过5bit,只有在使用comma时,才会出现连续的5个0或1。接收端的数据解码过程如下图所示:

8B/10B、64B/66B编解码(一)-8b00164

下一篇接着介绍64B/66B编解码,请关注公众号:全栈芯片工程师

转载:全栈芯片工程师

猜你喜欢