BCH码(BCH codes、Bose–Chaudhuri–Hocquenghem codes)为取自Bose、Ray-Chaudhuri与Hocquenghem的缩写,是编码理论尤其是纠错码中研究得比较多的一种编码方法。用术语来说,BCH码是用于校正多个随机错误模式的多级、循环、错误校正、变长数字编码。BCH码也可以用于质数级或者质数的幂级的多级相移键控。11级的BCH码已经用于表示10进制数外加一个符号位。
BCH 码使用有限域上的域论与多项式。为了检测错误可以构建一个检测多项式,这样接收端就可以检测是否有错误发生。
要构建一个能够检测、校正两个错误的 BCH 码,我们要使用有限域 GF(16) 或者 Z2/<4 + + 1>。如果 α 是 1() = 4 + + 1 的一个根,那么 1 就是 α 的极小多项式,这是因为
如果要构建一个能够纠正一个错误的 BCH 码,那么就使用 1(),这个代码就是所有满足
构建码字为
这样多项式为
我们将它称为 I。
然后就要找出 R 满足R=I (mod 1,3())=7+6+...+0
这样就得到待发的码字() = I+R (mod 1,3()) = 0
例如,如果我们要对 (1,1,0,0,1,1,0) 进行编码
然后用 1,3() 除以(这里的除法是多项式除法)I ,得到结果为 R(),在Z2域中,我们可以算出 R为
这样,待发的码字为
BCH 的解码过程可以分为以下四步
假设我们收到一个码字向量 r,即多项式 ())。
如果没有错误,那么 R(α)=R(α3)=0
如果有一个错误,例如 r=c+ei,其中 e 表示 R14 的第 个基向量于是
这样就可以纠正错误。α 的指数显示的数据位变化可以帮助我们校正错误。
如果有两个错误
那么
这与 13 不同,所以我们认为有两个错误。更进一步的代数方法可以帮助校正着两个错误。
上面的文字摘自:https://web.archive.org/web/20070213013106/http://bch-code.foosquare.com/
流行的解码算法有,
Peterson 算法是普通 BCH 解码过程的第二步,在这里使用 Peterson 算法计算多项式 算法就可以得到它的解
。根据素元 的指数幂就能得到接收到的码字中错误的位置,这也就是误差定位多项式名称的由来。对于二进制的BCH码,可以直接根据错误定位多项式因数素元指数的位置校正接收到的向量。最后,对这些位置接收到的数值取反,就可以得到正确的BCH解码码字。
另外也可以使用Berlekamp-Massey 算法确定错误定位多项式,从而解决BCH解码的问题。