基于fpga的bch编译码器的设计与实现内容摘要:

中的 t个或更少个错误的任意组合,称之为能纠正t个错误的二元本原 BCH码。 BCH码是循环码的一类,因此,它具有分组码、循环码的一切性质。 但它明确界定了码长,校验位数目,码的最小距离之间的关系。 可以看出它的性能较好,在同样的编码效率下,纠错能力均较强,故可在无线通信系统中获得广泛应用。 根据 BCH码的定义,若 a是 ( )中的本原元,又码长为 ,能纠正 t个错误的二元 BCH码的生成多项式 g(x)是 ( )上的次数最低的多项式,它以 为根,即对于 1≦ i≦ 2t,有 ( )。 根据 ( )域的性质,这些根的共轭元也是 ( ) 的根。 基于 FPGA 的 BCH 码编 /译码器的设计与实现 6 令 ( )是 的最小多项式,则必有 ( ) * ( ) ( ) ( ) ( ) + 式中 LCM表示最小公倍数。 对于偶数的 j, 可以写成 (其中 i为奇数, , ),此时,因为 ( ) 是 的共轭元,所以 和 有相同的最小多项式 ( ) ( ),从而可知 BCH码的生成多项式 g(x)可写成 ( ) * ( ) ( ) ( ) ( ) + 因为每个最小多项式的次数为 m,所以 ( )次数至多为 ,即码元的校验位数目为 nk,至多等于。 由于 a为本原元 (它生成 ( )中所有非零元素 ),也由于是由 a和 a的共轭元的最小多项式生成 BCH码的生成多项式,故称上述方法生成的 BCH码为本原 BCH码。 BCH 译码原理 我们知道, BCH码是一种特殊的循环码,所以,循环码和线性分组码的译码方法对于 BCH码是完全适用的。 但 BCH码在译码上也有特殊性,因为 BCH码有它的特殊结构,即生成多项式的根与校验矩阵 H有很好的联系。 设 BCH码的码字多项式为 : ( ) 若 ( )( )是生成多项式 g(x)的根,由于生成多项式 g(x)能除尽码字多项式 v(x),则 必然也是 v(x)的根,故有: ( ) ( ) ( ) (31) 写成矩阵形式为: 由式 (31)和校验矩阵 H的定义可得到: (33) 其中 ( )是码字矢量,而 是校验矩阵 H的转置矩阵。 基于 FPGA 的 BCH 码编 /译码器的设计与实现 7 若 是 的共轭元,则当且仅当 ( ) 时,也有 ( )。 即若 ( )与校验矩阵 H的第 i行的内积为零,则它与 H的第 j行的内积也为零。 因此,可以省去矩阵 H的第 i行的内积为零,则它与 H的第 j行的内积也为零。 因此,可以省去矩阵 H的第 j行。 对于 BCH码,可省去偶数项,校验矩阵 H可写成如下形式: 例如,对于 (15,7)BCH码的生成多项式 ( ) ,其根为 , , , ,但只有 , 是独立的,所以校验矩阵 H为 在对 BCH码进行译码时,如果发生 t个错误,那么一般要找出这 t个错误的位置,同时求出这些错误的值 (即错误大小 )。 在二进制中,不是“ 1”错成“ 0”,就是“ 0”错成 “ 1”,所以,错误值总是等于 ,只要求出错误位置就够了。 可以从伴随方程来得到错误位置多项式。 如,对于上述 (15,7)BCH码,若错误除在第 i, j位,则伴随式为 其中 s有两个分量,即 组合上面两式可得 所以 和 都是 基于 FPGA 的 BCH 码编 /译码器的设计与实现 8 (34) 的根。 式 (34)被称为错误多项式。 通过试探法可以解出根 和。 3 BCH(57,44,6)编码器的设计与实现 BCH(57,44,6)编码器设计 BCH码的结构完全建立在有限域的基础上,可以通过近世代数的方法来精确描述。 BCH(57,44,6)是一个系统循环码,可以通过如下步骤实现: ○ 1 用 乘以消息多项式 m(x); 基于 FPGA 的 BCH 码编 /译码器的设计与实现 9 ○ 2 用生成多项式 g(x)除 ( )得到余式 b(x)(校验位多项式 ); ○ 3 构成码字多项式 ( ) ( ) ( )。 实现 BCH(57,44,6)编码的关键是要找出改码的生成多项式 g(x)。 给定了码长和纠错能力可以通过如下方法来构造此码的生成多项式 g(x): 由于 BCH(57,44,6)代码是以二元扩域 ( )到二元域 ( )的变换为基础的,故首先找到一个 6次本原多项式 ( ) ,产生一个 ( )扩域;然后在 ( )上找到一个本原元,利用本原多项式 p(x)的根 计算 2t个连续幂次根 a, , 所对应的 GF(2)域上的最小多项式 ( ) , ( ) , ( ) ,这里 t为 BCH代码能纠正差错的个数, BCH(57,44,6)码可以纠正两个错误,即t=: ( ) * ( ) ( ) ( ) + 通过上式的生成多项式 g(x),就可以构成 BCH(57,44,6)编码器。 通过 g(x)可以获得该 BCH系统码编码电路图如下图所示: 图 31 BCH(57,44,6)编码电路图 基于 FPGA 的 BCH 码编 /译码器的设计与实现 10 上图中当门 1闭合,门 2开时,编码器接收信息的输入,并且直接将信息作为编码信息输出。 44次移位后信息位全部送入如上电路,完成出发作用,此时移位寄存器内保留了余式的系数,在二进制情况下就是校验元。 此时,门 1关,门 2开,在经过 13次移位后,把移位器中的校验码元全部输出,与原先 44位信息元组成了一个长为 57位的码字。 从而完成 BCH编码器的输出。 VHDL 实现及仿真结果 下面 举例说明 ( 57,44,6) BCH编码器的编码过程,假定输入消息序列为: data_in=(11101101110010111010100110000111011001010100),因为 ( 57,44,6)BCH码是系统码,故控制电路在输入数据 din的前 44拍时发控制信号给输出电路使编码器输出码元 data_out 等于 din; 44拍结束时,除法电路的内容就是余式,在接下来的 13拍,输出电路在控制电路的控制下依次输出余数 1100111010011,至此 57拍对一个输入数据的编码完成。 ( 57, 44, 6) BCH编码器的完整编码输出序列为: data_out=111011011100101110101001100001110110010101001100111010011 其 VHDL部分 代码如下: process(clk) begin if(clk39。 event and clk=39。 139。 ) then if(count_state=56) then count_state=1。 register_state=divide。 else count_state=count_state+1。 if(count_state=44) then register_state=shift。 end if。 end if。 基于 FPGA 的 BCH 码编 /译码器的设计与实现 11 end if。 end process。 process(clk) begin if(clk39。 event and clk=39。 039。 ) then case register_state is when divide = register_shift(0) = data_in xor register_shift(12)。 register_shift(1) = data_in xor register_shift(12) xor register_shift(0)。 register_shift(2) = register_shift(1)。 register_shift(3) = data_in xor register_shift(12) xor register_shift(2)。 register_shift(4) = register_shift(3)。 register_shift(5) = register_shift(4)。 register_shift(6) = data_in xor register_。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。