本发明涉及计算机通信系统,特别是一种新的8b/10b编码实现方法。
背景技术:
在当今的通信行业,芯片、系统间的数据传输都在由传统的并行低速传输向高速串行传输转变。在大多数高速串行传输技术中,发送通道将高速时钟信息隐藏在用户数据中,即不单独发送专门的高速时钟同步信号;接收通道接收衰减的高速串行输入数据,根据其跳变沿信息提取出高速时钟信息,并对本地采样时钟相位进行调整,以保证采样时钟的相位能够准确定位输入数据码元的中间位置。
但是,如果传输的高速串行数据中连续的“0”或者“1”过多,一方面会导致数据跳变沿的数目太少而影响相位判断结果,另一方面也会导致数据的直流电平过低(连续“0”过多)或者过高(连续“1”过多)。因此,必须对传输前的数据进行处理以增加高速串行数据的跳变沿密度,同时也保证“0”和“1”的数目大致相等以稳定信号直流电平。
8b/10b编码方式最初由IBM公司的Al Widmer和Peter Franaszek在IBM的刊物“研究与开发”上描述,并应用于ESCON(200M互联系统)。该编码的基本思想是将8bit的码字通过映射机制转化为10bit码字,它的特征之一是保证了直流平衡,可以使发送的“0”或者“1”的数目保持一致,同时连续的“0”或者“1”的数目不超过5位。通过8b/10b编码,大大减小了接收端从高速串行数据中恢复出时钟和数据的难度;同时,它也利用一些特殊的编码帮助接收端进行数据的还原,这样可以在早期就发现数据位的传输错误,防止错误的数据继续向上层传输。
具体来说,8b/10b编码可以对256(28)种数据(一般称作D码)和12个特殊字符(一般称作K码)进行编码,至于对8bit输入码字进行D码还是K码编码由一位额外的K码指示信号来表示。为了保证之前所有编码后的数据中“0”和“1”的数目保持一致,在8b/10b编码过程中,需要一位极性指示输入来指导编码过程中选择“0”比“1”多或者“1”比“0”多的编码结果。同时输出一位极性指示为下一个8b/10b编码提供极性指示输入。
8b/10b编码方式广泛应用于许多高速串行总线,如PCI Express、Fiber Channel、USB3.0、Infini-band、RapidIO等总线或者接口技术都采用了8b/10b编码机制。
现行的8b/10b编码实现主要有两种:第一种是存储查表实现,将10bit编码结果和1bit极性指示作为数据存储到存储器件中,把8bit输入码字以及2bit编码指示信号作为存储地址;第二种是组合逻辑实现,利用8b/10b编码协议的特点,首先将8bit输入码字拆分为5bit和3bit分别进行5b/6b和3b/4b编码,然后再根据极性指示信号对6bit和4bit编码结果进行处理,最后再将两部分结果组合起来作为10bit编码结果。
上述的第一种方法实现起来简单直接,但由于对每一种编码结果都进行存储,增加了电路的面积,而且电路也受到了存储器读取时间的制约。相比之下,第二种方法中的逻辑实现灵活性比较强,可以根据总体电路的设计指标,在速度和面积之间进行折中实现。
基于上述第二种方法的8b/10b编码过程中,首先将8bit输入字码由高到低标记为HGFEDCBA八位二进制数,对低五位EDCBA进行5b/6b编码得到6bit编码结果,对高三位HGF进行3b/4b编码得到4bit编码结果,然后根据编码指示输入对相应结果进行处理,最后组合为10bit编码结果abcdeifghj与极性指示一起输出。
技术实现要素:
本发明基于上述的第二种方法,利用8b/10b编码表的一些内在规律对8b/10b编码表进行了简化,进而提出一种改进的8b/10b编码实现方法。该改进方法根据简化后的8b/10b编码表将整个8b/10b编码电路分为4b/6b编码和3b/4b编码实现,根据数据码(D码)和非数据码(K码)的编码规律将两种编码一体化实现,在明显减小电路实现规模的同时也减小了输入到输出的延时。
如图3、图4所示,为8bit输入字码分组后的3b/4b和5b/6b简化编码表。可以看到,对于每一种输入,有不少于一种编码结果,因此这里存在一个如何选择编码结果的问题。本发明的新颖之处,就是对“如何选择合适的编码结果”这一问题进行了合理简化。
图3中,对各种组合输入的3b/4b的两种编码结果进行了X和X`标记,这里的X和X`不是简单的取反关系,而是为了方便图1中对3b/4b编码结果进行选择。
重点观察图1,本简化表利用传统的5b/6b编码表的对称规律将码字中EDCBA互相取反的两个码字放到一起,如、00101(5.x)和11010(26.x)、00000(0.x)和11111(31.x)、00001(1.x)和11110(30.x)等。可以发现,除了3.x和28.x这两个特例,EDCBA相互取反的两个码字的5b/6b编码结果按位相互取反或者部分取反。如00101(5.x)和11010(26.x)按位相互取反,它们的编码结果101001和010110也按位相互取反;00000(0.x)和11111(31.x)按位相互取反,它们的编码结果100111和101011中abei相同而cd按位取反;00001(1.x)和11110(30.x)按位相互取反,它们的编码结果011101和011110中abcd相同而ei按位取反。
以上的规律称为规律1,根据该规律可以将5b/6b编码的实现简化为4b/6b编码实现,E位充当4bit编码输入为DCBA还是D`C`B`A`的选择信号。对于6bit编码结果,当E=0时,直接输出6bit结果;当E=1时,需要对D`C`B`A`的6bit编码结果进行按位相互取反或者部分取反处理,至此可以得到标准8b/10b编码表中的5b/6b编码的RD-结果。至于具体进行按位相互取反还是部分取反处理,下面的规律2给出明确的说明。与5b/6b编码实现相比,4b/6b编码实现的电路规模可以缩减将近一半。
在上述规律1的基础上,继续观察图1,本简化表根据DCBA(E=0)或者D`C`B`A`(E=1)中“1”的个数将输入码字分为三大类:
1)第一类码字中DCBA(E=0)或者D`C`B`A`(E=1)中有2个或者3个“1”,这类码字对儿有5.x(26.x)、6.x(25.x)、9.x(22.x)、10.x(21.x)、11.x(20.x)、12.x(19.x)、13.x(18.x)、14.x(17.x)、3.x(28.x)、7.x(24.x);
2)第二类码字中DCBA(E=0)或者D`C`B`A`(E=1)中有0个或者4个“1”,这类码字对儿有0.x(31.x)、15.x(16.x);
3)第三类码字中DCBA(E=0)或者D`C`B`A`(E=1)中有1个“1”,这类码字对儿有1.x(30.x)、2.x(29.x)、4.x(27.x)、8.x(23.x)。
以上的分类称为规律2。
第一,该规律指出:对于以上的第一类码字(除了7.x(24.x)这一对特殊码字和28.x的K码编码),EDCBA相互取反的两个码字的5b/6b编码结果按位相互取反;对于第二类码字,EDCBA相互取反的两个码字的5b/6b编码结果按位部分取反(abei相同,cd相互取反);对于第三类码字,EDCBA相互取反的两个码字的5b/6b编码结果也按位部分取反(abcd相同,ei相互取反)。
第二,该规律指出:对于以上的第一类码字(除了7.x(24.x)这一对特殊码字和28.x的K码编码),不同极性的5b/6b编码结果相同;对于第二、三类码字以及7.x(24.x)这一对特殊码字和28.x的K码编码,不同极性的5b/6b编码结果按位互相取反。
第三,根据图2中对3b/4b编码的标记,该规律指出:对于以上的第一类码字(除了7.x(24.x)这一对特殊码字和28.x的K码编码),3b/4b编码的RD-结果选择X`,RD+结果选择X;对于第二、三类码字以及7.x(24.x)这一对特殊码字和28.x的K码编码,3b/4b编码的RD-结果选择X,RD+结果选择X`。
第四,取RD=RD_i&(G&F`+G`&F)+RD_i`&(G&F+G`&F`),取RD`=RD_i`&(G&F`+G`&F+G&F&K)+RD_i&(G&F&K`+G`&F`)。该规律指出:对于以上的第一类码字(除了7.x(24.x)这一对特殊码字和28.x的K码编码),极性指示输出选择RD;对于第二、三类码字以及7.x(24.x)这一对特殊码字和28.x的K码编码,极性指示输出选择RD`。
需要特殊说明的是,选择x.A7特殊3b/4b编码结果的只有以下几种特殊的码字:
1)D11.7、D13.7、D14.7的3b/4b的RD+编码结果;
2)D17.7、D18.7、D20.7的3b/4b的RD-编码结果;
3)Kx.7的3b/4b编码结果。
附图说明
图1为5b/6b编码表;
图2为3b/4b编码表;
图3为本发明中8b/10b编码实现的流程图;
图4为本发明中8b/10b编码实现的结构图;
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面结合附图及具体实施例,对本发明进行详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
该发明的8b/10b编码流程图如图3所示,包括以下步骤:
1、输入8bit码字、K码指示、极性指示。一方面作为4b/6b和3b/4b编码以及低四位统计的输入,另一方面参与4b/6b和3b/4b编码结果的选择信号的译码;
2、4b/6b和3b/4b编码以及低四位统计。这三部分处理是并行同步进行的,其中4b/6b编码利用上述规律1对5b/6b编码进行缩减实现;
3、4b/6b和3b/4b编码结果选择以及极性选择。利用上述规律2,通过低四位的统计结果以及输入的码字对4b/6b和3b/4b编码结果进行若干次选择;同时也根据规律2对极性指示输入进行取反或者不取反得到极性指示输出。
4、输出10bit编码结果和极性指示。将最终的4bit和6bit编码结果组合为10bit编码结果,与极性指示一起输出。
具体的实现结构如图4所示。由输入寄存器、4b/6b编码模块、3b/4b编码模块、4输入1位加法器模块、选择信号译码模块、若干的2选1复用模块(2:1MUX)和反相器模块以及输出寄存器组成。其中,输入寄存器之后的4位2选1复用模块和4b/6b编码模块是上述规律1的主要实现模块,4输入1位加法器模块和选择信号译码模块是上述规律2的主要实现模块,是本发明的核心所在。该结构的工作过程如下:
1)在时钟驱动下输入8bit码字以及K码指示、极性指示得到HGFDCBA、K_reg、RD_reg;
2)通过上述规律1确定4b/6b、3b/4b的初步编码结果6b_reg1和4b_reg1;
3)由选择信号译码模块的输出信号6bit_sel1和4bit_sel1对初步结果进行第一级选择得到5b/6b、3b/4b的RD-编码结果6b_reg2和4b_reg2;
4)由选择信号译码模块的输出信号6bit_sel2和4bit_sel2对第一级选择结果进行第二级选择得到5b/6b、3b/4b的RD-/RD+编码结果fghj和abcdei;同时由选择信号译码模块的输出信号rd_sel选择是否对RD_reg取反;
5)在时钟的驱动下将8b/10b的最终编码结果abcdeifghj和极性指示输出。
选择信号译码模块的输出与输入关系主要遵循规律2,附加上述规律之外对特殊码字的特殊处理。鉴于5b/6b和3b/4b编码结果的每一次选择有按位取反处理,因此,上述的多位2选1选择模块的操作都是基于1位的。同样的,选择信号译码模块的输出选择信号6bit_sel1、6bit_sel2都是6位宽,分别作为6bit输入中各位的选择信号;选择信号4bit_sel1、4bit_sel2则都是4位宽,分别作为4bit输入中各位的选择信号。
举例1,对于8bit输入数据码字011_01101,由于E=0,直接对DBCA进行统计,有3个“1”,归为上述规律2的第一类。根据图1、图2和上述规律1、规律2,对EDCBA编码结果选择101100(RD-结果和RD+结果),对HGF编码结果选择X`=1100(RD-结果)或者X=0011(RD+结果),最后组合得到10bit编码结果101100_1100(RD-结果)或者101100_0011(RD+结果)。至于极性指示输出,由于HGF=011而且为上述规律2中的第一类码字,根据图1和上述规律2对RD_i进行取反。
举例2,对于8bit输入数据码字111_11000,由于E=1,对D`B`C`A`进行统计,有3个“1”,归为上述规律2的第一类。根据图1、图2和上述规律1、规律2,对EDCBA编码结果选择110011(RD-结果)或者001100(RD+结果),对HGF编码结果选择X=0001(RD-结果)或者X`=1110(RD+结果),最后组合得到10bit编码结果110011_0001(RD-结果)或者001100_1110(RD+结果)。至于极性指示输出,由于HGF=111而且为上述规律2中的第一类码字,根据图1和上述规律2相对于RD_i保持不变。
举例3,对于8bit输入非数据码字111_11101,由于E=1,对D`B`C`A`进行统计,有1个“1”,归为上述规律2的第三类。根据图1、图2和上述规律1、规律2,对EDCBA编码结果选择101110(RD-结果)或者010001(RD+结果),对HGF编码结果选择X=1000(RD-结果)或者X`=0111(RD+结果),最后组合得到10bit编码结果101110_1000(RD-结果)或者010001_0111(RD+结果)。至于极性指示输出,由于HGF=111而且为上述规律2中第三类码字,根据图1和上述规律2相对于RD_i保持不变。
相比于传统的5b/6b和3b/4b分块编码实现,本发明有以下有益效果:
(1)本发明中根据规律1对DCBA进行了4b/6b编码,由E位选择DCBA或者D`B`C`A`作为4b/6b编码输入,根据选择信号译码模块的输出对4b/6b编码结果进行按位处理。与5b/6b编码实现相比,4b/6b编码实现将逻辑规模缩减将近一半。
(2)本发明中的数据编码(D码)和非数据编码(K码)没有分开来实现,而是根据上述规律进行了一体化实现。相比于单独对12种K码进行8b/10b编码实现,进一步减小了逻辑规模。
(3)本发明中的极性指示输出利用上述规律对极性指示输入进行直接输出或者取反输出,是与4b/6b编码和3b/4b编码并行同步进行的。相比于在5b/6b编码和3b/4b编码完成后再对各自的结果进行“0”和“1”的个数比较再判断极性变化,在一定程度上减小了电路的延时。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所做的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。