用于里德-索罗门译码器 的有限域乘法器 本发明涉及前向纠错码的译码器,特别涉及在里德-索罗门译码期间有限域计算中进行乘法运算的结构。
在用数字技术进行新式的图像数据和音频数据传输中,作为保护传输数据的纠错码,已较完善的创建了里德-索罗门编码技术。已经公开了各种各样的实施装置,例如我们的申请EP96301899.2就公开了一种数字接收机中的里德-索罗门译码器的超大规模集成电路(“VLS1”)。
已经把里德-索罗门编码的新的应用推荐到欧洲电信标准DRAFT prETS300744(1996年5月)中,该标准采用编码的正交频分多路复用(“COFDM”)。该标准规定数字地面电视地成桢结构、信道编码和调制。这种编码应用的开发是为把数字地面电视容纳在模拟传输的现有的频谱分配中,并且还提供充分的保护以防止高电平的同信道干扰和相邻信道干扰。该标准要求一个与内部删余卷积代码相联结的外部里德-索罗门代码。根据MPEG2传输数据流格式,该代码与位状态和隔行符号相结合。把RS(204,188,t=8)代码规定为外部代码,它具有一个代码生成元多项式:
g(x)=(x+λ0)(x+λ1)(x+λ2) ……(x+λ15) (1)其中,λ=02HEX。域生成元多项式是:
P(x)=x8+x4+x3+x2+1 (2)
已知的里德-索罗门译码器中的有限域乘法器的硬件装置要求可观的资源,而且还未能容易地适应于生产环境中的新工艺和新的应用。
本发明的主要目的是提供一种能在数字数据上进行扩展的乘法运算的改进的检错纠错电路和纠错电路。
本发明的另外的目的是提供一种通过减少硬件资源而用VLSI实施的改进的有限域乘法器。
本发明还有一个另外的目的是提供一种里德-索罗门译码器,它能容易地适用于用于电信和类似目的的各种VLSI电路。
按照BCH代码编码的电磁信号的译码器实现本发明的这些和其他目的,其中该代码由生成元多项式g(x)规定,该代码具有基元α,该译码器按照由有限域乘法形成的项xiαj运行。该译码器包括形成乘积A*B的有限域乘法电路,其中“*”是有限域乘法运算符。每个有限域乘法电路都有多个乘法器,其中第一乘数是幅度A,第二乘数是常数αk。乘法器最好按线性级链相互连接起来,一个乘法器的输出被连接到另一个乘法器的第1输入。多个选择器启动乘法器的输出,选择器具有按照幅度B的表达式设定的选择线。把最好由XOR门的逻辑网络实现的加法电路连接到选择器,以便把所启动的乘法器的输出加起来而形成最后的乘积A*B,用加法电路进行加法运算是无需进位的。
按照本发明的一个方案,乘法器由常系数乘法器构成。
按照本发明的另一个方案,具有按照幅度B的表达式设定的连接到选择线上的多条线。
本发明提供一种按照BCH代码编码的电磁信号的译码器,该代码由生成元多项式g(x)规定,并具有基元α,该译码器是按xiαj项运行类型的译码器,其中的改进是一个有限域乘法器具有多个常数乘法器。每个常数乘法器的输入是第一乘数A,该常系数乘法器的第二乘数是常数αk,其中该常系数乘法器的输出连接到下一个系数乘法器的输入。控制多个开关的多条位线附有一个幅度B的二进制表达式,每个开关被连接到相应的一个常系数乘法器的输出端。用来进行模2加法运算的加法电路连接到用来求常系数乘法器的和的开关上,这样,把求和得到的输出作为幅度A*B的二进制表达式。
本发明提供一种进行里德-索罗门译码的方法,其中α是里德-索罗门代码中的基元,通过提供一种其中具有里德-索罗门译码器的VLSI电路,并用该电路进行有限域乘法运算来执行这种方法,以便按如下步骤得到乘积xiαj:(1)对每个αn(n是整数)识别具有等于αj的和的线性合成值αn(n是整数);(2)由αn乘以an-k产生每个αn值(其中K是整数);(3)把αn值乘以xi,以产生乘积αnxi;(4)求乘积αnxi的和,以产生xiαj值。
为了更好地理解本发明的这些和其他目的,结合附图以举例方法详细说明本发明。
附图简要说明
图1是里德-索罗门译码器的功能方框图;
图2是按照图1方框图运行的里德-索罗门译码器的另一个方框图;
图3是概略说明产生有限域中的各项的图;
图4与图1说明的译码器结合的FIFO的方框图;
图5表示图1说明的译码器中的用来产生校正子的分支反馈移位寄存器;
图6是现有技术中用于里德-索罗门译码器的Berlekamp算法的流程图;
图7是用来执行用于图1所示的译码器的Berlekamp算法的装置的方框图;
图8是图1所示的译码器中用来完成Chien检索的配置的方框图;
图9是按照本发明的有限域乘法器的优选实例的示意图;
图10是按照本发明的有限域乘法器的另一个优选实施例的示意图。
图11是图9和图10的实施例中所组成的加法电路的更详细的示意图。
首先参照图4和图2说明里德-索罗门译码方法,本发明能用这种译码器和采用有限域算法的其他里德-索罗门译码器来实现。一个208字节的数据包R(X)2被输入到FIFO4中,该FIFO4由能存储448字节的RAM来实现,该FIFO4在译码过程中简单地用作延时,仅有188信息字节需要存储起来,因为在计算校正子S(x)6之后就不使用20个奇偶校验位字节,所以可以把它们废弃。译码器8接收数据包R(X)2内的去交错数据,VALID标识符10表示数据包R(X)2内的现有字节是现有数据包中的有效字节,当有效标识符10指示已经接收到一个数据包的最后字节时,同时建立数据包的末端标识符EOP12。在去交错器过早地终止数据包的情况下,就建立有错符OSI4,这会导致整个译码器复位。母线校正(CORRECT)16包含校正数据,线RS-VAL1D18表示数据在母线CORRECT16上,这条线仅在数据字节在该线上时才建立。线RS-EOP20是指示已经检测到数据包的末端的线,建立起线RS-EOP20时,线PACK-ERR22高位,这表示译码器8已经不能校正前面释放的数据包。线RS-0S24预示在数据包内已经发生严重的错误,该信号经该系统传播,并表示现有数据包将不提供任何更有效的数据。
参照图4,数据包R(X)2的第1个188字节出现在FIFO4的线WD26上,并按照计数器30的状态被写入到RAM28的一个地址中。同样,从按照计数34的状态选定的地址中把被延时的数据包R(X)2读到线RD32上。
按照如下方程在校正z计算方块36(图1)中计算校正z:Sj=Σi-0n-1rxiαi(j+m0)----(3)]]>
其中:
Sj是第j个校正z;
n是数据包内的字节数;
mo是任意整数(等于0);
rxi是数据包中的第i字节;
αx是有限域中的第x个α。
现有参照图1-7,并行运行的一个三单元38,40,41的排组产生校正子(图5),有限域项αi由一个分支反馈移位寄存器42产生(图3),该移位寄存器42由具有加法器46的多个触发器44构成,加法器46的位置由上述的生成元多项式决定。为方便起见,确定24个校正子,但实际上只有S0-S19由其余的译码器8应用。
在方框48(图1)中执行的Berlekamp算法是用来导出定位器多项式A(X)50和估算器多项式Ω(X)52的公知的方法,图6中示出了它的流程图,并应用如下注意点:
R1是包含有上述校正子方框的产生的校正子字节的移位寄存器;
R2包含一个定位器多项式Λ(X),其中Λ0=1;
R3包含D多项式;
R4包含一个估算器多项式Ω(X),其中Ω10=D;
R5是A多项式的暂存器;
dn是增量;
I是R1中的多项式比数;
n是计数值。
在STOP54处,I代表由算法所发现的差错数,并保留在寄存器56(图7)内,为了进行算法的连续渐近计算,在方框58内必须由寄存器R362反复改变寄存器R260的常数。
按照如下公式来计算dn值:dn=Σi=010Λn.1Sn-i---(4)]]>图7所示的装置中所执行的程序不同于图6所示的算法,不是用寄存器R3 62改变寄存器R2 60的常数,也不用寄存器R5 66改变寄存器R4 64的常数,而是把一个触发器开关用于寄存器包含各自的多项式的存储器。这样处理是经济的,因为不需要暂存器。对译码来说,控制方框68是一个5比特状态机,从每种状态决定:(a)下一个状态;(b)启动移位寄存器60-70和70的每一个;(c)乘法器对乘法器72,74,76,78进行选择,以便根据方框58中的R1-R5把输入选送到寄存器60-66和寄存器70;(d)在每种状态有效期间控制时间;(e)必要的话,重新计算变量n和I;(f)维持指示寄存器包含Λ(X)和Ω(X)。
Chien检索方框80(图1)详尽地估算每个可能的地址,以便决定它是否是Λ(X)的根。按照如下方程来完成一个地址的估算:Λ(α-1)=Σk=010Λkα-k----(5)]]>
虽然只有208个地址已经被接收到,但是对始于x=α254的全部255个地址都作检查,例如:Λ(α-254)=Λ(α1)=Λ10(α10)‘+’Λ9(α9)‘+’…‘+’Λ2(α2)‘+’Λ1(α1)‘+’1 (6)Λ(α-253)=Λ(α2)=Λ10(α20)‘+’Λ9(α18)‘+’…‘+’Λ2(α4)‘+’Λ1(α2)‘+’1 (7)Λ(α-252)=Λ(α3)=Λ10(α30)‘+’Λ9(α27)‘+’…‘+’Λ2(α6)‘+’Λ1(α3)‘+’1, (8)
图8中更加详细地表示了Chien检索方框80(图1),Λ(X)项是用两个并列单元计算的,具有一对馈送到乘法器88的移位寄存器84,86的上单元82涉及将要讨论的系数α1-α5,其他单元90、92和94以同样方式运行,图8中的两个上单元82,90被用来计算Λ(X)。
在每次渐近计算中,乘积要经过一次循环,以使它们经过移位寄存器再回来。这样,在第6次渐近计算时,就在估算下一个地址,并且移位寄存器的最右侧单元包含乘积Λ5(α5)。写上需要乘积Λ5(α10),并且只有现在必须把第一次渐近计算的乘积乘以α5。
为了发现错误地址数,计数器96在每次Λ(X)=0时递进一次,要进行两次检查,以便决定所接收到的数据包是否包含了大于10个错误字节的最大值。首先,把计数器96中的计算值与寄存器56(图7)中的值相比较,两个值的差表示数据包具有多于10个差错。然后,在Chien检索中发现的字节254-208内的一个错会使该数据块失效,这些是不被接收的字节,但仅仅简单地用于Chien检索方框80。
用来计算误差幅度的方程如下:E(x)=Ω(α-i)Λ′(α-i)αi----(9)]]>
如果那个地址的Λ(X)估算值等于零,该结果就仅仅被加到所接收到的字节上。用下两单元92,94来类似于Λ(X)地进行Ω(X)和Λ′(X)的估算,单元94产生Λ′(X),用ROM(未示出)中的查寻表得到倒数。
本领域普通技术人员清楚,在有限域算法中
(a*b)=(αa*αb)=αa+b (10)αa+b的实际值由域生成元多项式来决定,例如由方程2给出的域生成元多项式。进一步按照乘法分配律,如果a=b+c (11)
那么 d.a=d.b+d.c................................(12)可以参照如下方程来理解乘法器的功能:
a(x)=a7x7+a6x6+a5x5+a4x4+a3x3+a2x2+a1x1+a0 (13)
b(x)=b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x1+b0 (14)
那么 a(x)*(x)=c(x) (15)其中“*”表示有限域乘法运算符。
c’0=a0b0 (16)
c’1 =a0b1+a1b0 (17)
c’1=a0b2+a1b1+a2b0 (18)
c’13=a6b7+a7b6 (19)
c’14=a7b7 (20)按照方程(2)中的P(X)
c0=c’0+c’8+c’12+c’13+c’14 (21)
c1=c’1+c’9+c’13 +c’14 (22)
c2+c’2+c’8+c’10+c’12+c’13 (23)
已经用一个硬件中普通乘法器直接完成上述的乘法,在某些情况下,该普通的乘法器从一个有关的α生成元获取输入。但是,普通的乘法器需要集成电路中相当的区域,因为一个乘数是已知的,所以用多个常数乘法器来取代该普通乘法器可以节约主要的空间。在如包括在校正子Sj(方程3)的产生时的乘法运算中,可以用图9所示的乘法器结构来进行连续循环中的乘法运算,以求出典型项rxiα3,rxiα4,rxiα5。在如下的讨论中,r是一个简单常数,不必与数据的数据包内的第i字节相关。为清楚起见,在这个例子中仅表示产生三项,应该理解实际上是可以计算许多项。输入到乘法器结构98的是第一乘数rxi 100,该乘数在常数乘法器102中乘以α乘数α3104,该乘积rxiα3出现在节点106处,它成为输入到下一个常系数乘法器108的输入项。在产生节点110处的乘积时,常系数乘法器108利用关系:
αn=α1·αn-1 (24)该乘积在乘法器112中相乘,并且用加法器114把乘积加在另一个值上,以便进一步处理。本领域的普通技术人员应清楚该常数乘法器108可以用很少的三个异或(“XOR”)门来实现。
本发明人发现运用方程(12)所示的乘法分配率以及α值可以被表示为另一个α值的线性合成,就能实现一个经济的、构成更方便而且更实用的有限域乘法器。在表1中把几个有代表性的α值表示为2进位数。 有限域的α值 二进制值 α0 00000001 α1 00000010 α2 00000100 α3 00001000 α4 0010000 α8 00011101要注意的是α值可以用模2加法加起来,而无需产生进位位。例如:
α8=α4+α3+α2+α0 (25)通过应用乘法分配率输入第二乘数rxi就能得到乘积α8* rxi,其中“*”表示有限域算法中的乘法运算符。
rxiα8=rxiα4+rxiα3+rxiα2+rxiα0 (26)
图10说明的是有限域乘法器的一个优选实施例。用标号116来表示。如图9所示,以同样的方式安排一个8个常系数乘法器118构成的阵列。所表示的是8位数据通道,但可以按其他母线宽度构成电路,应理解在n=0,α0的特写情况下对第一常系数乘法器120的输入为1,这种情况下可以省略该常系数乘法器120,常系数乘法器118的阵列中的其他所有乘法器都乘以αj,在图9的例子中,j=1。由常系数乘法器118的阵列得到的乘积从母线122上被传输到8个选择器124构成的排的第1输入,选择器124的第2输入是出现在母线128上的第2乘数B的各自的位线126,选择器124可以由多个AND门实现,其中每条母线122的位线可以按照各自的位线126共同启动。在本例中,设定母线128的位0,2,3和4,而母线130上的选择器124的输出可以表示为序号{0,0,0,A[4],A[3],A[2],0,A[0]}。在加法器132中把该序列的元素加起来,并把和数呈现在输出母线134上。因为不产生进位,所以8个元素的每一个的相加运算可以在由3个异或门XOR138构成的逻辑网络136中按照模2加法简单地进行,图11表示在加法器132中采用的8个同样的网络之一,其中把逻辑部分加到每条母线130的至少足够的位上,其他公知的加法电路也可以适用于加法器132。
与按照方程(13)-(20)直接实施乘法相比,在门数量上,本实施例的原始硬件装置已经减少了20%,虽然前述实施例讨论了有关里德-索里门译码,但同样可应用于其他(N,K)代码以及“Bose,Ray-Chandhuri,Hocguenghem”(“BCH”)代码,并能应用于其他进行有限域乘法的设备。
该有限域乘法器116能有效地在Chien检索方框80(图8)中用作普通有限域乘法器140和所有的译码器8(图2)。
在该优选实施例中,译码器8和有限域乘法器116是同一个VLSI电路来实施的。
例如:
在本例中,用符合IEEE标准1364-1995的标准硬件描述语言来说明硬件实施。
首先按照如下描述来建立一个普通的综合有限域乘法器:
]]>
下一个有限域乘法器116(图10)描述如下:
]]>
由综合程序处理上述模型,Compass ASICyn(商标)对普通综合有限域乘法器和该有限域乘法器116分别产生如下区域报告:
虽然在此参照所披露的结构已经说明了本发明,但是并不限定于前述的细节,可以包含在如下权利要求范畴内的改型和变形都将包括在本申请之内。