[转载]BCH码

BCH码是循环码的一个重要子类,它具有纠多个错误的能力,BCH码有严密的代数理论,是目前研究最透彻的一类码。它的生成多项式与最小码距之间有密切的关系,人们可以根据所要求的纠错能力t很容易构造出BCH码,它们的译码器也容易实现,是线性分组码中应用最普遍的一类码。

本原循环码

本原循环码是一类重要的码。汉明码、BCH码和某些大数逻辑可译码都是本原码。本原码的特点是:

1、码长为,m为整数。

2、它的生成多项式由若干m阶或以m的因子为最高阶的多项式相乘构成。

要判断循环码是否存在,只需判断阶生成多项式是否能由的因式构成。

代数理论告诉我们,每个m阶既约多项式一定能除尽。例如,m=5,共有6个5阶既约多项式:

这6个多项式都能除尽。且必定是的因式。

BCH码的生成多项式

    若循环码的生成多项式具有如下形式:

    ,这里t为纠错个数,为最小多项式,LCM表示取最小公倍式,则由此生成的循环码称之为BCH码。该码是以三个发现者博斯(Bose)、查德胡里(Chaudhuri)和霍昆格姆(Hocquenghem)名字的开头字母命名的。其最小码距dmin≥2t+1,能纠t个错误。BCH的码长为n=的因子。码长为n=的BCH码称为本原BCH码。码长为因子的BCH码称为非本原BCH码。对于纠t个错误的本原BCH码,其生成多项式为  。纠正单个错误的本原BCH码就是循环汉明码。

下面介绍几种常见的BCH码。

1、戈雷码(Golay)

  (23,12)码是一个特殊的非本原BCH码,称为戈雷码,它的最小码距7,能纠正3个错误,其生成多项式为。它也是目前为止发现的唯一能纠正多个错误的完备码。

2、扩展形式

    实际应用中,为了得到偶数码长,并增加检错能力,可以在BCH码的生成多项式中乘D+1,从而得到(n+1,k+1)扩展BCH码。扩展BCH码相当于将原有BCH码再加上一位的偶校验,它不再有循环性。

3、缩短形式

    几乎所以的循环码都存在它另一种缩短形式。实际应用中,可能需要不同的码长不是或它的因子,我们可以从码中挑出前s位为0的码组构成新的码,这种码的监督位数不变,因此纠错能力保持不变,但是没有了循环性。

BCH译码

BCH码的译码方法可以有时域译码和频域译码两类。频移译码是把每个码组看成一个数字信号,把接受到的信号进行离散傅氏变换(DFT),然后利用数字信号处理技术在“频域”内译码,最后进行傅氏反变换得到译码后的码组。时域译码则是在时域直接利用码的代数结构进行译码。BCH的时域译码方法有很多,而且纠多个错误的BCH码译码算法十分复杂。常见的时域BCH译码方法有彼得森译码、迭代译码等。BCH的彼得森译码基本过程为:1、用的各因式作为除式,对接收到的码多项式求余,得到t个余式,称为“部分校验式”。2、用t个部分校验式构造一个特定的译码多项式,它以错误位置数为根。3、求译码多项式的根,得到错误位置。4、纠正错误。具体内容可参阅参考资料[2]的第357-359页。

事实上,BCH码是一种特殊的循环码,因此它的编码器不但可以象其它循环码那样用除法器来实现,而且原则上所有适合循环码译码的方法也可以用于BCH码的译码。

RS码

    RS码是Reed-Solomon 码(理德-所罗门码)的简称,它是一类非二进制BCH码,在RS码中,输入信号分成k·m比特一组,每组包括k个符号,每个符号由m个比特组成,而不是前面所述的二进制码由一个比特组成。

一个纠t个符号错误的RS码有如下参数:

    码长:  符号, 或比特

    信息段:符号,         或比特

    监督段:符号   或比特

    最小码距:符号 或比特

RS码非常适合于纠正突发错误。它可以纠正的错误图样有:

总长度为比特的单个突发

总长度为比特的两个突发

   。。。

总长度为比特的i个突发。

    对于一个长度为符号的RS码,每个符号都可以看成是有限域GF()中的一个元素。最小码距为d符号的RS码的生成多项式具有如下形式:

    

这里,是GF()中的一个元素。例如,构造一个能纠3个错误符号,码长为15,m=4的RS码,由RS码的参数可知,该码的码距为7,监督段为6个符号。因此该码为(15,9)RS码。生成的多项式为:

所以从二进制角度看,这是一个(60,36)码。

分组纠错码的仿真

    前面介绍了各种分组纠错码的原理及相关内容。不难看出,无论是何种编码,其编码、译码都是相对复杂的,除了复杂的数学模型外,其实际电路也非常繁杂。为方便用户对分组纠错码的仿真和性能研究,SystemView在通信库中提供了专门的分组纠错编码(Blk Code)、译码(Blk Decode)的图符库。用户只需要在相应的参数输入栏内填入相应参数即可获得BCH码、RS码、和Golay码(注:因为戈雷码为(23,12)码,所以编码其参数是确定的,用户无需输入参数)。图12.18所示为分组纠错码的参数输入窗口。在“Code Length”内

可以输入码的长度n,在“Information Bits”内可以输入信息码的长度k,在“Correct”内可以输入能纠错的位数t。单击单选框“Select Block Code”内的选项可以选择BCH码、RS码和Golay码。

图12.19所示是利用分组纠错码图符建立的一个Golay码编码、译码以及信号在高斯噪声信道上传输误码率测试的仿真原理图。同样也可以将编译码器设置为其它BCH码类型。在使用RS码时,因为RS码为非二进制码,因此在进入编码之前,应对二进制数据信号进行比特符号转换。图12.20是RS码的编译码仿真实验原理图。实验中使用的是(15,11)RS码,中间使用了比特符号和符号比特转换器,转换参数为每符号4比特。信号源使用4Hz的PN码。信道中的噪声用高斯噪声信号源来仿真,并使用了一个放大器作为信噪比控制器。

 

http://www.zzxy.cn/article/article.php?articleid=49543&pagenum=6