背景技术
随着Internet的普及与迅速发展,通信业务量大增,因而需要采用WDM(Wavelength Division Multiplexing,波分复用)或者DWDM(Dense Wavelength Division Multiplexing,密集波分复用)技术,使线路速率提高到10Gb/s、40Gb/s甚至更高。
在长距离、超长距离或者大容量DWDM光纤通信系统中,由于光纤的色散和长距离传输会引起信号衰减、信道噪声,而信号衰减、信道噪声、以及一根光纤中多个波长之间的干扰,均会使系统的性能大大下降,因此,在光纤干线上,大约每隔80公里就必须进行一次光中继,大约每隔400公里就必须进行一次电信号的再生,从而使建网和运营的成本剧增。
由于入纤光功率每增加3dB,可以将传输距离延长一倍,因此,为了使传输距离更长,同时又保持足够的OSNR(Optical Signal NoiseRatio,光信噪比),可以增加入纤光功率,然而入纤光功率的一味提高,会引发较大的光纤非线性效应,反而不利于实现超长距离传输。
FEC(Forward Error Correction,前向纠错)技术是解决上述问题的关键技术之一。FEC技术通过在传输码列中加入冗余纠错码,可以降低接收端的OSNR容限,减小所需的发射功率。采用FEC所获得的译码增益,大大降低了误码率,有效地提高了通信的可靠性,从而达到了改善系统性能、降低系统成本的目的,因此随着未来光纤通信速率的越来越高,FEC技术将是这一领域的核心技术之一,有较强的技术生命周期,而且,目前在无线通信、数据接入通信等领域中,例如GPON(Gigabit-Capable PON,G比特以太网无源光网络)/EPON(Ethernet Passive Optical Network,以太网无源光网络),FEC技术也得到了广泛的应用。
SFEC(Super Forward Error Correction,超强前向纠错)是针对G.709和G.975所规定的标准FEC而言的,它对标准前向纠错的Reed-Solomon(255,239)算法做了改进,采用了具有更加强大纠错能力的前向纠错编解码方式,所获得的编码增益更高,能够大幅度降低系统对OSNR的要求。
由于现在没有统一的标准,各个厂家采用超强前向纠错的算法各不相同。从现状看,实现超强前向纠错的方法可以大致分为以下两种:
一是完全突破了G.709所规定的帧结构,采用两级矩阵式编码,如RS-RS、RS-BCH、BCH-BCH编码等;
二是保留G.709所规定的帧结构,只是将帧结构中冗码部分的计算由Reed-Solomon(255,239)算法换为其他算法。
前一种方法可以获得很高的净编码增益(7~8dB),但是付出的带宽代价也很高(15%~25%),现在已经开始实用。后一种方法保持7%的冗码比例不变,通过算法的优化来获得比标准前向纠错更优的编码增益。相对于前一种方法,后一种方法获得的编码增益略低。
由于超强前向纠错涉及到比较复杂的交织、解交织以及编解码算法,再加上目前超强前向纠错技术处在非标准化和非透明化的状态下,因此,如何用高效的硬件电路来正确实现整个算法,并获得较高的硬件时序速度,是实现超强前向纠错的一个难点。
发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种超强前向纠错的硬件译码方法及装置,能够用较小规模的硬件电路来正确实现整个算法,并提高超强前向纠错的硬件实现时序速度。
本发明提供的超强前向纠错的硬件译码方法,包括以下步骤:A、首先对接收信道输出的数据采用BCH(2040,1952)码计算其伴随式,然后对计算所得BCH码伴随式结果进行错误位置多项式的求解,再根据求得的错误位置多项式进行钱搜索,确定BCH码字中的码元错误位置并进行纠错,完成BCH码字中逐个码元的译码处理;B、每处理完一个内码BCH码元的译码后,先进行交织处理,再对译码结果进行RS码字伴随式的计算,然后对计算所得RS码字伴随式结果进行错误位置多项式和错误值多项式的求解,根据求得的错误位置多项式进行钱搜索,确定RS码字中的码元错误位置,根据求得的错误值多项式计算差错值并进行纠错,完成RS码字中逐个码元的译码处理;最后将其输出数据进行解交织,得到超强前向纠错的译码结果。
在上述技术方案中,步骤A中每路BCH码的伴随式有16个。
在上述技术方案中,步骤A中所述对计算所得BCH码伴随式结果进行错误位置多项式的求解之前包括以下步骤:将计算所得BCH码伴随式结果发送到BCH码BM算法单元。
在上述技术方案中,步骤A中所述对计算所得BCH码伴随式结果进行错误位置多项式的求解之后包括以下步骤:将求解结果发送到BCH码钱搜索和纠错单元进行处理。
在上述技术方案中,步骤B中每路RS码的伴随式有16个。
在上述技术方案中,步骤B中所述对计算所得RS码字伴随式结果进行错误位置多项式和错误值多项式的求解之前包括以下步骤:将计算所得RS码伴随式结果发送到RS码BM算法单元。
在上述技术方案中,步骤B中所述对计算所得RS码字伴随式结果进行错误位置多项式和错误值多项式的求解之后包括以下步骤:将求解结果发送到RS码钱搜索和纠错单元进行处理。
本发明提供的超强前向纠错的硬件译码装置,它包括:
BCH码伴随式计算单元,用于完成BCH码的16个伴随式的计算,并将求得的BCH码伴随式结果保存待用;
BCH码BM算法单元,用于根据已得到的BCH码伴随式结果,求解BCH码错误位置多项式的表达式,进而得到BCH码错误位置多项式所有系数的值,多个BCH码共用一个BCH码BM算法单元;
BCH码钱搜索和纠错单元,用于求解所述BCH码BM算法单元发送来的错误位置多项式的根,定位出每个BCH码字中的错误码元位置,并完成BCH码字中的错误码元的纠错;
BCH码复用存储单元,用于对多路BCH码进行存储、处理,以及对BCH码伴随式分量和错误位置多项式进行调度;
BCH码总线变换单元,用于完成总线从BCH码型到RS码型的变换,以满足后续RS码在GF域上的要求;
RS码伴随式计算单元,用于完成RS码的16个伴随式的计算,并将求得的RS码伴随式结果保存待用;
RS码BM算法单元,用于根据已得到的RS码伴随式结果,计算RS码错误位置多项式和RS码错误值多项式的表达式,进而得到RS码错误位置多项式的所有系数及RS码错误值多项式的所有系数,多个RS码字共用一个RS码BM算法单元;
RS码钱搜索和纠错单元,用于通过错误位置多项式和错误值多项式分别确定RS码字中的错误位置和错误值,并完成RS码元纠错;
RS码复用存储单元,用于对多路RS码字进行存储、处理,以及对RS码伴随式分量、错误位置多项式和错误值多项式进行调度;
RS码总线变换单元,用于完成入口多路RS码字的并行译码输出到出口位宽的变换,并发送帧的起始位置指示信号。
在上述技术方案中,它还包括数据缓冲单元,所述数据缓冲单元用于缓存数据,并产生延迟一定拍数的帧起始脉冲信号。
在上述技术方案中,它还包括译码性能监控单元,所述译码性能监控单元用于监控RS码和BCH码的性能。
与现有技术相比,本发明的优点如下:
本发明中采用多个BCH码字共用一个BCH码BM算法单元,以及多个RS码字共用一个RS码BM算法单元,以尽可能减小硬件电路的设计规模,使得本发明的硬件电路实现规模相对较小,并能获得较高的硬件时序速度。
具体实施方式
下面结合附图及实施例对本发明作进一步的详细描述。
参见图1所示,本发明实施例提供的超强前向纠错的硬件译码方法,包括以下步骤:首先对接收信道输出的数据采用BCH码计算其伴随式,每路BCH码的伴随式有16个,然后将计算所得的BCH码伴随式结果发送到BCH码BM算法单元,进行错误位置多项式的求解,接着将求解结果送入BCH码钱搜索和纠错单元进行处理,根据求得的错误位置多项式进行钱搜索,确定BCH码字中具体的码元错误位置并进行纠错,从而完成BCH码字的逐个码元的译码处理;每处理完一个内码BCH码元的译码后,先通过交织处理,再将其译码结果再进行RS码字伴随式的计算,每路RS码的伴随式有16个,然后将计算所得到的RS码伴随式结果发送到RS码BM算法单元进行计算,求解该RS码字的错误位置多项式和错误值多项式,接着将求解结果送入RS码钱搜索和纠错单元进行处理,根据求得的错误位置多项式进行钱搜索,确定RS码字中具体的码元错误位置,根据错误值多项式计算差错值并进行纠错,从而完成RS码字的逐个码元的译码处理,最后将其输出数据进行解交织,即得到最终的超强前向纠错译码结果。
参见图2所示,本发明实施例提供的超强前向纠错的硬件译码装置,它包括:
数据缓冲单元,用于缓存数据,并产生延迟一定拍数的帧起始脉冲信号;
BCH码伴随式计算单元,用于完成BCH码的16个伴随式的计算,并将求得的BCH码伴随式结果保存待用;
BCH码BM算法单元,用于根据已得到的BCH码伴随式结果,求解BCH码错误位置多项式的表达式,进而得到BCH码错误位置多项式所有系数的值,多个BCH码共用一个BCH码BM算法单元;
BCH码钱搜索和纠错单元,用于求解所述BCH码BM算法单元发送来的错误位置多项式的根,定位出每个BCH码字中的错误码元位置,并完成BCH码字中的错误码元的纠错;
BCH码复用存储单元,用于对多路BCH码进行存储、处理,以及对BCH码伴随式分量和错误位置多项式进行调度;
BCH码总线变换单元,用于完成总线从BCH码型到RS码型的变换,以满足后续RS码在GF域上的要求;
RS码伴随式计算单元,用于完成RS码的16个伴随式的计算,并将求得的RS码伴随式结果保存待用;
RS码BM算法单元,用于根据已得到的RS码伴随式结果,计算RS码错误位置多项式和RS码错误值多项式的表达式,进而得到RS码错误位置多项式的所有系数及RS码错误值多项式的所有系数,多个RS码字共用一个RS码BM算法单元;
RS码钱搜索和纠错单元,用于通过错误位置多项式和错误值多项式分别确定RS码字中的错误位置和错误值,并完成RS码元纠错;
RS码复用存储单元,用于对多路RS码字进行存储、处理,以及对RS码伴随式分量、错误位置多项式和错误值多项式进行调度;
RS码总线变换单元,用于完成入口多路RS码字的并行译码输出到出口位宽的变换,并发送帧的起始位置指示信号;
译码性能监控单元,用于监控RS码和BCH码的性能。
下面详细阐述本发明实施例的方法步骤:
步骤10:计算接收信道输出数据的BCH码的伴随式。
因为输入位宽为64,而每个BCH码中都包含一个BCH码伴随式计算单元,所以64个BCH码中包含有64个这样的BCH码伴随式计算单元,每个BCH码伴随式计算单元采用脉动(Systolic)阵列结构实现BCH码伴随式的求解。
步骤10具体包括下述子步骤101和102:
子步骤101:计算出奇数序号的伴随式,具体过程与现有技术相同,此处不赘述;
子步骤102:由于二进制BCH码的伴随式具有的S2j=(Sj)2的性质,偶数序号的伴随式都可以根据此式来计算,而且由上面的关系可以进一步推导出:S2=(S1)2,S4=(S1)4,S6=(S3)2,S8=(S1)8,S10=(S5)2,S12=(S3)4,S14=(S7)2,S16=(S1)16,采用GF(211)域(Galois Field,伽罗华域)上平方、4次方、8次方和16次方运算电路,即可用奇数序号的伴随式,计算出所有的偶数序号的伴随式。
步骤20:将64位宽的输入数据放入缓存中,待BCH码的伴随式、BM算法求解完毕进行钱搜索纠错时,再从该缓存中同步读出数据,送入BCH码钱搜索和纠错单元中,进行同步纠错处理。
步骤30:将步骤10中得到的64路BCH码伴随式,分别用两个BCH码复用存储单元进行存储和调度,每个BCH码复用存储单元存储32路BCH码伴随式数据。
步骤40:根据步骤30输出的BCH码伴随式的值,求解BCH码错误位置多项式的表达式,从而得到错误位置多项式所有系数的值。
本发明实施例中,64路BCH码伴随式中的每32路复用一个BM算法,因此只需要两套BM算法,这样就可以节省电路工作中消耗的功率和电路规模。在本步骤中,每计算出一个BCH码错误位置多项式以后,就向步骤30给出一个反馈信号,表示本次BM算法计算完毕,可以传递下一个BCH码伴随式。具体硬件实现电路参见图3所示。同时,将计算得到的BCH码错误位置多项式的值输出到BCH码复用存储单元中进行存储。
步骤50:将步骤40得到的BCH码错误位置多项式依次存储,当所有32路BCH码字的BM算法都计算完毕时,将32路BCH码错误位置多项式的值同时输出,并产生一个使能信号,表示可以进行下一步的BCH码钱搜索和纠错功能。
步骤60:根据步骤50送出的使能信号和错误位置多项式的根,以及步骤20输出的缓冲数据,完成BCH码字中的错误码元的纠错。
本发明实施例中有64个BCH码钱搜索和纠错单元,以实现64个BCH码并行纠错处理。参见图4所示,σ0,σ1,…,σt是错误位置多项式的系数,MUX是二选一的选择器,a是BCH码的本元域元素,每个时钟周期能够纠正一个错,完成纠错所需的时钟周期与码长相等。图4中i的变化范围为:1≤i≤2047,分别对应于BCH(2047,1959)码字的的第1号码元r2046(i=1)至2047号码元r0(i=2047),BCH码码元编号顺序为:码字多项式中的最高系数2046算作第1号码元,码字多项式中的最低系数0算作第2047号码元,当电路运算的结果σ(ai)=σ0时,即表示ai是错误位置多项式的根,并且错误位置发生在BCH码字的第i号码元;此时从数据缓冲单元中读出该BCH码字的码元,进行反相后送出,即完成码元错误的纠正;如果运算结果不满足σ(ai)=σ0,则表明该码元位未发生错误,将数据缓冲单元中读出的BCH码字的码元直接送出即可。
步骤70:将经过BCH译码后的数据,从64位宽总线变换到10位宽,以满足后续的RS码的GF域上的要求,具体过程与现有技术相同,此处不赘述。
步骤80:对于步骤70输出的16个10位宽RS码,通过16个相类似的计算电路分别计算其伴随式分量,并同时输出。
步骤90:将步骤80中得到的16路RS码伴随式,分别用两个RS码复用存储单元进行存储和调度,每个RS码复用存储单元存储8路数据。
步骤100:求解错误位置多项式σ(x)的所有系数的值,具体实现过程参见图5所示。错误值多项式ω(x)的计算方法和错误位置多项式σ(x)的计算方法完全一样,它们可以共用同一套控制电路。根据步骤90输出的RS码伴随式的值,求解RS码错误位置多项式和错误值多项式的表达式,从而得到错误位置多项式和错误值多项式所有系数的值。此处采用了复用的形式,16路RS码的伴随式中的每8路复用一个BM算法,因此本发明实施例中只需要两套RS码BM算法,这样可以减小硬件电路的实现规模,节省电路工作中消耗的功率。由于采用了复用的结构,因此在本步骤中,每计算出一个RS码错误位置多项式以后就向步骤90给出一个反馈信号,表示本次BM算法计算完毕,可以传递下一个RS码伴随式。
步骤110:通过步骤100得到的错误位置多项式σ(x)和错误值多项式ω(x)分别确定RS码字中的错误位置和错误值,并完成RS码元纠错。
参见图6所示,电路的上半部分为差错值多项式的计算电路,ω寄存器的初始值为ω1、ω2、……、ω8(注意:ω0为0)。接收RS码字矢量r1022,7个常系数乘法器进行乘法运算,且将下列值存入相应的RS码复用存储单元:ω2a,ω3a2,ω4a3,ω5a4,ω6a5,ω7a6,ω8a7,累加器A输出计算结果,记为numerator:ω1+ω2a+ω3a2+ω4a3+ω5a4+ω6a5+ω7a6+ω8a7。下半部分为Chien搜索电路和求导电路。σ寄存器初始值为σ0、σ1、σ2、……、σ8。接收RS码字矢量r1022正要从缓冲器中读出之前,8个常系数乘法器进行乘法运算,且将下列值存进寄存器:σ1a,σ2a2,σ3a3,σ4a4,σ5a5,σ6a6,σ7a7,σ8a8,并将这些值分奇偶送入累加器B和C,然后将累加器B和C的结果再相加,其结果为描述方便记为sum。同时,将奇数项求和结果求逆,记为inversion。门的控制信号是:sum和不可纠判断输出信号rs_word_uncorr。当sum=0,且不可纠信号rs_word_uncorr无效(在纠错能力内)时(rs_word_uncorr=0),门将inversion输出;否则,门输出0。
与BCH码的Chien搜索电路相同,本发明实施例中的RS(781,765)码和RS(778,762)码是RS(1023,1007)码的截短码,因此在得到错误位置多项式σ(x)后,只需从i等于243开始检测到i等于1023为止,i等于243就对应于输入RS(781,765)码字的第一个符号码元r780,即RS(781,765)码字第1号码元,i等于1023对应于输入RS(781,765)码字的最后一个符号码元r0,即RS码字第781号符号码元。本发明实施例中,每次在进行RS(781,765)码字钱搜索开始前,将图6中的寄存器σ1、σ2、……、σ8的值初始化为以下的8个值,并计算该8个值的异或求和σ(ai),作为第一次判断错误位置多项式的根:
σ1a243,σ2a486,σ3a729,σ4a972,σ5a192,σ6a435,σ7a678,σ8a921。
门的输出信号和numerator相乘,得到差错值E1022,把差错值与缓冲器输出值r1022相加,完成对r1022的纠错。r1022译码完成后,在将寄存器的内容作常系数乘法,并重复进行上述的相加运算和检验,对r1021进行纠错……直到整个码字输入完毕,完成一个RS码字的纠错过程。
用RS码Chien搜索电路对错误位置多项式的根进行搜索,记录下根的个数。当根的个数和错误位置多项式的次数不相等时,判断为产生了不可纠错误。此时,一个RS码字中至少有9个符号产生了错误,超过了纠错码的译码门限,在这种情况下,关断前向纠错功能。
步骤120:完成入口16路RS并行译码输出160比特流到出口64比特流的变换,并送出帧的起始位置指示信号,具体过程与现有技术相同,此处不赘述。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。