一种Reed-Solomon码解码器的制作方法

文档序号:7510971阅读:451来源:国知局
专利名称:一种Reed-Solomon码解码器的制作方法
技术领域
本发明涉及数字光纤通信,具体涉及一种里德-索罗门Reed-Solomon(简称RS)码解码器。
背景技术
在目前的数字光纤通信系统中,前向纠错技术得到了广泛的应用。在光纤通信系统中,FEC首先应用于海缆通信系统。ITU-T于1996年颁布的G.975建议采用了FEC功能作为海缆通信标准的一部分,在2000年4月通过的新草案中,新增了10Gbit/s系统的FEC功能作为选项。由于带宽瓶颈已经由骨干网转移到接入部分,FTTx技术正在日益成为通信网中的热点技术。FTTH所采用的技术中,无源光网络(PON)技术是最有潜力的一种技术。目前PON技术中,最有吸引力的两种技术是以太网无源光网络(EPON)和1Gbps以上工作速率吉比特无源光网络(GPON)。EPON使用广泛采用的以太网技术作为链路层协议,符合业务IP化的发展趋势。GPON是一个运营商驱动的标准,速率更高,能有效的支持时分复用(TDM)业务和服务质量保证(QOS),具有很强的运行、管理、维护功能(OAM),具有更高的传输效率。随着FTTx的发展,GPON技术正在得到越来越多的关注。在GPON的标准ITU-T G.984.3中,采用RS(255,239)编码的FEC技术。
在通信系统中前向纠错编码(FEC),用一种编码格式发送数据,通常被使用在传送层中。通过在编码时引进一些冗余码,使解码器能够检测并纠正发送的错误。如果解码器输入数据的BER为10-4,那么解码器输出的BER将减小到10-15。通过使用FEC技术,就能够实现低误码率发送数据,从而避免使用重传机制。
Reed-Solomon(RS)是一种块编码,如图1所示,在发送端使用RS编码器11和在接收端使用RS解码器12能实现低误码率传送,RS编码使用一种常数大小的数据块,并在末尾加上一些冗余字节,数据块加上冗余字节就构成了一个码字。通过这些冗余码,FEC解码器在处理数据流的时候就能检测、纠正错误并恢复原始数据。Reed-Solomon码在ITU-T Rec.J.8中有详细规定。最常用的RS码是RS(255,239)。这种码的码字长255个字节,由239字节的数据加上16字节的冗余码构成。RS(255,239)在ITU-T Recs G.975和G.709均有使用。当FEC使用了块编码,如RS(255,239),原始的数据被保留了下来,也就是码字的前239个字节。因此,即使出现了另一端并不支持FEC的情况,忽略掉校验码也同样可以处理原始数据。
RS码的解码器一般由以下四部分组成(参见文献H.Lee,A High-SpeedLow-Complexity Reed-Solomon Decoder for Optical Communications,[J]IEEETrans.Circuit Syst.-IIExpress briefs,vol.52,no.8,pp461-465,Aug 2005)(1)伴随式计算模块(SC)(2)关键方程求解模块,一般采用在硬件中便于实现的改进的欧几里德(MEA)算法。(3)错误位置与错误值求解模块,采用钱搜索(Chien Search)算法求解错误位置,采用福尼(Forney)算法进行错误值的求解。(4)数据缓存、控制及纠错输出模块。该算法适用于光通信中高速数据(10/40Gbit/s等)的处理,用专用集成电路(ASIC)技术实现。但在现在如GPON中采用该技术,存在以下问题1)伴随式计算模块采用一个字节宽带的数据总线,而在现场可编程门阵列(FPGA)中实现常采用更宽的总线以降低时钟速率。如2.5Gbit/s的线路速率,采用32位总线,时钟频率为77.76MHz。2)求解关键方程的ME算法模块是占用逻辑资源最多模块,在32位总线情况下要采用4个并行处理模块,资源消耗比较大。

发明内容
本发明需要解决的技术问题是提供一种Reed-Solomon码解码器,能减少需要的ME算法模块,进一步能用更宽的总线以降低硬件工作时钟频率。
本发明的上述技术问题这样解决,提供一种Reed-Solomon码解码器,包括从输入到输出依次电连接的伴随式计算模块、MEA算法模块、钱搜索模块、福尼算法模块和纠错输出模块以及输入端与所述纠错输出模块之间的数据缓冲模块,所述输入是多字节总线输入,所述MEA算法模块包括一个或多个并联在所述伴随式计算模块与钱搜索模块之间的通过合并减半各自迭代次数的用于分时复用处理各自16位数据输入的8位MEA算法子模块。
按照本发明提供的解码器,所述MEA算法模块还包括一个或多个并联在所述伴随式计算模块与钱搜索模块之间的处理各自8位数据输入的普通8位MEA算法子模块,如解码器(二)。
按照本发明提供的解码器,所述解码器包括但不限制于以下三种解码器(一),所述多字节是四个字节,所述MEA算法模块是二个并联在所述伴随式计算模块与钱搜索模块之间的通过合并减半各自迭代次数的用于分时复用处理各自16位数据输入的8位MEA算法子模块。
解码器(二),所述多字节是三个字节,所述MEA算法模块是二个并联在所述伴随式计算模块与钱搜索模块之间的8位MEA算法子模块,其中至少一个用于通过合并减半迭代次数实现分时复用,一个实现分时复用的处理16位数据输入,另一个实现或没实现分时复用的用于处理剩下的8位数据输入。
解码器(三),所述多字节是二个字节,所述MEA算法模块是一个通过合并减半迭代次数的用于分时复用处理16位数据输入的8位MEA算法子模块。
按照本发明提供的解码器,所述8位MEA算法子模块包括控制单元、多项式计算单元和等级估计单元,其中所述控制单元和多项式计算单元之间以及所述多项式计算单元和等级估计单元之间双向电连接。所述8位MEA算法子模块包括普通8位MEA算法子模块和可分时复用的8位MEA算法子模块,它们硬件单元相同,仅仅是算法(软件)不同。
按照本发明提供的解码器,所述合并减半各自迭代次数实现分时复用具体办法是ME算法的每次迭代计算的计算周期是16,最坏情况下需要16次迭代完成计算,因此求解关键方程的时延是256个时钟周期。在最坏情况下,Ri(x)及Qi(x)的多项式最高次数如下变化(16,15)→1(15,15)→2(14,15)]]>→3(14,14)→4(13,14)→5(13,13)→6(12,13)→7(12,12)→8]]>(11,12)→9(11,11)→10(10,11)→11(10,10)→12(9,10)→13(9,9)]]>
→14(8,9)→15(8,8)→16(7,8).]]>从中可以看出第2,4,…,16次的迭代只是作运算,没有交换的过程。(从迭代公式中可以看到,如果deg(Ri-1(x))<deg(Qi-1(x)),则Ri(x)和Qi(x)需要交换,然后进行运算。)因此第2,4,…,16次的迭代可以在第1,3,5,…,15次迭代结果的基础上直接运算,而不用再同步,交换。经过这样的处理后,ME模块的最大延时就仅为8次迭代。这8次迭代中多项式的最高次数在最坏情况下如下变化(16,15)]]>→1(14,15)→2(13,14)→3(12,13)→4(11,12)→5(10,11)→6(9,10)]]>→7(8,9)→8(7,8).]]>多项式的存储空间长度如下变化16→116→2]]>15→314→413→512→611→710→89.]]>采用每级带输出抽头的移位寄存器,则每迭代一次,移位寄存器的使用级数减一,一次迭代的固定级数为11级,因此总的延迟是119(16+16+15+14+13+12+11+11+11)。这样在一个码字周期内,该模块能进行两次求解运算。
按照本发明提供的解码器,所述伴随式计算模块是一个采用多字节并行计算方式的伴随式计算模块,所述多字节与所述总线输入一致;这种计算避免位宽变换,不需要多个计算模块,所消耗的逻辑单元数量减少,数据的处理时延降低。
按照本发明提供的解码器,所述伴随式计算模块包括但不限制于对应解码器(一)的32位、解码器(二)的24位或解码器(三)的16位伴随式计算模块。
按照本发明提供的解码器,所述钱搜索模块、福尼算法模块和纠错输出模块是由与多字节一致的多个用于并行处理的8位对应子模块并联而成,可以是配合解码器(一)的4个、解码器(二)的3个或解码器(三)的2个8位对应子模块。
按照本发明提供的解码器,所述解码器应用在GPON网络中。
按照本发明提供的解码器,所述解码器由现场可编程门阵列或专用集成电路实现。
按照本发明提供的解码器,所述一个字节为8位/比特。
本发明提供的一种Reed-Solomon码解码器,合并减半迭代次数改进现有MEA算法实现分时复用,进一步采用并行伴随式计算,节省了硬件资源,降低了复杂度,使该解码器在总线宽带大于一个字节时能节省硬件逻辑资源,取得了节省电路资源、降低设计难度的效果。


下面结合附图和具体实施例进一步对本发明进行详细说明。
图1是RS解码器应用示意图。
图2是RS解码器电路结构示意图。
图3是传统伴随式及MEA算法结构图。
图4是本发明中的伴随式及MEA算法结构图。
图5是RS解码器电路结构示意图。
图6是图5所示RS解码器输入输出接口7是图5中32位伴随式计算模块输入输出接口图。
图8是伴随式多项式计算图。
图9是图5中32位并行伴随式计算模块电路单元示意图。
图10是图5中MEA算法子模块接口示意图。
图11是图5中MEA算法子模块图。
图12是图5中钱搜索算法子模块接口图。
图13是图5中福尼算法子模块接口示意图。
具体实施例方式
首先,说明本发明基础-解码算法对于RS(255,239)编码,其生成多项式为G(x)=Πj=015(x-αj).]]>α是产生GF(28)域的本原多项式p(x)=x8+x4+x3+x2+1的根。
伴随式计算式为Sj=R(αi)=Σi=0254Ri(αj)i,0≤j≤15]]>
求解关键方程的ME算法关键方程S(x)·σ(x)=ω(x)mod x16其中,σ(x)=Πl=07(1-Xlx)]]>是错误位置多项式,S(x)=Σj=015Sjxj]]>是伴随式多项式,ω(x)是错误计算多项式。在S(x)已知的情况下,采用ME算法求解ω(x)及σ(x)。算法如下初始化R0(x)=x2t;Q0(x)=S(x);L0(x)=0;U0(x)=1.
接下来开始迭代Ri(x)=[σi-1bi-1Ri-1(x)+σ‾i-1ai-1Qi-1(x)]-x|1i-1|[σi-1ai-1Qi-1(x)+σ‾i-1bi-1Ri-1(x)]]]>Qi(x)=σi-1Qi-1(x)+σ‾i-1Ri-1(x)]]>Li(x)=[σi-1bi-1Li-1(x)+σ‾i-1ai-1Ui-1(x)]-x|1i-1|[σi-1ai-1Ui-1(x)+σ‾i-1bi-1Li-1(x)]]]>Ui(x)=σi-1Ui-1(x)+σ‾i-1Li-1(x)]]>其中,ai-1,bi-1是Ri-1(x)和Qi-1(x)的最高次数的系数。而li-1=deg(Ri-1(x))-deg(Qi-1(x))σi-1=1;if1i-1≥00;if1i-1<0]]>deg()表示多项式的次数。
每次迭代后如果deg(Ri(x))或deg(Qi(x))小于8,则算法迭代结束。此时ω(x)=Ri(x)σ(x)=Li(x)第二步,说明本发明关键(一)MEA算法模块对关键方程求解的ME算法在常规的流水线循环迭代算法的基础上加以改进,使该模块能被两个解码进程分时复用,下面以4路MEA计算来说明如何进行MEA算法的分时复用处理(数据按以下方式输入,‘0’表示该字节填充为0值,R254到R0是一个编码码字)0R251……R30R251……R3……
R254R250……R2R254R250……R2……R253R249……R1R253R249……R1……R252R248……R0R252R248……R0……ME算法的每次迭代计算的计算周期是16,最坏情况下需要16次迭代完成计算,因此求解关键方程的时延是256个时钟周期。在最坏情况下,Ri(x)及Qi(x)的多项式最高次数如下变化(16,15)→1(15,15)→2(14,15)→3]]>(14,14)→4(13,14)→5(13,13)→6(12,13)→7(12,12)→8(11,12)]]>→9(11,11)→10(10,11)→11(10,10)→12(9,10)→13(9,9)→14(8,9)]]>→15(8,8)→16(7,8).]]>从中可以看出第2,4,…,16次的迭代只是作运算,没有交换的过程。(从迭代公式中可以看到,如果deg(Ri-1(x))<deg(Qi-1(x)),则Ri(x)和Qi(x)需要交换,然后进行运算。)因此第2,4,…,16次的迭代可以在第1,3,5,…,15次迭代结果的基础上直接运算,而不用再同步,交换。经过这样的处理后,ME模块的最大延时就仅为8次迭代。这8次迭代中多项式的最高次数在最坏情况下如下变化(16,15)→1(14,15)→2(13,14)]]>→3(12,13)→4(11,12)→5(10,11)→6(9,10)→7(8,9)→8(7,8).]]>多项式的存储空间长度如下变化16→116→2]]>15→314→413→512→611→710→89.]]>采用每级带输出抽头的移位寄存器,则每迭代一次,移位寄存器的使用级数减一,一次迭代的固定级数为11级,因此总的延迟是119(16+16+15+14+13+12+11+11+11)。这样在一个码字周期内,该模块能进行两次求解运算,如在32位总线数据输入的情况下,用常规方法需要4个ME计算模块,使用改进的算法只需要2个计算模块。
(二)伴随式模块传统的伴随式计算采用单字节/8比特串行输入计算的方式,在输入数据速率为2.5Gb/s时,处理的时钟频率为311MHz,在硬件设计中困难很大。如果将数据总线展宽降低处理时钟频率,如转换为4字节/32比特总线,时钟频率降为77.76MHz,按传统的方法,如图3所示,此时需要增加用于将32位的数据转换为8位的位宽变换电路31,并需要4个8位伴随式计算模块32,并同时也需要4个8位MEA算法模块33,即伴随式的计算额外需要多的计算模块,所消耗的逻辑单元数量多,同时数据的处理时延降低。
本发明中,在伴随式计算模块中,伴随式的计算采用多字节并行计算方式直接并行计算避免位宽变换,不需要位宽变换电路、也仅需一个计算模块。
因此,结合本发明关键(一)和(二),对应图3所示装置,本发明对应装置如图4所示,包括一个32位伴随式计算模块21和两个本发明能分时复用的MEA算法子模块41。
最后,结合四字节总线输入的本发明RS解码器详细说明本发明如图2所示,该RS解码器包括从输入到输出依次电连接的32位伴随式计算模块21、MEA算法模块22、钱搜索模块23、福尼算法模块24和纠错输出模块25以及输入端与所述纠错输出模块25之间的数据缓冲FIFO模块26;该RS解码器具体电路结构如图5所示,其中MEA算法模块22由二个能分时复用的8位MEA算法子模块41并联而成,钱搜索模块23由四个8位钱搜索子模块231并联而成,福尼算法模块24由四个8位福尼算法子模块241并联而成,纠错输出模块25由四个8位纠错输出子模块251并联而成。
该RS解码器输入输出接口如图6所示,其中输入接口clk系统时钟a_rst异步复位信号Code_vld数据有效信号,与有效数据同宽度Data_start数据开始信号,与第一个有效数据同时出现Rn32位数据输入,每个码字第一个数据最高8位为0(用作填充),最后16字节是纠错编码数据。
输出接口right脉冲输出信号,表示接收到一个正确的码字
fail脉冲输出信号,表示接收到一个错误超出纠错能力的码字,原样输出Dout_vld数据输出有效信号,与有效输出码字同宽度Dout_start数据输出开始信号,与第一个有效输出数据同时出现Dout32位数据输出,每个码字第一个字节不是有效数据,仅输出239字节有效数据。
该RS解码器中32位伴随式计算模块21输入输出接口如图7所示,其中,32位输入接口Rn就是解码器的输入接口;8位输出R、S、L、U分别对应R0(x)、S0(x)、L0(x)和U0(x),是ME算法模块所需的初始值。由于只有伴随式多项式需要计算,其它是固定值输出,所以本模块的主要功能是伴随式计算;32位伴随式计算模块电路如图8所示,其中各计算单元S0~S15的具体电路结构如图9所示,其中加号是异或运算,乘号是有限域乘法运算,”select”信号用于运算完成后串行输出伴随多项式的16个系数,”select2”信号用于在每个码字的第一个输入数据时将计算结果直接送入寄存器,从而避免一个时钟周期的寄存器清零操作。有限域乘法运算“×αi”对每个伴随式指数“i”是定值,根据运算规则可以简化为有限域的加法运算。
该RS解码器中MEA算法子模块41输入输出接口如图10所示,32位伴随式计算模块的伴随多项式的计算结果轮流送到两个MEA算法子模块41求解关键方程,其中输入信号来自于前级的伴随式计算模块的输出。输出信号中,X0,…,X8是计算出的σ(x)多项式的系数,W0,…,W7是计算的ω(x)多项式的系数。其它两个输出信号是给后级的数据输出指示。两个MEA算法子模块41电路结构如图11所示,硬件上与不能分时复用的8位MEA算法模块一致,包括控制单元51、多项式计算单元52和等级估计单元53。
该RS解码器中钱搜索算法子模块23l输入输出接口如图12所示,每个MEA算法子模块41输出的数据轮流送到两路后续钱搜索算法子模块231和福尼算法子模块241中,其中输入数据是X0,…,X8,信号”start”用于指示输入数据的开始;输出数据“Xout”表示σ(αi)的计算结果,当其等于0时表示对应位置有错误。输出数据“deriXout”,表示xσ′(x)|x=αi计算结果,提供福尼算法模块使用。输出数据“err”表示该码字包含超出纠错能力的码字。超出纠错能力用的码字用下面方法判断输入σ(x)多项式的最高次数与错误位置数目相等则该码字在纠错范围内,如不等则含有不可纠正的错误。
该RS解码器中福尼算法子模块241输入输出接口如图13所示,其中输入数据是W0,…,W8,信号”start”用于指示输入数据的开始。输出数据“errorvalue”表示错误值。
权利要求
1.一种Reed-Solomon码解码器,包括从输入到输出依次电连接的伴随式计算模块、MEA算法模块(22)、钱搜索模块(23)、福尼算法模块(24)和纠错输出模块(25)以及输入端与所述纠错输出模块之间的数据缓冲模块(26),其特征在于,所述输入是多字节总线输入,所述MEA算法模块(22)包括一个或多个并联在所述伴随式计算模块与钱搜索模块(23)之间的通过合并减半各自迭代次数的用于分时复用处理各自16位数据输入的8位MEA算法子模块(41)。
2.根据权利要求1所述解码器,其特征在于,所述多字节是四个字节,所述MEA算法模块(22)是二个并联在所述伴随式计算模块与钱搜索模块之间的通过合并减半各自迭代次数的用于分时复用处理各自16位数据输入的8位MEA算法子模块(41)。
3.根据权利要求1所述解码器,其特征在于,所述多字节是三个字节,所述MEA算法模块(22)是二个并联在所述伴随式计算模块与钱搜索模块之间的8位MEA算法子模块,其中至少一个(41)用于通过合并减半迭代次数实现分时复用,一个实现分时复用的处理16位数据输入,另一个实现(41)或没实现(33)分时复用的用于处理剩下的8位数据输入。
4.根据权利要求1所述解码器,其特征在于,所述多字节是二个字节,所述MEA算法模块(22)是一个通过合并减半迭代次数的用于分时复用处理16位数据输入的8位MEA算法子模块(41)。
5.根据权利要求1-4任一项所述解码器,其特征在于,所述8位MEA算法子模块(41或33)包括控制单元、多项式计算单元和等级估计单元,其中所述控制单元和多项式计算单元之间以及所述多项式计算单元和等级估计单元之间双向电连接。
6.根据权利要求1所述解码器,其特征在于,所述伴随式计算模块是一个采用多字节并行计算方式的伴随式计算模块,所述多字节与所述总线输入一致。
7.根据权利要求2所述解码器,其特征在于,所述伴随式计算模块可以是16位、24位或32位伴随式计算模块(21)。
8.根据权利要求1所述解码器,其特征在于,所述钱搜索模块(23)、福尼算法模块(24)和纠错输出模块(25)是由与多字节一致的多个用于并行处理的8位对应子模块并联而成。
9.根据权利要求1所述解码器,其特征在于,所述解码器(12)应用在GPON网络中。
10.根据权利要求1所述解码器,其特征在于,所述解码器(12)由现场可编程门阵列或专用集成电路实现。
全文摘要
本发明涉及一种Reed-Solomon码解码器(12),包括从输入到输出依次电连接的伴随式计算模块、MEA算法模块(22)、钱搜索模块(23)、福尼算法模块(24)和纠错输出模块(25)以及输入端与所述纠错输出模块之间的数据缓冲模块(26),所述输入是多字节总线输入,所述MEA算法模块包括一个或多个并联在所述伴随式计算模块与钱搜索模块之间的通过合并减半各自迭代次数的用于分时复用处理各自16位数据输入的8位MEA算法子模块(41)。这种解码器改进现有MEA算法实现其分时复用,进一步结合并行伴随式计算在总线宽带大于一个字节时取得节省资源、降低设计难度的效果。
文档编号H03M13/00GK101079640SQ20071012941
公开日2007年11月28日 申请日期2007年7月12日 优先权日2007年7月12日
发明者刘毅, 史洪波, 谢军, 袁松馨, 涂晓东, 胡钢 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1