BCH 编码自 1950 年汉明发表了纠正单个随机错误的码以来,几乎用了近十年的时间, 才于1959年由霍昆格姆(Hocquenghem), I960年由博斯(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] / vx4+ x + 1>如果a是m1(x) = x4+ x + 1的一个根,那么m1就是a 的极小多项式,这是因为m1(x) = (x -a)(x -a2)(x -a4)(x -a8)=x4 + x + 1如果要构建一个能够纠正一个错误的BCH码,那么就使用m1(x),这个代 码就是所有满足:C(x)三0 (mod m1(x))且根为 a,a2,a4,a8 的多项式 C(x)二、 BCH码的编码构建码字为(c14, c13, c8),这样多项式为c14+c13+...+c8,我们将它称为C]然后就要找出 CR 满足 CR=C[ (mod m13(x))=c7+c6+...+c0 这样就得到待发的码字 C(x) = CI+CR (mod m1,3(x)) = 0 例如,如果我们要对 (1,1,0,0,1,1,0) 进行编码CI=x14+x13+x10+x9然后用 m1,3(x) 除以(这里的除法是多项式除法) CI ,得到结果为 CR(x), 在Z2域中,我们可以算出CR为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(a)=R(a3)=0如果有一个错误,例如r=c+ei,其中ei表示R14的第i个基向量,于是: S]=R (a) =C (a) +ai=aiS3=R (a3)=C (a3)+ (a3) i =(眄 3=S13这样就可以纠正错误a的指数显示的数据位变化可以帮助我们校正错误 如果有两个错误,例如r=c+ei+ej,那么:S]=R (a) =C (a) +ai+ajS3=R (a3) =C (a3) + (a3) i+ (a3) j = (a3) i + (a3) j 这与S13不同,所以我们认为有两个错误更进一步的代数方法可以帮助 校正这两个错误四、BCH解码算法流行的 BCH 解码算法有 Peterson Gorenstein Zierler 算法和 Berlekamp-Massey 算法现介绍一下Peterson Gorenstein Zierler算法的原理和实现1、假设Peterson算法是普通BCH解码过程的第二步,这里使用Peterson算法计算多项式A (x)=1+^X +X2X2 + ... +X2tX2t的错误定位多项式系数 ,这样给定BCH码— 1个错误的 Peterson Gorenstein Zierler 算法如下。
亠(n, k, dmin),可以校正2、算法首先生成2t伴随矩阵然后生成元素为51… 贤…厮_1…^t-2_氏+1鴿3—生成元素为Ctxl =的矩阵Ctx1入1 見A3入L■ 让A表示未知的多项式系数,用At来表示这样就得到矩阵方程•如果矩阵';•;存在行列式,那么我们就可以找到这个矩阵的逆,然后就可 以得到A的值•如果切弘» = 那么按照f t= 0thendeclare an empty error locator polynomialstop Peterson procedure.endsetcontinue from the beginning of Peterson's decoding• 在A的值确定之后,自然就得到错误定位多项式结束 Peterson procedure o° 3、错误定位多项式的因式分解在得到A(x)多项式之后,用钱(Chiens)搜索算法就可以得到它的解A(x)= (a iX + 1)(ajX + l)...(akX + 1)根据素元a的指数幂就能得到接收到的码字中错 误的位置,这也就是误差定位多项式名称的由来4、错误校正对于二进制的BCH码,可以直接根据错误定位多项式因数素元指数的位置 校正接收到的向量。
最后,对这些位置接收到的数值取反,就可以得到正确的 BCH解码码字另外也可以使用Berlekamp-Massey算法确定错误定位多项式,从而解决 BCH解码的问题参考文献•《纠错编码的艺术》(美)Robert H.Morelos-Zaragoza著,张立军译,北 京交通大学出版社•《纠错编码一原理与方法》王新梅、肖国镇编著,西安电子科技大学出 版社• Federal Standard 1037dtttp:〃federal-standard- Galois Field Calculator: Decoding Algorithms for BCH codes: http://students.uta.edu/mx/mxa6471/research/ecc-report.pdf。