一种里德-所罗门编码译码器及其译码的方法
技术领域
本发明涉及通讯领域,尤其涉及一种RS(Reed-Solomon Coder,里德-所罗门编码)译码器及译码方法。
背景技术
RS码是一类具有很强纠错能力的BCH(Broad Cast Channel,广播信道)码,也是一类典型的代数几何码,它首先由Reed(里德)和Solomon(索罗蒙)于1960年构造出来。在一般的应用中,RS码可以作为单码单独使用,而在信道条件极为恶劣的应用中,如移动通信、卫星通信等具有多径衰落特性的信道中,也可以作为外码提供纠错能力更强的串行级联码,这样在不增加很高的编译码复杂度的情况下,可以得到高的编码增益和与长码相同的纠错能力,最常见的一种结构就是将RS码作为外码,卷积码作内码的级联码。
如图1所示,示出了现有技术中根据BM迭代算法实现里德-所罗门编码的译码工作流程,该流程包括:
步骤S101中,求伴随多项式系数。在RS译码系统在接收到码字之后,由接收到的码组计算2t(对于RS(n,k)译码,t=(n-k)/2)个伴随多项式系数。
步骤S102中,由BM算法迭代得出错误位置以及错误值多项式系数。利用求得的2t个系数通过BM迭代算法分别求得错误位置多项式以及错误值多项式的系数,两个多项式的最高次幂都为t。
步骤S103中,由错误位置多项式搜索错误位置。对码字的错误位置进行搜索,即将代表码字位置的所有值代入错误位置多项式,如果错误位置多项式结果为0则表示该位置为误码位置。
步骤S104中,由错误值多项式计算错误位置对应的错误值。在找到了误码位置之后计算错误位置对应的错误值。
步骤S105中,最后对错误码字进行纠错。上述RS译码过程的关键在于步骤S102中求解错误位置多项式以及错误值多项式系数,对于这部分1966年伯利坎普(Berlekamp)提出了可以由伴随式计算错误位置多项式的迭代译码算法,这极大地加快了求解错误位置多项式的速度,该方法简单且易于实现,从而从工程上解决了RS译码的问题,1969年梅西(Massey)指出了该算法与序列的最短线性移位寄存器综合之间的关系,并进行了简化,因此,此译码算法就称为BM(Berlekamp Massey,伯利坎普-梅西)迭代译码算法。
由于上述的BM迭代算法中存在有限域的求逆运算,且求逆运算消耗大量的硬件资源运算速度慢,若将其应用在BM迭代运算中会引起较大的关键路径延迟,故后来发展了无求逆运算的IBM算法,该算法相当于在原有的所有多项式系数迭代的结果上同时乘上相同的系数,这一结果在不影响后续的由错误位置多项式搜索错误位置以及计算错误位置对应的错误值和误码纠错的基础上改善了译码系统的性能。IBM(Inverse-free Berlekamp Massey,无求逆运算的伯利坎普-梅西)算法就是利用错误位置多项式、错误值多项式以及伴随多项式满足的恒等式进行迭代的过程,在计算得到伴随多项式系数之后,设定初始的错误位置以及错误值多项式系数开始迭代,之后在每一次迭代的过程中都要先计算错误位置以及错误值多项式的增加量,再根据该增加量是否为0产生相应的控制信号,控制错误位置以及错误值多项式系数的更新,在每次迭代的过程中都使得错误位置以及错误值多项式的系数满足恒等式,且保证每一次迭代后多项式的最高次数不减,这样经过一定的迭代次数之后,就可以得到最高次幂满足要求且符合恒等式的错误位置以及错误值多项式的系数。
由于传统的RS译码器是根据图1所示的流程进行译码的,其整个RS译码系统的关键在于BM迭代求错误位置,以及错误值这一环节。所以对该环节的实现方案,成为影响整个RS译码性能的关键。由于经典的BM迭代算法中需要复杂的有限域求逆运算,而且有限域的求逆运算消耗硬件资源且运算速度慢,对系统的关键路径时延有很大的影响。不能满足较高的系统运行频率的需要。
综上可知,现有的里德-所罗门编码译码技术,在实际使用上,显然存在不便与缺陷,所以有必要加以改进。
发明内容
针对上述的缺陷,本发明的目的在于提供一种里德-所罗门编码译码器,以实现在较高运行频率的系统下进行里德-所罗门编码译码。
为了实现上述目的,本发明提供一种里德-所罗门编码译码器,包括:
伴随多项式系数计算模块,用于接收需要译码的码字,并计算伴随多项式系数;
缓存模块,用于缓存接收到的需要译码的码字;
错误位置及误码值计算模块,用于确定错误位置以及计算误码值;
纠错模块,用于根据所述错误位置以及误码值,纠错所述缓存模块中对应的码字。
根据本发明提供的里德-所罗门编码译码器,所述错误位置及误码值计算模块包括:
IBM算法求错误位置多项式系数模块,用于接收所述伴随多项式系数计算模块的伴随多项式系数的输入,计算错误位置多项式系数;
IBM算法求错误值多项式系数模块,用于接收所述伴随多项式系数计算模块的伴随多项式系数的输入,计算错误值多项式系数;
搜索错误位置以及计算误码值模块,用于错误位置的搜索,以及相应误码值的计算。
根据本发明提供的里德-所罗门编码译码器,所述IBM算法求错误位置多项式系数模块,或者IBM算法求错误值多项式系数模块包括:
多组寄存器,用于存储IBM迭代算法过程中的各类数值;
第一组延迟电路,通过所述多组寄存器的第一寄存器与第二组延迟电路连接,包括依次顺序连接的一个乘法器和一个多输入加法器;
第二组延迟电路,通过所述多组寄存器的第一寄存器与第一组延迟电路连接,包括依次顺序连接的一个乘法器和一个多输入加法器,和/或另一乘法器;
控制电路,与所述多组寄存器的第一寄存器连接,用于根据所述第一寄存器输出的值产生控制信号,以控制所述多组寄存器数值的更新。
根据本发明提供的里德-所罗门编码译码器,所述多组寄存器包括:
t+1个移位寄存器,与第一组延迟电路的一个乘法器连接,用于移位串行输入伴随式多项式系数;
t个辅助寄存器,与第二组延迟电路的至少一个乘法器连接,用于存储IBM迭代算法过程中求错误位置多项式系数的中间结果;或者用于存储IBM迭代算法过程中求错误值多项式系数的中间结果;
t+1个系数寄存器,其两端分别与第一组延迟电路和第二组延迟电路的一个乘法器连接,用于寄存错误位置多项式系数,或者错误值多项式系数;
第一寄存器,其一端与第一组延迟电路的一个多输入加法器连接,另一端分别与第二组延迟电路的至少一个乘法器、第二寄存器、外围控制电路连接;用于缓存每一次里德-所罗门编码译码器进行IBM迭代的一个时钟周期后,IBM迭代计算得到的多项式增量;以及
第二寄存器,其一端与第二延迟电路的至少一个乘法器连接,另一端与第一寄存器连接,用于保持或更新所述里德-所罗门编码译码器的多项式增量;
其中,t=(n-k)/2;n代表码长,k代表信息位个数。
根据本发明提供的里德-所罗门编码译码器,当所述多项式增量为0或不满足辅助寄存器更新条件时,所述控制电路产生信号仅使t个辅助寄存器完成串行右移操作;否则,所述控制电路产生信号使t+1个系数寄存器与t个辅助寄存器更新。
为了实现上述另一发明目的,本发明提供了一种利用本发明提供的里德-所罗门编码译码器实现译码的方法,包括:
伴随多项式系数计算模块接收需要译码的码字,并计算伴随多项式系数;
缓存模块接收到的需要译码的码字并对其进行缓存;
错误位置及误码值计算模块确定错误位置以及计算误码值;
纠错模块根据所述错误位置以及误码值,纠错所述缓存模块中对应的码字。
根据利用本发明提供的里德-所罗门编码译码器实现译码的方法,所述错误位置及误码值计算模块确定错误位置以及计算误码值的步骤包括:
IBM算法求错误位置多项式系数模块接收所述伴随多项式系数计算模块的伴随多项式系数的输入,计算错误位置多项式系数;
IBM算法求错误值多项式系数模块接收所述伴随多项式系数计算模块的伴随多项式系数的输入,计算错误值多项式系数;
搜索错误位置以及计算误码值模块进行错误位置的搜索,以及相应误码值的计算。
根据利用本发明提供的里德-所罗门编码译码器实现译码的方法,所述IBM算法求错误位置多项式系数模块接收所述伴随多项式系数计算模块的伴随多项式系数的输入,计算错误位置多项式系数的步骤;或者,IBM算法求错误值多项式系数模块接收所述伴随多项式系数计算模块的伴随多项式系数的输入,计算错误值多项式系数的步骤;包括:
(1)对里德-所罗门编码译码器电路进行初始化;
(2)在每一次里德-所罗门编码译码器进行IBM迭代的第一个时钟周期,所述t+1个移位寄存器将移位串行输入伴随多项式系数;
(3)t+1个移位寄存器中的伴随多项式系数通过第一组延迟电路的一个乘法器与t+1个系数寄存器中的数值相乘,以及通过第一组延迟电路的一个多输入的加法器相加,获得多项式增量,并存入所述第一寄存器中;
(4)当每一次里德-所罗门编码译码器进行迭代的第二个时钟周期来临时,根据所述第一寄存器中的多项式增量,控制电路产生相应的控制信号,对t个辅助寄存器、t+1个移位寄存器、以及t+1个系数寄存器进行更新。
根据利用本发明提供的里德-所罗门编码译码器实现译码的方法,所述步骤(1)包括:
(11)初始化t+1个移位寄存器中的伴随多项式系数、t+1个系数寄存器中的数值、以及t个辅助寄存器中的数值;并且将所述第二寄存器中的初始值初始化为1;
所述步骤(4)包括:
(41)当每一次里德-所罗门编码译码器进行迭代的第二个时钟周期来临时,根据所述第一寄存器中的多项式增量,控制电路产生相应的控制信号:
当多项式增量不等于0时,且满足t个辅助寄存器更新的条件时,控制电路产生控制信号,由此时的t+1个系数寄存器中的值对t个辅助寄存器进行更新,而t+1个系数寄存器中的值也通过第二组延迟电路中的一个加法器进行输出更新;
当多项式增量等于0时,对t个辅助寄存器中的值进行串行右移操作,且最低位填0,同时t+1个系数寄存器中的值通过第二组延迟电路的一个加法器进行输出进行更新。
根据利用本发明提供的里德-所罗门编码译码器实现译码的方法,所述利用里德-所罗门编码译码器实现译码的过程中,IBM迭代重复完成2t次IBM迭代,获得错误位置多项式系数值,或者错误值多项式系数值;其中t=(n-k)/2;n代表码长,k代表信息位个数。
本发明根据IBM迭代算法,提供实现IBM迭代算法的电路。该电路可以用来进行RS译码过程中的错误位置多项式系数,以及错误值多项式系数的计算,由于采用IBM迭代算法,其无有限域的求逆运算,所以对硬件资源的消耗较低,并且运算速度快,对系统的关键路径时延无影响。能够实现在较高运行频率系统下进行里德-所罗门编码译码。
附图说明
图1是现有技术中根据BM迭代算法实现里德-所罗门编码的译码工作流程图;
图2是本发明根据IBM迭代算法提供的里德-所罗门编码的译码器的结构示意图;
图3是本发明一个实施例中根据IBM迭代算法提供的里德-所罗门编码的译码器的结构示意图;
图4A~图4B是本发明一个实施例中的IBM算法求错误位置多项式系数模块和IBM算法求错误值多项式系数模块结构示意图:
图5是本发明一个实施例中的IBM算法求错误位置多项式系数模块和IBM算法求错误值多项式系数模块的结构示意图,
图6是利用本发明所提供的里德-所罗门编码译码器实现译码的方法流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的基本思想是:根据IBM迭代算法,提供实现IBM迭代算法的电路,以实现在较高频率系统中的RS译码。
图2是本发明根据IBM迭代算法提供的里德-所罗门编码的译码器的结构示意图;该里德-所罗门编码的译码器2包括了:
伴随多项式系数计算模块21,用于接收需要译码的码字,并计算伴随多项式系数;
缓存模块22,用于缓存接收到的需要译码的码字;
错误位置及误码值计算模块23,用于确定错误位置以及计算误码值;
纠错模块24,用于根据所述错误位置以及误码值,纠错所述缓存模块中对应的码字。在本发明中,将里德-所罗门编码的译码器2设置为上述四个模块组成,以利用IBM迭代算法实现RS译码。
图3是本发明一个实施例中根据IBM迭代算法提供的里德-所罗门编码的译码器的结构示意图;在该实施例中,所述里德-所罗门编码译码器2中所述错误位置及误码值计算模块23包括:
IBM算法求错误位置多项式系数模块231,用于接收所述伴随多项式系数计算模块21的伴随多项式系数的输入,计算错误位置多项式系数;
IBM算法求错误值多项式系数模块232,用于接收所述伴随多项式系数计算模块21的伴随多项式系数的输入,计算错误值多项式系数;
搜索错误位置以及计算误码值模块233,用于错误位置的搜索,以及相应误码值的计算。在本发明一个实施例中,其IBM算法求错误位置多项式系数模块231和IBM算法求错误值多项式系数模块232,可以设计为一个模块,用同等的电路实现其功能,以计算出所输入码字的错误值多项式系数和错误值多项式系数。
图4A~图4B是本发明一个实施例中IBM算法求错误位置多项式系数模块和IBM算法求错误值多项式系数模块结构示意图,IBM算法求错误位置多项式系数模块231和IBM算法求错误值多项式系数模块232包括:
多组寄存器2311,用于存储IBM迭代算法过程中的各类数值;在整个译码过程中,需要产生多类数值。包括伴随多项式系数、错误值多项式系数、错误位置多项式系数等。本发明中的多组寄存器2311用于对这样数值进行存储。
第一组延迟电路2312,通过所述多组寄存器2311的第一寄存器23114与第二组延迟电路2313连接,包括依次顺序连接的一个乘法器23121和一个多输入加法器23122;
第二组延迟电路2313,通过所述多组寄存器2311的第一寄存器23114与第一组延迟电路2312连接,包括依次顺序连接的一个乘法器23131和一个多输入加法器23132,和/或另一乘法器23133;
控制电路2114,与所述多组寄存器2311的第一寄存器23114连接,用于根据所述第一寄存器23114输出的值产生控制信号,以控制所述多组寄存器2311数值的更新。
图5是本发明一个实施例中的IBM算法求错误位置多项式系数模块和IBM算法求错误值多项式系数模块的结构示意图,其中所述多组寄存器2311包括:
t+1个移位寄存器23111,与第一组延迟电路2312的一个乘法器23121连接,用于移位串行输入伴随式多项式系数;
t个辅助寄存器23112,与第二组延迟电路2313的至少一个乘法器23133连接,用于存储IBM迭代算法过程中求错误位置多项式系数的中间结果;或者用于存储IBM迭代算法过程中求错误值多项式系数的中间结果;
t+1个系数寄存器23113,其两端分别与第一组延迟电路2312和第二组延迟电路2313的一个乘法器(23121,23131)连接,用于寄存错误位置多项式系数,或者错误值多项式系数;由于该电路可以实用求错误位置多项式系数和错误值多项式系数;因此,该t+1个系数寄存器23113可以存储上述两种系数。
第一寄存器23114,其一端与第一组延迟电路2312的一个多输入加法器23122连接,另一端分别与第二组延迟电路2313的至少一个乘法器23131、第二寄存器23115、控制电路2314连接;用于缓存每一次里德-所罗门编码译码器2进行IBM迭代的一个时钟周期后,IBM迭代计算得到的多项式增量;以及
第二寄存器23115,其一端与第二延迟电路2313的至少一个乘法器23131连接,另一端与第一寄存器23114连接,用于保持或更新所述里德-所罗门编码译码器2的多项式增量;其中,t=(n-k)/2;n代表码长,k代表信息位个数。
在本发明的一个实施例中,当所述多项式增量为0或不满足辅助寄存器23112更新条件时,所述控制电路2314产生信号仅使t个辅助寄存器23112完成串行右移操作;否则,所述控制电路2314产生信号使t+1个系数寄存器23113与t个辅助寄存器23112更新。
如图5所示,在本发明的一个实施例中,由于错误位置多项式σ(x)的最大阶数为t(对于RS(n,k)译码,t=(n-k)/2),因此需要t+1个系数寄存器23113(σ0、σ1、…σt)存储多项式σ(x)从常数项到最高次幂的系数。同时,为了完成IBM算法还需要t个辅助寄存器23112(B0到Bt-1)存储迭代过程中错误位置多项式σ(x)系数的中间结果。另外,还需要t+1个移位寄存器23111(R0到Rt)来串行输入伴随多项式的系数S1到S2t。在每一次IBM迭代运算的第一个时钟周期,依次将从S1到S2t中的一个系数移入移位寄存器组23111的R0到Rt,此时R0到Rt中的值与系数寄存器23112的σ0、σ1、…σt中数值通过乘法器23121相乘,结果经过一个多输入的加法器23122,计算得到了多项式增量Dj,该增量存入第一寄存器23114。
之后在每次迭代的第二个时钟到来时,将多项式增量Dj从第一寄存器23114中输出,此时控制电路2314根据Dj的值进行判断产生控制信号,当Dj不等于0,且满足更新t个辅助寄存器23112(B0到Bt-1)的条件时,控制电路2314产生控制信号,由此时的σ0、σ1、…σt中的值对t个辅助寄存器23112(B0到Bt-1)进行更新。而同时σ0、σ1、…σt中的值也通过相应的加法器23132的输出进行更新;否则,对t个辅助寄存器23112 (B0到Bt-1)进行串行右移操作,且最低位填0,同时σ0、σ1、…σt中的值保持不变。
在本发明的另外一个实施例中,以错误位置多项式系数σt完成一次更新为例进行分析,σt系数寄存器经由乘法器23121与移位寄存器23111中的数值相乘,计算结果经由多输入加法器23122获得多项式增量Dj,再经过乘法器23131或23133相乘,相乘的结果通过两输入加法器23132送回σt寄存器进行系数的更新。
可见,在该路径上包含两个乘法器(23121、23131或23133)一个多输入的加法器23122和一个两输入的加法器23115,其路径的延迟比较长。但由于本发明在此关键路径上插入了第一寄存器23114,将路径的延迟分成了两个部分,一部分延迟包含一个多输入加法器23122,以及一个乘法器23121;另一部分延迟包含一个乘法器23131或23133,以及一个两输入的加法器23132。由于多输入的加法器23122的延迟大于两输入的加法器23132,故使得整个IBM实现电路的关键路径变成了一个多输入加法器23122和一个乘法器23121延迟的组合。这样,使得该电路可以在较高的系统频率下,实现对RS编码码字的译码。
在本发明中,根据相关协议规定要求,系统支持RS(240,224)、RS(240,192)、RS(240,176)三种译码模式,且要求RS译码器至少可以运行到100MHz的系统频率。如果按照传统的RS译码中的BM算法进行设计,系统运行的最高频率达不到要求,而本发明采用IBM算法,可以在较高的系统运行频率下实现RS译码。
图6是利用本发明所提供的里德-所罗门编码译码器实现译码的方法流程图,其中,步骤S601和步骤S602没有先后次序之分,该流程包括如下步骤:
在步骤S601中,伴随多项式系数计算模块21接收需要译码的码字,并计算伴随多项式系数。在本发明的一个实施例中,如系统进行RS(240,224)译码时,首先由伴随多项式系数计算模块21利用输入码字进行伴随多项式系数的计算。而当计算得到16(此时t=(240-224)/2=8)个伴随多项式的系数S1到S2t之后,便将这16个伴随多项式系数从S1到S2t移位输入到IBM算法求错误位置多项式系数模块231,以及IBM算法求错误值多项式系数模块232中。
在步骤S602中,缓存模块22接收到的需要译码的码字并对其进行缓存;缓存模块22将输入码字依次保存到缓存模块22中。
在步骤S603中,错误位置及误码值计算模块23确定错误位置以及计算误码值。
在步骤S604中,纠错模块24根据所述错误位置以及误码值,纠错所述缓存模块22中对应的码字。
在本发明的一个实施例中,所述步骤S603包括以下步骤:IBM算法求错误位置多项式系数模块231接收所述伴随多项式系数计算模块21的伴随多项式系数的输入,计算错误位置多项式系数;IBM算法求错误值多项式系数模块232接收所述伴随多项式系数计算模块21的伴随多项式系数的输入,计算错误值多项式系数;搜索错误位置以及计算误码值模块24进行错误位置的搜索,以及相应误码值的计算。
在本发明的另一实施例中,所述IBM算法求错误位置多项式系数模块231接收所述伴随多项式系数计算模块21的伴随多项式系数的输入,计算错误位置多项式系数的步骤;或者,IBM算法求错误值多项式系数模块232接收所述伴随多项式系数计算模块21的伴随多项式系数的输入,计算错误值多项式系数的步骤;包括:
(1)对里德-所罗门编码译码器2电路进行初始化;译码装置在进行译码之前,需要上电初试化。
(2)在每一次里德-所罗门编码译码器2进行IBM迭代的第一个时钟周期,所述t+1个移位寄存器23111将移位串行输入伴随多项式系数;RS译码每次迭代需要两个周期的系统时钟,即每两个系统时钟将一个伴随多项式系数S1到S16从左到右依次移位到t+1个移位寄存器23111(R0,R1,…Rt)中,在第一个系统时钟内R0到Rt中的值与t+1个系数寄存器23113(σ0、σ1、…σt)中的值通过乘法器23121相乘,结果经过一个多输入的加法器23122计算,便可以得到了多项式增量Dj,该多项式增量存入第一寄存器23114。
(3)t+1个移位寄存器23111中的伴随多项式系数通过第一组延迟电路2312的一个乘法器23121与t+1个系数寄存器23113中的数值相乘,以及通过第一组延迟电路2312的一个多输入的加法器23122相加,获得多项式增量Dj,并存入所述第一寄存器23114中;
(4)当每一次里德-所罗门编码译码器2进行迭代的第二个时钟周期来临时,根据所述第一寄存器23114中的多项式增量,控制电路2314产生相应的控制信号,对t个辅助寄存器23112、t+1个移位寄存器23111、以及t+1个系数寄存器23113进行更新。
在本发明的另一实施例中,所述步骤(1)包括:
(11)初始化t+1个移位寄存器2311中的伴随多项式系数、t+1个系数寄存器中的数值、以及t个辅助寄存器23121中的数值;并且将所述第二寄存器23115中的初始值初始化为1。
在本发明的一个实施例中,如图5所示,首先电路进行初始化,t+1个移位寄存器23111(R0到Rt)中的内容初始化为(R0,R1,…Rt)=(S1,0,…,0),同时t+1个系数寄存器23113(σ0、σ1、…σt)和t个辅助寄存器(B0到Bt-1)中的内容初始化为(σ0,σ1,…σt)=(1,0,…,0)和(R0,R1,…Rt)=(S1,0,…,0),第二寄存器23115(γ)中的内容初始化为1。
所述步骤(4)包括:
(41)当每一次里德-所罗门编码译码器2进行迭代的第二个时钟周期来临时,根据所述第一寄存器23114中的多项式增量,控制电路2314产生相应的控制信号:
当多项式增量不等于0时,且满足t个辅助寄存器23112更新的条件时,控制电路2314产生控制信号,由此时的t+1个系数寄存器23113中的值对t个辅助寄存器23112进行更新,而t+1个系数寄存器23113中的值也通过第二组延迟电路2313中的一个加法器23132进行输出更新;
当多项式增量等于0时,对t个辅助寄存器23112中的值进行串行右移操作,且最低位填0,同时t+1个系数寄存器23113中的值通过第二组延迟电路2313的一个加法器23132进行输出进行更新。
在每次迭代的第二个时钟到来时,将多项式增量Dj从第一寄存器23114中输出,此时控制电路2314根据Dj的值进行判断产生控制信号,当Dj不等于0,且满足更新t个辅助寄存器23112(B0到Bt-1)的条件时,控制电路23114产生控制信号,由此时的σ0、σ1、…σt中的值对t个辅助寄存器23112(B0到Bt-1)进行更新。而同时σ0、σ1、…σt中的值也通过相应的加法器23132的输出进行更新,否则,对t个辅助寄存器23112(B0到Bt-1)进行右移操作,且最低位填0,同时σ0、σ1、…σt中的值通过相应的加法器23121的输出进行更新。在上述的两个时钟周期内,该电路完成了一次迭代操作。
在上述多个实施例中,所述利用里德-所罗门编码译码器2实现译码的过程中,IBM迭代重复完成2t次IBM迭代,获得错误位置多项式系数值,或者错误值多项式系数值;其中t=(n-k)/2;n代表码长,k代表信息位个数。
这个过程在控制电路的控制下重复进行,直到迭代重复完成16次(算法规定迭代2t次,此时t=(240-224)/2=8),此时IBM迭代算法终止,t+1个系数寄存器23113(σ0、σ1、…、σt)中的数值即为所求的错误位置多项式系数值,或者错误值多项式系数值。
在IBM迭代结束之后便可以由IBM算法求错误位置多项式系数模块231和IBM算法求错误值多项式系数模块232将得到的错误位置多项式系数,以及错误值多项式系数输出给搜索错误位置以及计算误码值模块233,进行错误位置的搜索以及错误位置相应误码值的计算,当每检测完一个位置是否有错以及计算完相应的错误值之后,就由纠错模块24对存储在缓存模块22中的相应的输入码字进行纠错,并输出相应的译码后的码字,当对所有码字纠错完毕之后,便完成整个RS译码操作。
上述的方案完全可以用于RS译码系统设计中,且可以以FPGA(FieldProgrammable Gate Array,现场可编程门阵列)硬件实现,做到了译码的实时处理。上述提供了详细的实施例描述,以使得本领域的任何技术人员可以使用或利用本发明。本发明不仅适用于这里所示的实施例,而且适用于不同模式以及对系统运行频率要求较高的RS译码系统的设计。
综上所述,本发明根据IBM迭代算法,提供实现IBM迭代算法的电路。该电路可以用来进行RS译码过程中的错误位置多项式系数,以及错误值多项式系数的计算,由于采用IBM迭代算法,其无有限域的求逆运算,所以对硬件资源的消耗较低,并且运算速度快,对系统的关键路径时延无影响。能够实现在较高运行频率系统下进行里德-所罗门编码译码。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。