纠错解码器的钱搜索单元的制作方法

文档序号:6402899阅读:508来源:国知局
专利名称:纠错解码器的钱搜索单元的制作方法
技术领域
本发明涉及数字通信系统的检错和纠错。
背景技术
任何现代数字通信系统的一项重要功能是差错控制编码。差错控制编码是通信领域中用于处理数字系统中的检错和纠错的技术。一般来说,检错/纠错方案一般用于确保在数字数据的存储和传输过程中,不引入数据差错,或者可选地,如果数据引入了差错,可以纠正引入的错误。通过向数据增加冗余以实现数据的检错和/或纠错的能力。传输或存储的数据中包含冗余位导致编码信号或字段的组成要比未编码原始信号或字段具有更多位。
检错/纠错中一种常用方案通过使用被称作里德-所罗门(ReedSolomon)的编码。里德-所罗门码是非二进制系统循环线性分组编码。非二进制码的码元由几位组成。如里德-所罗门编码的非二进制码非常适于校正突发的差错,因为这些编码的校正是在码元级别上完成的。如里德-所罗门码的系统码生成包括未改变形式的报文码元的码字。解码器将可逆数学函数应用在报文码元上以产生冗余,或奇偶码元。然后,通过将奇偶码元附加在报文码元之后形成码字。里德-所罗门码被认为是循环码,因为任何有效码字的循环移位同样产生另一个有效码字。循环码字的流行是因为其可以通过高效并且廉价的解码技术实现。最后,里德-所罗门码被认为是线性的,因为任何两个有效码字相加将得到另一个有效码字。
典型的里德-所罗门解码器包括下列主要组件模块
(i)伴随式生成模块,(ii)差错多项式模块,(iii)差错位置模块,以及(iv)差错数量模块,(v)纠错模块,以及(vi)延迟模块。伴随式生成模块用于接收码字和根据码字生成伴随式。该伴随式用于在差错多项式模块中生成差错多项式。差错多项式传输到差错位置和差错数量模块,其中分别确定码字的差错位置和数量。差错向量是根据差错的位置和数量产生的。延时的接收码字通过纠错模块使用与特定码字对应的差错向量进行纠错。
里德-所罗门解码器中用于执行差错位置模块的一个常见方法是通过使用称作钱(Chien)的模块(或钱搜索),其使用高强度钱算法以计算多项式所有可能的值。钱模块由一些单个的钱单元组成。钱搜索单元(参见图11)是用于执行差错位置多项式的单阶或系数的硬件,因此共有(t+1)阶(因为差错多项式位置具有最大次数为t次以及t次多项式具有(t+1)个系数)。典型的钱搜索单元以迭代方式处理差错位置多项式系数。在第一次迭代中,复用器接收与正在处理的码字对应的合适的多项式系数,并将多项式系数发送到寄存器。在后续时钟周期中,寄存器的输出首先进入伽罗华(Galois)域乘法器,然后通过复用器反回到寄存器进行存储。该过程共执行N个时钟周期,其中N为码字长度。
与这种实现相关的问题在于差错位置是按照对应码字字节的逆序生成的,因此在被添加到码字进行校正前,需要通过LIFO模块进行逆序。LIFO模块是包括多个寄存器的硬件存储元件。一旦所有寄存器存满,LIFO模块发送其输出。最后输入的元素成为第一个输出元素,依次类推。使用LIFO模块存在两个问题其一是LIFO模块为较大的存储元件,并且因此增加了IC的门数和功耗。另一个问题是,LIFO模块带来了N个时钟周期的延迟。该延迟发生是因为LIFO模块需要N个时钟周期来完成初始存满,并且直到最后的元素被读入LIFO才生成输出。

发明内容
应用本发明有利于解决现有技术相应问题。本发明在差错位置模块中生成与每个码字顺序相同的系数差错位置,这样不需要使用LIFO模块。本发明是用于计算根据单元中与系数对应的码字而生成的单个差错位置多项式系数的方法和装置,其中接收与接收码字相对应的差错位置多项式系数。在第一个时钟周期中,差错位置多项式系数通过负指数的伽罗华域乘法器相乘。负指数的值是与该单元相对应的阶数和码字长度(N)的函数。相乘结果作为单元输出。单元输出结果通过具有正指数的伽罗华域乘法器迭代相乘N-1次。第二个伽罗华域乘法器的正指数值是阶数的函数。


参照本发明的以下描述应该结合附图,其中图1是具有纠错方案的数字数据传输系统的示意方框图;图2是说明典型纠错方案的方法流程图;图3是示意不同纠错方法的分层表示;图4是示意里德-所罗门解码器的方框图;图5是示意应用本发明原理的里德-所罗门解码器典型实施方式的方框图;图6是示意根据本发明原理说明的典型的内部解码器握手协议的方框图;图7是示意根据本发明原理,里德-所罗门解码器典型实施例中功能模块之间握手协议的方框图;图8是根据本发明原理的典型里德-所罗门解码器的时序图,说明了使用内部模块信号交换的解码器效率;图9是根据本发明原理,除钱/Fomey模块之外应用钱模块的里德-所罗门(RS)解码器的典型实施方式的方框图;图10是在里德-所罗门解码器中实现的典型的现有技术钱搜索单元的方框图;以及图11是根据本发明原理,在里德-所罗门解码器中实现减少存储需求和延迟的改进钱搜索单元的方框图。
具体实施例方式
图1根据本发明原理,描述了包括检错/纠错方法的数字数据传输系统100的方框图。检错/纠错方法通常应用于保证在数据的传输和存储期间,不会引入数据差错,或者如果数据引入差错,可以纠正引入的错误。通过向数据增加冗余来实现数据检错/纠错功能。传输中或存储的数据中包含冗余位导致编码信号或字段具有比未编码信号或字段更多的位数。附加开销的补偿是检错或者检错并纠错的功能。通常根据编码增益来测量使用差错控制编码获得的性能改进。假设一个未编码通信系统在信噪比(SNR)30dB时达到一给定误码率(BER)。如果系统添加编码增益为3dB的差错控制编码方法,则该编码系统将能够在信噪比为27dB时达到该误码率。或者如果系统工作时的信噪比为30dB,则编码系统所达到的误码率将与信噪比为33dB的未编码系统相同。编码增益的性能在于其允许通信系统(i)在比未编码可能低的SNR中保持所希望BER;(ii)在给定NR时相比未编码系统能够达到较高的BER。
通过实施例的方式,编码器110的功能是接受来自数据源的数字数据,并且将数据通过信道发送或者存储在存储介质(图上集中显示为信道或存储设备115)或者操作或处理数据。通常情况是,在传输或存储过程中,噪声或差错125可能被引入数据,因而破坏或改变原始数字数据的形式。解码器120的功能是检错并纠错或仅仅是检测数字数据的指定部分是否受到破坏。
图2是说明在发射机/信道/接收机环境中应用的各种检错/纠错处理过程的流程图。尽管上下文已经有所描述,但是现有技术人员显然清楚这种检错/纠错处理也能应用在广播传输,数字数据存储,或对数据进行处理或操作的任何过程中(以数据段,包,流等形式存在的数据)。作为实施例,仅仅说明但不限于下述可以使用检错/纠错方法提高性能,完整性和可靠性的技术/设备(i)各种存储设备,包括但不限于磁带,光盘(CD),数字化通用盘(DVD),条形码等;(ii)无线或移动通信(包括蜂窝电话,双向收发机,微波连接等);(iii)卫星通信;(iv)数字无线电,数字电视(DTV),数字视频广播(DVB)等;(v)调制解调器,包括但不限于电缆,V.pcm,ADSL,xDSL等。
按照步骤210,在初始建立连接,协定传输信道参数后,传输源将数字数据处理为可传输的形式。按照步骤215,在传输之前,源产生差错码;差错码部分至少基于要传输的数字数据的值,因此提供数据冗余度。按照步骤220,生成的差错码被附加、添加、复用,或者被包括在数字数据中,从发射机传输到接收机。按照步骤225,数字数据和差错码在接收机接收。如需要,按照步骤230在接收机执行初始信号处理。按照步骤235,接收机访问差错码的冗余位,并根据应用的差错控制码方案处理其中所包含的信息。按照步骤240,如果被处理的冗余位肯定地检查接收数字数据,则假设数据未被破坏。数字数据的进一步信号处理(如果有的话)按照步骤245在接收机继续进行。
然而,如果被处理的冗余位表明接收的数字数据(至少包括一个位出错)被破坏,则按照步骤250,计算数据差错以确定差错是否能在正应用的差错控制方法中得到校正。即,某些差错控制方法只能检错,但不包括用于校正这些差错的冗余数据的属性和类型。其它差错控制方法仅使用其检错性能,而不论是否具有检错和纠错两种性能。通常在任何特定的数字信号,报文或包的精度不很重要的时候使用该方法,但是数据的一致性和及时传输是极其重要的。这种应用的实例是语音,音频和视频应用的同步流数据。而且,甚至当使用差错控制方法来检错和纠错时,如果检查出的差错数量超出差错校正能力时(即,超出差错码位所提供的冗余信息),那么数据不可恢复。按照步骤255,如果数据可校正,那么数据差错被校正并且在接收机进行进一步的信号处理(如果有)。然而,如果差错不可校正,则按照步骤260执行运算以确定数据精度是否必要。如果和纯数据系统一样需要数据精度,则单个位差错十分关键的可能性很大,按照步骤265,将重发请求传输给传输源。如果和同步特性的数据报文的情况一样,不可校正数据的精度不是必要的,则按照步骤270仅仅舍弃被破坏并且不可校正的数据,然后处理后续数据报文。
图3说明各种差错码分类和方案的分层表示。差错码310分为两类(i)自动重传请求(ARQ)或检测码315,以及(ii)前向纠错(FEC)码320。ARQ仅是检测类型的编码,其中可通过接收机检测出传输中的差错,但不校正。接收机必须请求任何接收的数据,并且请求再次传输具有检测差错的接收数据。因为这些传输将占用一定带宽,所以ARQ码通常使用“干净的”传输介质(其具有低差错率)。一个最常见的实施例是简单的奇偶校验325,常常应用在RAM中检测数据差错。另一个实施例是应用于在以太网传输中检错的循环冗余校验(CRC)330。如果检测出差错,将再次传输报文。因为以太网主要通过线路传输,所以出错几率小于其它介质。CRC和ARQ仅仅是差错检测码方法中的两类说明性实施例;本领域技术人员也知晓其它差错检测编码方法。仅仅检错而不进行纠错的差错码比纠错码显著地减少了冗余。而且,差错检测解码器远没有纠错解码器复杂。使用差错检测码方法的系统通常需要克服数据再次传输的开销。即,数据的再次传输不会显著地影响系统总通信量。
因为噪声介质对特定的传输引入差错的几率平等,所以使用ARQ方法意味数据不断再次传输,系统通信量降低到不可接受的水平。这种情况下,如其名称所示,纠错码不仅允许在接收端检错,还允许纠错。这样减少了数据再次传输的需要,仅当差错数量远远大于所使用的纠错方法可以校正的数量的时候才需要再次传输。纠错也应用在单向通信中,其中不存在接收机请求再次传输报头的几率。这些单向路径的说明性实施例包括某些卫星传输和磁带存储介质。
纠错码可以分为两种主要子类别。第一种为分组码335,第二种为卷积码340。分组码335是经常使用的纠错码,它和定义了有限长度的报文分组共同使用。之所以命名为分组码335是因为此子分类使用了能够处理报文码元的分组的编码器,然后输出码字码元的分组。分组码通常能够分成两种类型二进制码345和非二进制码355。二进制码345的一种实例是海明码350,其特征是每个字符具有四个信息位和三个校验位。非二进制码的示例是里德-所罗门码360。
与之相反,卷积码340编码器用于报文码元的连续流,并且同时生成连续的编码输出流。这些编码这样命名,是因为编码处理过程能够视为编码器的脉冲响应和报文码元的卷积。卷积码340的两个实施例为网格(Trellis)编码调制(TCM)365和二进制卷积码370。
图4是典型的里德-所罗门(RS)解码器的方框图。如前所述,里德-所罗门码是非二进制系统循环线性分组码。非二进制码使用包括几位的码元。通常,非二进制码的码元长度为8位或一个字节。非二进制码,如里德-所罗门码,可以很好地校正突发差错,因为这些码的校正是在码元级上进行的。通过在解码过程中处理码元,这些码能够校正具有8个突发差错的码元,就象校正具有一位差错的码元那样简单。如里德-所罗门码的系统码,生成包括未改变形式的报文码元的码字。编码器将可逆数学函数应用在报文码元上,以生成冗余或奇偶码元。然后,通过将奇偶码元附加在报文码元后形成码字。因为任何有效码字的循环移位同样产生另一个有效码字,里德-所罗门码被认为是循环码。循环码的普遍使用是因为存在有效可行和低开销的解码技术来实现它们。最后,里德-所罗门码被认为是线性的,因为任何两个有效码字相加可以得到另一个有效码字。
差错控制码的理论利用了被称作有限域或伽罗华域的数学概念。伽罗华域是有限个元素的集合。在这个集合上定义了加法和乘法运算,这些运算来自标准算术。例如,加法的恒等元素为0,乘法的恒等元素为1。里德-所罗门码使用具有循环和线性特性的码的伽罗华域数学实现,并在阶段为q=pm的伽罗华域中运算,其中p是正素数,m是正整数。q阶伽罗华域表示为GF(q),包含q个不同元素。
特定的里德-所罗门码通过(n,k)码表示。根据码字中的码元数目参数n表示码字长度。参数k表示码字中报文码元数量。因而附加的奇偶码元数目为n-k。码的纠错能力t=(n-k)/2。码能够检测并校正T个差错,0≤T≤t。码字基于报文码元,使用里德-所罗门编码器生成。因为里德-所罗门是系统码,传输n个报文码元,n-k个奇偶码元附加在报文码元后形成码字。向传输的码字增加的冗余奇偶码元的值,取决于报文码元。接收机的解码器使用该冗余来检错和纠错。
在接收机的解码器,接收码字作伴随式生成块410。解码器执行的第一步是通过伴随式生成块410(也经常指伴随式生成模块,或伴随式生成器)实现伴随式运算。伴随式包括n-k个码元,其值根据接收码字计算。伴随式仅取决于差错向量,独立于传输的码字。即,每个差错向量具有唯一的伴随式向量,但是如果差错图案相同,则多个不同的接收码字将具有相同的伴随式。首先计算伴随式的原因是因为这样做限定了差错向量的搜索域。首先知道伴随式将正确差错向量的数目限制为2n个可能差错向量中的2n-k个。
伴随式生成块410计算伴随式的一个方法是通过生成器多项式使用伽罗华域代数来除接收码字。除法的余数被称作伴随多项式s(x)。通过计算S(x)在α到αn-k的值得出实际的伴随式向量S(x)。然而,从硬件角度来看该方法并非效率最优,一种在硬件中常用的替换方法是直接计算在α到αn-k时接收码字R(x)的值。伴随式生成块410通过计算接收码字R在α到αn-k时的值(即,R(α)至R(αn-k))来计算伴随式S。在里德-所罗门码中,n-k=2t,因而,需要计算2t个伴随式值[S1 S2S3...S(2t)]。这些值通常被并行计算,第一个伴随式生成器计算接收码字在α的值以得到S1,下一个伴随式生成器计算接收码字在α2的值以得到S2,依次类推。
一旦通过伴随式生成模块410计算出伴随式,其值就传输到差错多项式模块420。这里应用伴随式来生成差错位置多项式。该过程包括t个未知数的同步等式。几种适合这些运算的快速算法,包括Berlekamp-Mαssey算法或欧几里得算法。这些算法利用里德-所罗门码的特殊矩阵结构,极大的减少了所需的计算量。
差错多项式模块420将差错位置多项式(一旦已决定)传输到差错位置模块430和差错数量模块440。差错位置模块430计算差错位置多项式的根以确定差错位置。典型地,可使用钱搜索算法,或钱单元实现。差错位置模块430确定的差错位置和先前决定的差错位置多项式被共同传输到差错数量模块440。差错数量模块440通过计算t个未知数的同步等式来确定差错数量。应用在差错数量模块440中的快速和广泛使用的算法是Forney算法。
如果有错的话,计算出的差错位置和差错数量被前向传输到纠错模块450,以恢复纠错的码字。通常将差错位置和差错数量的组合称为差错向量。差错向量和码字大小相同,在与差错对应的位置上包含非零值。所有其它位置包括零。纠错模块450的另一输入是延迟模块460的输出。延迟模块460将获得接收码字,输出具有延迟的相同接收码字。在一个实施例中,纠错模块450通过使用伽罗华域加法器452和LIFO(后入先出)模块454共同实现。通过使用伽罗华域加法器452将接收码字和差错向量相加来纠正接收码字中的差错。使用LIFO模块454是因为差错向量以接收码字的逆序生成,所以LIFO操作必须应用于接收码字或者差错向量,以匹配两个向量的字节顺序。纠错模块450的输出是原始码字的解码器估值。
图5是里德-所罗门解码器实施方式的方框图。输入的接收码字被转送到伴随式生成模块510。一旦通过伴随式生成模块510计算出伴随式S(x),其值传输到欧几里得算法模块520。欧几里得算法处理伴随式S(x)以生成差错位置多项式Λ(x)和差错数量多项式Ω(x)。即,它求解下面的关键等式Λ(x)+[1+S(x)]=Ω(x)mod x21+1等式1在里德-所罗门解码中应用的算法是基于用于寻找两个多项式最大公约数(GCD)的欧几里得算法。欧几里得算法是人们所熟知的迭代多项式除法算法。
一旦计算出差错位置多项式Λ(x),需要计算其根。钱搜索算法用于查找这些根。钱搜索是计算多项式所有可能输入值的高强度算法,然后确定哪个输出为零。如果差错出现在位置i,则下式等于零Σj=0tΛjα-ij=0,]]>其中i=0..(n-1) 等式2钱搜索计算等式2在所有的i和j时的值,并计算使等式为零的值的个数。零的位置就是差错的位置,零的数目是差错码元的数目。
在典型的实施方式中,硬件中执行t+1阶钱搜索。每阶(其中一阶包括一个乘法器,一个复用器和一个寄存器)代表在上面钱搜索等式中对于j取不同的值。搜索运行n个时钟周期(每个时钟周期代表上述等式i取不同的值),检查加法器的输出以确定其结果是否为零。如果结果为零,则零检测模块将输出1,否则输出0。钱搜索模块的输出因此为一个由“0”或“1”组成的n位字符串。每个“1”代表差错码元的位置。
对于第一个时钟周期,复用器将差错位置多项式系数发送到寄存器。对于剩余(n-1)个时钟周期,乘法器输出将通过复用器发送到寄存器。乘法器的指数为负值。然而,这些值可使用模算子预先计算出来。α-1的指数等于(-i模n)=(-j模255)。例如,α-1等于α254,α-2等于α253,依次类推。
Foney算法用于计算差错值Yi。为计算这些值,Foney算法使用差错位置多项式Λ(x)和差错数量多项式Ω(x)。差错值的等式为Yi=Ω(x)Λ,(x),]]>其中x=α-i,α-i是Λ(x)的根 等式3计算Λ′(x)的导数实际非常简单。例如,假定Λ(x)=α4x3+α3x2+αx+α2。因而,Λ′(x)等于Λ′(x)=3α4x2+2α3x+α=(α4+α4+α4)x2+(α3+α3)x+α=α4x2+α 等式4求导是通过取X的奇数幂的系数,并将其分配给X的低阶幂(偶数幂)获得的。
然后,使用同钱搜索中应用的相同类型的硬件和Λ′(x)多项式共同计算Ω(x)多项式。要计算Ω(x),Ω0系数加上系数Ω1乘以α-1,系数Ω2乘以α-2,依次类推直到系数Ωt乘以α-t。然后将这些乘法器的输出结果相加。
分子然后乘以分母的倒数。反转乘法包括查找表,用以搜索分母的倒数。例如,如果分母是α3,则倒数是α-3,可以表示为α-i=α(-1modn)=α(-3mod255)=α252等式5因为钱搜索和Foney算法都需要相同的硬件类型,所以可以在相同模块中合并两个功能,如钱/Forney模块530所示。在实现中,钱搜索的输出有两个加法器。第一加法器将偶数阶的值相加,另一个加法器将奇数阶的值相加。为形成最后的钱搜索输出,将这两个加法器的输出相加,零检测模块检测根的位置。奇数阶的加法器输出用于Forney算法。奇数阶的总和代表Forney等式的分母。该值取倒数,然后乘以根据差错数量多项式计算出的分子的值。输出与零检测输出作与(AND)运算的结果,因为差错的值仅对实际差错位置有效(否则它们应当设置为0)。
因而,钱/Forney模块530使用差错位置多项式和差错数量多项式以生成差错向量,差错向量被转送到纠错模块540。差错向量和码字大小相同,在与差错对应的位置上包含非零值。所有其它位置包含零。纠错模块540的另一输入是延迟模块550的输出。延迟模块550获得接收码字,延迟输出相同的接收码字。在本实施方式中,纠错模块540通过使用伽罗华域加法器544和LIFO模块542共同实现。通过使用伽罗华域加法器544将接收码字和差错向量相加来纠正接收码字中的差错。使用LIFO模块542是因为差错向量以接收码字逆序生成,所以LIFO操作必须应用于接收的码字或者差错向量,以同步两个向量的字节顺序。纠错模块540的输出是原始码字的解码器估计值。
内部解码器组件模块消息发送如前所述,里德-所罗门解码器至少包括四个主要组件或功能模块。它们是伴随式生成器,差错多项式模块,差错位置模块,以及差错数量模块。如果解码器除检错外还纠错,则解码器还包括纠错模块。在现有技术的解码器中,这些模块形成一个“传送管道”,其到一个模块的输入仅取决于前一模块的输出。即,一个模块没有对前一模块的反馈。里德一所罗门解码器在执行特定码字的解码过程时(见图4和图5中的延迟模块),还需要使用存储器或缓冲模块来存储接收到的码字。差错位置/数量模块在执行解码过程中生成差错向量,该差错向量与接收到的码字异或(XOR),接收到的码字被存储在存储器中以形成解码器的输出。典型的,所使用的存储器容量等于一个码字,因此解码器一次仅能够处理一个码字。
图6是根据本发明原理说明内部解码器握手协议的典型实施方式的方框图。内部解码器模块A610和内部解码器模块B620表示在使用模块间反馈或通信的里德-所罗门解码器中的任意两个模块(选自上面描述的功能模块)。解码“传送管道”是数据信道630,表示里德-所罗门解码器功能模块之间的现有技术中的单向信道。另外,本发明同样示出了反馈信道。反馈信道可以认为是功能模块将当前或将来的不活动状态传送到上行或下行功能模块的装置。例如,假定内部解码器模块A610已经完成特定码字的处理功能。内部解码器模块A610将不活动报文发送到内部解码器模块B620中,表明它准备将特定码字的计算结果发送到内部解码器模块B620。因此,这种不活动报文被称做“准备发送”(RTS)报文650。相反地,假定内部解码器模块B620已经完成特定码字的处理功能。内部解码器模块B620将不活动报文发送到内部解码器模块A610,表明准备接收。因此,这种不活动报文被称做“准备接收”(RTR)报文640。
本发明的此种实施方式,通过在功能模块之间的反馈或握手实现的解码器其优势在于允许适合知识产权(IP)内核的用户可配置结构,使用户基于所希望实现的存储器大小来定制解码器性能。
图7是说明里德-所罗门(RS)解码器实施方式中的功能模块之间握手协议的方框图。图4已经充分描述了伴随式生成模块410、差错多项式模块420、差错位置模块430、差错数量模块440、纠错模块450(包括伽罗华域加法器452和LIFO模块454)以及延迟模块460的功能、目的和操作,因此这里不再重复。图7还包括前述的不活动报文(或者握手信号)。处理模块使用握手信号(如,RTS和RTR报文),表明何时发送和/或准备接收数据。因此,伴随式生成模块410和差错多项式模块420能够通过RTS信道710交换RTS报文,或通过RTR信道712交换RTR报文。差错多项式模块420和差错位置模块430能够通过RTS信道718交换RTS报文,或通过RTR信道720交换RTR报文。差错多项式模块420和差错数量模块440能够通过RTS信道724交换RTS报文,或通过RTR信道726交换RTR报文。差错数量模块420和纠错模块450能够通过RTS信道724交换RTS报文,或通过RTR信道726交换RTR报文。伴随式生成模块410通过RTR信道740发送RTR报文来请求下一个接收码字。纠错模块450还通过RTS信道760发送RTS报文到输出处理级。另外,根据本发明的实施方式,有必要向延迟模块460发送任何RTR或RTS报文(通过报文信道750),来合适地调整延迟以便正在检测和校正的接收码字能够和纠错模块450中的差错向量正确同步。
本发明的优点在于,通过使内部解码器功能模块之间进行握手,当功能模块不活动时(即,它完成了最后的工序),功能模块能够请求接收更多数据进行处理。近似的,功能模块能够通知下行功能模块,它已经完成自己的工作程序,可以在下行功能模块能够接收的任何时间发送结果。例如,尽管伴随式生成模块410通常使用固定(已知的)时钟周期数来生成用于接收特定长度码字的伴随式,但是差错多项式模块420是一个执行时间可变化的迭代过程。另外,差错位置模块430和差错数量模块440典型地将采用固定(已知的)时钟周期数,但是如果它确定码字存在着大量差错使其不可纠正,则舍弃有关该码字的随后处理,差错位置模块430和差错数量模块440能够通过合适的RTR信道720,726向差错多项式模块420发送RTR报文来请求开始处理下一码字。因此,差错位置模块430和差错数量模块440也能够采用变化的时钟周期完成。
应当注意,图7说明的本发明实施方式仅仅是在不脱离本发明范围的情况下实现的多个实施方式之一。例如,不需要解码器的每个功能模块发送RTS和RTR报文。而且,作为设计选择,可仅在伴随式生成模块410和差错多项式模块420之间使用握手。其它变化也是可能的。而且,尽管RTS和RTR报文已说明和描述为通过RTS和RTR信道进行通信,但是这种描述仅仅是一种逻辑叙述,报文发送信道可以在与数据信道相分离的一个普通物理层报文信道上引入,或者,报文发送信道可以在与数据信道相同的物理层上引入。
根据本发明原理,用户有通过改变存储器分配大小设置解码器性能。因此,实施方式中将存储器大小分配等同于一个码字将适于硬件和高效功耗设计,但是一次仅能处理一个码字。分配的存储器大于一个码字长度的实施方式能在处理一个码字的同时开始装载第二个码字。分配两个码字大小的存储器实施方式可以同时处理两个码字,依次类推。当然,增加存储器大小相应地导致硬件和功耗的开销增大,但好处是解码处理速度的相应提升和等待时间的降低,因为在特定的时间内可以处理更多的码字。握手信号完全自动处理,以便用户只需要输入解码器应用的存储器大小。通过控制这一单个参数,用户能够根据速度,功耗和大小(门数)定制解码器性能。
图8是根据本发明原理的里德-所罗门(RS)解码器的时序图,说明与使用内部模块握手的解码器相关的效率。时序图810的上半部分说明在没有内部模块握手的典型解码器中所需的时间。在这个方案中,码字1(CW1)的处理过程起始于t0时刻。CW1伴随式在t1时刻生成,结果被传输到差错多项式模块。差错多项式模块在t2时刻完成处理CW1,直到CW1在t4时刻被全部完成。码字2(CW2)的处理因此起始于t4时刻。CW2的单函数顺续处理直到t8时刻,CW2的差错位置和差错数量计算完成。注意在没有内部模块握手时处理两个码字的总时间为(t8-t0)。
时序图820的下半部分说明具有内部模块握手的解码器的处理时间。注意到通过实现容纳三个码字的存储器,解码器能够一次同时处理三个码字。因为每个模块通知先前的模块已经准备好,所以在完成处理时能够接收更多数据,因此获得了效率。在本说明例中,码字3(CW3)的处理完成时刻在t6和t7之间。
纠错解码器中的双钱搜索模块本发明的一个典型实施方式是使用双钱搜索模块来执行纠错处理。应用本发明原理的解码器降低了解码器的延迟和解码器对存储器的需求。
图9是根据本发明原理应用双钱搜索模块的里德-所罗门解码器示例实施方式的方框图。输入是接收码字并被转送到伴随式生成模块910。一旦通过伴随式生成模块910计算出伴随式S(x),则伴随式被转送到欧几里得算法模块920。欧几里得算法用于处理伴随式S(x),以生成差错位置多项式∧(x)和差错数量多项式Ω(x)。
本发明的实施方式中,引入新的钱模块930用于确定码字中的差错数目。一旦计算出差错位置多项式∧(x),钱模块930应用钱搜索算法来计算其根。钱搜索是高强度算法,计算所有可能输入值的多项式,然后确定哪个输出为零。如果差错出现在位置1,则下列等式为零Σj=0tΛjα-ij=0,]]>其中i=0..(n-1)等式6钱模块930计算上述等式在i和j取所有值时的结果,以及计算等式等于零的次数。结果数字为检测出的差错数目。
如前所述,差错多项式必须计算差错位置和差错数量。因为相同类型的硬件需要执行钱搜索和Forney算法,所以两功能可以合并在相同的模块中,如钱/Forney模块940所示。在实现中,在钱搜索的输出使用了两个加法器。第一个加法器将所有偶数阶的值相加,第二个加法器将所有奇数阶的值相加。为生成最终的钱搜索结果,然后将这两个加法器的输出相加,零检测模块检测根的位置。奇数阶的加法器的输出同样应用于Forney算法中。奇数阶的总和表示Forney等式的分母。该总和值反转,然后乘以通过计算差错数量多项式得出的分子值。输出与零检测输出进行与(AND)运算,因为差错值仅在实际出错位置有效(否则他们应该被设置为零)。
因而,钱/Forney模块940使用差错位置多项式和差错数量多项式来生成差错向量,将其转送到纠错模块950。差错向量和码字大小相同,包括在差错对应位置的非零值。所有其它位置包括零。纠错模块950的另一个输入是延迟模块960的输出。延迟模块960输入接收码字,延迟输出相同接收码字。在此实施方式中,使用伽罗华域加法器954和LIFO模块952执行纠错模块950。接收码字中的差错通过将接收码字加在差错向量上,使用Galios域加法器954进行校正。应用LIFO模块952,是因为差错向量是按照接收码字的逆序生成,因此LIFO操作必须应用在接收码字或者差错向量上,以匹配两向量的字节顺序。纠错模块950的输出是原始码字的解码器估计。
里德-所罗门解码器仅能校正到t个差错,其中包含的奇偶字节数目为2t。如果检测到多于t个差错,一般需要将接收码字不加改变不加纠错地发送到解码器输出,因为如果检测出大于t个差错,则码字不可纠正。在现有技术钱/Forney实现中,整个码字必须在确定差错个数之前进行处理。这样,操作需要N个时钟周期,N是码字长度。一旦完成钱/Forney计算,确定差错数目并与t的值比较。如果差错数目小于或等于t,来自钱/Forney模块的差错值与接收码字进行“异或”操作以进行纠错,因而生成最后的解码器输出。然而,如果差错数目多于t个,则接收码字不被改变地被转送作为解码器输出。因此,现有技术的方法需要存储整个接收码字直到钱/Forney模块完成处理。这个方法还引入了等待时间的延迟,因为解码器输出直到模块的全部N个时钟周期完成才能继续被转送。
相比而言本发明此实施方式的码字进行两次钱算法;第一次为确定差错数目,第二次为确定差错位置。因此,当钱模块930检测到差错数目大于阈值t时,接收码字作为解码器输出,释放存储器。相反地,当差错数目小于或等于阈值t时,数据传输到钱/Forney模块以确定实际的差错位置和数量。这种实施方式在结合使用本发明图6至图8的握手时可以得到优化。这种结合使得钱/Forney模块940在钱模块930确定下个码字差错数目的同时计算差错。因而,钱/Forney模块940的输出能够立刻发送并释放对应存储器。
纠错解码器的改进钱搜索单元如前所述,钱/Forney模块接收两个多项式作为输入差错位置和差错数量多项式;并且生成差错向量作为输出。差错向量是代表接收码字中差错值的解码器估计的N字节解码器估计向量。差错向量与接收码字进行异或(XOR)运算,以纠错形成原始码字的解码器估计值。现有技术中应用钱/Foreny模块确定差错向量的解码器产生与码字向量逆序的差错向量。即,在差错向量(或相反,码字)没有被进一步处理的情况下码字和差错向量不能进行异或运算。进一步处理典型地采用LIFO(后入先出)操作的形式处理差错向量或接收码字,其目的在于将输入逆序以便码字和差错向量可以进行异或运算。不过,这将带来N个时钟周期的延迟,其中N为码字中字节数目。另外,某些现有技术使用大于单个码字长度的存储器大小,这样就需要存储器拆分到两个或更多个独立的LIFO时钟中。如此将造成寻址复杂,并将存储器大小限制到码字长度的整数倍。
本发明的实施方式是一种新的钱/Forney单元,它产生与码字正确同步的输出。即,差错向量和码字向量在进行异或运算之前均不需要反转,因此减少了对LIFO模块或其它反转装置的需要。由于不需要延迟N个时钟周期,所以减少了等待的周期。而且,本发明中本实施方式简化了寻址方法(与现有技术相比),除了码字长度整数倍的存储器大小外还支持其它存储器大小。例如,可以使用两倍半于码字长度的存储器,允许解码器处理两个码字的同时加载下一个码字的一部分。
图10是现有技术中典型的钱搜索单元1000(用于钱搜索和钱/Forney模块的基本模块)的方框图表示。钱搜索模块用于计算差错位置多项式,以便找到它的根。根的位置对应于接收码字的出错位置。图10的钱搜索单元用于执行下列等式Xi=Σj=0tΛjα-ij=0,]]>其中i=0..(N-1)等式7计算等式9,码字中在与差错对应的字节位置上得到零值。钱搜索单元1000是用于执行上述等式单阶的硬件结构。每阶处理差错位置多项式的单个系数。因此总共有(t+1)阶(因为差错位置多项式最大阶数为t,t阶的多项式具有(t+1)个系数)。
钱搜索单元1000以迭代形式处理差错位置多项式系数。在第一次迭代中,复用器1020接收与正在处理的码字对应的合适的多项式系数1010,将多项式系数传递给寄存器1030。在后续时钟周期中,寄存器输出首先被传递到乘法器1040,在那里乘以α-j,然后通过复用器1020传送回寄存器进行存储对于总的N个时钟周期执行此过程指数i表示迭代次数,指数j表示钱搜索单元的阶。即,j的值从0增加到t,因此在硬件上总共执行(t+1)个钱搜索单元阶。
说明例中,假定单元代表第二阶(j=1)。因此,在每一个时钟周期中,寄存器输出将乘以α-1,结果存储回寄存器中。该过程产生下列序列λ+λα-1X+(λα-1)α-1X2+((λα-1)α-1)α-1X3+...
其中Xn代表n个时钟周期的延迟通过合并各项,最终序列产生为λ+λα-1X+λα-2X2+λα-3X3+...+λα-(N-1)X(N-1)与这种实施方式相关的问题是,差错位置按照对应码字字节的逆序产生,因此在与码字相加进行校正之前需要通过LIFO模块进行逆序。LIFO模块是包含多个寄存器的硬件存储单元。一旦所有的寄存器都已填充,LIFO模块就发送它的输出。输入的最后一个元素成为输出的第一个元素,依次类推。使用LIFO模块存在两个问题。一个问题是LIFO模块是一个大容量存储单元,其增加了IC的门数和功耗。另一个问题是LIFO模块带来了N个时钟周期的等待时间。该等待时间的发生是因为LIFO模块在最初需要N个时钟周期才能充满,直到最后一个元素读入LIFO,才会有输出。
图11是示意根据本发明原理的改进钱搜索单元1100的方框图,其中存储器需求和延迟都有所下降。本发明中的本实施方式的原理在于使钱搜索模块产生在数学上等同于标准钱搜索所生成的序列,虽然系数以相反顺序生成(此后称做“正常顺序”)。本实施方式执行下列两个等式(等式10和等式11)用于以正常顺序生成差错位置进行码字校正。
Xi=Σj=0tΛjα-j(N-1)=0,]]>其中i=0 等式8Xi=Σj=0tΛjαi,]]>其中i=1..(N-1) 等式9回想图10中的现有技术钱搜索单元1000以迭代方式处理差错位置多项式系数,起始α的指数为0,随着每个时钟周期递减直到该指数减至-j(N-1)。本实施方式中图11的钱搜索单元1100,α的指数值从-j(N-1)并始,随着每个时钟周期递增直到增至0。
因此,在第一个时钟周期,多项式系数1110通过预乘法器1150乘以α-j(N-1)(其中j是阶数),再输入到复用器1120,然后传输到寄存器1130存储。在随后的时钟周期中,寄存器1130的输出被转送到乘法器1140,乘以α1然后通过复用器1120传送回寄存器。
在说明例中,假定单元代表第二阶(j=1)。生成下列序列λα-(N-1)X+(λα-(N-1))αX2+((λα-(N-1)α)α×3+...
合并各项得到λα-(N-1)+λα-(N-2)X+λα-(N-3)×2+...+λα-1XN-2+λXN-1应当注意该序列中生成的系数与图10中标准钱搜索单元1000产生的系数一致,除了它们的顺序相反(如延迟系数的逆序所表示的)。图11的钱搜索单元1100应用额外的伽罗华域乘法器(两个而非1个),但是在硬件实现中是微不足道的。不再需要LIFO模块进行反转以及由于避免填充LIF0所需要的延迟获得的优势和实用性可以抵销为每个钱搜索单元提供额外的Galios域乘法器的不足。
在一个模块内将钱搜索和Forney算法组合是一种通常的设计办法,因为两种算法都需要运行类似的功能。本发明中的本实施方式的原理如结合图11所描述的同样适用于Forney模块单元,因为Forney算法使用非常近似的硬件来处理差错数量多项式。本领域技术人员应当了解本发明原理可以扩展到Forney模块单元和钱/Forney模块单元的设计中。
许多现存系统使用“非定制”集成电路对里德-所罗门码进行编解码。这些IC趋于支持一定数目的可编程性(例如RS(255,k),其中t为1到16个码元)。最近的趋势是VHDL和Verilog设计(逻辑核或知识产权核)。标准IC具有大量优点。逻辑核能够集成在其它VHDL或Verilog组件上,并综合到FPGA(现场可编程门阵列)或ASIC(专用集成电路)-这允许所谓的“片上系统”设计,即,在单个IC上组合多个模块。取决于产量,逻辑核常常比“标准”IC明显降低了系统费用。
尽管本发明描述了硬件实现的情况,但是本发明原理不应被视为受此限制。直到最近,实时软件实现需要大量的计算功能,但是最简单的里德-所罗门码的除外(如码字的值为t)。软件实现里德-所罗门码的主要困难在于通用处理器不支持伽罗华域数学运算。例如,在软件中执行伽罗华域的乘法需要对0测试,两个对数表的查找,模加法(modulo add),反对数表查找。然而,处理器性能的增长以及细心的设计意味着软件实现也能够以相对高的数据率工作。
尽管本发明还已经根据典型的实施方式和/或构成进行了描述,在本发明公开的范围内还可以进一步改进。本申请试图保护使用一般原理的对本发明的任何改变、应用或改进。而且,本申请意图保护落入本发明所属的公知常识以及落入权利要求中的限制范围内的对本发明公开内容的偏离。
权利要求
1.在用于码字的差错检测的解码器中,一种用于计算单个差错位置多项式系数的方法,该系数根据与所述单个差错位置多项式系数对应的单元中的所述码字而生成,所述方法包括步骤接收与所述码字对应的差错位置多项式系数(1110);在与所述码字的处理对应的第一个时钟周期中,通过具有负指数部分(1150)的伽罗华域乘法器乘以所述差错位置多项式系数(1110),其中所述负指数部分是与所述单元对应的阶数(j)和所述码字长度(N)的函数,所述的乘法步骤的结果为单元输出;以及使用具有正指数(1140)的伽罗华域乘法器在随后的N-1个时钟周期内,迭代乘以所述单元输出,其中所述正指数是所述阶数(j)的函数。
2.根据权利要求1的方法,其中所述的单元是钱搜索模块中的钱搜索单元。
3.根据权利要求1的方法,其中所述的单元是Forney算法模块的Forney算法单元。
4.根据权利要求1的方法,其中所述单元是钱/Forney模块中的Forney算法单元。
5.根据权利要求1的方法,其中所述解码器是里德-所罗门解码器。
6.在用于检测码字差错的解码器中,一种用于计算单个差错位置多项式系数的方法,该系数根据与所述单个差错位置多项式系数对应的单元中的所述码字而生成,所述方法的操作通过以下等式的参数进行xi=Σj=0tΛjα-j(N-1)]]>当i=0;xi=Σj=0tΛjαj]]>当i=1,2,...,(N-1);其中,Xi是第i个差错位置的根,t比差错位置多项式对应的系数总个数少1,Λj是第j个差错多项式系数,N是码字长度,α是伽罗华域元素;以及j是与所述单个差错位置多项式系数对应的阶数。
7.一种用于计算单个差错位置多项式系数的设备,所述系数由与所述单个差错位置多项式系数相对应的单元中的码字而产生,所述设备引入用于所述码字的差错检测的解码器,所述设备包括用于接收与所述码字对应的差错位置多项式系数(1110)的装置;通过具有负指数(1150)的伽罗华域乘法器,在与所述码字处理对应的第一个时钟周期中,用于和所述差错位置多项式系数(1110)相乘的装置,其中所述负指数是与所述单元对应的阶数(j)以及所述码字长度(N)的函数,所述的相乘的结果得到单元输出;以及用于通过具有正指数部分(1140)的伽罗华域乘法器在随后的N-1个时钟周期中迭代乘以所述单元输出的装置,其中正指数部分是所述阶数(j)的函数。
8.根据权利要求7的设备,其中所述的单元是钱搜索模块中的钱搜索单元。
9.根据权利要求7的设备,其中所述的单元是Forney算法模块的Forney算法单元。
10.根据权利要求7的设备,其中所述单元是钱/Forney模块中的Forney算法单元。
11.根据权利要求7的设备,其中所述解码器是里德-所罗门解码器。
全文摘要
一种结合了改进的钱搜索单元(1100)的解码器和解码方法,其降低了存储需求和延迟时间。现有技术的钱搜索单元以迭代的方式处理差错位置多项式系数,起始的α指数为“0”,α随着每个时钟周期减小,直到指数减到-j(N-1)。在改进的钱搜索单元(1100)中,α指数起始值为-j(N-1),随着每个时钟周期增至0。因此,在第一个时钟周期期间,多项式系数(1100)通过预乘法器(1150)相乘,转送到复用器(1120),并且发送到寄存器(1130)以便存储。在后续时钟周期内,寄存器(1130)的输出被转送到另一个乘法器(1140),然后通过复用器(1120)发送回寄存器(1130)。
文档编号G06F11/10GK1636324SQ03802640
公开日2005年7月6日 申请日期2003年1月22日 优先权日2002年1月23日
发明者L·R·小利特温, D·韦莱斯 申请人:汤姆森许可公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1