一种高速8b/10b编码器和解码器及其对错误输入的处理方法

文档序号:7535983阅读:429来源:国知局

专利名称::一种高速8b/10b编码器和解码器及其对错误输入的处理方法
技术领域
:本发明涉及数字通信的传输编码
技术领域
,特别涉及一种高速8B/10B编码器和解码器及其对错误输入的处理方法,即高速OlGbps)8B/10B编码器和解码器及其逻辑实现方法。
背景技术
:8B/10B传输编码是由AlbertX.Widmer和PeterA.Franaszek1983年在公开号为4486739的美国专利"ByteOrientedDCBalanced(0,4)8B/10BPartitionBlockTransmissionCode"中提出的。该传输编码传输带宽小、转换密度高、码字游程长度受限、每个码字内有多次边沿跳变等特点,因而易于快速同步对齐,直流平衡。直流平衡是指编码后数据的"0"和"1"数量基本保持一致,可以避免接收器的输入有直流漂移,这样对交流耦合负载、长电缆和光电模块的驱动成为可能。所以,直流平衡技术广泛应用于高速串行总线中。随着对串行接口数据传输量和速度的要求越来越高,对8B/10B的编码和解码的速度也有了更高的要求。公开号为CN1300971C的专利"基于双8B/10B编码器的16B/20B编码器逻辑实现方法"和公开号为6295010B1的美国专利"8B/10BEncoderSystemAndMethod"都是通过并行实现多个编码器和解码器来提高速度,这样会增加芯片的面积。公开号为6977599的美国专利"犯/10BEncodingAndDecodingforHighSpeedApplications"和公开号为6911921的美国专利"5B/6B-T,3B/4B-TandPartitioned8B/10B-Tand10B/12BTransmissionCodes,andTheirImplementationforHighOperatingRates"则是通过改善电路结构来提高单个8B/10B编码器和解码器的速度,但其主要采用组合逻辑实现编码和解码,具有很深的逻辑深度,导致关键路径太长,从而在一定程度上影响了8B/10B编码器和解码器的速度,并且8B/10B编码器的实现方案中都注重对数据字符的编码和DC平衡控制而忽略了控制字符和数据字符间隔传输时数据流的DC平衡问题。
发明内容本发明的目的在于,克服现有技术中8B/10B编码器和解码器存在的上述问题,从而提供一种高速8B/10B编码器和解码器及其对错误输入的处理方法,以适应高速互连的需求。为了解决上述技术问题,本发明提供了一种基于流水线结构和并行处理技术的8B/10B编码器和解码器。首先,该8B/10B编码器传输编码期间,将编码模块和RD(rundisparity)计算模块分开,在第一级流水中对输入数据进行预编码,并计算当前输入码字是否会导致RD发生翻转,在第二级流水线中计算经过当前码字后的RD值,并利用上一个时钟周期计算所得的RD值来对当前码字的预编码结果进行修正;然后,该8B/10B编码器对8B/10B编码时,不需要先判断输入数据是控制字符还是数据字符,而是同时对其分别按照数据字符和控制字符的编码规则进行编码,再根据输入的控制字符标志位K对两种编码进行选择输出。因而,当输入是控制字符时,也能保证其与前后的数据字符编码的直流平衡,而目前的8B/10B编码器的实现方法中则只对其进行数据字符编码,没有考虑到同时对控制字符编码的问题;最后,该8B/10B解码器对8B/10B解码期间,分为解码、错误检测(包括码流的不均衡检测和码字错误检测)和字符类型判断(数据字符还是控制字符)几个部分,第一级流水线中对10比特输入数据进行6B/5B解码和4B/3B解码,并计算6B和4B数据的不均衡性,第二级流水线中进行码字错误检测,字符类型判断和RD计算和不均衡性判断以及解码结果选择,而目前的8B/10B解码器的实现方法中,只检测了码流的不均衡性错误,而忽略了对码字类型的判断,以及输入码字有错误的情况,只是在一些公开论文中提到将错误字符归类,然后用单独的组合逻辑实现对错误码子的区分的方法。本发明采用在分别对6B和4B码字解码的同时给该输入的6B码和4B码置错误标志位,然后判断逻辑根据其错误标志位的值再通过简单的组合逻辑来判断输入的10B码字是否码字错误。具体来讲,为了解决上述技术问题,本发明提供了一种高速8B/10B编码器,包括数据字符预编码模块10a、RD计算模块20a,20b和数据字符预编码修正模块30a,其特征在于该高速8B/10B编码器采用流水线结构和并行处理方法;所述的数据字符预编码模块10a和数据字符预编码修正模块30a、RD计算模块20b分别进行预编码和后修正,所述的数据字符预编码模块10a在第一级流水中对输入数据进行预编码,并通过RD_turn模块20a计算当前输入码字是否会导致RD发生翻转;所述的RD计算模块20b在第二级流水线中计算经过当前码字后的RD值,并利用上一个时钟周期计算所得的RD值来对当前码字的预编码结果进行修正;所述的数据字符预编码模块10a通过一级寄存器连接到数据字符预编码修正模块30a并输出;所述的RD一turn模块20a通过一级寄存器连接到RD计算模块20b并输出;所述的RD计算模块20b通过一级寄存器连接到数据字符预编码修正模块30a和控制字符预编码修正模块30b以及RD计算模块20b。作为上述技术方案的一种改进,所述的编码器分别按照数据字符和控制字符的编码规则同时进行编码,所述的编码器还包括控制字符预编码模块10b、控制字符编码修正模块30b和数据/控制字符选择模块40;所述的数据字符编码修正模块30a和控制字符编码修正模块30b连接数据/控制字符选择模块40,所述的数据/控制字符选择模块40根据输入的控制字符标志位K对两种编码进行选择输出。该8B/10B编码器进行8B/10B编码时,不需要先判断输入数据是控制字符还是数据字符,而是同时对其分别按照数据字符和控制字符的编码规则进行编码,再根据输入的控制字符标志位K对两种编码进行选择输出,因而,当输入是控制字符时,也能保证其与前后的数据字符编码的直流平衡。作为上述技术方案的又一种改进,预编码时,默认当前RD值为负,所述数据字符预编码模块10a将其作为数据字符进行5B/6B编码和3B/4B编码;所述控制字符预编码模块lOb将其作为控制字符对其进行编码,并计算经过当前码字后RD的变化信息。作为上述技术方案的再一种改进,所述的数据字符编码修正模块30a和控制字符编码修正模块30b,用于根据上一个周期计算所得并存入寄存器的RD值来控制编码的后修正。为了解决上述技术问题,本发明还提供了一种高速8B/10B解码器,包括数据解码模块50、不均衡性标志位计算模块60以及不均衡性计算和不均衡错误检测电路模块80,其特征在于该高速8B/10B解码器采用流水线和并行处理的结构,能够同时解码和检测码流的不均衡错误;所述的数据解码模块50和不均衡性标志位计算模块60、不均衡性计算和不均衡错误检测电路模块80分别用来对输入码字进行解码和不均衡错误检测;所述的数据解码模块50在第一级流水线中对输入码字进行解码,若输入为有效编码码字,将其按照编码规则进行解码,若输入为无效编码码字,则将其解码为一个固定的错误标志码字,并通过不均衡性等标志位计算模块60得到用于不均衡性计算和不均衡错误检测电路80计算所需要的标志位;所述的不均衡性计算和不均衡错误检测电路模块80在第二级流水线中进行不均衡性判断和当前码字的RD计算,并利用上一个时钟周期计算所得的RD值来对当前码字是否发生不均衡错误进行判断;输入数据通过第一级寄存器连接到所述的数据解码模块50和不均衡性标志位计算模块60,在第一级流水线中对10比特输入数据进行6B/5B解码和4B/3B解码,并计算6B和4B数据的不均衡性,所述的不均衡性标志位计算模块60的输出通过第二级寄存器连接到不均衡性计算和不均衡错误检测电路模块80,并且通过第三级寄存器将RD的值再作为自身的输入。作为上述技术方案的一种改进,所述的8B/10B解码器还包括码字错误检测和字符类型判断模块70以及输出数据选择模块卯;8B/10B编码规则中,数据字符的有效编码有440种组合,控制字符的有效编码有24种组合,即有效的编码结果464种组合,而10B码字则有2^种组合,共1024种组合,即有560种无效编码结果码字;所述的码字错误检测和字符类型判断模块70,用于检测编码器的输入码字是否为无效编码结果码字,进行码字错误检测,并且还用于判断输入码字编码前是数据字符还是控制字符,进行码字类型判断;所述的输出数据选择模块,用于根据不均衡性计算和不均衡错误检测电路模块80的输出不均衡错误标志位对解码的码字或固定的错误标志码字进行选择输出;所述的码字错误检测和字符类型判断模块70在第二级流水线中进行码字错误检测,在分别对6B和4B码字解码的同时给该输入的6B码和4B码置错误标志位,然后判断逻辑根据其错误标志位的值再通过简单的组合逻辑来判断输入的IOB码字是否码字错误。所述8B/10B解码器的实现方法中,不仅检测了码流的不均衡性错误,而且还对码字类型进行判断,并识别输入码字有错误的情况;所述8B/10B解码器的解码期间,所述不均衡性判断和RD计算模块不仅能检测码流的不均衡性错误,而且还对码字类型进行判断,并识别输入码字有错误的情况,但,当前码字的RD计算只与当前码字的输入有关,与上一个码字的RD无关,不影响后面码字的RD计算以及后面码字的不均衡检测,体现了错误不扩散功能。该功能是目前8B/10B解码器所没有的。作为上述技术方案的又一种改进,所述的数据解码模块50,用于产生的6个标志位;所述的码字错误检测和字符类型判断模块70通过这些标志位判断码字错误和码字类型;所述的6个标志位包括code—err4表示输入的4B码字发生错误;code—err6表示输入的6B码字发生错误;p—28标记表示输入的码字为"001111"或"110000";pl标记表示输入的6B码字为"111010"或"000101"或"110110"或"001001"或"101110"或"010001"或"011110"或"100001";p2标记表示输入的4B码字为"1000"或"0001";如果code—err(code—err=code—err6|code—err4)为1,则判断码字错误;如果K(K=p—28|(pl&p2)),为1,则原码字为控制字符;为0,则原码字为数据字符。作为上述技术方案的一种优选,所述的不均衡性计算和不均衡错误检测电路80中,信号E一Dx3和p4作为或门ORl的输入,其输出作为二选一的多路选择器MUX1的选择信号输入;E—D7和p6作为或门OR2的输入,其输出作为二选一的多路选择器MUX2的选择信号输入;disp6和RD作为二选一的多路选择器MUX2和异或门XOR2的两路信号输入;二选一多路选择器MUX2的输出信号rd和disp4信号作为异或门XOR1的两个信号输入;二选一多路选择器MUX2的输出信号rd和disp4作为二选一多路选择器MUX1的两路信号输入;p4和p6信号分别作为反相器Nl和反相器N2的信号输入;二选一多路选择器MUX1的输出信号作为D触发器D1的D信号输入端,其输出Q端作为RD信号,是二选一多路选择器MUX2和异或门XOR2的信号输入;D触发器D1的clk端接时钟信号;反相器N1和异或门X0R1的输出作为与门AND1的两个输入信号;异或门XOR2和反相器N2的输出作为与门AND2的两个输入信号;与门AND1和与门AND2的输出信号作为或门OR3的输入信号,其输出为RD一err信号。作为上述技术方案的又一种优选,所述的不均衡性标志位计算模块60所产生的标志位包括-E—D7标志位表示输入6B码字为"000111"或"111000";E_Dx3标志位表示输入4B码字为"0011""1100";p4标志记位表示输入4B码字的"0"和"1"的个数是否相等,相等则p4为1,否则为0;p6标记位表示输入6B码字的"0"和"1"的个数是否相等,相等则p6为1,否则为0;disp4为1标志位表示标记输入4B码流中"1"的数量大于"0"的数量,为0则表示4B码流中"0"的数量大于"1"的数量;disp6为1标志位表示标记输入6B码流中"1"的数量大于"0"的数量,为0则表示6B码流中"0"的数量大于"1"的数量;但,当输入6B码字为"111000"或"000111"时,置p6-0,其中前者置disp6-l,后者置disp6-0;当输入4B码字为"1100"或"0011"时,置?4=0,其中前者置disp44,后者置disp4-0。为了解决上述技术问题,本发明还提供了一种基于高速8B/10B编码器和解码器对错误输入的编码和解码的处理方法,该方法包括以下步骤(1)当输入码字的类型标志位K为1时,而输入码字却不是8B/10B编码规则中规定的12个控制字符时,说明编码器的输入信号有误,此时数据字符预编码模块10a将其统一按照一个直流均衡的IOB码进行编码,并且经过一级寄存器后传给控制字符编码修正模块30b,经过修正后传给数据/控制字符选择模块40,并最终由K信号选择编码结果输出。(2)解码器的输入信号有误时,若该码不属于8B/10B编码表的编码结果范围,则数据解码模块50将其统一按照一个特定的字符进行解码;若该码与上一个码的直流不均衡,则输出数据选择模块90根据不均衡性计算和不均衡错误检测电路模块80产生的不均衡错误标志位选择一个特定的字符作为输出。采用本发明的直流平衡码字作为编码器输入错误时的固定编码,并把与该直流平衡的固定码字相应的原码作为解码器输入错误时的固定解码,以便于上层协议识别错误的输入码字。本发明规定了K28.4的编码"0011110010"或"1100001101"(低位在前高位在后)为编码器的错误标志;K28.4的源码"10011100"(高位在前低位在后)为解码器的错误标志码。8B/10B编码期间,若出现控制字符标志位K为1则说明输入是控制字符,但输入码字不是编码规则中的12个控制字符时,则说明输入码出错,此时就将其固定按照K28.4编码;8B/10B解码期间,若输入码检测到错误,则将其固定解码为K28.4,这样就能保证当编码器输入码有错时传输码流的直流平衡,而且能使编码器解码器结构简单,也便于上层协议识别并处理输入码字的错误,而且用于错误标识的码字不局限于K28.4,还可以是其他具备直流均衡的非数据字符编码的码字。本发明的创新之处在于用一个固定的直流均衡码字来编码解码输入码字错误,这是现有的8B/10B编码器和解码器所不具有的。本发明采用流水线的和并行处理的技术,将编码和解码在两个周期内完成,11提高了编码器和解码器的速度;编码过程中采用第一个周期进行当前码字预编码和计算经过当前码字后的RD值,第二个周期再根据上一个周期得到的经过上一个码字后的RD结果对预编码进行修正,并计算下一个周期的RD。縮短了关键路径,加快了编码器的速度;解码过程中,对码流的不均衡检测过程中时,遇到不均衡错误的码字后,将错误码字统一编码,交给上层协议处理,这样传输就不用中断,而且正确计算后续码字的RD,实现了有错误不扩散的功能。本发明的优点在于,本发明的编码器和解码器应用于高速串行接口中,均采用流水线结构和并行处理方法,从而简化了电路设计,縮短了关键路径,并提高了速度。本发明中的编码器,采用预编码和后修正的方法来提高效率,避免了必须得到当前RD值之后才能进行编码的过程,而且把输入字符当作数据字符和控制字符同时进行编码,最后再根据输入的K信号对两种编码进行选择输出,这样能保证输出码流完全做到直流均衡;本发明中的解码器采用了特定电路,能检测码字错误和不均衡错误,从而实现错误不扩散;采用直流平衡码字作为编码器输入错误时的固定编码,并把与该直流平衡的固定码字相应的原码作为解码器输入错误时的固定解码,以便于上层协议识别错误的输入码字。总之,本发明更简单,节省逻辑资源,有助于减少芯片面积,且本发明还有对正确码字进行码字类型判断输出的功能,这也是现有8B/10B解码器所不具备的功能。本发明中的码字错误检测方法也不同于现有公开论文提出的方法。另外,本发明还对输入的正确码字解码出了它的字符类型。图1为现有的8B/10B编码解码信号流图2为本发明的8B/10B编码解码信号流图3为采用8B/10B传输编码进行编码的示范编码器的结构框图4为采用8B/10B传输编码进行编码的示范编码器的信号流图5为采用8B/10B传输编码进行解码的示范解码器的结构框图6为采用8B/10B传输编码进行解码的示范解码器的信号流图7为用于判断RD状态的状态转换图8为解码器中不均衡计算和检测模块的电路图。具体实施例方式下面结合附图和具体实施方式对本发明做进一步说明。如图3所示的8B/10B编码器包括两级流水线,其中第一级流水线包括数据字符预编码模块、控制字符预编码模块、数据和控制字符的RD_tum计算模块;第二级流水线包括数据字符预编码修正模块、控制字符编码修正模块、RD计算模块、数据/控制字符选择模块。所述的数据字符预编码模块和数据字符预编码修正模块对数据字符分别进行5B/6B和3B/4B的预编码和修正。输入的八位数据HGFEDCBA经过寄存器送入第一级流水线的三个模块中,输入的一位控制字符Kin通过两级寄存器送入到第二级流水线中的RD计算模块;数据和控制字符RD_turn计算模块的计算结果通过寄存器送入到第二级流水线中的RD计算模块,RD计算模块的计算结果RD—m输出到寄存器;数据字符预编码模块的编码结果通过寄存器连接到数据字符预编码修正模块,控制字符预编码模块的编码结果通过寄存器送入到控制字符预编码修正模块,经过寄存器的RD—m信号又送入RD计算模块与数据字符和控制字符预编码修正模块中;指导数据字符和控制字符对预编码进行修正,数据字符和控制字符预编码修正后的结果经过一个选择器,由K信号进行选择输出。所述编码过程引入了参数RD(runningdisparity)来表示不平衡度。其中RD+表示上一个码字中"1"的个数多于等于"0"的个数,"RD-"表示上一个码字中"0"的个数多余等于"1"的个数。通过上一个码字的RD选择当前码字对应的lObit码字作为输出。对于数据字符编码,将8bit数据分为低5位和高3位,分别对其进行5B/6B编码和3B/4B编码,5B/6B编码选择的是上一字节编码产生的RD,而3B/4B编码选择的是前面相邻的5B/6B编码产生的rd。整个字节编码所产生的RD值由3B/4B编码得到。如下表1、2和3所列13<table>tableseeoriginaldocumentpage14</column></row><table><table>tableseeoriginaldocumentpage15</column></row><table>根据RD+和RD-编码的码字相同或按位取反,将码分为中性码和极性码。其中中性码是指该码的编码结果只有一种可能的结果,而且该编码中"0"的个数等于"l"的个数;极性码是指根据RD的不同,编码有两种不同的可能结果。如图4所示的的编码器信号流图,为了加快编码器速度,先不判断输入数据是控制字符还是数据字符,并行对输入数据按照控制字符和数据字符同时进行编码、RD的计算,最后再根据Kin信号对其选择输出。第一级模块对输入码字进行预编码,分为数据字符的5B/6B预编码、3B/4B预编码和控制字符预编码。预编码时均按照RD-的情况对输入码字进行编码,得到一组中间码字pre—abcdei、pre—fghj、c_pre_abcdeifghj以及一些标志位(如p一56和p一34分别用来标志5B/6B编码和3B/4B编码的是中性码还是极性码;rd—tum一56用来标志经过5B/6B编码后的rd与输入RD是否相反,l表示相反,0表示相同)。预编码的同时分别计算经过当前码字后的RD相对于上一个码字的RD是否要取反。同理需要同时将输入字符作为控制字符和数据字符分别计算RD—turn。第二级模块中,根据上一个码字的RD,对中间码字迸行修正。数据字符预编码修正模块分为5B/6B编码修正和3B/4B编码修正。在5B/6B编码修正模块中,输入RD和p—56是控制位,若RD&p—56=1,则输出6bit码abcdd为中间码字按位取反。,否则输出等于中间码字。3B/4B编码修正模块中,若4bit中间码字不等于1110,rd和p_34作为控制位,若rd&p_34=l,则输出4bit码fghj为4bit中间码字按位取反,否则输出等于中间码字;若4bit中间码字为1110,此时5B/6B编码修正后的输出e、i以及rd、p一34作为控制位,若^&^&;=1,则输出fghj=1000,若^&6&/=1,则输出fghj=0111,否则若rd&p—34=l,则fghj-0001,其余情况下fghj=U10。控制字符预编码修正中,RD为控制位,若RD-1则输出为10bit中间码字按位取反,否则输出等于中间码字。通过Kin对修正后的控制字符编码和数据字符编码进行选择作为输出,并选择将数据字符翻转标志位或控制字符翻转标志位作为最终的RD—turn与经过寄存器的上一周期的RD值进行异或得到新的RD值。如图5所示的8B/10B解码器也包括两级流水,其中第一级流水线包括输入数据解码模块、输入数据的6B和4B码的不均衡性计算模块;第二级流水线包括码字错误检测和字符类型判断模块、不均衡计算和检测模块和输出数据选择模块。所述的输入数据解码模块分为6B/5B解码和4B/3B解码,解码的结果经过寄存器送入第二级流水的码字错误检测和字符类型判断模块以及输出数据选择模块;输入数据的6B和4B码的不均衡性计算模块的计算结果经过寄存器送入不均衡计算和不均衡错误检测模块,经过不均衡计算和不均衡错误检测它的输出作为输出数据选择模块的输入,并且该信号经过寄存器之后又作为自己的输入。图6所示的8B/10B解码器信号流图,在输入数据解码模块中,若6B和4B输入为表1、表2中编码后的有效数据,则对其按照表中数据进行解码为5B和3B,当输入6B码为001111或110000时,将其解码为11100,否则视输入为错误数据,分别置code一err6或code一err4为1用于标记6B码或4B码错误;若6B或4B数据其中一个有错误,则整个数据为无效字符,即code—err=code_err6|code—err4。由表3可以所示看到的特殊字符的编码有两个特点第一,K28.x八个特殊字符的编码,其中abcdei为001111或110000,而这种编码在数据编码中绝对是不可能的;Q);第二,kx.7编码中对"7"的4B码选择和与数据字符编码选择截然相反,在特殊字符中的fghj出现1000或0111的编码,而同样情况下在数据编码中会采用0001或1110。因而设置p—28,、pl和p2用于标志判断输入是否为12个有效的控制码。,当abcdei为001111或110000时,置p_28为1;当abcdei能解码为D23,27,29,30时,置pl为l,当fghj为1000或0111时,将p2置位为l;其余情况下p一28、pl、p2均为0;当p—28|(pl&p2)=l时,输入数据就为控制数据,置K4。6B码和4B码的不均衡度计算模块输出6个标志位,其中,p6、,p4分别为6B码和4B码的极性标志位,若该码字中"1"和"0"的个数相等,置其为l,表示该码为中性码;反之置为0,表示该码为极性码。当码字呈中性时,相应的不均等性标志位disp才有效。码流中"1"的个数多于"0"的个数时,disp为1;反之,则为0。为了防止发生类似本应编码为111000,而错误编码为000111时,检测不出来编码错误的情况,必须对abcdei为000111和111000以及fghj为1100和0011时做特殊处理。虽然他们的"0"和"1"个数相等,但必须设置其相应的p=0。当输入为000111或0011时,置disp6禾Bdisp4均为0;当输入为111000或1100时,置disp6和disp4均为1。这样就能检测出该类码的不均衡错误,但是由于强制标记了这四个中性码为极性码,并且改变了相应的disp标志,这会导致RD计算模块发生错误,因为这四个码本为中性码,经过他们之后数据的RD本应保持输入时的RD,但此时却变为了disp6和disp4。为了防止这种错误发生,还设置了两个标志位为E—D7和E—Dx3。当输入abcdei为000111或111000时,E—D7置为i,否则其为0;当输入fghj为0011或1100时,E—Dx.3置为1,否则其为0。图8所示的解码器中的不均衡计算和检测模块,其中不均衡计算部分如图7所示,数据传输中正极性和负极性的编码数据进行传输后呈现的极性就为自身的编码数据极性,而中性编码数据传输后的数据极性则继承上一个数据的极性。在图5所示的8B/10B解码器中,若P6或E—D7为l,数据abcdei为中性码;若P4或E一Dx3为1时,数据fghj为中性码。所以用它们的或作为选择信号。不均衡检测部分中,若RD与disp6相等,则说明当前数据的abcdei与上一个数据的fghj发生了DC不均衡错误;若rd与disp4相等,则说明当前数据的abcdei与当前数据fghj发生了DC均衡错误,即RDdisp6|rddisp4为1则检测到了DC不均衡的错误,但是由于当p^时,disp信号无效,因而RDedisp6和rd十disp4只有分别在p4=0以及p6=0时才有效。该模块具有错误不扩散功能。由于对第n+l个码进行DC不均衡检测时,需要用到第n个输入码计算出的RDn+l。若第n个码是错误的,则由它得到的RDn+l也是错误的,此时若第n+l个输入码是一个正确的非中性码,则由于使用了错误17的RDn+l,解码器会错误的把该正确码检测为DC不均衡的错误码,其解码输出为10011100,但同时RDn+2等于第n+l个码的RD,则是正确的。因而再利用RDn+2对第n+3个码进行检测时,就不会发生错误了;若第n+l个输入码是正确的中性码,而由于此时p4、p6均为0,解码器不会将其检测为错误的码,因而会输出正确的解码结果,但是错误的RDn+l会随着输入的中性码传播下去,直到遇到一个非中性码,才会纠正到这个非中性码的RD,从而得到正确的RD,之后的码流解码器就会正确的对其进行检测和解码。总之,当输入码流中有错误时,解码器会将其检测出来,但同时可能会导致解码器把后面的一个正确码判断为错误码。但在此之后,解码器都能正确的检测和解码后面的码流。由于链路发生错误的概率很小,而且这个小问题完全可以被上层的协议识别,并由软件进行更正,因而这个小问题对整个系统性能的影响非常小。但是若要在硬件上更正这个小问题,则需要非常多的逻辑来判断错误码的类型以及导致错误的原因,从而得到正确的码、正确的RD,这样会使流水线停顿,大大降低了传输速率,所以认为这是没有必要的。输出数据选择模块中,由于解码时就考虑到了无效字符,并同时将输入的无效字符解码为K28.4,因而输出选择时只需要考虑发生直流不均衡错误的情况即可。若RD—err为l,则置输出为K28.4,否则,输出为解码后的输出。本发明经DC综合在SIMC卯nm的工艺条件下得以实现,该编码器和解码器在各种PVT条件下均能在卯OMHZ频率进行工作,面积约为1500"w2;本发明可应用在5Gbps以上的高速串行接口的编码器和解码器的设计中,具有广泛的应用场景。最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。权利要求1、一种高速8B/10B编码器,包括数据字符预编码模块(10a)、RD计算模块(20a,20b)和数据字符预编码修正模块(30a),其特征在于该高速8B/10B编码器采用流水线结构和并行处理方法;所述的数据字符预编码模块(10a)和数据字符预编码修正模块(30a)、RD计算模块(20b)分别进行预编码和后修正,所述的数据字符预编码模块(10a)在第一级流水中对输入数据进行预编码,并通过RD_turn模块(20a)计算当前输入码字是否会导致RD发生翻转;所述的RD计算模块(20b)在第二级流水线中计算经过当前码字后的RD值,并利用上一个时钟周期计算所得的RD值来对当前码字的预编码结果进行修正;所述的数据字符预编码模块(10a)通过一级寄存器连接到数据字符预编码修正模块(30a)并输出;所述的RD_turn模块(20a)通过一级寄存器连接到RD计算模块(20b)并输出;所述的RD计算模块(20b)通过一级寄存器连接到数据字符预编码修正模块(30a)和控制字符预编码修正模块(30b)以及RD计算模块(20b)。2、根据权利要求1所述的高速8B/10B编码器,其特征在于所述的编码器分别按照数据字符和控制字符的编码规则同时进行编码,所述的编码器还包括控制字符预编码模块(lOb)、控制字符编码修正模块(30b)和数据/控制字符选择模块(40);所述的数据字符编码修正模块(30a)和控制字符编码修正模块(30b)连接数据/控制字符选择模块(40),所述的数据/控制字符选择模块(40)根据输入的控制字符标志位K对两种编码进行选择输出。3、根据权利要求2所述的高速8B/10B编码器,其特征在于预编码时,默认当前RD值为负,所述数据字符预编码模块(10a)将其作为数据字符进行5B/6B编码和3B/4B编码;所述控制字符预编码模块(10b)将其作为控制字符对其进行编码,并计算经过当前码字后RD的变化信息。4、根据权利要求2所述的高速8B/10B编码器,其特征在于所述的数据字符编码修正模块(30a)和控制字符编码修正模块(30b),用于根据上一个周期计算所得并存入寄存器的RD值来控制编码的后修正。5、一种高速8B/10B解码器,包括数据解码模块(50)、不均衡性标志位计算模块(60)以及不均衡性计算和不均衡错误检测电路模块(80),其特征在于该高速8B/10B解码器采用流水线和并行处理的结构,能够同时解码和检测码流的不均衡错误;所述的数据解码模块(50)和不均衡性标志位计算模块(60)、不均衡性计算和不均衡错误检测电路模块(80)分别用来对输入码字进行解码和不均衡错误检测;所述的数据解码模块(50)在第一级流水线中对输入码字进行解码,若输入为有效编码码字,将其按照编码规则进行解码,若输入为无效编码码字,则将其解码为一个固定的错误标志码字,并通过不均衡性等标志位计算模块(60)得到用于不均衡性计算和不均衡错误检测电路(80)计算所需要的标志位;所述的不均衡性计算和不均衡错误检测电路模块(80)在第二级流水线中进行不均衡性判断和当前码字的RD计算,并利用上一个时钟周期计算所得的RD值来对当前码字是否发生不均衡错误进行判断;输入数据通过第一级寄存器连接到所述的数据解码模块(50)和不均衡性标志位计算模块(60),在第一级流水线中对10比特输入数据进行6B/5B解码和4B/3B解码,并计算6B和4B数据的不均衡性,所述的不均衡性标志位计算模块(60)的输出通过第二级寄存器连接到不均衡性计算和不均衡错误检测电路模块(80),并且通过第三级寄存器将RD的值再作为自身的输入。6、根据权利要求5所述的高速8B/10B解码器,其特征在于所述的8B/10B解码器还包括码字错误检测和字符类型判断模块(70)以及输出数据选择模块(卯);所述的码字错误检测和字符类型判断模块(70),用于检测编码器的输入码字是否为无效编码结果码字,进行码字错误检测,并且还用于判断输入码字编码前是数据字符还是控制字符,进行码字类型判断;所述的输出数据选择模块,用于根据不均衡性计算和不均衡错误检测电路模块(80)的输出不均衡错误标志位对解码的码字或固定的错误标志码字进行选择输出;所述的码字错误检测和字符类型判断模块(70)在第二级流水线中进行码字错误检测,在分别对6B和4B码字解码的同时给该输入的6B码和4B码置错误标志位,然后判断逻辑根据其错误标志位的值再通过简单的组合逻辑来判断输入的IOB码字是否码字错误。7、根据权利要求6所述的高速8B/10B解码器,其特征在于所述的数据解码模块(50),用于产生的6个标志位;所述的码字错误检测和字符类型判断模块(70)通过这些标志位判断码字错误和码字类型;所述的6个标志位包括code_err4表示输入的4B码字发生错误;code一err6表示输入的6B码字发生错误;p—28标记表示输入的码字为"001111"或"110000";pl标记表示输入的6B码字为"111010"或"000101"或"110110"或"001001"或"101110"或"010001"或"011110"或"100001";p2标记表示输入的4B码字为"1000"或"0001";如果code—err=code—err6|code—err4为1,则判断码字错误;如果K-p—28|(pl&p2)为1,则原码字为控制字符;为0,则原码字为数据字符。8、根据权利要求6所述的高速8B/10B解码器,其特征在于,所述的不均衡性计算和不均衡错误检测电路(80)中,信号E_Dx3和p4作为或门OR1的输入,其输出作为二选一的多路选择器MUX1的选择信号输入;E_D7和p6作为或门OR2的输入,其输出作为二选一的多路选择器MUX2的选择信号输入;disp6和RD作为二选一的多路选择器MUX2和异或门XOR2的两路信号输入;二选一多路选择器MUX2的输出信号rd和disp4信号作为异或门X0R1的两个信号输入;二选一多路选择器MUX2的输出信号rd和disp4作为二选一多路选择器MUX1的两路信号输入;p4和p6信号分别作为反相器Nl和反相器N2的信号输入;二选一多路选择器MUX1的输出信号作为D触发器Dl的D信号输入端,其输出Q端作为RD信号,是二选一多路选择器MUX2和异或门XOR2的信号输入;D触发器D1的clk端接时钟信号;反相器N1和异或门X0R1的输出作为与门AND1的两个输入信号;异或门XOR2和反相器N2的输出作为与门AND2的两个输入信号;与门AND1和与门AND2的输出信号作为或门OR3的输入信号,其输出为RD—err信号。9、根据权利要求5所述的高速8B/10B解码器,其特征在于所述的不均衡性标志位计算模块(60)所产生的标志位包括E—D7标志位表示输入6B码字为"000111"或"111000";E_Dx3标志位表示输入4B码字为"0011""1100";p4标志记位表示输入4B码字的"0"和"1"的个数是否相等,相等则p4为1,否则为0;p6标记位表示输入6B码字的"0"和"1"的个数是否相等,相等则p6为1,否则为0;disp4为1标志位表示标记输入4B码流中"1"的数量大于"0"的数量,为0则表示4B码流中"0"的数量大于"1"的数量;disp6为1标志位表示标记输入6B码流中"1"的数量大于"0"的数量,为0则表示6B码流中"0"的数量大于"1"的数量;但,当输入6B码字为"111000"或"000111"时,置p6i,其中前者置disp6-l,后者置disp6-0;当输入4B码字为"1100"或"0011"时,置p4-0,其中前者置disp44,后者置disp4^。10、一种基于高速8B/10B编码器和解码器对错误输入的处理方法,该方法包括以下步骤(1)当输入码字的类型标志位K为1时,而输入码字却不是8B/10B编码规则中规定的12个控制字符时,说明编码器的输入信号有误,此时数据字符预编码模块UOa)将其统一按照一个直流均衡的IOB码进行编码,并且经过一级寄存器后传给控制字符编码修正模块(30b),经过修正后传给数据/控制字符选择模块(40),并最终由K信号选择编码结果输出;(2)解码器的输入信号有误时,若该码不属于8B/10B编码表的编码结果范围,则数据解码模块(50)将其统一按照一个特定的字符进行解码;若该码与上一个码的直流不均衡,则输出数据选择模块(90)根据不均衡性计算和不均衡错误检测电路模块(80)产生的不均衡错误标志位选择一个特定的字符作为输出。全文摘要本发明提供了一种高速8B/10B编码器和解码器及其对错误输入的处理方法,编码器包括数据字符预编码模块、RD计算模块和数据字符预编码修正模块,该编码器采用流水线结构和并行处理方法;所述的数据字符预编码模块和数据字符预编码修正模块、RD计算模块分别进行预编码和后修正,所述的数据字符预编码模块在第一级流水中对输入数据进行预编码,并通过RD_turn模块计算当前输入码字是否会导致RD发生翻转;所述的RD计算模块在第二级流水线中计算经过当前码字后的RD值,并利用上一个时钟周期计算所得的RD值来对当前码字的预编码结果进行修正。本发明应用于高速串行接口中,均采用流水线结构和并行处理方法,从而简化了电路设计,缩短了关键路径,并提高了速度。文档编号H03M5/14GK101674089SQ20091023606公开日2010年3月17日申请日期2009年10月19日优先权日2009年10月19日发明者侯朝焕,华斯亮,张铁军,琪王,王东辉申请人:中国科学院声学研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1