一种用于10G EPON的RS解码装置及方法
技术领域
本发明涉及以太无源光网络(EPON)技术领域,尤其涉及一种用于10G EPON的RS解码装置及方法。
背景技术
RS码又称里所码,即Reed-Solomon code,是一种前向纠错的信道编码。编码过程包括首先在多个点上对由校正过采样数据所产生的多项式求冗余,然后将其传输或者存储。对多项式超出必要值的采样使得多项式超定(过限定)。当接收器正确的收到足够的点后,它就可以恢复原来的多项式,即使接收到的多项式上有很多点被噪声干扰失真。
10G以太无源光网络(EPON)标准要求线路上进行RS(255,223)前向纠错编码以改善信噪比。RS译码主要分为校正子计算、关键方程求解、错误位置搜索和校正错误等环节。首先对接收数据进行校正子计算,然后对关键方程求解,得到错误位置多项式σ(x)和错误值多项式ω(x),然后利用错误位置多项式进行钱搜索确定错误位置和利用错误值多项式进行错误值计算并纠错。其中关键方程求解是难点,通常所采用的算法有伯利坎普-梅西算法(BM,Berlekamp-Massey Algorithm)、修正的欧几里得算法(ME,Modified Euclidean Algorithm)及频域译码算法等。BM算法与ME算法均为时域译码算法,实时性优于频域译码算法。同BM算法相比,ME算法具有运算结构规整、关键路径时延较小、易于脉动结构实现等优点,被认为是高速数据通信中RS译码的理想算法。
下面简要介绍RS(255,223)的编码和译码原理。
RS(255,223)为有限域GF(28)上的线性循环码,10G EPON系统中采用 的RS(255,223)码生成多项式可由下式计算:
其中gi为生成多项式的系数,均取值于GF(28)。GF(28)的本原多项式为x8+x4+x3+x2+1=0,α是该本原多项式的根。
设M(x)为待编码的信息多项式
M(x)=m222x222+…+m1x+m0 (2)
编码得到的码字多项式为
C(x)=M(x)xn-k(mod G(x))+M(x)xn-k (3)
设信道传输过程中引入了v个错误,错误图样为
其中ji(i=1,…,v)为错误位置, 为错误数值。
接收端接收到的码多项式为码字多项式和错误图样的叠加,即
R(x)=C(x)+E(x) (5)
根据线性码的理论推导可以得出,校正子仅与错误图样有关,与发送的信息码字无关。校正子由下式计算
根据得出的校正子,按照下式构造最高次数为2t-1的校正子多项式
ME算法利用校正子多项式S(x)作为初值,迭代完成错误值多项式ω(x)和错误位置多项式σ(x)的计算。ME算法的内容为:
(1)初始条件为:
R0(x)=x2t,Q0(x)=S(x),L0(x)=0,U0(x)=1
deg(R0(x))=2t,deg(Q0(x))=2t-1
(2)迭代计算过程为:
li-1(x)=deg(Ri-1(x))-deg(Qi-1(x))
(3)算法结束条件为:deg(Ri(x))<t
(4)算法输出结果为:ω(x)=Ri(x),σ(x)=Li(x)
其中ai、bi分别为Ri(x)、Qi(x)的最高项系数;deg(*)为多项式的度数,用来表征多项式有效数字的多少,每次计算会消去最高项则度数减1;下标i代表第i次迭代后的结果。
由错误位置多项式σ(x)通过钱搜索得到错误位置;并根据错误值多项式ω(x)求得错误码型并修正。
根据ME算法的特点,使用串行方式表示多项式,可以配合运用脉动结构和流水线进行关键方程求解,关键路径上的延时较小,便于高速实现。目前高速数据纠错中的译码器广泛采用脉动结构的ME算法。为满足吞吐率要求,每个脉动单元的处理时间要小于一个前向纠错(FEC,Forward Error Correction)数据块的传输时间。对于RS(255,223),由于校正子是32个数值,ME算法接收和第一次计算需要针对32个有效数据做运算,所以处理时间最少需要32个时钟周期,即吞吐率受此限制。脉动结构的电路是串行处理,但校正子多项式和错误位置、错误值多项式都是并行输入输出,所以需要另外增加串并变换电路以及并串变换电路。
在10G EPON中,线路采用的是66bit编码,FEC对线路编码进行保护。FEC采用RS(255,223),每31个66bit作为一个FEC数据块,其中27个66bit按一定规则映射为数据223字节,其他4个66bit包含32字节的校验码。内部电路采用66bit并行处理,所以一个FEC数据块占用31个时钟周期,也就要求解码电路内每个模块在31个时钟周期内处理完一组解码数据。如此一 来,上述脉动结构电路吞吐率达不到要求,如果提高时钟频率,则与数据速率不协调,会带来很多问题。另外,RS解码算法都是针对字节操作,而10GEPON中是66bit并行总线,需要进行转换,并且为了满足10G吞吐率的要求,RS解码需要多字节的并行处理。
发明内容
本发明提供了一种用于10G EPON的RS解码方法和装置,可以实现RS解码与数据速率相协调,并实现多字节的并行处理。
本发明实施例提供的一种用于10G EPON的RS解码装置,包括接收缓存模块、校正子计算模块、关键方程求解模块、钱搜索与错误值计算模块、延时缓存模块和发送缓存模块;
所述接收缓存模块用于将输入的并行66比特位宽数据进行填零处理,调整为72比特位宽数据,将所述72比特位宽数据输出至校正子计算模块;
所述校正子计算模块用于根据输入的72比特位宽数据计算校正子si,每隔31个时钟周期将所述校正子si输出至关键方程求解模块;
关键方程求解模块用于每隔31个时钟周期接收来自校正子计算模块的校正子si,将关键方程求解模块中的寄存器序列R、Q、L和U及度数变量degQ和degR设置为初始值,然后采用并行方式进行31次迭代计算,在新校正子到达的同时将计算得到的错误位置σ(x)和错误值多项式ω(x)寄存输出至钱搜索与错误值计算模块,并同时向钱搜索与错误值计算模块给出有效指示信号VALID,x=0,1,2,…,15;
延时缓存模块,用于缓存接收缓存模块输出的72比特位宽数据,并将所缓存的数据提供给钱搜索与错误值计算模块进行读取;
钱搜索与错误值计算模块,用于根据错误位置σ(x)和错误值多项式ω(x)搜索出实际发生错误的错误位置和错误值,其中,每个时钟周期并行搜索9个位置;在计算出错误位置和错误值后,从延时缓存模块中提取出72比特位宽数据,并根据所述错误位置和错误值对所提取的72比特位宽数据进行纠 错,将纠错之后的72比特位宽数据输出至发送缓存模块;
发送缓存模块,用于将纠错之后的72比特位宽数据重排,去掉填充数据之后恢复为66比特位宽以适应出口的线路码型,并把FEC校验码替换为空闲码,并输出处理后的66比特位宽数据。
较佳地,所述校正子计算模块根据公式
si=r254(αi)254+…+r1(αi)+r0
={…{{{r260(αi)8+r259(αi)7+…+r253(αi)+r252}(αi)9+r251(αi)8+
r250(αi)7+…+r244(αi)+r243}(αi)9+…}(αi)9+…}(αi)9+
r8(αi)8+r7(αi)7+…+r1(αi)+r0,i=0,1,…,2t-1
计算校正子;其中r254至r0为经信道传输后接收到的码字;r260至r255为接收缓存模块填充的全零数据,α为本原多项式x8+x4+x3+x2+1=0的根。
较佳地,所述校正子计算模块包括9个有限域乘法器、一个加法器和一个寄存器;
校正子计算模块接收来自接收缓存模块的数据持续29个时钟周期;在所述每个时钟周期,校正子计算模块将来自接收缓存模块的72比特位宽数据以字节为单位顺次划分为9个字节,将这9个字节中的第1个字节直接输入所述加法器,其他8个字节的数据分别输入第一有限域乘法器至第八有限域乘法器分别乘以αi至(αi)8;所述第一有限域乘法器至第八有限域乘法器的输出端连接所述加法器的输入端;所述加法器得到的求和结果输出至所述寄存器;寄存器保存的数据在下一个时钟周期输出至第九有限域乘法器乘以(αi)9反馈至所述加法器;校正子计算模块接收全部29个时钟周期的数据完毕后,将寄存器中的数据作为校正子输出至关键方程求解模块,并将寄存器清零。
较佳地,所述关键方程求解模块包括并行且结构完全相同的两个逻辑运算电路,其中第一逻辑运算电路用于计算R(x)和Q(x),第二逻辑运算电路用于计算L(x)和U(x)。
较佳地,所述第一逻辑运算电路包括33个用于处理R(x)的寄存器单元组 成的寄存器序列R以及33个用于处理Q(x)的寄存器单元组成的寄存器序列Q,每个寄存器单元及总线宽度均为8比特;寄存器序列R的第i个寄存器单元Ri唯一对应一个多路选择器MUXRi和一个乘法器;寄存器序列Q的第i个寄存器单元Qi唯一对应一个多路选择器MUXQi和一个乘法器,寄存器单元Ri和寄存器单元Qi对应同一个加法器;所述多路选择器具有三个输入端,分别为0号线、1号线和2号线;i=0,1,2,…32;
多路选择器MUXRi的输出端连接寄存器单元Ri的输入端,多路选择器MUXRi的0号线连接寄存器序列R的第i-1个寄存器单元Ri-1的输出端,多路选择器MUXRi的1号线连接寄存器单元Ri-1对应的加法器的输出端,多路选择器MUXRi的2号线连接寄存器单元Ri的输出端;
寄存器单元Ri的输出端分别连接多路选择器MUXRi的2号线、多路选择器MUXRi+1的0号线、多路选择器MUXQi的1号线以及寄存器单元Ri对应的乘法器的第二输入端;
寄存器单元Ri对应的乘法器的第一输入端用于接收系数a,输出端连接寄存器单元Ri对应的加法器的第一输入端;
多路选择器MUXQi的输出端连接寄存器单元Qi的输入端,多路选择器MUXQi的0号线连接寄存器序列Q的第i-1个寄存器单元Qi-1的输出端,多路选择器MUXQi的1号线连接寄存器单元Ri的输出端,多路选择器MUXQi的2号线连接寄存器单元Qi的输出端;
寄存器单元Qi的输出端分别连接多路选择器MUXQi的2号线、多路选择器MUXQi+1的0号线,以及寄存器单元Qi对应的乘法器的第二输入端;
寄存器单元Qi对应的乘法器的第一输入端用于接收系数b,输出端连接寄存器单元Ri对应的加法器的第二输入端;
当i=0时,多路选择器MUXR0的0号线接收信号0,1号线空接;多路选择器MUXQ0的0号线接收信号0。
较佳地,所述关键方程求解模块的初始赋值为:
Q0(x)=xS(x),R0(x)=xQ0(x)mod x2t,degQ=31,degR=31。
较佳地,所述钱搜索与错误值计算模块包括:反馈倍增电路、偶次项函数值计算电路、奇次项函数值计算电路以及判断纠错电路;
所述反馈倍乘电路将来自关键方程求解模块的错误位置多项式系数(σ0,σ1,…,σ16)每次分别乘以对应系数((α9)0,(α9)1,…,(α9)16),其中奇次幂项得出的结果继续输出至奇次项函数值计算电路,偶次幂项得出的结果输出至偶次项函数值计算电路;
偶次项函数值计算电路,用于并行计算9个字节位置上的错误位置多项式函数σ(x)的偶次项函数值,电路设计中表现为:标准行计算结果分别为位置r254、r245、…、r2上的函数值σ(0)、σ(9)、…、σ(252),标准行前的第i行系数为标准行对应系数的-(i-1)次幂,其后的第i行系数为标准行对应系数的(i+1)次幂;按照以上方法设计的电路即可完成对原码字所有位置是否出错的判断,相应地,每行运算电路输出的函数值结果为
奇次项函数值计算电路,用于并行计算9个字节位置上的错误位置多项式函数σ(x)的奇次项函数值,电路设计方法与偶次项函数值计算电路相同,每行运算电路输出的函数值结果为
判断纠错电路,用于接收来自偶次项函数值计算电路的偶数项函数值以及来自奇次项函数值计算电路的奇次项函数值,计算偶次项函数值、奇次项函数值之和,若所述和为零,说明该位置上发生了错误,将计算得出的错误值与延时缓存模块输出的原数据相加以完成纠错,并将纠错之后的数据输出至发送缓存模块。
较佳地,所述钱搜索与错误值计算模块根据公式 计算错误值。
本发明实施例还提供了一种用于10G EPON的RS解码方法,包括如下步骤:
A、将输入的并行66比特位宽数据进行填零处理,调整为72比特位宽数据;
B、根据所述72比特位宽数据,每隔31个时钟周期进行如下计算:计算出校正子si,将关键方程求解模块中的寄存器序列R、Q、L和U及度数变量degQ和degR设置为初始值,然后采用并行方式进行31次迭代计算,计算得到的错误位置σ(x)和错误值多项式ω(x);
C、根据错误位置σ(x)和错误值多项式ω(x)搜索出实际发生错误的错误位置和错误值,根据所述错误位置和错误值对所述72比特位宽数据进行纠错;
D、将纠错之后的72比特位宽数据重排,去掉填充数据之后恢复为66比特位宽以适应出口的线路码型,并把FEC校验码替换为空闲码,并输出处理后的66比特位宽数据。
较佳地,步骤B中根据公式
si=r254(αi)254+…+r1(αi)+r0
={…{{{r260(αi)8+r259(αi)7+…+r253(αi)+r252}(αi)9+r251(αi)8+
r250(αi)7+…+r244(αi)+r243}(αi)9+…}(αi)9+…}(αi)9+
r8(αi)8+r7(αi)7+…+r1(αi)+r0,i=0,1,…,2t-1
计算校正子;其中r254至r0为经信道传输后接收到的码字;r260至r255为接收缓存模块填充的全零数据,α为本原多项式x8+x4+x3+x2+1=0的根。
较佳地,步骤B所述计算出校正子si包括:
B11、在当前时钟周期,接收72比特位宽数据,并将所接收的72比特位宽数据以字节为单位顺次划分为9个字节;
B12、将所述9个字节中第一个字节直接输入加法器,将其他8个字节的数据分别乘以αi至(αi)8后输入加法器,将寄存器中当前缓存的结果乘以(αi)9输入加法器;
B13、加法器将输入的数据进行累加计算,计算结果输出至所述寄存器;
B14、判断是否已接收29个时钟周期的数据,若是,执行步骤B15,否则返回步骤B11;
B15、将寄存器中的数据作为校正子si输出,并将寄存器清零。
较佳地,步骤B所述将关键方程求解模块中的寄存器序列R、Q、L和U及度数变量degQ和degR设置为初始值,然后采用并行方式进行31次迭代计算,计算得到的错误位置σ(x)和错误值多项式ω(x)包括:
B21、判断寄存器序列R的度数变量degR,如果小于16,则说明已完成计算,直接将寄存器序列R和寄存器序列Q中的结果输出,否则根据a、b的情况确定执行下面三个步骤,a为0执行B22,b为0执行B23,a和b都不为0执行B24。
B22、寄存器序列R前的多路选择器全部选择0号线上的数据写入寄存器中,Q寄存器序列前的多路选择器全部选择2号线上的数据;同时寄存器序列R的度数变量degR减1,寄存器序列Q的度数变量degQ保持不变;
B23、寄存器序列Q前的多路选择器全部选择0号线上的数据写入寄存器中,同时寄存器序列Q的度数变量degQ减1,寄存器序列R和寄存器序列R的度数变量保持不变;
B24、运算a×Q+b×R,a×Q+b×R的最高项系数也将等于0,将中间结果a×Q+b×R右移一位后赋值给寄存器序列R,反映在电路上即为寄存器序列R前的多路选择器选择1号线上数据写入寄存器中;若degR≥degQ,寄存器序列Q和degQ保持不变,寄存器序列Q前的多路选择器选择2号线上的数据,degR减1;否则将寄存器序列R赋值给寄存器序列Q,寄存器序列Q前的多路选择器选择1号线数据,degR赋值为degQ,degQ减1之后赋值给degR;
B25、在算法迭代对应的寄存器移位中,寄存器序列最高项是0,丢弃该值,最低项清0,并返回步骤B21。
较佳地,所述关键方程求解模块的初始赋值为:
Q0(x)=xS(x),R0(x)=xQ0(x)mod x2t,degQ=31,degR=31。
较佳地,步骤C包括:
C1、将错误位置多项式系数(σ0,σ1,…,σ16)分别乘以对应系数((α9)0,(α9)1,…,(α9)16);
C2、分别偶次项函数值
以及奇次项函数值
C3、计算偶次项函数值、奇次项函数值之和,若所述和为零,说明该位置上发生了错误,将计算得出的错误值与原数据相加以完成纠错,并将纠错之后的数据输出至发送缓存模块。
较佳地,步骤C中根据公式 计算错误值。
从以上技术方案可以看出,在解码前对输入的并行66比特位宽数据进行填零处理,调整为72比特位宽数据,解码后将72比特位宽数据再恢复为66比特位宽数据输出,从而实现既适应10G EPON线路,又与RS译码器的数据接口相适应;采用并行计算方式,每个时钟周期完成一次迭代计算,复用一套电路进行多次迭代计算进行解码处理,本发明提高了RS译码处理速度,解决了串行脉动译码器无法适应10GEPON高速并行数据通信的难点。在本发明的具体实施例中,通过对初值赋值的改变,降低了迭代次数,并采用并行结构,取消了串行脉动结构所需要的并串、串并变换电路,进一步减少了电路资源,降低了处理延时。
附图说明
图1为本发明实施例提供的RS译码电路的总体框图;
图2为图1所示RS译码电路中的校正子计算电路102内部电路结构示意图;
图3为图1所示RS译码电路中的关键方程求解模块103内部电路结构示意图;
图4为关键方程求解模块103的工作时序图;
图5为现有技术中的串行钱搜索电路结构示意图;
图6为本发明实施例提供的并行钱搜索电路结构示意图;
图7为本发明实施例提供的RS解码方法流程图。
具体实施方式
传统的串行脉动结构方式实现ME算法时,多项式是以串行的方式依次移入译码的流水线结构中的,对于RS(255,223)码,校正子有32个,因此需要32个时钟周期才能引入流水线中。而在10GEPON中,每个FEC数据块占用31个时钟周期,对应的校正子每隔31个时钟周期更新一次,因此采取串行脉动结构无法满足吞吐率的要求。另外串行方式还需要增加并串、串并变换电路,增加电路资源。
针对现有技术中存在的问题,本发明采用并行计算方式,每个时钟周期完成一次迭代计算,复用一套电路进行多次迭代计算,这样解决了脉动结构校正子引入问题,并且不需要串并、并串变换电路;另外利用ME算法的初始值与第一次迭代结果之间的关系,将算法的第一次迭代取消,初始值直接按第一次迭代结果赋值,这样只需要31次迭代计算即可得出计算结果,满足10GEPON吞吐率要求,并且处理延迟最小。
为使本发明技术方案的原理、特点以及技术效果更加清楚,以下通过具体实施例对本发明方案进行详细阐述。
本发明实施例提供的RS译码电路的总体框图如附图1所示,总体划分 为接收缓存模块101、校正子计算模块102、关键方程求解模块103、钱搜索与错误值计算模块104、发送缓存模块105和延时缓存模块106六个部分。以下对这六个部分分别进行详细说明。
接收缓存模块101
根据802.3av规范,10GEPON中RS译码器处理的是经过64B/66B编码之后的并行66bit数据,考虑RS译码的基本运算均为以字节为单位的有限域算术,且31个时钟周期处理一个FEC数据块,RS译码器处理的数据接口取为72bit(即9个字节)。因此,接收缓存模块101的功能是做数据重排和位宽调整,将输入的并行66bit数据进行填零处理,调整为72bit数据,按照校正子计算模块102的需求提供相应的接口。调整后的数据顺序和内容如图2的数据输入所示。其中r254至r0为经信道传输后接收到的码字,是有效数据;r260至r255为内部填充的全零数据,是无效数据,目的在于调整FEC块的字节数目成为72bit的倍数。
校正子计算模块102
为便于处理72bit位宽的数据,根据Horner准则将校正子计算公式改写为:
si=r254(αi)254+…+r1(αi)+r0
={…{{{r260(αi)8+r259(αi)7+…+r253(αi)+r252}(αi)9+r251(αi)8+
r250(αi)7+…+r244(αi)+r243}(αi)9+…}(αi)9+…}(αi)9+
r8(αi)8+r7(αi)7+…+r1(αi)+r0,i=0,1,…,2t-1
其中r260=r259=r258=r257=r256=r255=0,是为凑够261(9*29)个字节而添加的,该实现由接收缓存模块101完成。改写之后的计算方法便于使用带反馈的寄存器完成计算任务,校正子计算模块102的内部并行计算电路如图2所示,其中r254至r0为经信道传输后接收到的码字,是有效数据;r260至r255为内部填充的全零数据,是无效数据,目的在于调整FEC块的字节数目 成为72bit的倍数。图示只是一个数值的计算,共32套图示电路完成全部校正子的计算。工作过程为:每个FEC块在72bit的总线上传输,有效数据持续29个时钟周期,在有效数据传输完毕新数据未到达前将寄存器清零;新数据传输开始后,将新数据以字节为单位顺次拆分为9个字节,将每个拆分出的字节分别乘以α0·i至α8·i,将相乘后得到的结果均输入加法器201进行累加求和,求和结果输出至寄存器202;下个周期起寄存器202中保存的中间计算结果通过乘法器203乘以α9·i反馈,与新的和相加后再次写入寄存器201,最终得到与上述公式相同的计算结果。
关键方程求解模块103
本发明实施例提供的关键方程求解模块103的硬件结构如图3所示。处理R(x)与Q(x)运算的电路结构同处理L(x)与U(x)运算的电路结构完全相同。以处理R(x)与Q(x)的电路结构为例,包括33个用于处理R(x)的寄存器单元组成的寄存器序列R以及33个用于处理Q(x)的寄存器单元组成的寄存器序列Q,每个寄存器单元及总线宽度均为8比特;寄存器序列R的第i个寄存器单元Ri唯一对应一个多路选择器MUXRi和一个乘法器;寄存器序列Q的第i个寄存器单元Qi唯一对应一个多路选择器MUXQi和一个乘法器,寄存器单元Ri和寄存器单元Qi对应同一个加法器;所述多路选择器具有三个输入端,分别为0号线、1号线和2号线;i=0,1,2,…32;
多路选择器MUXRi的输出端连接寄存器单元Ri的输入端,多路选择器MUXRi的0号线连接寄存器序列R的第i-1个寄存器单元Ri-1的输出端,多路选择器MUXRi的1号线连接寄存器单元Ri-1对应的加法器的输出端,多路选择器MUXRi的2号线连接寄存器单元Ri的输出端;
寄存器单元Ri的输出端分别连接多路选择器MUXRi的2号线、多路选择器MUXRi+1的0号线、多路选择器MUXQi的1号线以及寄存器单元Ri对应的乘法器的第二输入端;
寄存器单元Ri对应的乘法器的第一输入端用于接收系数a,输出端连接寄存器单元Ri对应的加法器的第一输入端;
多路选择器MUXQi的输出端连接寄存器单元Qi的输入端,多路选择器MUXQi的0号线连接寄存器序列Q的第i-1个寄存器单元Qi-1的输出端,多路选择器MUXQi的1号线连接寄存器单元Ri的输出端,多路选择器MUXQi的2号线连接寄存器单元Qi的输出端;
寄存器单元Qi的输出端分别连接多路选择器MUXQi的2号线、多路选择器MUXQi+1的0号线,以及寄存器单元Qi对应的乘法器的第二输入端;
寄存器单元Qi对应的乘法器的第一输入端用于接收系数b,输出端连接寄存器单元Ri对应的加法器的第二输入端;
当i=0时,多路选择器MUXR0的0号线接收信号0,1号线空接;多路选择器MUXQ0的0号线接收信号0。
其中系数a和b即R、Q的最高次项。寄存器R的赋值有三种情况:保持原值、右移、a×Q+b×R右移,寄存器Q的赋值有三种情况:保持原值、右移、R的原值。
电路工作流程如下:
1.算法迭代计算开始前,先判断R的度数变量degR,如果小于16,则说明已完成计算,可直接将寄存器序列中的结果输出,否则说明还需进行迭代运算;
2.算法迭代过程中,首先判断R和Q的最高项a、b是否为0,如果a为0则R右移一位,Q保持不变,反映在电路结构中为R寄存器序列前的多路选择器全部选择0号线上的数据写入寄存器中,Q寄存器序列前的多路选择器全部选择2号线上的数据。同时R的度数变量degR减1,Q的度数变量degQ保持不变;
3.算法迭代过程中,如果b为0,类似地,Q右移一位,电路中Q寄存器序列前的多路选择器全部选择0号线上的数据写入寄存器中,同时Q的度数变量degQ减1,R和R的度数变量保持不变;
4.算法迭代过程中,如果a和b都不为0,则进行运算a×Q+b×R,这里由于a、b分别是R和Q的最高项系数,a×Q+b×R的最高项系数也将等 于0,将中间结果a×Q+b×R右移一位后赋值给R,反映在电路上即为R寄存器系列前的多路选择器选择1号线上数据写入寄存器中。若degR≥degQ,Q和degQ保持不变,Q寄存器前的多路选择器选择2号线上的数据,degR减1;否则将R赋值给Q,Q寄存器前的多路选择器选择1号线数据,degR赋值为degQ,degQ减1之后赋值给degR。
5.在算法迭代对应的寄存器移位中,最高项是0不需要保存丢弃,最低项清0。
处理L(x)与U(x)运算的电路结构同处理R(x)与Q(x)运算的电路结构完全相同,故不再赘述。
利用ME算法第一次迭代计算方法固定的特点,修改算法的初始赋值为Q0(x)=xS(x),R0(x)=xQ0(x)mod x2t,degQ=31,degR=31,从而将处理时延压缩为31个时钟周期,满足系统吐吞量的要求。
整个关键方程求解的工作时序图如图4所示。每隔31个时钟周期,校正子计算模块102输出一个更新的校正子信号,此时LOAD信号有效,将关键方程求解模块103中的寄存器序列(R、Q、L、U)及度数变量(degQ、degR)置为初始值,然后进行31次迭代计算,在新校正子到达的同时将计算结果错误位置(图4中用SIGMA表示)和错误值多项式(图4中用OMEGA表示)寄存输出至钱搜索与错误值计算模块104,并同时向钱搜索与错误值计算模块104给出有效指示信号VALID。
钱搜索与错误值计算模块104
用于根据错误位置σ(x)和错误值多项式求出错误位置和错误值并纠错。RS译码器内部处理的数据接口为72bit,因此钱搜索需要每个时钟周期并行搜索9个位置(对应9个字节),与此同时进行错误值计算。
传统串行钱搜索的电路结构如图5所示。工作原理如下:当LOAD信号有效时,钱搜索电路的所有输入选择器(图中的MUX)选择σ1至σ15进入电路,此时电路计算的结果为σ0+σ1α+σ2α2+…+σ15α15=σ(α)=σ(α-254),若σ(α)=0,则说明第一个位置r254上发生了错误;当LOAD信号无效时,所 有输入选择器选择反馈寄存器的结果作为输入(对应MUX的第二个输入),以LOAD信号无效后的第一个时钟周期为例,此时电路计算的结果为σ0+σ1α2+σ2α4+…+σ15α30=σ(α2)=σ(α-253),同理若该结果等于0即可得出该位置也发生了错误,依次类推,使用255个时钟周期即可依次完成所有位置是否发生错误的判断。
为适应内部处理的数据接口,钱搜索部分需做相应的并行化处理,由传统的每个时钟周期搜索1个位置修改为每个时钟周期搜索9个位置。数据在进入RS译码器内部之后需经过重排和填充,该功能由接收缓存模块101完成,具体的调整效果如图2所示。其中r254至r0为经信道传输后接收到的码字,是有效数据;r260至r255为内部填充的全零数据,是无效数据,目的在于调整FEC块的字节数目成为72bit的倍数。故这里的钱搜索电路不仅需要并行计算9个字节位置上是否发生错误,还要能够正确对应有效码字与内部接口上的数据位置。
本发明实施例提供的并行钱搜索的电路结构如图6所示,包括反馈倍增电路、偶次项函数值计算电路、奇次项函数值计算电路以及判断纠错电路。
横向虚线的下面为输入变量的反馈倍乘电路,所述反馈倍乘电路将来自关键方程求解模块的错误位置多项式系数(σ0,σ1,…,σ16)每次分别乘以对应系数((α9)0,(α9)1,…,(α9)16),其中奇次幂项得出的结果继续输出至奇次项函数值计算电路,偶次幂项得出的结果输出至偶次项函数值计算电路;
偶次项函数值计算电路,用于并行计算9个字节位置上的错误位置多项式函数σ(x)的偶次项函数值,电路设计中表现为:标准行计算结果分别为位置r254、r245、…、r2上的函数值σ(0)、σ(9)、…、σ(252),标准行前的第i行系数为标准行对应系数的-(i-1)次幂,其后的第i行系数为标准行对应系数的(i+1)次幂;按照以上方法设计的电路即可完成对原码字所有位置是否出错的判断,相应地,每行运算电路输出的函数值结果为
奇次项函数值计算电路,用于并行计算9个字节位置上的错误位置多项式函数σ(x)的奇次项函数值,电路设计方法与偶次项函数值计算电路相同,每行运算电路输出的函数值结果为
判断纠错电路,用于接收来自偶次项函数值计算电路的偶数项函数值以及来自奇次项函数值计算电路的奇次项函数值,计算偶次项函数值、奇次项函数值之和,若所述和为零,说明该位置上发生了错误,将计算得出的错误值与延时缓存模块输出的原数据相加以完成纠错,并将纠错之后的数据输出至发送缓存模块。
错误值计算采用Forney算法,计算公式为
错误值计算部分需要进行一次有限域的除法运算,采用ROM查表的方法实现。
延时缓存模块106
由于译码处理过程有一定的时延,所以需要对接收数据进行缓存,在译码计算完成后从缓存读出数据并纠错发送,延时缓存模块106用于缓存译码处理过程中到达的数据。接收缓存模块101通过写使能信号控制缓存数据的写入,错误位置和错误数值计算完成后,钱搜索与错误值计算模块104向本模块提供读地址控制缓存的FEC块编号从延时缓存模块106中读取数据。延时缓存模块106的数据宽度为72bit,可以由随机存取存储器(RAM)实现。
发送缓存模块105
发送缓存模块105是接收缓存模块101的逆操作,将纠错之后的72bit位宽数据重排,去掉填充数据之后恢复为66bit位宽以适应出口的线路码型,并把FEC校验码替换为空闲码。
本发明实施例还提供了一种用于10G无源光网络EPON的RS解码方法,如图7所示,包括如下步骤:
步骤701:将输入的并行66比特位宽数据进行填零处理,调整为72比特位宽数据;
步骤702:根据所述72比特位宽数据,每隔31个时钟周期进行如下计算:计算出校正子si,将关键方程求解模块中的寄存器序列R、Q、L和U及度数变量degQ和degR设置为初始值,然后采用并行方式进行31次迭代计算,计算得到的错误位置σ(x)和错误值多项式ω(x);
步骤703:根据错误位置σ(x)和错误值多项式ω(x)搜索出实际发生错误的错误位置和错误值,根据所述错误位置和错误值对所述72比特位宽数据进行纠错;
步骤704:将纠错之后的72比特位宽数据重排,去掉填充数据之后恢复为66比特位宽以适应出口的线路码型,并把FEC校验码替换为空闲码,并输出处理后的66比特位宽数据。
较佳地,步骤702中根据公式
si=r254(αi)254+…+r1(αi)+r0
={…{{{r260(αi)8+r259(αi)7+…+r253(αi)+r252}(αi)9+r251(αi)8+
r250(αi)7+…+r244(αi)+r243}(αi)9+…}(αi)9+…}(αi)9+
r8(αi)8+r7(αi)7+…+r1(αi)+r0,i=0,1,…,2t-1
计算校正子;其中r254至r0为经信道传输后接收到的码字;r260至r255为接收缓存模块填充的全零数据,α为本原多项式x8+x4+x3+x2+1=0的根。
步骤702所述计算出校正子si包括:
B11、在当前时钟周期,接收72比特位宽数据,并将所接收的72比特位宽 数据以字节为单位顺次划分为9个字节;
B12、将所述9个字节中第一个字节直接输入加法器,将其他8个字节的数据分别乘以αi至(αi)8后输入加法器,将寄存器中当前缓存的结果乘以(αi)9输入加法器;
B13、加法器将输入的数据进行累加计算,计算结果输出至所述寄存器;
B14、判断是否已接收29个时钟周期的数据,若是,执行步骤B15,否则返回步骤B11;
B15、将寄存器中的数据作为校正子si输出,并将寄存器清零。
步骤702所述将关键方程求解模块中的寄存器序列R、Q、L和U及度数变量degQ和degR设置为初始值,然后采用并行方式进行31次迭代计算,计算得到的错误位置σ(x)和错误值多项式ω(x)包括:
B21、判断寄存器序列R的度数变量degR,如果小于16,则说明已完成计算,直接将寄存器序列R和寄存器序列Q中的结果输出,否则根据a、b的情况确定执行下面三个步骤,a为0执行B22,b为0执行B23,a和b都不为0执行B24。
B22、寄存器序列R前的多路选择器全部选择0号线上的数据写入寄存器中,Q寄存器序列前的多路选择器全部选择2号线上的数据;同时寄存器序列R的度数变量degR减1,寄存器序列Q的度数变量degQ保持不变;
B23、寄存器序列Q前的多路选择器全部选择0号线上的数据写入寄存器中,同时寄存器序列Q的度数变量degQ减1,寄存器序列R和寄存器序列R的度数变量保持不变;
B24、运算a×Q+b×R,这里由于a、b分别是R和Q的最高项系数,a×Q+b×R的最高项系数也将等于0,将中间结果a×Q+b×R右移一位后赋值给寄存器序列R,反映在电路上即为寄存器序列R前的多路选择器选择1号线上数据写入寄存器中;若degR≥degQ,寄存器序列Q和degQ保持不变,寄存器序列Q前的多路选择器选择2号线上的数据,degR减1;否则将寄存器序列R赋值给寄存器序列Q,寄存器序列Q前的多路选择器选择1号线数 据,degR赋值为degQ,degQ减1之后赋值给degR;
B25、在算法迭代对应的寄存器移位中,寄存器序列最高项是0,丢弃该值,最低项清0,并返回步骤B21。
较佳地,所述关键方程求解模块的初始赋值为:
Q0(x)=xS(x),R0(x)=xQ0(x)mod x2t,degQ=31,degR=31。
较佳地,步骤703包括:
C1、将错误位置多项式系数(σ0,σ1,…,σ16)分别乘以对应系数((α9)0,(α9)1,…,(α9)16);
C2、分别偶次项函数值
以及奇次项函数值
C3、计算偶次项函数值、奇次项函数值之和,若所述和为零,说明该位置上发生了错误,将计算得出的错误值与原数据相加以完成纠错,并将纠错之后的数据输出至发送缓存模块。
较佳地,步骤703中根据公式 计算错误值。
本发明技术方案可以达到如下技术效果:
本发明提高了RS译码处理速度,解决了串行脉动译码器无法适应10GEPON高速并行数据通信的难点;通过对初值赋值的改变,降低了迭代次数,并采用并行结构,取消了串行脉动结构所需要的并串、串并变换电路,减少了电路资源,降低了处理延时。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在 本发明保护的范围之内。