专利名称::在里德-索洛蒙解码器中用于确定误差计算多项式的装置的制作方法
技术领域:
:本发明涉及一种用于校正存储或发送数据中出现的误差的装置;特别是涉及一种用于确定误差计算多项式的系数的装置,这种多项式被用于校正按照里德-索洛蒙码(Reed-Solomon)编码的数据中的差。在发送、存储或是提取数据时产生的噪声随后会在发送、存储或提取的数据中造成误差。相应地,目前已经出现了有能力校正这些误差的各种编码技术,用于对发送或存储的数据进行编码。在这类编码技术中,把一组校验位编制成一组信息或信息位,从而形成码字。由编码器确定的这些码字被用于检测和校正误差。从这一意义上来说,编码器对这些信息位进行基本的处理,其中包括作为二进制信息多项式系数的信息位,并且将信息多项式i(X)与代码产生多项式g(X)相乘,或是用g(X)除i(X),从而推导出校验位,由此获得码字多项式c(X)。代码产生多项式是有选择的,以便在操作码字时赋予其所需的性质,因此,这种码字属于特殊等级的误差校正二进制组码(例如可参见S.Lin等人的“ErrorControlCodingFundamentalsandApplications”,Prentice-Hall,1983)。BCH(Bose-Chaudhuri-Hocquenghen)代码级是一种公知的误差校正代码等级,它包括Reed-Solomon(“RS”)码。在Lin等人的上述文献中解释了RS码的数学基础,另外还可以参见Berlekamp所著的“AlgebraicCodingTheory”,McGraw-Hill,1968,该文献还参考了授予Berlekamp的美国专利US4,162,480号。如果RS码的代码产生多项式g(X)的根是α的2T连续次方,如公式(1)所示,就可以校正T个误差其中的α是有限域GF(2)中的一个元素。在接收过程或是提取发送或存储码字的过程中,某些附带的噪声可能已经被转换成了码字中的误差型。为了处理施加在RS码上的误差型,通常是采用四步的程序。在讨论误差校正程序时要参照一种RS码,它是由包含N个M-位符号(其中有K个符号是信息符号,并有(N-K)个符号是校验符号)。在这种情况下,c(X)变成一个(N-1)阶多项式,并且2T等于(N-K)。在第一校正步骤中,根据接收的码字多项式r(X)计算校正子S0,S1,…,Sπ-1,也就是代表接收码字的(N-1)阶多项式。接收码字多项式r(X)被表示为rN-1XN-1+rN-2XN-2+…+r1X1+r0,其中的rj是码字的第(N-j)个符号。在第二步中使用校正子计算误差定位子多项式σ(X)的系数。在第三步中求解误差校正多项式σ(X)的根,它代表着接收码字中的误差位置。具体地说,如果在误差定位子多项式σ(X)中用元素α-j的幂代替变量X所得的结果是0(即α-j成为σ(X)的根),就表明在rj,即码字的第(N-j)个符号中出现了误差。在第四步中使用误差位置和校正子计算出误差值。在上述授予Berlekamp的美国专利US4,162,480号中说明了校正子的数学表达式和误差定位子多项式的系数。以下要详细地解释第四步。首先可以这样获得一个误差计算多项式Ω(X)Ω(X)=σ(X)S(X)公式(2)其中的S(X)是校正子多项式,其系数是校正子。在推导出误差计算多项式Ω(X)之后,就能计算出误差值ej其中的σ'(X)是误差定位子多项式σ(X)的一阶导数;α-j是在第三步中获得的误差校正子多项式的根;而误差值ej对应着第(N-j)个符号,它是在第三步中获得的一个误差位置。在找到误差值之后,可以将误差值与对应的符号相加,从而恢复出原始的码字。如果可以使用删除,公式(2)可以重新写成Ω(X)=1+Ω1X+Ω2X2+Ω3X3+…+ΩTXT=1+(S1+σ1)X+(S2+S1σ1+σ2)X2+…+(ST+ST-1σ1+ST-2σ2+…+σT)XT公式(4)参见图1,图中表示了一种惯用的误差计算多项式计算装置1的框图,在T=4的情况下,该装置按照公式(4)确定误差计算多项式的系数。装置1包括5个误差计算多项式计算单元(21至25),每个单元包括校正子寄存器(SRi),系数寄存器(CRi),Galois域(“GF”)乘法器,以及一个Galois域加法器。校正子寄存器SR1至SR5是串联连接的,因此,其中存储的校正值可以向右移位。按顺序向各个乘法器41至45提供误差定位子多项式系数σi's。在开始计算误差计算多项式的运算之前,分别用校正值S0至S4对校正子寄存器SR1至SR5进行初始化,并且用0对系数寄存器CR1至CR5进行初始化。在初始化之后,误差计算多项式计算程序的第一步如下。具体地说,把数值为1的σ0输入各个乘法器,并且与分别由SR1至SR4提供给乘法器41至45的S0至S4相乘。由乘法器(4i)产生的乘积Si-1被提供给加法器(6i),其中的i是1至5。在加法器(6i)中,将这一乘积与系数寄存器CRi的内容即0相加,并且把相加的结果Si-1送回CRi。在误差计算多项式计算程序的第二步中,存储在校正子寄存器中的各个校正值被向右移位,存储在SR5中的S4被移出,并且向SR1输入0。然后,向各个乘法器4i输入σ1,并且分别与来自SR1至SR5的0,S0,S1,S2,和S3相乘。相乘的各个结果,即0,σ1S0,σ1S1,σ1S2,和σ1S3与相应的系数寄存器CRi的内容相加,并且把相加的各个结果,即S0,S1+σ1S0,S2+σ1S1,S3+σ1S2,和S4+σ1S3送回CRi。按照类似的方式更新SRi和CRi的内容,如表1和2所示。在这些表中,第一栏代表步骤编号,其中的每一步可以对应一个系统时钟周期。应该注意的是S0等于1,因此在表中用1代替了。表1</tables>表2</tables>按照上述惯用的误差计算多项式计算装置1,为了获得T阶的误差计算多项式,需要多达(T+1)个误差计算多项式计算单元。相应地,在误差计算多项式计算装置1中包括(T+1)个Galois域乘法器,以及(T+1)个Galois域加法器,从而使装置的结构变得复杂,进而又会对实现VLSI(超大规模集成电路)造成困难。因此,本发明的目的是提供一种误差计算多项式计算装置,它是由少量的GF乘法器和加法器构成的,从而降低装置的制作成本和复杂性。本发明提供了一种在Reed-Solomon解码器中使用的装置,用于计算误差计算多项式的系数,其计算公式如下Ω(X)=1+(S1+σ1)X+(S2+S1σ1+σ2)X2+…+(ST+ST-1σ1+ST-2σ2+…+σT)XT其中的Si是第(i)个校正值,而σi是误差定位子多项式中的第(i)个系数,该装置包括一个系数输入框,用于按照预定的次序依次提供作为第一输出的误差定位子多项式的系数,以及作为第二输出的校正值;一个乘法器,用于按顺序将系数输入框提供的第一输出和第二输出相乘,从而按顺序提供乘积的结果;T个存储器;第一多路转换器,用于按照预先规定的次序提供T个存储器之一的内容;一个加法器,用于将乘法器提供的各个结果与多路转换器提供的T个存储器之一的内容相加;第二多路转换器,用于有选择地提供第一输出或是相加的结果;以及一个多路分解器,用于把来自第二多路转换器的第一输出或相加结果提供给T个存储器之一并存储在其内。通过以下结合附图对最佳实施例的说明可以清楚地看到本发明的上述和其他目的和特征,其中图1是一种惯用的误差计算多项式计算装置的示意性框图;图2表示按照本发明第一实施例的误差计算多项式计算装置的示意性框图;以及图3表示按照本发明第二实施例的误差计算多项式计算装置的示意性框图。在图2中提供了按照本发明的第一实施例的误差计算多项式计算装置2的示意性框图。与惯用的装置不同,图2所示的误差计算多项式计算装置2包括能够同时确定(T)个系数但是并不包括(T+1)个单元。在图2和3所示的实施例中,为了简化而把T设为4。误差计算多项式计算装置2包括一个GF乘法器11和一个GF加法器13,它们分别直接对应图1中的GF乘法器41至45和GF加法器61至65。该装置进而包括一个寄存器框15,它对应着图1所示的寄存器CR1至CR5;一个系数输入框10按照预定的顺序向GF乘法器11提供校正子的系数和误差定位子多项式;以及一个多路转换器(“MUX”)17,它根据一个选择信号SEL1有选择地把系数输入框10提供的误差定位子多项式系数或是加法器13的输出提供给寄存器框15中包括的多路分解器(“DEMUX”)15b。SEL1控制着MUX17,在第0次迭代中在其输入口1上选择系数输入框10的输出,并且在除0次迭代之外的所有迭代过程中选择输入口0上的GF加法器13的输出。寄存器框15包括4个并联连接的寄存器(R0至R3),并且由MUX15a和DEMUX15b分别控制寄存器的输出和输入。寄存器可以使用边沿触发式D触发器。与惯用的装置不同,在装置2中仅仅计算误差计算多项式的第一至第四系数Ω1至Ω4,在计算系数的操作完成之后,从各个寄存器R0至R3提供各个系数。在装置2中不计算第0个系数Ω0,因为其值是已知的,也就是1。以下要详细说明图2所示装置2的操作。在计算程序的第一步期间,分别用误差定位子多项式σ1至σ4的系数对寄存器R0至R3进行初始化。为了实现初始化,系数输入框10按顺序向MUX17提供作为第一输出值的σ1至σ4;而MUX17响应SEL1向DEMUX15b提供系数。或者是在SEL1处于高态的情况下由MUX17选择系数输入框10提供的误差定位子多项式的系数;并且在SEL1处于低态的情况下提供加法器13的输出,从而按顺序向DEMUX15b提供选择的输入。DEMUX15b响应控制信号SEL2向对应的寄存器提供各个系数。SEL2在每个位时钟周期中指定四个寄存器之一。具体地说,DEMUX15b向R0提供用于存储的σ1,向R1提供σ2;向R2提供σ3;以及向R3提供σ4。DEMUX15b可以按以下方式向寄存器提供系数,在图2中用CLK表示的系统时钟信号的上升沿把各个系数记录在对应的寄存器中。在用误差定位子多项式系数对寄存器进行初始化的同时,系数输入框10的第二输出Sj可以处于“被忽略的”状态,这意味着Sj不会影响初始化程序。在用σ1至σ4对寄存器进行初始化之后,系数输入框10向GF乘法器11提供作为第一输出σi的σ0,即1,以及作为第二输出Sj的S1,如图2所示,乘法器11将二者相乘,从而向GF加法器13提供σ0S1,也就是S1。同时还响应控制信号SEL3通过MUX15a向GF加法器13提供R0的内容σ1。SEL3控制MUX15a按定时的方式提供Ω。GF加法器13将S1和σ1相加,并且向MUX17提供相加的结果S1+σ1。同时,MUX17选择相加的结果,并且响应SEL1将其提供给DEMUX15b。DEMUX15b把S1+σ1送回R0,响应SEL2将其存储在R0中。R1的内容按照类似的方式被更新。具体地说,系数输入框10向乘法器11提供σ0,即1,以及S2,乘法器11将二者相乘。GF乘法器11向GF加法器13提供S2。S2在加法器13中与响应控制信号SEL3通过MUX15a从R1提供的σ2相加,从而通过MUX17向DEMUX15b提供相加的结果S2+σ2。然后按时钟将S2+σ2存入R1。按照这种方式,寄存器的内容按照表3中给定的顺序被更新。表3中的前两栏代表系数输入框10的输出σi和Sj,而每行中第三到第六栏的内容代表用该行中表示的系数输入框10输出更新寄存器之后的各个寄存器的内容。表3<p>按上述方式更新4个寄存器需要占用4个系统时钟周期。在表3中可以看到,R0的内容等于Ω1,因此不需要更新。在以下的操作步骤期间更新三个寄存器R1至R3。为此,系数输入框10向乘法器11提供σ1作为σi,并且还按顺序提供S1,S2和S3。GF乘法器11响应这些输入,按顺序向加法器13提供σ1S1,σ1S2和σ1S3。在加法器13中,响应SEL3,分别将σ1S1,σ1S2和σ1S3与通过MUX15a提供的寄存器R1至R3的内容相加,以便把相加的结果送回R1至R3。在这一操作步骤结束时,R1的内容变为Ω2,因此不必再更新R1的内容。然后,按照类似的方式,进一步用作为σi的σ2对R2和R3进行更新,并且按顺序提供作为Sj的S1和S2,最后按照表4中所示用作为σi的σ3和作为Sj的S1更新R3,从而在操作结束时使各个寄存器能够提供误差计算多项的一个相应的系数。也就是说,Ω1存储在R0中,Ω2存储在R1中,Ω3存储在R2中,而Ω4存储在R3中。表4</tables>在误差计算多项式的各个系数被存入相应的寄存器之后,从寄存器按顺序提供这些系数,以便在Reed-Solomon解码器的其他部分(未示出)中使用。如上所述,按照本发明第一实施例的误差计算多项式计算装置2可以提供误差计算多项式的系数。参见图3,在图中提供了按照本发明第二实施例的误差计算多项式计算装置3的框图。图3所示的误差计算多项式计算装置3的结构与图2中的装置基本相同。然而,与图2中的装置2不同,寄存器框35包括4个串联连接的寄存器(R0至R3)。图3所示的装置也能为误差计算多项式提供四个系数Ω1至Ω4。在计算程序的第一步期间,分别用误差定位子多项式的系数σ4至σ1对寄存器R0至R3进行初始化。为此,系数输入框30按顺序向MUX37提供作为第一输出σi的σ1至σ4;而MUX37则响应控制信号SEL按顺序向R0提供系数。SEL控制MUX37在初始化期间在输入口1上选择系数输入框30的输出,或是在输入口0上选择GF加法器33的输出。寄存器的内容被向右移位,从而使R0至R3分别存储σ4至σi。在用σ4至σi对寄存器进行初始化之后,系数输入框30向GF乘法器31提供作为第一输出的σ0,也就是1,以及作为第二输出Sj的S1,在其中相乘,以便向GF加法器33提供σ0S1,也就是S1。同时还向GF加法器33提供R3的内容σ1。GF加法器33向MUX37提供相加的结果S1+σ1。此时,MUX17选择相加的结果,并且响应SEL1将其提供给R0,将其存储在R0中,并且把寄存器的内容向右移位。最终使R0至R3的内容分别变成S1+σ1,σ4,σ3和σ2。然后,系数输入框30向乘法器31提供σ0,也就是1,还有S2,二者在其中相乘。GF乘法器31向GF加法器33提供S2。在GF加法器33中将S2与R3提供的σ2相加,从而将S2+σ2提供给R0,并且存储在其中。按照这种方式,寄存器的内容按照表5中给定的顺序被更新,其中的前两栏代表系数输入框30的输出σi和Sj,而每行中第三到第六栏的内容代表用该行中表示的系数输入框30输出更新寄存器之后的各个寄存器的内容。值得注意的是寄存器R0至R3的入口只能采取循环移位方式。因此,寄存器的更新不能按随意的次序执行。为此,系数输入框30按照表5所示提供σi和Sj。也就是说,在寄存器不需要更新的情况下,系数输入框30按表5中第二栏所示提供0,因此是用0与寄存器的内容相加。如表5中所示,在操作结束时,Ω1存储在R3中,Ω2存储在R2中,Ω3存储在R1中,而Ω4存储在R0中。然后,从寄存器按顺序提供这些系数,以便在Reed-Solomon解码器的其他部分(未示出)中使用。尽管本发明的装置是按照系数输入框10或30的具体顺序来说明的,除此之外的其他顺序也可以用来计算误差计算多项式的系数。表5<p>尽管本发明是按照特殊实施例的方式来描述的,本领域的技术人员显然可以在不脱离权利要求书所限定的本发明范围的条件下实现各种变更和修改。权利要求1.一种在Reed-Solomon解码器中使用的装置,用于计算误差计算多项式Ω(X)的系数,其计算公式如下Ω(X)=1+Ω1X+Ω2X2+Ω3X3+…+ΩTXT=1+(S1+σ1)X+(S2+S1σ1+σ2)X2+…+(ST+ST-1σ1+ST-2σ2+…+σT)XT其中的Si是第(i)个校正值,而σi是误差定位子多项式中的第(i)个系数,i的范围从1到T,而T是一个预定的数,该装置包括输入装置,用于按照预定的次序依次提供作为第一输出的误差定位子多项式的系数,以及作为第二输出的校正值;乘法器,用于按顺序将输入装置提供的第一输出和第二输出相乘,从而按顺序提供乘积的结果;T个存储器;输出装置,用于按照预先规定的次序提供T个存储器之一的内容;加法器,用于将乘法器提供的各个相乘结果与输出装置提供的T个存储器之一的内容相加,从而提供相加的结果;选择装置,用于有选择地提供第一输出或是相加的结果;以及用于把来自选择装置的第一输出或相加结果提供给T个存储器之一并存储在其内的装置。2.按照权利要求1的装置,其特征是T个存储装置包括D触发器。3.按照权利要求1的装置,其特征是其中的T是4,并且输入装置包括一个装置,用于按照{σ1,σ2,σ3,σ4,σ0,σ0,σ0,σ0,σ1,σ1,σ1,σ2,σ2,σ3}的顺序提供误差定位子多项式的系数,并且按照{X,X,X,X,S1,S2,S3,S4,S1,S2,S3,S1,S2,S1}的顺序提供校正值,X代表“被忽略的”状态。4.一种在Reed-Solomon解码器中使用的装置,用于计算误差计算多项式Ω(X)的系数,其计算公式如下Ω(X)=1+Ω1X+Ω2X2+Ω3X3+…+ΩTXT=1+(S1+σ1)X+(S2+S1σ1+σ2)X2+…+(ST+ST-1σ1+ST-2σ2+…+σT)XT其中的Si是第(i)个校正值,而σi是误差定位子多项式中的第(i)个系数,i的范围从1到T,而T是一个预定的数,该装置包括输入装置,用于按照预定的次序依次提供作为第一输出的误差定位子多项式的系数,以及作为第二输出的校正值;乘法器,用于按顺序将输入装置提供的第一输出和第二输出相乘,从而按顺序提供乘积的结果;串联连接的第一至第(T)个存储器;加法器,用于将乘法器提供的各个相乘结果与第(T)个存储器的内容相加,从而提供相加的结果;以及选择装置,用于有选择地向第一存储器提供第一输出或是相加的结果。5.按照权利要求4的装置,其特征是第一至第(T)个存储装置包括D触发器。6.按照权利要求4的装置,其特征是其中的T是4,并且输入装置包括一个装置,用于按照{σ1,σ2,σ3,σ4,σ0,σ0,σ0,σ0,σ1,σ1,σ1,σ1,σ2,σ2,σ2,σ2,σ3,σ3,σ3,σ3}的顺序提供误差定位子多项式的系数,并且按照{X,X,X,X,S1,S2,S3,S4,0,S1,S2,S3,0,0,S1,S2,0,0,0,S1}的顺序提供校正值,X代表“被忽略的”状态。全文摘要一种在Reed-Solomon解码器中使用的装置,用于按照Ω(X)=1+(S文档编号H03M13/15GK1170281SQ97109998公开日1998年1月14日申请日期1997年2月28日优先权日1996年2月28日发明者任龙熙申请人:大宇电子株式会社