3.5 BCH码
3.5.1BCH码的基本原理
BCH码是一类重要的纠错码,它把信源待发的信息序列按固定的κ位一组划分成消息组,再将每一消息组独立变换成长为n(n>κ)的二进制数字组,称为码字。如果消息组的数目为M(显然M≤2),由此所获得的M个码字的全体便称为码长为n、信息数目为M的分组码,记为n,M。把消息组变换成码字的过程称为编码,其逆过程称为译码。
3.5.2 BCH码的编码
BCH码编码算法的核心就是找到其生成多项式g(x),而求g(x)的关键是找出每个根的最小多项式。
用软件实现的BCH码编码器中,编码算法的步骤如下:
(1) 根据用户输入的m值,生成本原多项式P(x);
(2) 构造有限域GF(2m);
(3) 根据用户输入的纠错能力t值,计算最小距离d=2t+1;
(4) 找出每个根的最小多项式 ,其中 ;
(5) 求出相应的生成多项式
(6) 进行编码
3.5.3 BCH码的译码
和一般循环码一样,译码的第一步是计算接收向量R(x)的伴随式。对于一个纠t个错误的BCH码,其伴随式是2t重向量。
令ai的最小多项式为mi(x),则有
一般地,设R(x)中有k个错误。且分别位于 ,即
式中, 为已知,而 未知。一旦求出 ,则他们的指数 将给出E(x)的错误位置。一般说来,对于给定的 ,方程组可能有多组解,每一组解对应一种可能的错误模式。但重量k≤t的错误模式是唯一的,这才是要寻找的解。当t的数值较大时,直接解方程组是比较困难的,于是人们在寻找各种有效的解法,每一种解法就是BCH码的一种译码算法。
令 l表示错误出现的位置,并称之为错位号。为方便,可表示成
这2t个方程是 的对称函数,习惯上称之为对称函数。为求解,特定义辅助函数:
(3-23)
的k个根 是错位号的逆,称 为错误位置多项式。于是,求错误位置问题就转化为求 的根。 的系数 是代求的,故 是一个未知多项式。由根与系数的关系有
(3-24)
被称为 的初等对称函数。由式(3-22)和(3-24)可知 由伴随分量所决定。事实上,他们的关系满足牛顿恒等式:
(3-25)
这样,当 已知,且又知道错误个数k,就可以确定 ,从而确定 。虽然实际中并不知道接收向量中的错误个数,但最小距离译码就是求重量最轻的错误模式,即求满足给定 的最低次多项式 。当k≤t时,结果是唯一的,因而可通过实验性迭代法决定相应的错误模式。
4 应用Matlab软件对线性分组码的仿真
4.1 简单重复码
一.最简单的一种线性分组码是简单重复码,在其中有两个消息要在一个二进制对称信道上传输,对这两个消息不用0和1传输,而是用由全0和1组成的两个序列来传输。这两个序列的长度选成某个奇数,其编码过程如下:
解码按照“简单多数表决”的方式解码;即,如果接收符号的大多数为1,解码器判决为1;如果多数是0,解码器判决为0.
如果接收到的传输符号至少有n+1/2个是错误的,那么就会发生差错。应为信道是具有交叉概率为 的二进制对称信道,差错概率就能表示为: Matlab的线性分组码及其子码的设计与仿真(11):http://www.751com.cn/tongxin/lunwen_2568.html