编码和解码数据的方法和装置 技术领域:
本发明涉及编码和解码技术,具体涉及里德-索罗门编码和解码的方法和装置。
背景技术:
里德-索罗门编码技术在本技术领域内是众所周知的。Reed I.S.和Solomon G.首次在工业应用数学学会杂志(Journal of Society ofIndustrial Application Mathematics)8,300-304(1960)上发表了题为“在某些有限域上的多项式码”的论文(Polynomial codes over certain finitefields)。在数据传输期间利用里德-索罗门码可消除接收数据中的差错。编码器是根据伽罗华(Galois)域(下文简称为“GF”)数学设计的,业已在美国专利4,142,174和4,567,594中公开了,这两个公开文本引用在此作为参考。总体上说,里德-索罗门码是由从GF数字号码中的码符号定义的,表示为GF(Q),这里,Q=2b是2的正整数幂。GF具有有限数目的元素。GF(Q)中有Q个元素,它们可由一个特殊元素(α)的0至Q-1的接连幂(α°,α1,…,αQ-1)表示。
本技术领域内众所周知还有许多不同的方法应用里德-索罗门编码器和解码器。在差错校正中应用里德-索罗门码的一种方法是对传输的数据附加一个奇偶校验符号集,名词“符号”表示b个比特,用以组成GF(Q)域一个元素。奇偶校验符号用于检测和校正传输数据中的差错。更具体地说,编码器把消息比特看作是符号块,用以组成GF(Q)的消息多项式,并借助于将消息多项式(X)除以码生成多项式(G)而得到奇偶校验符号。该奇偶校验符号被标识为余数多项式(C)的系数。奇偶校验符号附加到消息符号上以组成码字多项式的系数。选择码生成多项式以将所需地特性赋予码字,以使码字属于一个具体等级的差错校正组的码。在传送期间该码字借助于将奇偶校验符号附加到消息数据上作为尾比特而被传送,接收机利用它们可校正在接收的消息多项式(R)内的差错。
图1示出先有技术的里德-索罗门编码器,它被实施为一个移位寄存器多项式除法电路。如图所示,该移位寄存器在延时单元(D)中初始化为0。在每次迭代期间,第m个数据符号Xm增加最右面延时单元的内容以形成符号Ym。然后,每个延时单元的内容借助于将其左面延时单元的内容与“符号Ym和Gm”之积相加而被更新,这里Gm是码生成多项式的系数,也即G(Z)=G0+G1Z+……+Gk-1Zk-1+Zk。(最左面的延时单元例外,它由乘积G0Ym来更新)。
通过接续地更新移位寄存器直至消息块结束时为止,产生奇偶校验符号。当该消息块的最后一个符号完成迭代时,移位寄存器的内容变为奇偶校验符号,最右面的延时单元含有第一个奇偶校验符号,它将由发射机附加到消息数据上。
迄今,除法处理典型地是由专用硬件(例如,乘法器101、延时电路102和加法器103)执行的,然而,该处理越来越倾向借助于先进的“软”调制解调技术利用微处理器/软件的组合来实施。
虽然软调制解调器具有执行里德-索罗门编码/解码的能力,但问题是先有技术实施需要很多处理能力。在图1所示的编码器中,为每个消息信号需作K次乘法和加法。尽管GF加法是逻辑异或运算,这典型地由微处理器指令集来支持,但GF乘法难以得到支持并且要由多个指令循环来完成。对于高速调制解调器(例如,ADSL调制解调器或缆式调制解调器),里德-索罗门编码器需要处理每秒百万数量级的消息符号。所需的总处理能力或MIPS即使不超出典型微处理器的总处理能力,也将占其能力的极其可观的百分比。其结果是全部调制解调器功能很难由微处理器来完成。即使微处理器能够实现调制解调器功能,但对于主处理或软件调制解调器而言由调制解调器所利用的处理能力也不能再用于其它应用。为此,需要一种编码/解码的方法和装置,它们能够以软调制解调器来实施,而不采用先有技术软调制解调器所需的MIPS。
为解决上述的需求,这里提供一种编码/解码数据的方法和装置。在编码期间,数据符号Xm输入微处理器,微处理器利用标准的里德-索罗门编码技术来计算Ym。具体地说,Ym是通过将消息符号Xm与移位寄存器最右面的延时单元的内容相加而计算出来的。由于Ym作为GF(Q)的一个元素只能对Q取不同的值,因此可预先计算乘积G0Ym,G1Ym,……,Gk-1Ym并存储入查找表中。然后,微处理器应用Ym作为查找表的一个索引,从查找表中获得乘积G0Ym,G1Ym,……,Gk-1Ym,这些乘积用于更新移位寄存器。
在解码操作期间,使用几个查找表。第一个查找表用于减小校正子计算的复杂性,第二个查找表用于减小确定差错定位多项式的根的复杂性,尤其是Chien搜索的复杂性。在计算校正子期间,G0Ym,G1Ym,……,Gk-1Ym的值是以类似于编码器确定G0Ym,G1Ym,……,Gk-1Ym值的方式从第一个查找表中获得的。第二个查找表由一组L个查找表组成,这里L是差错定位多项式的阶。建立这些表可使每个表都包含(Q-1)个元素,这里Q是GF(Q)域的规模大小。如果(Q-1)和m之间的最大公分母GCD(Q-1,m)=1,则第m个查找表将GF元素α-mi存储在位置i处。如果GCD(Q-1,m)≠1,则第m个查找表实际上由J=GCD(Q-1,m)个子表组成,将GF元素α-(mi+j)存储在第j个表的位置i处,这里j=0,1,……,J-1。微处理器根据差错定位多项式中相应的系数使每个查找表的起始地址初始化,然后在几次迭代之后完成Chien搜索,并在每次迭代中微处理器将在与各自起始地址有相同偏差的位置处的所有L表的内容相加起来,并将和值与1相比较,以确定对应于偏差(d)的元素是否是一个根。
由于先有技术需要乘法,而乘法运算与从查找表中获得数值相比则是更复杂的运算,因此微处理器所需的总处理能力或MIPS可得以减小。此外,根据本发明所述的查找表可使微处理器利用其寄存器宽度,所述的寄存器宽度通常是单一指令并行多操作时b的几倍,因此可进一步减小微处理器所需的MIPS。其结果是整个调制解调器功能可由具有处理其它应用能力的微处理器来实现。
本发明包括一种用于编码/解码数据的方法。该方法包括以下步骤:接收数据符号(Xm),计算第一值作为标准的编码/解码技术的一部分,并利用所述的第一值作为查找表的一个索引,从查找表中接收该第一值与多个其它值的多个乘积,该多个乘积用于编码/解码数据。
本发明还包括一种解码数据的方法。该方法包括以下步骤:执行校正子计算以确定在传输数据中是否有差错,根据校正子计算来计算差错定位多项式,以及执行Chien搜索,通过访问多个查找表来为GF(Q)域的Q个元素之中的每个估算一个多项式,以从差错定位多项式中确定差错的位置。
本发明还包括一种编码器/解码器,其中包括:微处理器,用以输出第一值作为标准的编码/解码技术的一部分,和一个第一查找表,将所述的第一值为其输入,并输出该第一值与多个其它值的多个乘积。
附图说明:
图1示出先有技术里德-索罗门编码器的方框图。
图2示出根据本发明优选实施例的里德-索罗门编码器的方框图。
图3示出根据本发明优选实施例如图2所示的查找表的一个代表例子。
图4示出根据本发明的优选实施例如图2所示的里德-索罗门编码器的操作流程图。
图5示出根据本发明优选实施例的里德-索罗门解码所需的步骤流程图。
图6示出根据本发明优选实施例的里德-索罗门解码器的方框图。
图7示出根据本发明优选实施例的GCD(Q-1,m)=1时,GF(Q)的奇印(Chien)搜索查找表的示例图。
图8示出根据本发明优选实施例的GCD(Q-1,m)≠1时,GF(Q)的Chien搜索查找表的示例图。
图9示出根据本发明优选实施例的基于查找表的Chien搜索步骤的流程图。
具体实施方式:
现在,转向附图,图中相同的标号表示相同的组成部分。图2示出根据本发明优选实施例的里德-索罗门编码器200的方框图。编码器200包括一个微处理器201和一个查找表203。在本发明的优选实施例中,微处理器201最好是一种具有很宽的寄存器宽度的微处理器,例如摩托罗拉公司供应的Aitivec能力的PC处理器(128比特寄存器),或是MMX能力的处理器(64比特寄存器),它包括Intel公司供应的pentium处理器和AMD(高级微电路设备公司)供应的K6处理器。在下文的描述中假设处理器的寄存器具有足够的宽度,足以容纳整个移位寄存器。此外,虽然图示的查找表203是独立于微处理器201的,但本发明的优选实施例实际上设在微处理器201内作为内部或外部存储器的一部分。查找表203存储预先计算的乘积G0Y,G1Y,……,Gk-1Y,这里k是码生成多项式的阶,等于奇偶校验符号的个数,Y是GF(Q)域的Q个元素的每一个。为此,对于具有K个奇偶校验符号的GF(Q)中的码来说,查找表203的规模是Q*K。对于Q=256和K=16的典型例子,其规模是总计4KB存储器。
根据本发明优选实施例的编码器200的操作情况如下所述:数据符号Xm由微处理器201接收。微处理器201计算第一值Ym作为标准的编码技术的一部分。具体地说,Ym是利用标准的里德-索罗门编码技术通过将消息符号Xm与一个变量值相加而计算出来的,所述的变量是最右面的延时单元内容。尔后,微处理器201应用第一值Ym作为查找表203的一个索引,获得Ym与多个其它值相乘的多个乘积。具体地说,G0Ym,G1Ym,……,Gk-1Ym是从查找表203返回到微处理器201的。然后,微处理器201用这些返回的值并行地更新移位寄存器的延时单元,以完成数据符号Xm的编码处理。
图3示出根据本发明优选实施例的、图2所示的查找表的一种代表例子。可以明显看出,针对每个GF(Q)元素都对应有G0Y,G1Y,……,Gk-1Y的值,这里Y=0,1,2,……,Q-1。当以Y值访问查找表203时,这些值就输出到微处理器201。在本发明的优选实施例中,查找表203是通过预先计算GmY值并以这些值填充入查找表203中而实现的,具体地说,将存储器组建成为Q个接连的字,而第i个字保存k个乘积,即I*Go,I*G1,……,I*Gk-1。再将这些字划分成宽度为b=log2(Q)比特的K个字段,按照上述次序用一个字段保存K个乘积之中的一个。由于该表对于一个具体码是恒定的,所以它可以存储入只读存储器中。在调制解调器具有几种操作模式并且每种模式可应用不同代码的情况下,还希望一旦确定调制解调器的操作模式就动态地产生该表成为读/写类型的存储器。
在本发明的优选实施例中,只需要查找一个表来获得K个乘法结果G0Ym,G1Ym,……,Gk-1Ym。眼前的益处是为每个消息符号节省了K次乘法运算,由于GF乘法运算是在微处理器上进行大量计算的昂贵的操作,所以与先有技术相比,这显著地减小了微处理器所需的总处理能力或MIPS。其结果是,调制解调器整体功能可以由具有处理其它应用能力的微处理器来实现。此外,K个乘积存储于单一寄存器的事实允许应用单个异或门和移位指令并行地更新所有K个移位寄存器延时单元。另一个益处是一次一个字地访问该表。由于每个字通常是由多个接连的字节组成的,所以可从典型系统所支持的突发存储器访问模式中获得最大利益。
在上述的实施过程中,假设微处理器寄存器的宽度宽得足以容纳整个移位寄存器。若不是这种情况,通过存储部分的移位寄存器运算,仍能得到由给定的寄存器宽度所提供的最大的利益。此外,上文所描述的查找表不仅可应用于里德-索罗门码,而且提供通用的高效MIPS方法,用以对已知类别的码例如循环码(里德-索罗门码是其中的一种)进行编码。
图4示出根据本发明优选实施例的图2所示的里德-索罗门编码器的操作流程图。移位寄存器被实施为该处理器的一个或多个整数的寄存器,该处理器从概念上可被划分成K个字段,每个宽b个比特,每个字段保存一个延时单元的内容。该逻辑流程在步骤401开始,该步骤令微处理器初始化移位寄存器使其全部为零。然后进入处理消息数据的循环。在步骤402微处理器201接收即将传送的数据符号(Xm)。在步骤403微处理器201根据Xm计算Ym的值。接着在步骤405微处理器201应用Ym作为查找表203的一个索引来访问查找表203,从查找表203中得到G0Ym,G1Ym,……,Gk-1Ym的值。然后在步骤407处理器通过使移位寄存器的内容与查找表的输出进行异或运算和使移位寄存器向右移位b比特,以更新该移位寄存器。在步骤408微处理器201确定是否已处理该数据块的最后一个消息符号。如果是“否”,则重复步骤402-408,否则,微处理器在步骤409输出该尾比特。在本发明的优选实施例中,尾比特被产生,如上所述它是输出的该移位寄存器的最后的内容。
里德-索罗门解码在几个步骤中发生,如图5所示。在步骤501计算校正子多项式。如本技术领域的普通技术人员所知道的,校正子多项式其系数被定义为接收的多项式,是对码生成多项式的根进行估算而得出的。在步骤502借助于确定是否校正子=0来判断在传送数据中是否存在差错。如果校正子为非零值就表明在接收数据中存在差错,就在步骤504计算差错定位多项式,并在步骤506根据差错定位多项式来确定差错的位置。最后在步骤508应用佛尼(Forney)算法根据差错定位多项式来确定差错量。
以上四个步骤之中的步骤1和3典型是基于微处理器的解码器的最精细的计算步骤。步骤1涉及整个接收消息多项式并且不管接收块是否有差错都是必要的。步骤3的典型算法涉及搜索GF(Q)域的所有Q个元素,相反,步骤2和4涉及校正子和差错定位多项式,其阶数通常比接收消息多项式的阶数或GF(Q)域的规模要小得多。
为了减小解码里德-索罗门编码数据所需的MIPS量,解码器600使用几个查找表,图6示出根据本发明优选实施例的解码器600的方框图。
第一查找表(查找表603)用于减小步骤1的复杂性。它的应用方式与编码器200的查找表203相似。在计算校正子期间,解码器600将接收的信息符号(Rm)认作是将要传送的消息符号(Xm)并据此产生第二尾比特集。本技术领域的技术人员知道计算校正子可以是将该第二尾比特集与接收尾比特相加。在计算第二尾比特集期间,按照与编码器确定G0Ym,G1Ym,……,Gk-1Ym相同的方式从查找表603中获得G0Ym,G1Ym,……,Gk-1Ym的值。具体地说,微处理器601利用标准的里德-索罗门编码技术计算Ym,也即如上所述的使信息符号Rm与最右面移位寄存器的内容相加,然后应用Ym作为查找表603的一个索引,查找表603返回G0Ym,G1Ym, ……,Gk-1Ym。
第二查找表605用来减小步骤3的复杂性。差错位置对应于差错定位多项式的根,λ(z)=1+λ1z+λ2z2+……+λLzL。寻找GF多项式根的一种公知算法是应用Chien搜索。在Chien搜索过程中,对于GF(Q)域的Q个元素之中的每个都简单估算该多项式以确定是否是一个根。显然由于第L阶多项式需要估算Q次,因此Chien搜索的直接前向运算要耗费许多处理能力。使用查找表605可以加速处理。查找表605实际上是由一组L个查找表607-611组成的,在Chien搜索期间被应用。
组建查找表607-611可使每个表内都含有(Q-1)个元素,其中Q是GF(Q)域的规模。如果在(Q-1)与m之间的最大公分母(GCD(Q-1,m))等于1,则第m个查找表在位置i处存储GF元素α-mi。也就是说,如果(Q-1)与m互为素数,则第m个查找表在位置i处存储GF元素α-mi。图7示出这种情况。请注意,α-m(i+Q-1)α-mi,也即如此构成的查找表是周期性的,周期为Q-1并且图7示出该查找表的单个周期。
如果GCD(Q-1,m)不等于1,则第m个查找表实际上含有(GCD(Q-1,m))个子表,存储GF元素α-(mi+j),其中j=0,1,……,GCD(Q-1,m)-1。由于α-(m(i+v)+j)=α-(mi+j),所以每个子表是周期性的,周期为V=(Q-1)/GCD(Q-1,m)。图8示出每个子表的单个周期。所有查找表都具有起始于任何位置i的特性,该表在接连的位置处存储{Tum:u=α0,α-1,α-2,…},式中T是位置i处的内容。此外,每个表或一个子表集含有GF(Q)中每个非零元素。
在Chien搜索期间,微处理器601在α-0,α-1,α-2,α-3等位置处依此顺序地估算差错定位多项式。为便于应用查找表,微处理器601在初始化阶段就为L个查找表之中的每一个确定起始地址。为第m个查找表作此事借助在查找表中确定其内容为λm的位置,λm是差错定位多项式中zm的系数。在查找表是一个子表集的情况下,微处理器601首先选择一个子表并确定已选表的起始地址。然后,微处理器601在几次迭代后来完成Chien搜索。在每次迭代时,微处理器601将从各自的起始地址(由上述的程序所确定的)来的、在具有相同偏移(d)的位置处的所有L个表的内容相加。由于查找表的特性,该和值变为S(d)=λ1u+λ2u2+……+λLuL|u=α-d=λ(α-d)-1,式中L是差错定位多项式的阶。也就是说,对于偏移d的和值是差错定位多项式对于元素α-d的值与1之差值。为此,微处理器通过将S(d)与1相比较来确定α-d是否是一个根。然后,微处理器使偏移增量以准备下一次迭代。如果微处理器的寄存器宽度为B,则微处理器在每次迭代和偏移增量B符号时可以计算B个接连的和值。据此,查找表的好处是用单个异或指令取代了2B次乘法运算。
由于0(α0)的偏移对应于最后接收符号的差错位置,所以1(α-1)的偏移对应于倒数第二个接收元符号为差错位置,依此类推。在对应于最先接收符号的元素业已检查之后,搜索可以停止,因为业已查完所有可能发生差错的位置。这对于缩短的里德-索罗门码提供另一种减小复杂性的途径。如本技术领域所公知的,缩短的里德-索罗门码等效于具有Q-1符号块规模的原始的里德-索罗门码(包括奇偶校验符号),其最初的几个符号强制为0值(解码器先验地已知此事)并且不被传送。由于通过读出接连的位置来访问查找表,所以可从大多数处理器所支持的突发存储器模式中获得最大的益处。
图9示出根据本发明优选实施例的、基于查找表的Chien搜索步骤流程图,在初始化步骤902微处理器601为差错定位多项式的L个系数之中的每个所关联的查找表确定起始地址,并将偏移(d)设定为0,然后微处理器601在几次迭代之后完成Chien搜索。在步骤904微处理器601在每次迭代后将离初始化阶段所确定的起始地址偏移(d)处的所有L个查找表的内容相加。然后,在步骤906微处理器601将步骤904所获得的B个和值与B个1相比较。对于等于1的每个B的和值,微处理器断定与该和值相关联的GF(Q)元素是差错定位多项式的一个根。在步骤908微处理器使偏移(d)增量B。在步骤910微处理器确定是否已检查所有可能的差错位置,如果没有检查完,则重复迭代步骤904-910。在微处理器检查所有可能的差错位置之后,该处理在步骤912结束。
由于差错定位多项式的阶(L)不能超过K/2,所以需要建立K/2个查找表来处理具有K个奇偶校验符号的里德-索罗门码。如上所述,查找表和子表都是周期性的,因此只要应用循环寻址来访问各表,也即将地址以查找表/子表的周期为模而围着查找表/子表的终端卷绕,它们的规模将是一个周期。作为Q=256和K=16的一个典型例子,所有K/2个表的总存储量为(Q-1)*K/2=2040字节,小于2KB。对于具有循环寻址能力的微处理器而言,可存储每个表的单个周期。对于其它微处理器而言,MIPS可能消耗于以软件来实施循环查找表。在这种情况下,存储GCD(Q-1,m)+1个周期。这里不发生地址的围转卷绕,可以应用线性寻址来对各表确定索引。
在本发明的另一个实施例中,建立了一个附加表,具有Q-1个0输入项,该表为差错定位多项式入m(为0)的系数所使用。
上文参照附图描述了本发明的具体细节,这并不意味着限制本发明的范围。例如,虽然本发明的优选实施例在里德-索罗门编码/解码期间应用查找表,但本技术领域的普通技术人员知道查找表也可以应用于其它形式的编码/解码。发明人的意图是在不偏离开本发明的精神和范的条件下可对本发明作出各种修改,并且所有这样的修改都在后附的权利要求书的范围之内。