BCH编码与译码简析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

BCH编码

自1950年汉明发表了纠正单个随机错误的码以来,几乎用了近十年的时间,才于1959年由霍昆格姆(Hocquenghem),1960年由博斯(Bose)和雷-查德胡里(Ray-Chaudhuri)分别提出了纠正多个随机错误的循环码——BCH码(Bose、Ray-Chaudhuri与Hocquenghem的首字母缩写)的构造方法。BCH 码是用于校正多个随机错误模式的多级、循环、错误校正、变长数字编码,是迄今为止所发现的一类很好的线性纠错码类。它的纠错能力很强,特别在短和中等码长下,其性能接近于理论值,并且构造方便,编码简单。特别是它具有严格的代数结构,因此它在编码理论中起着重要的作用。BCH码是迄今为止研究得最为详尽,分析得最为透彻,取得的成果也最多的码类之一。

1960年皮德逊(Peterson)从理论上解决了二进制BCH码的译码算法,奠定了BCH码译码的理论基础。稍后,格林斯坦(Gorenstein)和齐勒尔把它推广到了多进制。1966年伯利坎普(Berlekamp)利用迭代算法解BCH码,从而大大加快了译码速度,从实际上解决了BCH码的译码问题。由于BCH码性能优良,结构简单,编译码设备也不太复杂,使得它在实际使用中受到工程技术人员的欢迎,是目前用得最为广泛的码类之一。

一、BCH码的构建

BCH 码使用有限域上的域论与多项式。为了检测错误可以构建一个检测多项式,这样接收端就可以检测是否有错误发生。

要构建一个能够检测、校正两个错误的BCH 码,我们要使用有限域GF(16) 或者Z2[x]/。如果α是m1(x) = x4 + x + 1的一个根,那么m1就是α的极小多项式,这是因为

m1(x) = (x -α)(x -α2)(x -α4)(x -α8)=x4 + x + 1。

如果要构建一个能够纠正一个错误的BCH码,那么就使用m1(x),这个代码就是所有满足:

C(x)≡0(mod m1(x))且根为α,α2,α4,α8 的多项式C(x)。

二、BCH码的编码

构建码字为(c14, c13, ..., c8),这样多项式为c14+c13+...+c8,我们将它称为C I。

然后就要找出C R满足C R=C I (mod m1,3(x))=c7+c6+...+c0

这样就得到待发的码字C(x) = C I+C R (mod m1,3(x)) = 0

例如,如果我们要对(1,1,0,0,1,1,0) 进行编码

C I=x14+x13+x10+x9

然后用m1,3(x) 除以(这里的除法是多项式除法)C I,得到结果为C R(x),在Z2域中,我们可以算出C R为x3+1

这样,待发的码字为(1,1,0,0,1,1,0, 0,0,0,0,1,0,0,1)

三、BCH码的解码

BCH 的解码过程可以分为以下四步:

1、计算接收到的向量R的2t 伴随矩阵;

2、计算错误定位多项式;

3、解多项式,得到错误位置;

4、如果不是二进制BCH 码,就计算错误位置的误差值。

假设我们收到一个码字向量r,即多项式R(x)。

如果没有错误,那么R(α)=R(α3)=0

如果有一个错误,例如r=c+e i,其中e i表示R14的第i个基向量,于是:S1=R (α) =C (α) +αi=αi

S3=R (α3) =C (α3) + (α3) i= (αi) 3=S13

这样就可以纠正错误。α的指数显示的数据位变化可以帮助我们校正错误。

如果有两个错误,例如r=c+e i+e j,那么:

S1=R (α) =C (α) +αi+αj

S3=R (α3)=C (α3) + (α3) i+ (α3) j= (α3) i + (α3) j

这与S13不同,所以我们认为有两个错误。更进一步的代数方法可以帮助校正这两个错误。

四、BCH 解码算法

流行的BCH解码算法有Peterson Gorenstein Zierler算法和Berlekamp-Massey 算法。现介绍一下Peterson Gorenstein Zierler算法的原理和实现。

1、假设

Peterson 算法是普通BCH 解码过程的第二步,这里使用Peterson 算法计算多项式

Λ(x)=1+λ1X +λ2X2+ ... +λ2t X2t的错误定位多项式系数λ1,λ2...λ2t,这样给定BCH 码

(n,k,d min),可以校正个错误的Peterson Gorenstein Zierler 算法如下。

2、算法

●首先生成2t伴随矩阵

●然后生成元素为

的矩阵S t×t

●生成元素为

的矩阵C t

×1

●让Λ表示未知的多项式系数,用来表示。

●这样就得到矩阵方程

●如果矩阵存在行列式,那么我们就可以找到这个矩阵的逆,然后就可以得到Λ的值

●如果,那么按照

if t = 0

then

declare an empty error locator polynomial

stop Peterson procedure.

end

set

continue from the beginning of Peterson's decoding

●在Λ的值确定之后,自然就得到错误定位多项式

●结束Peterson procedure。

3、错误定位多项式的因式分解

在得到Λ(x)多项式之后,用钱(Chiens)搜索算法就可以得到它的解Λ(x) = (α i X + 1)(αj X + 1)...(αk X + 1)。根据素元α的指数幂就能得到接收到的码字中错误的位置,这也就是误差定位多项式名称的由来。

4、错误校正

对于二进制的BCH 码,可以直接根据错误定位多项式因数素元指数的位置校正接收到的向量。最后,对这些位置接收到的数值取反,就可以得到正确的BCH 解码码字。

另外也可以使用Berlekamp-Massey 算法确定错误定位多项式,从而解决BCH 解码的问题。

参考文献

•《纠错编码的艺术》,(美)Robert H.Morelos-Zaragoza著,张立军译,北京交通大学出版社

•《纠错编码—原理与方法》,王新梅、肖国镇编著,西安电子科技大学出版社

•Federal Standard 1037c: /

•Galois Field Calculator:

/myopic_stargazer/gf_calc.zip

•Decoding Algorithms for BCH codes:

/mx/mxa6471/research/ecc-report.pdf

相关文档
最新文档