发明内容
本发明的主要目的在于提供一种RS编码器的编码方法及RS编码器,以解决上述问题至少之一。
根据本发明的一个方面,提供了一种里德所罗门(RS)编码器的编码方法,包括:RS编码器将输入的数据划分成并行的预定数目路数据;RS编码器同时对预定数目路数据进行多码字并行编码处理。
上述RS编码器同时对预定数目路数据进行编码处理之后,还包括:RS编码器判断输入的控制信号使能状态,如果使能,则将编码后的数据插入到编码前数据流的指定位置后输出,否则,直接将输入的数据输出。
上述RS编码器判断输入的控制信号使能状态之前,还包括:RS编码器以预定数量个码字为单位,将编码处理后的并行的预定数目路数据进行串行处理。
上述RS编码器将输入的数据划分成并行的预定数目路数据之前,还包括:RS编码器对输入的数据在数据流的指定位置进行补零操作。
上述RS编码器对将并行的预定数目路数据进行串行处理之后,还包括:RS编码器对串行处理后得到的数据进行去零处理。
上述方法还包括:RS编码器通过以下公式计算得到指定位置的内容:
其中,C
j表示预定数目路数据的其中之一路数据的第j个多码字并行编码的阶段性结果(j为0到15闭区间取值),g表示由RS码型的生成多项式得来的计算因子,m为并行编码的码字个数,g
ji表示多码字并行编码处理的矩阵计算因子的第j行第i个元素,a
i表示输入的待编码的m个码字,
为有限域乘法器,
为有限域加法器。
根据本发明的另一个方面,还提供一种RS编码器,包括:划分模块,用于将输入的数据划分成并行的预定数目路数据;编码模块,用于同时对预定数目路数据进行多码字并行编码处理。
上书编码器还包括:判断模块,用于判断输入的控制信号的使能状态;输出模块,用于在判断模块的输出结果为是的情况下,将编码后的数据插入到编码前数据流的指定位置后输出;以及在在判断模块的输出结果为否的情况下,直接将输入的数据输出。
上述编码器还包括:串行处理模块,与编码模块相连,用于在判断模块判断是否将编码后的数据插入到编码前数据流的指定位置之前,以预定数量个码字为单位,将编码处理后的并行的预定数目路数据进行串行处理。
上述编码器还包括:补零模块,与划分模块相连,用于在将输入的数据划分成并行的预定数目路数据之前,对输入的数据在数据流的指定位置进行补零操作。
上述编码器还包括:去零模块,连接在判断模块和串行处理模块之间,用于在对将并行的预定数目路数据进行串行处理之后,对串行处理后得到的数据进行去零处理。
通过本发明,在RS编码时采用并行编码的技术手段,解决了相关技术中,编码效率不高,数据的吞吐率也不大,不利于整个系统传输速率的提高等问题,进而达到了有效提高编码效率和数据吞吐率的效果,同时,对整个系统的传输速率也有良好的促进效果。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
图2为根据本发明实施例的RS编码器的编码方法流程图。如图2所示,该方法包括:
步骤S202,RS编码器将输入的数据划分成并行的预定数目路数据。在具体实施时,可以先对上述输入的数据进行补零操作,然后再按单个或多个等预定数量个码字为单元进行交织处理,并行输出预定数目路数据。
步骤S204,RS编码器同时对预定数目路数据进行多码字并行编码处理。需要说明的是,上述多码字并行编码处理是针对在相关技术中按照单个码字进行串行处理而言的。
上述实施例,由于RS编码器在编码时采用并行编码处理的技术手段,因此,相对于相关技术中的串行编码,提高了编码效率和数据吞吐率,同时,对整个系统的传输速率也有良好的促进效果。
在具体应用过程中,上述方法还可以包括以下处理过程:RS编码器判断输入的控制信号使能状态,如果使能,则将编码后的数据插入到编码前数据流的指定位置后输出,否则,直接将输入的数据输出。上述处理过程可以在RS编码器同时对预定数目路数据进行多码字并行编码处理之后进行。通过上述处理过程,在经过RS编码器对输入的数据进行编码以后,对输出的数据的具体内容进行了规定。
在具体应用过程中,上述方法还可以包括以下处理过程:RS编码器以预定数量个码字为单位,将编码处理后的并行的预定数目路数据进行串行处理,即将并行的数据还原为串行。上述处理过程可以在上述RS编码器判断输入的控制信号使能状态之前进行。在具体实施时,可以根据上述对编码处理后的数据进行解交织处理(与步骤S202的具体实施过程中的交织处理相对应),按单个或多个等预定数量个码字为单元,将并行的预定数目路编码数据串行输出(处理)。
在具体应用过程中,上述方法还可以包括以下处理过程:RS编码器对输入的数据在数据流的指定位置进行补零操作。补零的个数根据预定数目路数据和并行编码处理的码字数决定,具体可参见下面的表2。上述处理过程可以在上述RS编码器将输入的数据划分成并行的预定数目路数据之前进行。通过补零操作,将输入的数据构造成整数拍数据进行处理。
在具体应用过程中,上述方法还可以包括:RS编码器对串行处理后得到的数据进行去零处理。上述处理过程可以在上述RS编码器对将并行的预定数目路数据进行串行处理之后进行。通过上述处理过程,可以还原上述步骤S202中所述的输入的数据,即还原数据流中的有效信息。
在具体应用过程中,上述方法还包括:RS编码器通过以下公式计算得到指定位置的内容:
其中,C
j表示预定数目路数据的其中之一路数据的第j个多码字并行编码的阶段性结果(j为0到15闭区间取值),g表示由RS码型的生成多项式得来的计算因子(计算因子g是根据具体RS码型的生成多项式求来,在相关技术中可以查询得知,此处不再赘述),m为并行编码的码字个数,g
ji表示多码字并行编码处理的矩阵计算因子的第j行第i个元素,a
i表示输入的待编码的m个码字,
为有限域乘法器,
为有限域加法器。其中,C与c的含义相同。
为了更好地理解上述实施例,以下结合相关附图和具体实例详细说明。
实例1
本实例,以G.709协议中规定的光信道传输单元(Optical Channel Transport Unit,简称为OTU)帧格式为例,图1所示的RS串行编码方法每个时钟只能处理一个码字,而采用本实例的并行编码方法的编码器,每个时钟至少能处理两个码字,则编码效率提升了至少1倍;
以上述的OTU帧格式为例,相关技术的RS串行编码在400MHz时钟下的数据吞吐率为3.2Gbps,而采用本实例的并行编码器,其数据吞吐率至少为102Gbps,数据吞吐率有很大的提高,对于光通信传输速率的提升大有裨益。
本实例中,RS码编码器包括:补零单元、数据交织单元、并行编码单元、数据解交织单元、去零单元和数据拼接单元。其中,
补零单元是指对输入的数据进行补零的操作,构造成整数拍数据进行处理;
数据交织单元是指对补零后的数据,按单个码字为单元进行交织处理,并行输出n路数据;
数据解交织单元是指对编码后的数据进行解交织处理,按单个码字为单位,将并行输入的n路编码数据串行输出;
去零单元是指对数据解交织单元出来的数据进行去零处理,去掉编码前插入的零;
数据拼接单元是指根据输入控制信号的状态,来决定是否将编码后的数据顺序插入到编码前码流的指定位置,是否输出完整的编码结果。
并行编码单元采用的并行编码方法根据图1所示的串行RS编码器推导而来,其推导步骤如下:
(1)基于附图1的串行编码器,对RS(n,k)码而言,设t时钟周期余数寄存器中C0,C1,...,Cn-k-1的内容分别为:C0(t),C1(t),...,Cn-k-1(t);t+1时输入信息比特是a(t+1),则t+1时钟周期的余数寄存器中的内容根据反馈电路的连接关系更新为:
①
(2)将①式写成矩阵表达式,为简化表达式和便于计算,设置参量C(t+1)、C(t)、A(t+1)和G,则①式可以简化为:
C(t+1)=G·(C(t)+A(t+1)) ②
(3)由②式类推可以推导出t+m时刻的状态后信息C(t+m)、输入信息A(t+m)、状态前信息C(t)三者之间的关系,从而进一步迭代出如下的表达式:
③
这意味着可以在时钟T时刻同时输入m个信息(m为1到16之间的任意一个值均可),那么k/m个时钟周期之后,系统编码所需要的校验位就是寄存器的内容。
上述实例中的RS编码器,与相关技术中的串行编码方案相比,节省了编码时间,编码效率提升了至少一倍,数据吞吐率也提高了数倍,对整个系统的传输速率有良好的促进效果。
若对码字采用并行的编码方法,如每个时钟周期并行处理2个、3个、4个或者更多的码字,这样不仅编码器的编码效率有很大的提升,而且系统设备的整体数据吞吐率也有不小的提高。
图3为根据本发明实施例的RS编码器的结构框图。如图3所示,该编码器包括:
划分模块30,连接至编码模块32,用于将输入的数据划分成并行的预定数目路数据;
编码模块32,用于同时对预定数目路数据进行多码字并行编码处理。
在优选实施过程中,如图4所示,上述编码器还可以包括:判断模块34,与输出模块36相连,用于判断输入的控制信号的使能状态;输出模块36,用于在判断模块的输出结果为是的情况下,将编码后的数据插入到编码前数据流的指定位置后输出;以及在在判断模块的输出结果为否的情况下,直接将输入的数据输出。
在优选实施过程中,如图4所示,上述编码器还可以包括:串行处理模块38,与编码模块32相连,用于在判断模块34判断是否将编码后的数据插入到编码前数据流的指定位置之前,以预定数量个码字为单位,将编码处理后的并行的预定数目路数据进行串行处理。
在优选实施过程中,如图4所示,上述编码器还可以包括:补零模块40,与划分模块30相连,用于在将输入的数据划分成并行的预定数目路数据之前,对输入的数据在数据流的指定位置进行补零操作。
在优选实施过程中,如图4所示,上述编码器还可以包括:去零模块42,连接在判断模块34和串行处理模块38之间,用于在对将并行的预定数目路数据进行串行处理之后,对串行处理后得到的数据进行去零处理。
为了更好地理解上述实施例,以下结合具体实例和相关附图具体说明。
实例2
本实例以G.709协议中Annex A中规定的光信道传输单元(Optical Channel Transport Unit,简称为OTU)帧格式和RS(255,239)为例来说明。如图5所示,RS码编码器包括以下处理单元:补零单元50(相当于补零模块40)、数据交织单元52(相当于划分模块30),并行编码单元54(相当于编码模块32)、数据解交织单元56(相当于串行处理模块38)、去零单元58(相当于去零模块42)和数据拼接单元60相当于(判断模块34和输出模块36)。本实例以每拍并行处理2个码字为例来详细说明,图6中标注了数据流经过RS码编码器时,上述各个处理单元的位宽情况。其中,
补零单元50是指对输入的数据进行补零的操作,构造成整数拍数据进行处理;如图7所示,图7中的数字均代表时钟节拍数,帧结构1个子行4080字节,其中校验字为256字节。每一路子编码单元的校验信息为16字节,每一个时钟周期数据为256位,则每个子行占据120周期的净荷数据(含128位补零)和8个周期的校验数据。分别在第0、128、256、384周期时补零128位,和有效数据一起送入后级处理单元。补零后的数据在校验数据对应的周期处可置0,为后续数据拼接模块插入校验数据。
数据交织单元52是指对补零后的数据,按单个码字为单元进行交织处理,并行输出n路数据;如图8所示,编码前,将信息位依次交替的送入16个子编码单元,当完成编码后,按列优先依次顺序读出。假定输入的256bit数据写成单个码字的形式为B0,B1,...,B31。数据交织单元的功能是将输入的256bit数据分成16路分别进入16个RS子编码单元,即B0,B16送入子编码单元sub_0;B1,B17送入子编码单元sub_1……B15,B31送入子编码单元sub_15。
并行编码单元54实现对输入的交织数据进行并行编码,其具体实现包括如下步骤:(1)根据码生成多项式计算矩阵系数G2;(2)根据矩阵系数和输入的信息得出并行编码表达式。
步骤(1)中,可先根据具体RS码型列出其生成多项式,再由生成多项式产生生成矩阵,并行编码单元54中每拍并行编码的码字个数m,即是矩阵因子g的乘方次数。具体地,如表1所示,即是根据RS(255,239)码生成多项式计算得出的有限域RS并行编码的矩阵系数G2;
表1
33 |
59 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
122 |
13 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
45 |
104 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
62 |
189 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
91 |
68 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
24 |
209 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
192 |
30 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
102 |
8 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
243 |
163 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
116 |
65 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
40 |
41 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
44 |
229 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
17 |
98 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
246 |
50 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
228 |
36 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
44 |
59 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
步骤(2)中,设并行输入的2个信息码字为:a0,a1,t时刻寄存器内容为C(t)=[c15,c14,c13,...,c1,c0]T,t+1时刻寄存器内容为C(t+1)=[C15,C14,C13,...,C1,C0]T,将的步骤(1)计算得出的矩阵系数G2代入公式③中,即可得出G2并行编码表达式,如下所示:
④
如上的④式中,gji是矩阵G
2第j行第i个元素,
为有限域乘法器,
为有限域加法器。这样经过120个时钟周期后寄存器的内容C15,C14,C13,...,C1,C0就是RS码编码得到的校验位。补零后,输入信息为[a0,a1,...,a239],经过RS编码器后,RS码最后的输出码字为[a0,a1,...,a239,C15,C14,C13,...,C1,C0]。
数据解交织单元56是指对编码后的数据进行解交织处理,按单个码字为单位,将并行输入的n路编码数据串行输出;解交织的过程与交织过程相反。假定sub_0输出的16位数据写成字节形式为A0,A1,sub_1输出的16位数据为A2,A3,依次类推,sub_15输出的16位数据为A30,A31。那么,解交织后依次输出序列为:A0,A2,A4,...A30,A1,A3,A5,...A31。
去零单元58是指对数据解交织单元56出来的数据进行去零处理,去掉编码前插入的零;如图7所示,分别在第0、128、256、384周期时去掉之前所补的128位零,有效的信息数据还原为补零前的样子,去零过程中所产生的缺口直接放在数据帧的最后。
数据拼接单元60是指根据输入控制信号的状态,来决定是否将编码后的数据顺序插入到编码前码流的指定位置,是否输出完整的编码结果。如图8所示,如果编码使能信号有效,则将解交织后的编码数据填入校验数据部分(例如,第一行中的120至127,第二行中的248至255等),与输入的信息数据拼接按照帧格式完整输出;反之,如果编码使能信号无效,则在校验数据部分填零,直接将输入的信息数据按照帧格式输出。
上述实例只是针对光传输领域RS(255,239)码每拍并行处理2个码字的并行编码器所做的具体实施说明,特别地,正如公式③所示,本实例所阐述的并行RS编码器可以并行处理m个码字(m的范围区间从1到16),如表2所示,列举了不同实施方式时并行RS编码器的相关信息,包括输入数据位宽、并行处理码字数、补零数及并行编码耗时等。相应地,随着每拍并行处理的码字越多,则计算越繁琐,实现越复杂,但所耗的编码时间越短,编码效率越高,需要根据实际情况来权衡。
表2
从以上的描述中,可以看出,本发明实现了如下技术效果:
通过本发明,在RS编码时采用并行编码的技术手段,解决了相关技术中,编码效率不高,数据的吞吐率也不大,不利于整个系统传输速率的提高等问题,进而达到了有效提高编码效率和数据吞吐率的效果,同时,对整个系统的传输速率也有良好的促进效果。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。