BCH码(BCH code),是循环码的一个重要子类,用于纠错,特别适用于随机差错校正的循环检验码。BCH码有严密的代数理论,是目前研究最透彻的一类码。它的生成多项式与最小码距之间有密切的关系,人们可以根据所要求的纠错能力t很容易构造出BCH码,它们的译码器也容易实现,是线性分组码中应用最普遍的一类码。由R. C. Bose、D. K. Chaudhuri和A. Hocquenghem共同提出。
BCH码取自 Bose、Ray-Chaudhuri 与 Hocquenghem 的缩写,是自1959年发展起来的一种能纠正多位错误的循环码,是编码理论尤其是纠错码中研究得比较多的一种编码方法。用术语来说,BCH 码是用于校正多个随机错误模式的多级、循环、错误校正、变长数字编码。BCH 码也可以用于质数级或者质数的幂级的多级相移键控。11 级的 BCH 码已经用于表示 10 进制数外加一个符号位。 BCH码是一类重要的纠错码,它把信源待发的信息序列按固定的κ位一组划分成消息组,再将每一消息组独立变换成长为n(n>κ)的二进制数字组,称为码字。如果消息组的数目为M(显然M≤2),由此所获得的M个码字的全体便称为码长为n、信息数目为M的分组码,记为n,M。把消息组变换成码字的过程称为编码,其逆过程称为译码。
1、戈雷码(Golay)
(23,12)码是一个特殊的非本原BCH码,称为戈雷码,它的最小码距7,能纠正3个错误,其生成多项式为。它也是目前为止发现的能纠正多个错误的完备码。
2、扩展形式
实际应用中,为了得到偶数码长,并增加检错能力,可以在BCH码的生成多项式中乘D+1,从而得到(n+1,k+1)扩展BCH码。扩展BCH码相当于将原有BCH码再加上一位的偶校验,它不再有循环性。
3、缩短形式
几乎所以的循环码都存在它另一种缩短形式。实际应用中,可能需要不同的码长不是或它的因子,我们可以从码中挑出前s位为0的码组构成新的码,这种码的监督位数不变,因此纠错能力保持不变,但是没有了循环性。
BCH 码使用有限域上的域论与多项式。为了检测错误可以构建一个检测多项式,这样接收端就可以检测是否有错误发生。
要构建一个能够检测、校正两个错误的 BCH 码,我们要使用有限域 GF(16) 或者 Z2[x]/<x4 + x + 1>。如果 α 是 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 的解码过程可以分为以下四步
1、计算接收到的向量 R 的 2t 伴随矩阵
2、计算错误定位多项式
3、解多项式,得到错误位置
4、如果不是二进制 BCH 码,就计算错误位置的误差值