一种低硬件复杂度的RS译码器
技术领域
本发明涉及通信信道编码译码技术领域,更具体地,涉及一种低硬件复杂度的RS译码器。
背景技术
RS码是一类具有很强纠错能力的非二进制的BCH(Bose ChaudhuriHocquenghem)码,它是由里德(Reed)和索洛蒙(Solomon)在1960年应用MS(Mattson-Solomon)多项式构造出来的。RS码能够有效地纠正随机符号错误和随机突发错误,是最常见的信道编码方案之一,被广泛应用于各种通信和数据存储系统中以便进行差错控制。
RS码是基于有限域GF(2m)进行构造的,也就是RS码中的每个符号都是GF(2m)中的元素,符号之间的运算操作按照有限域运算法则进行。一般使用RS(n,n-2t)来表示一种RS码,n表示编码后的符号个数,n-2t表示编码前的信息符号数,t表示能纠的错误符号个数。
传统的RS译码器如图1所示,一般包括下面五个步骤:
(1)根据接收到的码字多项式来计算伴随式;
(2)根据伴随式采用BM算法或者Euclid算法来计算出错误位置多项式;
(3)利用钱搜索来求出错误位置多项式的根,由此确定错误位置;
(4)利用福尼算法求出在错误位置上对应的错误值;
(5)利用已知的错误位置和相应的错误值纠正接收到的码字中的错误。
因此,传统的RS译码器包括:同步FIFO、伴随式多项式计算模块、错误位置多项式计算模块、钱搜索模块、福尼算法模块和码字纠错模块。由于BM算法中存在有限域的求逆运算,Euclid算法中存在多项式的除法运算,这两种运算均会消耗大量的硬件资源而且运算速度慢,不能满足现代无线通信系统低成本或者高速率的要求,对传统的RS译码器进行改进与优化显得尤为重要。
发明内容
针对以上的不足,本发明的目的是提供一种低硬件复杂度的RS译码器,对传统的RS译码器进行改进与优化,从而降低RS译码器的硬件复杂度,进一步减少芯片的面积和功耗,降低成本。
为了实现这一目的,本发明提供了一种低硬件复杂度的RS译码器,包括:
同步FIFO,用于存储接收到的码字;
伴随式多项式计算/钱搜索多功能模块,通过接收到的码字利用Horner准则计算出伴随式多项式的系数,并用于时分实现钱搜索功能,确定错误位置;
错误位置多项式/错误估值多项式计算模块,根据伴随式多项式的系数通过分解的无逆Berlekamp-Massey(DiBM)算法迭代计算错误位置多项式的系数,并根据伴随式多项式以及错误位置多项式时分实现错误估值多项式的计算;
错误值计算模块,采用福尼算法计算错误位置上的错误值;
码字纠错模块,用于根据错误位置及错误值,纠正同步FIFO中对应的码字。
更进一步的,伴随式多项式计算/钱搜索多功能模块包括t个第一计算单元和t个第二计算单元,其中第一计算单元的结构如下,包括:
第一多路复用器M1,第一多路复用器M1的三个输入分别为接收到的码字rp、0和Λq,其中Λq是错误位置多项式/错误估值多项式计算模块输出的错误位置多项式系数,其输出则送入第一有限域加法器;p为0到n-1中的数字,q为1到t中的数字;
第一有限域乘法器,第一有限域乘法器的两个输入分别为αq和第二多路复用器M2的输出,其输出则送入第一有限域加法器;
第一有限域加法器,第一有限域加法器的两个输入分别为第一多路复用器M1的输出和第一有限域乘法器的输出,其输出则送入D1寄存器;
第二多路复用器M2,第二多路复用器M2的两个输入分别为0和D1寄存器的输出,其输出则送入第一有限域乘法器;
D1寄存器,D1寄存器的输入为第一有限域加法器的输出,而其输出则送入第二有限域加法器;
第三多路复用器M3,第三多路复用器M3的两个输入分别为0和上一个第一计算单元中第二有限域加法器的输出,其输出则送入第二有限域加法器;
第二有限域加法器,第二有限域加法器的两个输入分别为D1寄存器的输出和第三多路复用器M3的输出,其输出则送入下一个第一计算单元中第二多路复用器M2;
第二计算单元的结构如下,包括:
第四多路复用器M4,其两个输入分别为接收到的码字rp和0,其输出则送入第三有限域加法器;
第二有限域乘法器,其两个输入分别为αm和第五多路复用器M5的输出,其输出则送入第三有限域加法器;m为t+1到2t的数字;
第三有限域加法器,其两个输入分别为第四多路复用器M4的输出和第二有限域乘法器的输出,其输出则送入D2寄存器;
第五多路复用器M5,其两个输入分别为0和D2寄存器的输出,其输出则送入第二有限域乘法器;
D2寄存器,其输入为第三有限域加法器的输出,其输出则送入第五多路复用器M5;
n表示译码器的输入符号个数,t表示译码器的能纠的错误符号个数。
更进一步的,错误位置多项式/错误估值多项式计算模块具体包括:
多个多路复用器,用于选择对应的输入来计算错误位置多项式或错误估值多项式;
多组寄存器,用于存储DiBM算法迭代过程中的各类数值以及伴随式多项式的前t个系数;
3个有限域乘法器,用于DiBM算法迭代过程中的乘法运算、错误估值多项式计算中错误位置多项式与伴随式多项式的系数的乘法运算以及错误位置多项式和错误估值多项式求错误值过程中的乘法运算;
2个有限域加法器,用于DiBM算法迭代过程中的加法运算以及错误估值多项式计算中错误位置多项式与伴随式多项式的系数的乘积的加法运算。
更进一步的,多个多路复用器包括:
第六多路复用器M6,其两个输入分别为伴随式多项式的系数Sk-j+3和第十五多路复用器M15的输出,其输出则送入第三有限域乘法器;k为0到2t-1的数字,j为0到t的数字;
第七多路复用器M7,其t-1个输入分别为D4寄存器的输出和DiBM算法迭代完成后的错误位置多项式Λ(x)的系数Λ2,Λ3,…,Λt-1,其输出则送入第三有限域乘法器;
第八多路复用器M8,其两个输入分别为Λ(x)的t+1个系数寄存器的输出和T(x)的t+1个系数寄存器的输出,其输出则送入T(x)的t+1个系数寄存器;
第九多路复用器M9,其两个输入分别为D3寄存器的输出和第五有限域加法器的输出,其输出则送入第四有限域加法器;
第十多路复用器M10,其两个输入分别为DiBM算法迭代完成后的错误位置多项式Λ(x)的系数Λ1和T(x)的t+1个系数寄存器的输出,其输出则送入第四有限域乘法器;
第十一多路复用器M11,其两个输入分别为存储St,…,S2,S1的t个线性移位寄存器中的第二个寄存器的输出和D5寄存器的输出,其输出则送入第四有限域乘法器;
第十二多路复用器M12,其三个输入分别为错误位置多项式Λ(x)的形式导数Λ′(x)的逆1/Λ′(αp)、DiBM算法迭代完成后的错误位置多项式Λ(x)的系数Λ0和Λ(x)的t+1个系数寄存器的输出,其输出则送入第五有限域乘法器;
第十三多路复用器M13,其三个输入分别为错误估值多项式Ω(x)的值Ω(αp)、存储St、…、S2、S1的t个线性移位寄存器中的第一个寄存器的输出和D6寄存器的输出,其输出则送入第五有限域乘法器;
第十四多路复用器M14,其两个输入分别为D5寄存器的输出和D6寄存器的输出,其输出则送入D6寄存器;
第十五多路复用器M15,其t-2个输入分别为存储St,…,S2,S1的t个线性移位寄存器中的第三个寄存器至第t个寄存器的输出,其输出则送入第六多路复用器M6;
多组寄存器包括:
Λ(x)的t+1个系数寄存器,其输入为D4寄存器的输出,其输出则送入第八多路复用器M8和第十二多路复用器M12;用于存储DiBM算法迭代过程中错误位置多项式Λ(x)的系数;
T(x)的t+1个系数寄存器,其输入为第八多路复用器M8的输出,其输出则送入第八多路复用器M8和第十多路复用器M10;用于存储DiBM算法迭代过程中辅助多项式T(x)的系数;
存储St,…,S2,S1的t个线性移位寄存器,其输入为伴随式多项式计算/钱搜索多功能模块输出的伴随式S1,S2,…,St,其输出则送入第十一多路复用器M11、第十三多路复用器M13和第十五多路复用器M15;用于存储移位串行输入的S1,S2,…,St;
D3寄存器,其输入为第四有限域加法器的输出,其输出则送入第九多路复用器M9;用于存储DiBM算法迭代过程中第k次迭代过程中多项式增量Δ(k+1)的部分和
D4寄存器,其输入为第五有限域加法器的输出,其输出则送入Λ(x)的t+1个系数寄存器和第七多路复用器M7;用于存储DiBM算法迭代过程中第k次迭代中错误位置多项式Λ(k)(x)的系数
D5寄存器,其输入为第四有限域加法器的输出,其输出则送入第十一多路复用器M11和第十四多路复用器M14;用于存储DiBM算法迭代过程中第k-1次迭代过程中的多项式增量Δ(k)。
D6寄存器,其输入为第十四多路复用器M14的输出,其输出则送入第十三多路复用器M13和第十四多路复用器M14;用于保持或更新DiBM算法迭代过程中的多项式增量。
D7寄存器,其输入为第四有限域加法器的输出,其输出则为错误估值多项式Ω(x)的系数Ω0,Ω1,…,Ωt-1;用于缓存错误估值多项式Ω(x)的系数;
D8寄存器,其输入为第五有限域乘法器的输出,其输出则为错误值;用于缓存错误位置上的错误值;
3个有限域乘法器包括:
第三有限域乘法器,其两个输入分别为第六多路复用器M6的输出和第七多路复用器M7的输出,其输出则送入第四有限域加法器;
第四有限域乘法器,其两个输入分别为第十多路复用器M10的输出和第十一多路复用器M11的输出,其输出则送入第五有限域加法器;
第五有限域乘法器,其两个输入分别为第十二多路复用器M12的输出和第十三多路复用器M13的输出,其输出则送入第五有限域加法器;
2个有限域加法器包括:
第四有限域加法器,其两个输入分别为第九多路复用器M9的输出和第三有限域乘法器的输出,其输出则送入D3寄存器、D5寄存器和D7寄存器;
第五有限域加法器,其两个输入分别为第四有限域乘法器的输出和第五有限域乘法器的输出,其输出则送入D4寄存器和第九多路复用器M9。
更进一步的,当伴随式多项式计算/钱搜索多功能模块实现伴随式多项式的计算时,完成以下操作:第一多路复用器M1选择rp作为输入,第二多路复用器M2选择D1寄存器的输出作为输入,第三多路复用器M3选择0作为输入,第四复用器M4选择rp作为输入,第五复用器M5选择D2寄存器的输出作为输入,进行迭代计算:设每个时钟周期输入一个接收到的码字rp,计算伴随式往往采用Horner准则:
Sl=((…(rn-1al+rn-2)al+rn-3)al+…+r1)al+r0,l=1,2,…,2t,
则D1寄存器与D2寄存器中的值经第一有限域乘法器乘以αl后再通过第一有限域加法器与rp进行相加,相加的结果存入到D1寄存器与D2寄存器中,重复上述过程,直到r0输入后,这时D1寄存器与D2寄存器中的值即为伴随式多项式各项的系数。
6、根据权利要求2的低硬件复杂度的RS译码器,其特征在于,当伴随式多项式计算/钱搜索多功能模块实现钱搜索功能时,完成以下操作:先通过第一多路复用器M1把Λq系数存入D1寄存器,然后选择第一多路复用器M1的输入为0,第二多路复用器M2选择D1寄存器的输出作为输入,第三多路复用器M3选择上一个第一计算单元中的第二有限域加法器的输出作为输入,每个时钟周期不断迭代乘以αq,当错误指示为1时,即找到错误位置。
7、根据权利要求3的低硬件复杂度的RS译码器,其特征在于,错误位置多项式/错误估值多项式计算模块在进行错误估值多项式的计算时,完成以下操作:存储St,…,S2,S1的t个线性移位寄存器初始化为0,第十三多路复用器M13选择存储St,…,S2,S1的t个线性移位寄存器中的第一个寄存器的输出作为输入,第十二多路复用器M12选择错误位置多项式Λ(x)的系数Λ0作为输入,第十一多路复用器M11选择存储St,…,S2,S1的t个线性移位寄存器中的第二个寄存器的输出作为输入,第十多路复用器M10选择错误位置多项式Λ(x)的系数Λ1作为输入,第九多路复用器M9选择第五有限域加法器的输出作为输入,第七多路复用器M7选择错误位置多项式Λ(x)的系数Λ2作为输入,第六多路复用器M6选择第十五多路复用器M15的输出作为输入,第十五多路复用器M15选择存储St,…,S2,S1的t个线性移位寄存器中的第三个寄存器的输出作为输入;然后每t-2个时钟周期逐项移入一个伴随式多项式的系数Sl,移入Sl后的t-3个时钟周期里第十五多路复用器M15每个时钟周期选择存储St,…,S2,S1的t个线性移位寄存器中的下一个寄存器的输出作为输入,即由第四个到第t个,第七多路复用器M7每个时钟周期选择错误位置多项式Λ(x)的下一位系数作为输入,即由Λ3到Λt-1,第九多路复用器M9则选择D3寄存器的输出作为输入,t-3个时钟周期后完成错误估值多项式Ω(x)中的一个系数的计算;重复上述过程,当S1、S2、…、St全部输入完毕,便可完成错误估值多项式Ω(x)中的t个系数Ω0、Ω1、…、Ωt-1的计算,Ω0、Ω1、…、Ωt-1将依次由D7寄存器输出。
本发明由于采用了上述技术方案,具有这样的有益效果:
(1)伴随式多项式计算/钱搜索多功能模块使用同样的硬件通过时分复用的方法完成了伴随式多项式系数的计算以及钱搜索的功能,显著地节省了硬件资源;
(2)在错误位置多项式/错误估值多项式计算模块中,采用DiBM算法迭代求解错误位置多项式时消除了求逆运算,与iBM算法相比,大量减少了有限域乘法器,降低了硬件复杂度,并且利用DiBM算法中的有限域乘法器时分实现了错误估值多项式的计算,即只使用了3个有限域乘法器便完成了错误位置多项式与错误估值多项式的计算,明显地降低了译码器芯片的面积与功耗。
附图说明
图1为传统的RS译码器的结构框图。
图2为本发明的低硬件复杂度的RS译码器的结构框图。
图3为本发明的伴随式多项式计算/钱搜索多功能模块的电路结构示意图。
图4为伴随式多项式计算/钱搜索多功能模块中的第一计算单元的结构示意图。
图5为伴随式多项式计算/钱搜索多功能模块中的第二计算单元的结构示意图。
图6为iBM算法的流程图。
图7为DiBM算法迭代过程中Λ(k)(x)与Δ(k+1)的数据更新示意图。
图8为错误位置多项式/错误估值多项式计算模块的电路结构示意图。
图9为计算1/Λ′(αp)的电路结构框图。
图10为计算Ω(αp)的电路结构框图。
具体实施方式
下面结合附图对本发明的具体实施方式进一步说明:
本发明所述的低硬件复杂度的RS译码器的结构框图如图2所示,包括同步FIFO、伴随式多项式计算/钱搜索多功能模块、错误位置多项式/错误估值多项式计算模块、福尼算法模块和码字纠错模块。其中,伴随式多项式计算/钱搜索多功能模块使用同样的硬件通过时分复用的方法完成了伴随式多项式系数的计算以及钱搜索的功能,显著地节省了硬件资源;在错误位置多项式/错误估值多项式计算模块中,采用DiBM算法迭代求解错误位置多项式时消除了求逆运算,与iBM算法相比,大量减少了有限域乘法器,降低了硬件复杂度,并且利用DiBM算法中的有限域乘法器时分实现了错误估值多项式的计算,即只使用了3个有限域乘法器便完成了错误位置多项式与错误估值多项式的计算,明显地降低了译码器芯片的面积与功耗。
设接收到的码字多项式为:
R(x)=rn-1xn-1+rn-2xn-2+…+r1x+r0 (1)
则伴随式多项式的系数的计算公式为:
采用Horner准则计算Sl可以通过嵌套的乘累加运算来实现,同时使得钱搜索与伴随式多项式的计算能够使用同一个电路结构,对该电路结构进行时分复用即可降低硬件资源的使用,Horner准则计算Sl如式(3)所示:
Sl=((…(rn-1al+rn-2)al+rn-3)al+…+r1)al+r0,l=1,2,…,2t (3)
由此可得伴随式多项式计算/钱搜索多功能模块的电路结构示意图如图3所示,而每个第一计算单元的结构示意图如图4所示,每个第二计算单元的结构示意图如图5所示。伴随式多项式计算/钱搜索多功能模块的工作原理如下:当计算伴随式多项式时,第一多路复用器M1选择rp作为输入,第二多路复用器M2选择D1寄存器的输出作为输入,第三多路复用器M3选择0作为输入,第四复用器M4选择rp作为输入,第五复用器M5选择D2寄存器的输出作为输入,进行迭代计算:设每个时钟周期输入一个接收到的码字rp,计算伴随式根据以下的Horner准则:Sl=((…(rn-1al+rn-2)al+rn-3)al+…+r1)al+r0,l=1,2,…,2t,那么D1寄存器与D2寄存器中的值经由第一有限域乘法器乘以αl后再通过第一有限域加法器与rp进行相加,相加的结果存入到D1寄存器与D2寄存器中,一直重复上述过程,直到r0输入后,这时D1寄存器与D2寄存器中的值即为伴随式多项式各项的系数,其中D1寄存器中的值为S1,S2,…,St,D2寄存器中的值为St+1,St+2,…,S2t。当实现钱搜索功能时,则完成以下操作:先通过第一多路复用器M1把Λq系数存入D1寄存器,然后选择第一多路复用器M1的输入为0,第二多路复用器M2选择D1寄存器的输出作为输入,第三多路复用器M3选择上一个第一计算单元中的第二有限域加法器的输出作为输入,每个时钟周期不断迭代乘以αq,当错误指示为1时,即找到错误位置,实现了钱搜索的功能。
为了求解错误位置多项式,本发明采用分解形式的iBM算法,该算法与一般的BM算法相比消除了求逆运算,从而简化了电路结构,除此之外,该算法与iBM算法相比,减少了大量的有限域乘法器,而有限域乘法器的个数往往是RS译码算法中衡量其硬件复杂度的一个重要参数,一般的iBM算法需要3t+2个有限域乘法器,而DiBM算法只需要3个有限域乘法器即可完成错误位置多项式的计算,更加进一步地降低了硬件复杂度。
错误位置多项式/错误估值多项式计算模块是通过伴随式多项式计算/钱搜索多功能模块输出的2t个伴随式来计算错误位置多项式的,而iBM算法的流程图如图6所示,由图6可知在iBM算法中使用式(4)来计算Δ(k+1):
在iBM算法中使用式(5)来计算Λ(k)(x),如下所示:
Λ(k)(x)=δ·Λ(k-1)(x)+Δ(k)T(k-1)(x)x (5)
iBM算法共需要2t次迭代,DiBM算法将每一次迭代分解至t+1个时钟周期进行,因此DiBM算法迭代完成所需的时钟周期为2t(t+1)个,结合式(4)和式(5),将Λ(k)(x)和Δ(k+1)分解至t+1个时钟周期,可表示为:
式(6)的是指Λ(k)(x)的系数,是T(k-1)(x)的系数,式(7)中的则是第k次迭代过程中计算Δ(k+1)的部分和。两条式子表明在一个时钟周期内只需要3个有限域乘法器来分别计算 和与iBM算法相比,通过减少大量的有限域乘法器从而降低硬件复杂度。
要完成DiBM算法,伴随式的输入要满足一定的要求。DiBM算法中每次迭代过程中计算Δ(k)所需要的伴随式都不一样,具体情况如表1所示。
表1DiBM算法中计算Δ(k)输入的伴随式
由式(6)与式(7)知道计算Δ(k+1)需要Λ(k)(x)的系数,所以Λ(k)(x)比Δ(k+1)早一个时钟周期计算得到,Λ(k)(x)是在第k次迭代中j=t时完成,而Δ(k+1)是在第k+1次迭代中j=0时完成,也就是:
Λ(k)(x)与Δ(k+1)的数据分解情况如表2所示。
表2Λ(k)(x)与Δ(k+1)的数据分解情况表
依据表2可以得到图7,对表2和图7进行分析可知,在第k次迭代中j=0的时钟周期内,得到Δ(k),同时Λ(k)(x)的最低幂次的系数则由第k-1次迭代中产生的δ与相乘得到,由Δ(k)与第k-1次迭代中得到的δ、Λ(k-1)(x)以及T(k-1)(x)则可以在余下的t个时钟周期计算Λ(k)(x)余下的t个系数,第j个时钟周期的则由当前时刻输入的伴随式Sk-j+3与第j-1个时钟周期计算得到的相乘,再与第j-1个时钟周期计算得到的相加得到。
由DiBM算法可以求得错误位置多项式Λ(x),而错误估值多项式Ω(x)的计算公式如下:
Ω(x)=S(x)Λ(x)(mod x2t)(9)
=Ω0+Ω1x+…+Ωt-1xt-1
而伴随式多项式S(x)、错误位置多项式Λ(x)和错误估值多项式Ω(x)三者之间系数的关系满足:
根据DiBM求解错误位置多项式Λ(x)以及由式(10)求解错误估值多项式Ω(x),为进一步降低硬件资源的使用,可以对DiBM算法中使用的有限域乘法器进行时分复用,因此本发明采用如图8所示的错误位置多项式/错误估值多项式计算模块的电路结构框图来时分实现错误位置多项式与错误估值多项式的计算。
错误位置多项式/错误估值多项式计算模块的工作原理如下:当使用DiBM算法计算错误位置多项式时,Λ(x)的t+1个系数寄存器与T(x)的t+1个系数寄存器均初始化为(1,0,…,0),D6寄存器初始化为1,其余寄存器初始化为0,第六多路复用器M6选择伴随式多项式的系数Sk-j+3作为输入,第七多路复用器M7选择D4寄存器的输出作为输入,第八多路复用器M8根据控制信号:如果Δ(k)=0或者2L(k-1)≥k+1则选择T(x)的t+1个系数寄存器的输出作为输入,否则选择Λ(x)的t+1个系数寄存器的输出作为输入,第九多路复用器M9选择D3寄存器的输出作为输入,第十多路复用器M10选择T(x)的t+1个系数寄存器的输出作为输入,第十一多路复用器M11选择D5寄存器的输出作为输入,第十二多路复用器M12选择Λ(x)的t+1个系数寄存器的输出作为输入,第十三多路复用器M13选择D6寄存器的输出作为输入,第十四多路复用器M14根据控制信号:如果Δ(k)=0或者2L(k-1)≥k+1则选择D6寄存器的输出作为输入,否则选择D5寄存器的输出作为输入,伴随式多项式的系数全部输入完毕后的t+1个时钟周期里错误位置多项式Λ(x)的t+1个系数逐个计算完毕,并存储在Λ(x)的t+1个系数寄存器里。
使用DiBM算法对错误位置多项式计算完毕后,便可以开始计算错误估值多项式。错误位置多项式/错误估值多项式计算模块在进行错误估值多项式的计算时,完成以下操作:存储St,…,S2,S1的t个线性移位寄存器初始化为0,第十三多路复用器M13选择存储St,…,S2,S1的t个线性移位寄存器中的第一个寄存器的输出作为输入,第十二多路复用器M12选择错误位置多项式Λ(x)的系数Λ0作为输入,第十一多路复用器M11选择存储St,…,S2,S1的t个线性移位寄存器中的第二个寄存器的输出作为输入,第十多路复用器M10选择错误位置多项式Λ(x)的系数Λ1作为输入,第九多路复用器M9选择第五有限域加法器的输出作为输入,第七多路复用器M7选择错误位置多项式Λ(x)的系数Λ2作为输入,第六多路复用器M6选择第十五多路复用器M15的输出作为输入,第十五多路复用器M15选择存储St,…,S2,S1的t个线性移位寄存器中的第三个寄存器的输出作为输入;然后每t-2个时钟周期逐项移入一个伴随式多项式的系数Sl,移入Sl后的t-3个时钟周期里第十五多路复用器M15每个时钟周期选择存储St,…,S2,S1的t个线性移位寄存器中的下一个寄存器的输出作为输入,即由第四个到第t个,第七多路复用器M7每个时钟周期选择错误位置多项式Λ(x)的下一位系数作为输入,即由Λ3到Λt-1,第九多路复用器M9则选择D3寄存器的输出作为输入,t-3个时钟周期后完成错误估值多项式Ω(x)中的一个系数的计算;重复上述过程,当S1,S2,…,St全部输入完毕,便可完成错误估值多项式Ω(x)中的t个系数Ω0,Ω1,…,Ωt-1的计算,Ω0,Ω1,…,Ωt-1将依次由D7寄存器输出。
为了更进一步地降低硬件复杂度,在完成错误估值多项式Ω(x)的计算之后,利用福尼算法求错误值需要一个有限域乘法器,对错误位置多项式/错误估值多项式计算模块中的第五有限域乘法器进行时分复用即可满足要求。计算错误值时,第十二多路复用器M12选择错误位置多项式Λ(x)的形式导数Λ′(x)的逆1/Λ′(αp)作为输入,第十三多路复用器M13选择错误估值多项式Ω(x)的值Ω(αp)作为输入,错误值将由D8寄存器进行输出。1/Λ′(αp)与Ω(αp)的计算电路分别如图9和图10所示,图9中的m是指不大于t的最大的奇数。
在本发明中,当使用如图2所示的RS译码器,并且当所述伴随式多项式计算/钱搜索多功能模块的结构如图3所示,所述错误位置多项式/错误估值多项式计算模块的结构如图8所示时,该RS译码器的译码过程如下所述:
(1)计算伴随式多项式:将接收到的码字多项式R(x)逐项输入到伴随式多项式计算/钱搜索多功能模块,并同时存储到同步FIFO,当所有接收到的码字均输入完毕后,存储在D1寄存器和D2寄存器中的值就是伴随式多项式的各项系数。判断伴随式多项式的各项系数是否为0,如果全部为0,说明接收到的码字多项式R(x)没有错误,直接输出接收到的码字,译码结束。否则进入第(2)步。
(2)计算错误位置多项式:将伴随式多项式的系数Sl按照DiBM算法的输入要求输入到错误位置多项式/错误估值多项式计算模块,采用DiBM算法完成错误位置多项式的计算,并将错误位置多项式的各个系数存储到Λ(x)的t+1个系数寄存器,进入第(3)步。
(3)计算错误估值多项式:每t-2个时钟周期逐项移入一个伴随式多项式的系数Sl,每移入一个Sl即可完成错误估值多项式Ω(x)中的一个系数的计算,当S1,S2,…,St全部输入完毕,便可完成错误估值多项式Ω(x)中的t个系数Ω0,Ω1,…,Ωt-1的计算。
(4)钱搜索与福尼算法:通过伴随式多项式计算/钱搜索多功能模块实现钱搜索,确定错误位置,并通过福尼算法模块计算错误位置上对应的错误值,同时对错误指示为1的错误位置个数进行计数。
(5)码字纠错:当伴随式多项式计算/钱搜索多功能模块输出的错误指示为1时,将从同步FIFO中读出的码字与福尼算法中求得的错误值进行有限域加法运算,即可得到正确的码字,直到钱搜索将所有的码字位置都检验完毕,译码结束。如果错误位置的个数与错误位置多项式的最高阶次不同,说明接收到的码字多项式R(x)中有多于t个符号的错误,不能实现正确纠错,给出超出可纠范围的指示。
以上所述仅为本发明的较佳实施方式,本发明并不局限于上述实施方式,在实施过程中可能存在局部微小的结构改动,如果对本发明的各种改动或变型不脱离本发明的精神和范围,且属于本发明的权利要求和等同技术范围之内,则本发明也意图包含这些改动和变型。