45
2013/4/11 1 第三章 BCH

第三章 BCH码 - USTC

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 第三章 BCH码 - USTC

2013411 1

第三章 BCH码

2013411 2

本章内容

有限域 BCH码的编码 BCH码的译码 戈雷(Golay)码 Reed-Solomon码

2013411 3

31 引言

bull BCH码是一类最重要的循环码能纠正多个随机错误它是

1959年由BoseChaudhuri及Hocquenghem各自独立发现的

二元线性循环码人们用他们的名字字头命名为BCH码

bull 在前面的讨论中我们所做的只是构造一个码然后计算它

的最小距离从而估计出它的纠错能力而在BCH码中我

们将采用另外一种方法先说明我们希望它能纠错的个数

然后构造这种码

2013411 4

32 BCH码简述

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

g(x)=LCM[m1(x)m3(x)hellipm2t-1(x)]

其中LCM表示最小公倍式t为纠错个数mi(x)为素多项式

则由此生成的循环码称为BCH码其最小码距dged0=2t+1 (d0称为设计码距)它能纠正t个随机独立差错

bull BCH码的码长n=2m-1或是n=2m-1的因子

本原BCH码 非本原BCH码

2013411 5

bull 例31 BCH(155)码可纠正3个随机独立差错即t=3

d ge d0 = 2t+1 = 7

n=15=2m-1 so m=4

查不可约多项式表可得

m1(x)=(23)8=010011=x4+x+1

m3(x)=(37)8=011111=x4+x3+x2+x+1

m5(x)=(07)8=000111=x2+x+1

这样 g(x)=LCM[m1(x)m3(x)m5(x)]

=(x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

2013411 6

例32 BCH(3116)码可纠正3个随机独立差错即t=3

dged0=2t+1=7

n=31=2m-1 so m=5

查不可约多项式表可得

m1(x)=(45)8=100101=x5+x2+1

m3(x)=(75)8=111101=x5+x4+x3+x2+1

m5(x)=(67)8=110111=x5+x4+x2+x+1

这样 g(x)=LCM[m1(x)m3(x)m5(x)]

= x15+x11+x10+x9+x8+x7+x5+x3+x2+x+1

2013411 7

bull 部分不可约多项式表

2阶 1 7

3阶 1 13

4阶 1 23 3 37 5 07

5阶 1 45 3 75 5 67

2013411 8

nle 31的本原BCH码

n k t g(x) 7 4 1 13 15 11 1 23 15 7 2 721 15 5 3 2467 31 26 1 45 31 21 2 3551 31 16 3 107657 31 11 5 5423325 31 6 7 313365047

2013411 9

部分非本原BCH码

n k d g(x) 17 9 5 727 21 16 3 43 21 12 5 1663 21 6 7 126357 21 4 9 643215 23 12 7 5343 25 5 5 4102041 27 9 3 1001001 27 7 6 7007007 33 6 7 3043

2013411 10

33 有限域 bull 一个元素个数有限的域称为有限域或者伽罗华域(Galois

field)

bull 有限域中元素的个数为一个素数记为GF(p)其中p为素数

bull 一个大于1的整数如果它的正因数只有1和它本身就叫做

素数否则就叫做合数

bull 有限域中运算满足

ndash 交换律a+b=b+a ab=b a

ndash 结合律(a+b)+c=a+(b+c)a(bc)=(ab) c

ndash 和分配律a (b+c)=a b+a c

11

bull 可以将GF(p)延伸为一个含有pm个元素的域称为GF(p)的扩展域表示

为GF(pm)m是一个非零正整数注意GF(p)是GF(pm)的子集

bull 二进制域GF(2)是扩展域GF(2m)的一个子域类似于实数域是复数域的一

个子域一样除了数字0和1之外在扩展域中还有特殊的元素用一个

新的符号a表示GF(2m)中任何非0元素都可由a的幂次表示

bull 有限元素的集合GF(2m)只能含有2m个元素并且对乘法封闭其约束

条件为

bull 根据这个多项式限制条件任何幂次等于或超过2m-1的域元素都可降阶为

下述幂次小于2m-1的元素

bull 这样GF(2m)的元素可表示为

01)12( =+minusm

a

11)12()2( ++minus+ == nnn aaaamm

0)2( 22210 minus=m

aaaaGF m

2013411 12

扩展域GF(2m)中的加法

bull 在GF(2m)中将每个非0元素用多项式ai(x)表示其系数至少

有一个不为0对于i=01 2hellip2m-2有

ai = ai(x) = ai0+ai1x+ai2x2+hellip+aim-1xm-1

bull 考虑m=3有限域表示为GF(23)下表为上式描述的基本元素

x0x1x2映射为7个元素ai和一个0元素表中的各行是二进

制数字序列代表上式中的系数ai0ai1ai2的取值

2013411 13

域 元 素

基本元素 x0 x1 x2

0 0 0 0 a0 1 0 0 a1 0 1 0 a2 0 0 1 a3 1 1 0 a4 0 1 1 a5 1 1 1 a6 1 0 1 a7 1 0 0

多项式为f(x)=1+x+x3的GF(8)的元素与基本元素之间的映射

2013411 14

bull 有限域中两个元素的加法定义为两个多项式中同幂次项系数

进行模2加即

ai+aj=(ai0+aj0)+ (ai1+aj1)x+hellip +(aim-1+ajm-1)xm-1

bull 有限域的本原多项式因为这些函数用来定义有限域GF(2m)

一个多项式是本原多项式的充要条件一个m阶的不可约多项

式f(x)如果f(x)整除xn+1的最小正整数n满足n=2m-1则该多

项式是本原的

bull 例33 本原多项式的辨别

(1) p1(x)=1+x+x4

(2) p2(x)=1+x+x2+x3+x4

分析 (1)通过验证这个幂次为m=4的多项式是否能够整除 xn+1但不能整

除1lenlt15范围内的xn+1就可以确定它是否为本原多项式经反复计算

p1(x)是本原多项式p2(x)不是因为它能整除x5+1

2013411 15

部分本原多项式

m m 3 1+x+x3 11 1+x2+x11

4 1+x+x4 12 1+x+x4+x6+x12

5 1+x2+x5 13 1+x+x3+x4+x13

6 1+x+x6 14 1+x+x6+x10+x14

7 1+x3+x7 15 1+x+x15

8 1+x2+x3+x4+x8 16 1+x+x3+x12+x16

9 1+x4+x9 17 1+x3+x17

10 1+x3+x10 18 1+x7+x18

2013411 16

考虑一个本原多项式定义的有限域的例子

bull 选择p(x)=1+x+x3多项式的幂次为m=3所以由p(x)所定义

的域中包含了2m=23=8个元素求解p(x)的根就是指找到x使p(x)=0我们所熟悉的二进制数0和1不能满足因为

p(1)=1p(0)=1 (运用模2运算)由基本代数学理论我们知

道对于幂次为m的多项式必然有m个根对于这个例子

p(x)=0有3个根由于这3个根不可能位于与p(x)系数相同

的有限域中而是位于扩展域GF(23)中用扩展域的元素

a来定义多项式p(x)的根可写成如下形式p(a)=0

2013411 17

即 1+a+a3=0 a3=1+a

这意味着a3可以表示为更低阶a项的加权和

类似地有

a4=aa3=a(1+a)=a+a2

a5=aa4=a(a+a2)=a2+a3=1+a+a2

a6=aa5=a(1+a+a2)=a+a2+a3=1+a2

a7=aa6=a(1+a2)=a+a3=1=a0

所以有限域GF(23)的8个元素为

0a0a1a2a3a4a5a6

2013411 18

bull 这8个元素中哪些是p(x)=0的3个根呢我们可通过枚举

找到

p(a0)=1 a0不是

p(a1)=1+a+a3=0 a1是

p(a2)=1+a2+a6=1+a0=0 a2是

p(a3)=1+a3+a9=1+a3+a2=1+a5=a4 a3不是

p(a4)=1+a4+a12=1+a4+a5=1+a0=0 a4是

同理可计算p(a5)p(a6)都不等于0所以p(x)=1+x+x3的

3个根是a a2 a4

2013411 19

p(x)=1+x+x3 GF(8)加法运算表

+ a0 a1 a2 a3 a4 a5 a6

a0 0 a3 a6 a1 a5 a4 a2

a1 a3 0 a4 a0 a2 a6 a5

a2 a6 a4 0 a5 a1 a3 a0

a3 a1 a0 a5 0 a6 a2 a4

a4 a5 a2 a1 a6 0 a0 a3

a5 a4 a6 a3 a2 a0 0 a1

a6 a2 a5 a0 a4 a3 a1 0

2013411 20

p(x)=1+x+x3 GF(8)乘法运算表

times a0 a1 a2 a3 a4 a5 a6

a0 a0 a1 a2 a3 a4 a5 a6

a1 a1 a2 a3 a4 a5 a6 a0

a2 a2 a3 a4 a5 a6 a0 a1

a3 a3 a4 a5 a6 a0 a1 a2

a4 a4 a5 a6 a0 a1 a2 a3

a5 a5 a6 a0 a1 a2 a3 a4

a6 a6 a0 a1 a2 a3 a4 a5

2013411 21

bull 如果GF(p)上的所有元素(除0外)都可表示为某元素a的幂

则a称为GF(p)上的本原元

bull 例34 考虑GF(5)因为p=5是个素数模算数可以进行

考虑该域上的元素2

20=1(mod 5)=1 21=2(mod 5)=2

22=4(mod 5)=4 23=8(mod 5)=3

因此所有GF(5)上的非零元素即1234都可以表示成

2的幂故2是GF(5)上的本原元大家可以验证3也是

GF(5)上的本原元

2013411 22

bull GF(pm)中在模p(x)运算下的扩域上x所表示的元素是本原

bull 例如 用本原多项式p(x)=1+x+x3 来构造GF(8)设GF(8)上的

本原元为a 通过将a的幂模p(a)得到GF(8)上的所有元素

a的幂 GF(8)上的元素 a0 1 a1 a a2 a2

a3 a+1 a4 a2+a a5 a2+a+1 a6 a2+1

2013411 23

bull 定理 设 b1b2hellipbp-1 为GF(p)上的非零域元素则 xp-1+1 =(x+b1)(x+b2)hellip(x+bp-1)

bull 从循环码知识我们知道为了找到分组长度为n的循环码的

生成多项式首先分解xn+1因此xn+1可以表示为多个因子的

乘积即

xn+1=f1(x)f2(x)hellipfw(x)

bull 在扩展域GF(pm)中n=pm-1

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 2: 第三章 BCH码 - USTC

2013411 2

本章内容

有限域 BCH码的编码 BCH码的译码 戈雷(Golay)码 Reed-Solomon码

2013411 3

31 引言

bull BCH码是一类最重要的循环码能纠正多个随机错误它是

1959年由BoseChaudhuri及Hocquenghem各自独立发现的

二元线性循环码人们用他们的名字字头命名为BCH码

bull 在前面的讨论中我们所做的只是构造一个码然后计算它

的最小距离从而估计出它的纠错能力而在BCH码中我

们将采用另外一种方法先说明我们希望它能纠错的个数

然后构造这种码

2013411 4

32 BCH码简述

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

g(x)=LCM[m1(x)m3(x)hellipm2t-1(x)]

其中LCM表示最小公倍式t为纠错个数mi(x)为素多项式

则由此生成的循环码称为BCH码其最小码距dged0=2t+1 (d0称为设计码距)它能纠正t个随机独立差错

bull BCH码的码长n=2m-1或是n=2m-1的因子

本原BCH码 非本原BCH码

2013411 5

bull 例31 BCH(155)码可纠正3个随机独立差错即t=3

d ge d0 = 2t+1 = 7

n=15=2m-1 so m=4

查不可约多项式表可得

m1(x)=(23)8=010011=x4+x+1

m3(x)=(37)8=011111=x4+x3+x2+x+1

m5(x)=(07)8=000111=x2+x+1

这样 g(x)=LCM[m1(x)m3(x)m5(x)]

=(x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

2013411 6

例32 BCH(3116)码可纠正3个随机独立差错即t=3

dged0=2t+1=7

n=31=2m-1 so m=5

查不可约多项式表可得

m1(x)=(45)8=100101=x5+x2+1

m3(x)=(75)8=111101=x5+x4+x3+x2+1

m5(x)=(67)8=110111=x5+x4+x2+x+1

这样 g(x)=LCM[m1(x)m3(x)m5(x)]

= x15+x11+x10+x9+x8+x7+x5+x3+x2+x+1

2013411 7

bull 部分不可约多项式表

2阶 1 7

3阶 1 13

4阶 1 23 3 37 5 07

5阶 1 45 3 75 5 67

2013411 8

nle 31的本原BCH码

n k t g(x) 7 4 1 13 15 11 1 23 15 7 2 721 15 5 3 2467 31 26 1 45 31 21 2 3551 31 16 3 107657 31 11 5 5423325 31 6 7 313365047

2013411 9

部分非本原BCH码

n k d g(x) 17 9 5 727 21 16 3 43 21 12 5 1663 21 6 7 126357 21 4 9 643215 23 12 7 5343 25 5 5 4102041 27 9 3 1001001 27 7 6 7007007 33 6 7 3043

2013411 10

33 有限域 bull 一个元素个数有限的域称为有限域或者伽罗华域(Galois

field)

bull 有限域中元素的个数为一个素数记为GF(p)其中p为素数

bull 一个大于1的整数如果它的正因数只有1和它本身就叫做

素数否则就叫做合数

bull 有限域中运算满足

ndash 交换律a+b=b+a ab=b a

ndash 结合律(a+b)+c=a+(b+c)a(bc)=(ab) c

ndash 和分配律a (b+c)=a b+a c

11

bull 可以将GF(p)延伸为一个含有pm个元素的域称为GF(p)的扩展域表示

为GF(pm)m是一个非零正整数注意GF(p)是GF(pm)的子集

bull 二进制域GF(2)是扩展域GF(2m)的一个子域类似于实数域是复数域的一

个子域一样除了数字0和1之外在扩展域中还有特殊的元素用一个

新的符号a表示GF(2m)中任何非0元素都可由a的幂次表示

bull 有限元素的集合GF(2m)只能含有2m个元素并且对乘法封闭其约束

条件为

bull 根据这个多项式限制条件任何幂次等于或超过2m-1的域元素都可降阶为

下述幂次小于2m-1的元素

bull 这样GF(2m)的元素可表示为

01)12( =+minusm

a

11)12()2( ++minus+ == nnn aaaamm

0)2( 22210 minus=m

aaaaGF m

2013411 12

扩展域GF(2m)中的加法

bull 在GF(2m)中将每个非0元素用多项式ai(x)表示其系数至少

有一个不为0对于i=01 2hellip2m-2有

ai = ai(x) = ai0+ai1x+ai2x2+hellip+aim-1xm-1

bull 考虑m=3有限域表示为GF(23)下表为上式描述的基本元素

x0x1x2映射为7个元素ai和一个0元素表中的各行是二进

制数字序列代表上式中的系数ai0ai1ai2的取值

2013411 13

域 元 素

基本元素 x0 x1 x2

0 0 0 0 a0 1 0 0 a1 0 1 0 a2 0 0 1 a3 1 1 0 a4 0 1 1 a5 1 1 1 a6 1 0 1 a7 1 0 0

多项式为f(x)=1+x+x3的GF(8)的元素与基本元素之间的映射

2013411 14

bull 有限域中两个元素的加法定义为两个多项式中同幂次项系数

进行模2加即

ai+aj=(ai0+aj0)+ (ai1+aj1)x+hellip +(aim-1+ajm-1)xm-1

bull 有限域的本原多项式因为这些函数用来定义有限域GF(2m)

一个多项式是本原多项式的充要条件一个m阶的不可约多项

式f(x)如果f(x)整除xn+1的最小正整数n满足n=2m-1则该多

项式是本原的

bull 例33 本原多项式的辨别

(1) p1(x)=1+x+x4

(2) p2(x)=1+x+x2+x3+x4

分析 (1)通过验证这个幂次为m=4的多项式是否能够整除 xn+1但不能整

除1lenlt15范围内的xn+1就可以确定它是否为本原多项式经反复计算

p1(x)是本原多项式p2(x)不是因为它能整除x5+1

2013411 15

部分本原多项式

m m 3 1+x+x3 11 1+x2+x11

4 1+x+x4 12 1+x+x4+x6+x12

5 1+x2+x5 13 1+x+x3+x4+x13

6 1+x+x6 14 1+x+x6+x10+x14

7 1+x3+x7 15 1+x+x15

8 1+x2+x3+x4+x8 16 1+x+x3+x12+x16

9 1+x4+x9 17 1+x3+x17

10 1+x3+x10 18 1+x7+x18

2013411 16

考虑一个本原多项式定义的有限域的例子

bull 选择p(x)=1+x+x3多项式的幂次为m=3所以由p(x)所定义

的域中包含了2m=23=8个元素求解p(x)的根就是指找到x使p(x)=0我们所熟悉的二进制数0和1不能满足因为

p(1)=1p(0)=1 (运用模2运算)由基本代数学理论我们知

道对于幂次为m的多项式必然有m个根对于这个例子

p(x)=0有3个根由于这3个根不可能位于与p(x)系数相同

的有限域中而是位于扩展域GF(23)中用扩展域的元素

a来定义多项式p(x)的根可写成如下形式p(a)=0

2013411 17

即 1+a+a3=0 a3=1+a

这意味着a3可以表示为更低阶a项的加权和

类似地有

a4=aa3=a(1+a)=a+a2

a5=aa4=a(a+a2)=a2+a3=1+a+a2

a6=aa5=a(1+a+a2)=a+a2+a3=1+a2

a7=aa6=a(1+a2)=a+a3=1=a0

所以有限域GF(23)的8个元素为

0a0a1a2a3a4a5a6

2013411 18

bull 这8个元素中哪些是p(x)=0的3个根呢我们可通过枚举

找到

p(a0)=1 a0不是

p(a1)=1+a+a3=0 a1是

p(a2)=1+a2+a6=1+a0=0 a2是

p(a3)=1+a3+a9=1+a3+a2=1+a5=a4 a3不是

p(a4)=1+a4+a12=1+a4+a5=1+a0=0 a4是

同理可计算p(a5)p(a6)都不等于0所以p(x)=1+x+x3的

3个根是a a2 a4

2013411 19

p(x)=1+x+x3 GF(8)加法运算表

+ a0 a1 a2 a3 a4 a5 a6

a0 0 a3 a6 a1 a5 a4 a2

a1 a3 0 a4 a0 a2 a6 a5

a2 a6 a4 0 a5 a1 a3 a0

a3 a1 a0 a5 0 a6 a2 a4

a4 a5 a2 a1 a6 0 a0 a3

a5 a4 a6 a3 a2 a0 0 a1

a6 a2 a5 a0 a4 a3 a1 0

2013411 20

p(x)=1+x+x3 GF(8)乘法运算表

times a0 a1 a2 a3 a4 a5 a6

a0 a0 a1 a2 a3 a4 a5 a6

a1 a1 a2 a3 a4 a5 a6 a0

a2 a2 a3 a4 a5 a6 a0 a1

a3 a3 a4 a5 a6 a0 a1 a2

a4 a4 a5 a6 a0 a1 a2 a3

a5 a5 a6 a0 a1 a2 a3 a4

a6 a6 a0 a1 a2 a3 a4 a5

2013411 21

bull 如果GF(p)上的所有元素(除0外)都可表示为某元素a的幂

则a称为GF(p)上的本原元

bull 例34 考虑GF(5)因为p=5是个素数模算数可以进行

考虑该域上的元素2

20=1(mod 5)=1 21=2(mod 5)=2

22=4(mod 5)=4 23=8(mod 5)=3

因此所有GF(5)上的非零元素即1234都可以表示成

2的幂故2是GF(5)上的本原元大家可以验证3也是

GF(5)上的本原元

2013411 22

bull GF(pm)中在模p(x)运算下的扩域上x所表示的元素是本原

bull 例如 用本原多项式p(x)=1+x+x3 来构造GF(8)设GF(8)上的

本原元为a 通过将a的幂模p(a)得到GF(8)上的所有元素

a的幂 GF(8)上的元素 a0 1 a1 a a2 a2

a3 a+1 a4 a2+a a5 a2+a+1 a6 a2+1

2013411 23

bull 定理 设 b1b2hellipbp-1 为GF(p)上的非零域元素则 xp-1+1 =(x+b1)(x+b2)hellip(x+bp-1)

bull 从循环码知识我们知道为了找到分组长度为n的循环码的

生成多项式首先分解xn+1因此xn+1可以表示为多个因子的

乘积即

xn+1=f1(x)f2(x)hellipfw(x)

bull 在扩展域GF(pm)中n=pm-1

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 3: 第三章 BCH码 - USTC

2013411 3

31 引言

bull BCH码是一类最重要的循环码能纠正多个随机错误它是

1959年由BoseChaudhuri及Hocquenghem各自独立发现的

二元线性循环码人们用他们的名字字头命名为BCH码

bull 在前面的讨论中我们所做的只是构造一个码然后计算它

的最小距离从而估计出它的纠错能力而在BCH码中我

们将采用另外一种方法先说明我们希望它能纠错的个数

然后构造这种码

2013411 4

32 BCH码简述

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

g(x)=LCM[m1(x)m3(x)hellipm2t-1(x)]

其中LCM表示最小公倍式t为纠错个数mi(x)为素多项式

则由此生成的循环码称为BCH码其最小码距dged0=2t+1 (d0称为设计码距)它能纠正t个随机独立差错

bull BCH码的码长n=2m-1或是n=2m-1的因子

本原BCH码 非本原BCH码

2013411 5

bull 例31 BCH(155)码可纠正3个随机独立差错即t=3

d ge d0 = 2t+1 = 7

n=15=2m-1 so m=4

查不可约多项式表可得

m1(x)=(23)8=010011=x4+x+1

m3(x)=(37)8=011111=x4+x3+x2+x+1

m5(x)=(07)8=000111=x2+x+1

这样 g(x)=LCM[m1(x)m3(x)m5(x)]

=(x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

2013411 6

例32 BCH(3116)码可纠正3个随机独立差错即t=3

dged0=2t+1=7

n=31=2m-1 so m=5

查不可约多项式表可得

m1(x)=(45)8=100101=x5+x2+1

m3(x)=(75)8=111101=x5+x4+x3+x2+1

m5(x)=(67)8=110111=x5+x4+x2+x+1

这样 g(x)=LCM[m1(x)m3(x)m5(x)]

= x15+x11+x10+x9+x8+x7+x5+x3+x2+x+1

2013411 7

bull 部分不可约多项式表

2阶 1 7

3阶 1 13

4阶 1 23 3 37 5 07

5阶 1 45 3 75 5 67

2013411 8

nle 31的本原BCH码

n k t g(x) 7 4 1 13 15 11 1 23 15 7 2 721 15 5 3 2467 31 26 1 45 31 21 2 3551 31 16 3 107657 31 11 5 5423325 31 6 7 313365047

2013411 9

部分非本原BCH码

n k d g(x) 17 9 5 727 21 16 3 43 21 12 5 1663 21 6 7 126357 21 4 9 643215 23 12 7 5343 25 5 5 4102041 27 9 3 1001001 27 7 6 7007007 33 6 7 3043

2013411 10

33 有限域 bull 一个元素个数有限的域称为有限域或者伽罗华域(Galois

field)

bull 有限域中元素的个数为一个素数记为GF(p)其中p为素数

bull 一个大于1的整数如果它的正因数只有1和它本身就叫做

素数否则就叫做合数

bull 有限域中运算满足

ndash 交换律a+b=b+a ab=b a

ndash 结合律(a+b)+c=a+(b+c)a(bc)=(ab) c

ndash 和分配律a (b+c)=a b+a c

11

bull 可以将GF(p)延伸为一个含有pm个元素的域称为GF(p)的扩展域表示

为GF(pm)m是一个非零正整数注意GF(p)是GF(pm)的子集

bull 二进制域GF(2)是扩展域GF(2m)的一个子域类似于实数域是复数域的一

个子域一样除了数字0和1之外在扩展域中还有特殊的元素用一个

新的符号a表示GF(2m)中任何非0元素都可由a的幂次表示

bull 有限元素的集合GF(2m)只能含有2m个元素并且对乘法封闭其约束

条件为

bull 根据这个多项式限制条件任何幂次等于或超过2m-1的域元素都可降阶为

下述幂次小于2m-1的元素

bull 这样GF(2m)的元素可表示为

01)12( =+minusm

a

11)12()2( ++minus+ == nnn aaaamm

0)2( 22210 minus=m

aaaaGF m

2013411 12

扩展域GF(2m)中的加法

bull 在GF(2m)中将每个非0元素用多项式ai(x)表示其系数至少

有一个不为0对于i=01 2hellip2m-2有

ai = ai(x) = ai0+ai1x+ai2x2+hellip+aim-1xm-1

bull 考虑m=3有限域表示为GF(23)下表为上式描述的基本元素

x0x1x2映射为7个元素ai和一个0元素表中的各行是二进

制数字序列代表上式中的系数ai0ai1ai2的取值

2013411 13

域 元 素

基本元素 x0 x1 x2

0 0 0 0 a0 1 0 0 a1 0 1 0 a2 0 0 1 a3 1 1 0 a4 0 1 1 a5 1 1 1 a6 1 0 1 a7 1 0 0

多项式为f(x)=1+x+x3的GF(8)的元素与基本元素之间的映射

2013411 14

bull 有限域中两个元素的加法定义为两个多项式中同幂次项系数

进行模2加即

ai+aj=(ai0+aj0)+ (ai1+aj1)x+hellip +(aim-1+ajm-1)xm-1

bull 有限域的本原多项式因为这些函数用来定义有限域GF(2m)

一个多项式是本原多项式的充要条件一个m阶的不可约多项

式f(x)如果f(x)整除xn+1的最小正整数n满足n=2m-1则该多

项式是本原的

bull 例33 本原多项式的辨别

(1) p1(x)=1+x+x4

(2) p2(x)=1+x+x2+x3+x4

分析 (1)通过验证这个幂次为m=4的多项式是否能够整除 xn+1但不能整

除1lenlt15范围内的xn+1就可以确定它是否为本原多项式经反复计算

p1(x)是本原多项式p2(x)不是因为它能整除x5+1

2013411 15

部分本原多项式

m m 3 1+x+x3 11 1+x2+x11

4 1+x+x4 12 1+x+x4+x6+x12

5 1+x2+x5 13 1+x+x3+x4+x13

6 1+x+x6 14 1+x+x6+x10+x14

7 1+x3+x7 15 1+x+x15

8 1+x2+x3+x4+x8 16 1+x+x3+x12+x16

9 1+x4+x9 17 1+x3+x17

10 1+x3+x10 18 1+x7+x18

2013411 16

考虑一个本原多项式定义的有限域的例子

bull 选择p(x)=1+x+x3多项式的幂次为m=3所以由p(x)所定义

的域中包含了2m=23=8个元素求解p(x)的根就是指找到x使p(x)=0我们所熟悉的二进制数0和1不能满足因为

p(1)=1p(0)=1 (运用模2运算)由基本代数学理论我们知

道对于幂次为m的多项式必然有m个根对于这个例子

p(x)=0有3个根由于这3个根不可能位于与p(x)系数相同

的有限域中而是位于扩展域GF(23)中用扩展域的元素

a来定义多项式p(x)的根可写成如下形式p(a)=0

2013411 17

即 1+a+a3=0 a3=1+a

这意味着a3可以表示为更低阶a项的加权和

类似地有

a4=aa3=a(1+a)=a+a2

a5=aa4=a(a+a2)=a2+a3=1+a+a2

a6=aa5=a(1+a+a2)=a+a2+a3=1+a2

a7=aa6=a(1+a2)=a+a3=1=a0

所以有限域GF(23)的8个元素为

0a0a1a2a3a4a5a6

2013411 18

bull 这8个元素中哪些是p(x)=0的3个根呢我们可通过枚举

找到

p(a0)=1 a0不是

p(a1)=1+a+a3=0 a1是

p(a2)=1+a2+a6=1+a0=0 a2是

p(a3)=1+a3+a9=1+a3+a2=1+a5=a4 a3不是

p(a4)=1+a4+a12=1+a4+a5=1+a0=0 a4是

同理可计算p(a5)p(a6)都不等于0所以p(x)=1+x+x3的

3个根是a a2 a4

2013411 19

p(x)=1+x+x3 GF(8)加法运算表

+ a0 a1 a2 a3 a4 a5 a6

a0 0 a3 a6 a1 a5 a4 a2

a1 a3 0 a4 a0 a2 a6 a5

a2 a6 a4 0 a5 a1 a3 a0

a3 a1 a0 a5 0 a6 a2 a4

a4 a5 a2 a1 a6 0 a0 a3

a5 a4 a6 a3 a2 a0 0 a1

a6 a2 a5 a0 a4 a3 a1 0

2013411 20

p(x)=1+x+x3 GF(8)乘法运算表

times a0 a1 a2 a3 a4 a5 a6

a0 a0 a1 a2 a3 a4 a5 a6

a1 a1 a2 a3 a4 a5 a6 a0

a2 a2 a3 a4 a5 a6 a0 a1

a3 a3 a4 a5 a6 a0 a1 a2

a4 a4 a5 a6 a0 a1 a2 a3

a5 a5 a6 a0 a1 a2 a3 a4

a6 a6 a0 a1 a2 a3 a4 a5

2013411 21

bull 如果GF(p)上的所有元素(除0外)都可表示为某元素a的幂

则a称为GF(p)上的本原元

bull 例34 考虑GF(5)因为p=5是个素数模算数可以进行

考虑该域上的元素2

20=1(mod 5)=1 21=2(mod 5)=2

22=4(mod 5)=4 23=8(mod 5)=3

因此所有GF(5)上的非零元素即1234都可以表示成

2的幂故2是GF(5)上的本原元大家可以验证3也是

GF(5)上的本原元

2013411 22

bull GF(pm)中在模p(x)运算下的扩域上x所表示的元素是本原

bull 例如 用本原多项式p(x)=1+x+x3 来构造GF(8)设GF(8)上的

本原元为a 通过将a的幂模p(a)得到GF(8)上的所有元素

a的幂 GF(8)上的元素 a0 1 a1 a a2 a2

a3 a+1 a4 a2+a a5 a2+a+1 a6 a2+1

2013411 23

bull 定理 设 b1b2hellipbp-1 为GF(p)上的非零域元素则 xp-1+1 =(x+b1)(x+b2)hellip(x+bp-1)

bull 从循环码知识我们知道为了找到分组长度为n的循环码的

生成多项式首先分解xn+1因此xn+1可以表示为多个因子的

乘积即

xn+1=f1(x)f2(x)hellipfw(x)

bull 在扩展域GF(pm)中n=pm-1

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 4: 第三章 BCH码 - USTC

2013411 4

32 BCH码简述

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

g(x)=LCM[m1(x)m3(x)hellipm2t-1(x)]

其中LCM表示最小公倍式t为纠错个数mi(x)为素多项式

则由此生成的循环码称为BCH码其最小码距dged0=2t+1 (d0称为设计码距)它能纠正t个随机独立差错

bull BCH码的码长n=2m-1或是n=2m-1的因子

本原BCH码 非本原BCH码

2013411 5

bull 例31 BCH(155)码可纠正3个随机独立差错即t=3

d ge d0 = 2t+1 = 7

n=15=2m-1 so m=4

查不可约多项式表可得

m1(x)=(23)8=010011=x4+x+1

m3(x)=(37)8=011111=x4+x3+x2+x+1

m5(x)=(07)8=000111=x2+x+1

这样 g(x)=LCM[m1(x)m3(x)m5(x)]

=(x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

2013411 6

例32 BCH(3116)码可纠正3个随机独立差错即t=3

dged0=2t+1=7

n=31=2m-1 so m=5

查不可约多项式表可得

m1(x)=(45)8=100101=x5+x2+1

m3(x)=(75)8=111101=x5+x4+x3+x2+1

m5(x)=(67)8=110111=x5+x4+x2+x+1

这样 g(x)=LCM[m1(x)m3(x)m5(x)]

= x15+x11+x10+x9+x8+x7+x5+x3+x2+x+1

2013411 7

bull 部分不可约多项式表

2阶 1 7

3阶 1 13

4阶 1 23 3 37 5 07

5阶 1 45 3 75 5 67

2013411 8

nle 31的本原BCH码

n k t g(x) 7 4 1 13 15 11 1 23 15 7 2 721 15 5 3 2467 31 26 1 45 31 21 2 3551 31 16 3 107657 31 11 5 5423325 31 6 7 313365047

2013411 9

部分非本原BCH码

n k d g(x) 17 9 5 727 21 16 3 43 21 12 5 1663 21 6 7 126357 21 4 9 643215 23 12 7 5343 25 5 5 4102041 27 9 3 1001001 27 7 6 7007007 33 6 7 3043

2013411 10

33 有限域 bull 一个元素个数有限的域称为有限域或者伽罗华域(Galois

field)

bull 有限域中元素的个数为一个素数记为GF(p)其中p为素数

bull 一个大于1的整数如果它的正因数只有1和它本身就叫做

素数否则就叫做合数

bull 有限域中运算满足

ndash 交换律a+b=b+a ab=b a

ndash 结合律(a+b)+c=a+(b+c)a(bc)=(ab) c

ndash 和分配律a (b+c)=a b+a c

11

bull 可以将GF(p)延伸为一个含有pm个元素的域称为GF(p)的扩展域表示

为GF(pm)m是一个非零正整数注意GF(p)是GF(pm)的子集

bull 二进制域GF(2)是扩展域GF(2m)的一个子域类似于实数域是复数域的一

个子域一样除了数字0和1之外在扩展域中还有特殊的元素用一个

新的符号a表示GF(2m)中任何非0元素都可由a的幂次表示

bull 有限元素的集合GF(2m)只能含有2m个元素并且对乘法封闭其约束

条件为

bull 根据这个多项式限制条件任何幂次等于或超过2m-1的域元素都可降阶为

下述幂次小于2m-1的元素

bull 这样GF(2m)的元素可表示为

01)12( =+minusm

a

11)12()2( ++minus+ == nnn aaaamm

0)2( 22210 minus=m

aaaaGF m

2013411 12

扩展域GF(2m)中的加法

bull 在GF(2m)中将每个非0元素用多项式ai(x)表示其系数至少

有一个不为0对于i=01 2hellip2m-2有

ai = ai(x) = ai0+ai1x+ai2x2+hellip+aim-1xm-1

bull 考虑m=3有限域表示为GF(23)下表为上式描述的基本元素

x0x1x2映射为7个元素ai和一个0元素表中的各行是二进

制数字序列代表上式中的系数ai0ai1ai2的取值

2013411 13

域 元 素

基本元素 x0 x1 x2

0 0 0 0 a0 1 0 0 a1 0 1 0 a2 0 0 1 a3 1 1 0 a4 0 1 1 a5 1 1 1 a6 1 0 1 a7 1 0 0

多项式为f(x)=1+x+x3的GF(8)的元素与基本元素之间的映射

2013411 14

bull 有限域中两个元素的加法定义为两个多项式中同幂次项系数

进行模2加即

ai+aj=(ai0+aj0)+ (ai1+aj1)x+hellip +(aim-1+ajm-1)xm-1

bull 有限域的本原多项式因为这些函数用来定义有限域GF(2m)

一个多项式是本原多项式的充要条件一个m阶的不可约多项

式f(x)如果f(x)整除xn+1的最小正整数n满足n=2m-1则该多

项式是本原的

bull 例33 本原多项式的辨别

(1) p1(x)=1+x+x4

(2) p2(x)=1+x+x2+x3+x4

分析 (1)通过验证这个幂次为m=4的多项式是否能够整除 xn+1但不能整

除1lenlt15范围内的xn+1就可以确定它是否为本原多项式经反复计算

p1(x)是本原多项式p2(x)不是因为它能整除x5+1

2013411 15

部分本原多项式

m m 3 1+x+x3 11 1+x2+x11

4 1+x+x4 12 1+x+x4+x6+x12

5 1+x2+x5 13 1+x+x3+x4+x13

6 1+x+x6 14 1+x+x6+x10+x14

7 1+x3+x7 15 1+x+x15

8 1+x2+x3+x4+x8 16 1+x+x3+x12+x16

9 1+x4+x9 17 1+x3+x17

10 1+x3+x10 18 1+x7+x18

2013411 16

考虑一个本原多项式定义的有限域的例子

bull 选择p(x)=1+x+x3多项式的幂次为m=3所以由p(x)所定义

的域中包含了2m=23=8个元素求解p(x)的根就是指找到x使p(x)=0我们所熟悉的二进制数0和1不能满足因为

p(1)=1p(0)=1 (运用模2运算)由基本代数学理论我们知

道对于幂次为m的多项式必然有m个根对于这个例子

p(x)=0有3个根由于这3个根不可能位于与p(x)系数相同

的有限域中而是位于扩展域GF(23)中用扩展域的元素

a来定义多项式p(x)的根可写成如下形式p(a)=0

2013411 17

即 1+a+a3=0 a3=1+a

这意味着a3可以表示为更低阶a项的加权和

类似地有

a4=aa3=a(1+a)=a+a2

a5=aa4=a(a+a2)=a2+a3=1+a+a2

a6=aa5=a(1+a+a2)=a+a2+a3=1+a2

a7=aa6=a(1+a2)=a+a3=1=a0

所以有限域GF(23)的8个元素为

0a0a1a2a3a4a5a6

2013411 18

bull 这8个元素中哪些是p(x)=0的3个根呢我们可通过枚举

找到

p(a0)=1 a0不是

p(a1)=1+a+a3=0 a1是

p(a2)=1+a2+a6=1+a0=0 a2是

p(a3)=1+a3+a9=1+a3+a2=1+a5=a4 a3不是

p(a4)=1+a4+a12=1+a4+a5=1+a0=0 a4是

同理可计算p(a5)p(a6)都不等于0所以p(x)=1+x+x3的

3个根是a a2 a4

2013411 19

p(x)=1+x+x3 GF(8)加法运算表

+ a0 a1 a2 a3 a4 a5 a6

a0 0 a3 a6 a1 a5 a4 a2

a1 a3 0 a4 a0 a2 a6 a5

a2 a6 a4 0 a5 a1 a3 a0

a3 a1 a0 a5 0 a6 a2 a4

a4 a5 a2 a1 a6 0 a0 a3

a5 a4 a6 a3 a2 a0 0 a1

a6 a2 a5 a0 a4 a3 a1 0

2013411 20

p(x)=1+x+x3 GF(8)乘法运算表

times a0 a1 a2 a3 a4 a5 a6

a0 a0 a1 a2 a3 a4 a5 a6

a1 a1 a2 a3 a4 a5 a6 a0

a2 a2 a3 a4 a5 a6 a0 a1

a3 a3 a4 a5 a6 a0 a1 a2

a4 a4 a5 a6 a0 a1 a2 a3

a5 a5 a6 a0 a1 a2 a3 a4

a6 a6 a0 a1 a2 a3 a4 a5

2013411 21

bull 如果GF(p)上的所有元素(除0外)都可表示为某元素a的幂

则a称为GF(p)上的本原元

bull 例34 考虑GF(5)因为p=5是个素数模算数可以进行

考虑该域上的元素2

20=1(mod 5)=1 21=2(mod 5)=2

22=4(mod 5)=4 23=8(mod 5)=3

因此所有GF(5)上的非零元素即1234都可以表示成

2的幂故2是GF(5)上的本原元大家可以验证3也是

GF(5)上的本原元

2013411 22

bull GF(pm)中在模p(x)运算下的扩域上x所表示的元素是本原

bull 例如 用本原多项式p(x)=1+x+x3 来构造GF(8)设GF(8)上的

本原元为a 通过将a的幂模p(a)得到GF(8)上的所有元素

a的幂 GF(8)上的元素 a0 1 a1 a a2 a2

a3 a+1 a4 a2+a a5 a2+a+1 a6 a2+1

2013411 23

bull 定理 设 b1b2hellipbp-1 为GF(p)上的非零域元素则 xp-1+1 =(x+b1)(x+b2)hellip(x+bp-1)

bull 从循环码知识我们知道为了找到分组长度为n的循环码的

生成多项式首先分解xn+1因此xn+1可以表示为多个因子的

乘积即

xn+1=f1(x)f2(x)hellipfw(x)

bull 在扩展域GF(pm)中n=pm-1

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 5: 第三章 BCH码 - USTC

2013411 5

bull 例31 BCH(155)码可纠正3个随机独立差错即t=3

d ge d0 = 2t+1 = 7

n=15=2m-1 so m=4

查不可约多项式表可得

m1(x)=(23)8=010011=x4+x+1

m3(x)=(37)8=011111=x4+x3+x2+x+1

m5(x)=(07)8=000111=x2+x+1

这样 g(x)=LCM[m1(x)m3(x)m5(x)]

=(x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

2013411 6

例32 BCH(3116)码可纠正3个随机独立差错即t=3

dged0=2t+1=7

n=31=2m-1 so m=5

查不可约多项式表可得

m1(x)=(45)8=100101=x5+x2+1

m3(x)=(75)8=111101=x5+x4+x3+x2+1

m5(x)=(67)8=110111=x5+x4+x2+x+1

这样 g(x)=LCM[m1(x)m3(x)m5(x)]

= x15+x11+x10+x9+x8+x7+x5+x3+x2+x+1

2013411 7

bull 部分不可约多项式表

2阶 1 7

3阶 1 13

4阶 1 23 3 37 5 07

5阶 1 45 3 75 5 67

2013411 8

nle 31的本原BCH码

n k t g(x) 7 4 1 13 15 11 1 23 15 7 2 721 15 5 3 2467 31 26 1 45 31 21 2 3551 31 16 3 107657 31 11 5 5423325 31 6 7 313365047

2013411 9

部分非本原BCH码

n k d g(x) 17 9 5 727 21 16 3 43 21 12 5 1663 21 6 7 126357 21 4 9 643215 23 12 7 5343 25 5 5 4102041 27 9 3 1001001 27 7 6 7007007 33 6 7 3043

2013411 10

33 有限域 bull 一个元素个数有限的域称为有限域或者伽罗华域(Galois

field)

bull 有限域中元素的个数为一个素数记为GF(p)其中p为素数

bull 一个大于1的整数如果它的正因数只有1和它本身就叫做

素数否则就叫做合数

bull 有限域中运算满足

ndash 交换律a+b=b+a ab=b a

ndash 结合律(a+b)+c=a+(b+c)a(bc)=(ab) c

ndash 和分配律a (b+c)=a b+a c

11

bull 可以将GF(p)延伸为一个含有pm个元素的域称为GF(p)的扩展域表示

为GF(pm)m是一个非零正整数注意GF(p)是GF(pm)的子集

bull 二进制域GF(2)是扩展域GF(2m)的一个子域类似于实数域是复数域的一

个子域一样除了数字0和1之外在扩展域中还有特殊的元素用一个

新的符号a表示GF(2m)中任何非0元素都可由a的幂次表示

bull 有限元素的集合GF(2m)只能含有2m个元素并且对乘法封闭其约束

条件为

bull 根据这个多项式限制条件任何幂次等于或超过2m-1的域元素都可降阶为

下述幂次小于2m-1的元素

bull 这样GF(2m)的元素可表示为

01)12( =+minusm

a

11)12()2( ++minus+ == nnn aaaamm

0)2( 22210 minus=m

aaaaGF m

2013411 12

扩展域GF(2m)中的加法

bull 在GF(2m)中将每个非0元素用多项式ai(x)表示其系数至少

有一个不为0对于i=01 2hellip2m-2有

ai = ai(x) = ai0+ai1x+ai2x2+hellip+aim-1xm-1

bull 考虑m=3有限域表示为GF(23)下表为上式描述的基本元素

x0x1x2映射为7个元素ai和一个0元素表中的各行是二进

制数字序列代表上式中的系数ai0ai1ai2的取值

2013411 13

域 元 素

基本元素 x0 x1 x2

0 0 0 0 a0 1 0 0 a1 0 1 0 a2 0 0 1 a3 1 1 0 a4 0 1 1 a5 1 1 1 a6 1 0 1 a7 1 0 0

多项式为f(x)=1+x+x3的GF(8)的元素与基本元素之间的映射

2013411 14

bull 有限域中两个元素的加法定义为两个多项式中同幂次项系数

进行模2加即

ai+aj=(ai0+aj0)+ (ai1+aj1)x+hellip +(aim-1+ajm-1)xm-1

bull 有限域的本原多项式因为这些函数用来定义有限域GF(2m)

一个多项式是本原多项式的充要条件一个m阶的不可约多项

式f(x)如果f(x)整除xn+1的最小正整数n满足n=2m-1则该多

项式是本原的

bull 例33 本原多项式的辨别

(1) p1(x)=1+x+x4

(2) p2(x)=1+x+x2+x3+x4

分析 (1)通过验证这个幂次为m=4的多项式是否能够整除 xn+1但不能整

除1lenlt15范围内的xn+1就可以确定它是否为本原多项式经反复计算

p1(x)是本原多项式p2(x)不是因为它能整除x5+1

2013411 15

部分本原多项式

m m 3 1+x+x3 11 1+x2+x11

4 1+x+x4 12 1+x+x4+x6+x12

5 1+x2+x5 13 1+x+x3+x4+x13

6 1+x+x6 14 1+x+x6+x10+x14

7 1+x3+x7 15 1+x+x15

8 1+x2+x3+x4+x8 16 1+x+x3+x12+x16

9 1+x4+x9 17 1+x3+x17

10 1+x3+x10 18 1+x7+x18

2013411 16

考虑一个本原多项式定义的有限域的例子

bull 选择p(x)=1+x+x3多项式的幂次为m=3所以由p(x)所定义

的域中包含了2m=23=8个元素求解p(x)的根就是指找到x使p(x)=0我们所熟悉的二进制数0和1不能满足因为

p(1)=1p(0)=1 (运用模2运算)由基本代数学理论我们知

道对于幂次为m的多项式必然有m个根对于这个例子

p(x)=0有3个根由于这3个根不可能位于与p(x)系数相同

的有限域中而是位于扩展域GF(23)中用扩展域的元素

a来定义多项式p(x)的根可写成如下形式p(a)=0

2013411 17

即 1+a+a3=0 a3=1+a

这意味着a3可以表示为更低阶a项的加权和

类似地有

a4=aa3=a(1+a)=a+a2

a5=aa4=a(a+a2)=a2+a3=1+a+a2

a6=aa5=a(1+a+a2)=a+a2+a3=1+a2

a7=aa6=a(1+a2)=a+a3=1=a0

所以有限域GF(23)的8个元素为

0a0a1a2a3a4a5a6

2013411 18

bull 这8个元素中哪些是p(x)=0的3个根呢我们可通过枚举

找到

p(a0)=1 a0不是

p(a1)=1+a+a3=0 a1是

p(a2)=1+a2+a6=1+a0=0 a2是

p(a3)=1+a3+a9=1+a3+a2=1+a5=a4 a3不是

p(a4)=1+a4+a12=1+a4+a5=1+a0=0 a4是

同理可计算p(a5)p(a6)都不等于0所以p(x)=1+x+x3的

3个根是a a2 a4

2013411 19

p(x)=1+x+x3 GF(8)加法运算表

+ a0 a1 a2 a3 a4 a5 a6

a0 0 a3 a6 a1 a5 a4 a2

a1 a3 0 a4 a0 a2 a6 a5

a2 a6 a4 0 a5 a1 a3 a0

a3 a1 a0 a5 0 a6 a2 a4

a4 a5 a2 a1 a6 0 a0 a3

a5 a4 a6 a3 a2 a0 0 a1

a6 a2 a5 a0 a4 a3 a1 0

2013411 20

p(x)=1+x+x3 GF(8)乘法运算表

times a0 a1 a2 a3 a4 a5 a6

a0 a0 a1 a2 a3 a4 a5 a6

a1 a1 a2 a3 a4 a5 a6 a0

a2 a2 a3 a4 a5 a6 a0 a1

a3 a3 a4 a5 a6 a0 a1 a2

a4 a4 a5 a6 a0 a1 a2 a3

a5 a5 a6 a0 a1 a2 a3 a4

a6 a6 a0 a1 a2 a3 a4 a5

2013411 21

bull 如果GF(p)上的所有元素(除0外)都可表示为某元素a的幂

则a称为GF(p)上的本原元

bull 例34 考虑GF(5)因为p=5是个素数模算数可以进行

考虑该域上的元素2

20=1(mod 5)=1 21=2(mod 5)=2

22=4(mod 5)=4 23=8(mod 5)=3

因此所有GF(5)上的非零元素即1234都可以表示成

2的幂故2是GF(5)上的本原元大家可以验证3也是

GF(5)上的本原元

2013411 22

bull GF(pm)中在模p(x)运算下的扩域上x所表示的元素是本原

bull 例如 用本原多项式p(x)=1+x+x3 来构造GF(8)设GF(8)上的

本原元为a 通过将a的幂模p(a)得到GF(8)上的所有元素

a的幂 GF(8)上的元素 a0 1 a1 a a2 a2

a3 a+1 a4 a2+a a5 a2+a+1 a6 a2+1

2013411 23

bull 定理 设 b1b2hellipbp-1 为GF(p)上的非零域元素则 xp-1+1 =(x+b1)(x+b2)hellip(x+bp-1)

bull 从循环码知识我们知道为了找到分组长度为n的循环码的

生成多项式首先分解xn+1因此xn+1可以表示为多个因子的

乘积即

xn+1=f1(x)f2(x)hellipfw(x)

bull 在扩展域GF(pm)中n=pm-1

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 6: 第三章 BCH码 - USTC

2013411 6

例32 BCH(3116)码可纠正3个随机独立差错即t=3

dged0=2t+1=7

n=31=2m-1 so m=5

查不可约多项式表可得

m1(x)=(45)8=100101=x5+x2+1

m3(x)=(75)8=111101=x5+x4+x3+x2+1

m5(x)=(67)8=110111=x5+x4+x2+x+1

这样 g(x)=LCM[m1(x)m3(x)m5(x)]

= x15+x11+x10+x9+x8+x7+x5+x3+x2+x+1

2013411 7

bull 部分不可约多项式表

2阶 1 7

3阶 1 13

4阶 1 23 3 37 5 07

5阶 1 45 3 75 5 67

2013411 8

nle 31的本原BCH码

n k t g(x) 7 4 1 13 15 11 1 23 15 7 2 721 15 5 3 2467 31 26 1 45 31 21 2 3551 31 16 3 107657 31 11 5 5423325 31 6 7 313365047

2013411 9

部分非本原BCH码

n k d g(x) 17 9 5 727 21 16 3 43 21 12 5 1663 21 6 7 126357 21 4 9 643215 23 12 7 5343 25 5 5 4102041 27 9 3 1001001 27 7 6 7007007 33 6 7 3043

2013411 10

33 有限域 bull 一个元素个数有限的域称为有限域或者伽罗华域(Galois

field)

bull 有限域中元素的个数为一个素数记为GF(p)其中p为素数

bull 一个大于1的整数如果它的正因数只有1和它本身就叫做

素数否则就叫做合数

bull 有限域中运算满足

ndash 交换律a+b=b+a ab=b a

ndash 结合律(a+b)+c=a+(b+c)a(bc)=(ab) c

ndash 和分配律a (b+c)=a b+a c

11

bull 可以将GF(p)延伸为一个含有pm个元素的域称为GF(p)的扩展域表示

为GF(pm)m是一个非零正整数注意GF(p)是GF(pm)的子集

bull 二进制域GF(2)是扩展域GF(2m)的一个子域类似于实数域是复数域的一

个子域一样除了数字0和1之外在扩展域中还有特殊的元素用一个

新的符号a表示GF(2m)中任何非0元素都可由a的幂次表示

bull 有限元素的集合GF(2m)只能含有2m个元素并且对乘法封闭其约束

条件为

bull 根据这个多项式限制条件任何幂次等于或超过2m-1的域元素都可降阶为

下述幂次小于2m-1的元素

bull 这样GF(2m)的元素可表示为

01)12( =+minusm

a

11)12()2( ++minus+ == nnn aaaamm

0)2( 22210 minus=m

aaaaGF m

2013411 12

扩展域GF(2m)中的加法

bull 在GF(2m)中将每个非0元素用多项式ai(x)表示其系数至少

有一个不为0对于i=01 2hellip2m-2有

ai = ai(x) = ai0+ai1x+ai2x2+hellip+aim-1xm-1

bull 考虑m=3有限域表示为GF(23)下表为上式描述的基本元素

x0x1x2映射为7个元素ai和一个0元素表中的各行是二进

制数字序列代表上式中的系数ai0ai1ai2的取值

2013411 13

域 元 素

基本元素 x0 x1 x2

0 0 0 0 a0 1 0 0 a1 0 1 0 a2 0 0 1 a3 1 1 0 a4 0 1 1 a5 1 1 1 a6 1 0 1 a7 1 0 0

多项式为f(x)=1+x+x3的GF(8)的元素与基本元素之间的映射

2013411 14

bull 有限域中两个元素的加法定义为两个多项式中同幂次项系数

进行模2加即

ai+aj=(ai0+aj0)+ (ai1+aj1)x+hellip +(aim-1+ajm-1)xm-1

bull 有限域的本原多项式因为这些函数用来定义有限域GF(2m)

一个多项式是本原多项式的充要条件一个m阶的不可约多项

式f(x)如果f(x)整除xn+1的最小正整数n满足n=2m-1则该多

项式是本原的

bull 例33 本原多项式的辨别

(1) p1(x)=1+x+x4

(2) p2(x)=1+x+x2+x3+x4

分析 (1)通过验证这个幂次为m=4的多项式是否能够整除 xn+1但不能整

除1lenlt15范围内的xn+1就可以确定它是否为本原多项式经反复计算

p1(x)是本原多项式p2(x)不是因为它能整除x5+1

2013411 15

部分本原多项式

m m 3 1+x+x3 11 1+x2+x11

4 1+x+x4 12 1+x+x4+x6+x12

5 1+x2+x5 13 1+x+x3+x4+x13

6 1+x+x6 14 1+x+x6+x10+x14

7 1+x3+x7 15 1+x+x15

8 1+x2+x3+x4+x8 16 1+x+x3+x12+x16

9 1+x4+x9 17 1+x3+x17

10 1+x3+x10 18 1+x7+x18

2013411 16

考虑一个本原多项式定义的有限域的例子

bull 选择p(x)=1+x+x3多项式的幂次为m=3所以由p(x)所定义

的域中包含了2m=23=8个元素求解p(x)的根就是指找到x使p(x)=0我们所熟悉的二进制数0和1不能满足因为

p(1)=1p(0)=1 (运用模2运算)由基本代数学理论我们知

道对于幂次为m的多项式必然有m个根对于这个例子

p(x)=0有3个根由于这3个根不可能位于与p(x)系数相同

的有限域中而是位于扩展域GF(23)中用扩展域的元素

a来定义多项式p(x)的根可写成如下形式p(a)=0

2013411 17

即 1+a+a3=0 a3=1+a

这意味着a3可以表示为更低阶a项的加权和

类似地有

a4=aa3=a(1+a)=a+a2

a5=aa4=a(a+a2)=a2+a3=1+a+a2

a6=aa5=a(1+a+a2)=a+a2+a3=1+a2

a7=aa6=a(1+a2)=a+a3=1=a0

所以有限域GF(23)的8个元素为

0a0a1a2a3a4a5a6

2013411 18

bull 这8个元素中哪些是p(x)=0的3个根呢我们可通过枚举

找到

p(a0)=1 a0不是

p(a1)=1+a+a3=0 a1是

p(a2)=1+a2+a6=1+a0=0 a2是

p(a3)=1+a3+a9=1+a3+a2=1+a5=a4 a3不是

p(a4)=1+a4+a12=1+a4+a5=1+a0=0 a4是

同理可计算p(a5)p(a6)都不等于0所以p(x)=1+x+x3的

3个根是a a2 a4

2013411 19

p(x)=1+x+x3 GF(8)加法运算表

+ a0 a1 a2 a3 a4 a5 a6

a0 0 a3 a6 a1 a5 a4 a2

a1 a3 0 a4 a0 a2 a6 a5

a2 a6 a4 0 a5 a1 a3 a0

a3 a1 a0 a5 0 a6 a2 a4

a4 a5 a2 a1 a6 0 a0 a3

a5 a4 a6 a3 a2 a0 0 a1

a6 a2 a5 a0 a4 a3 a1 0

2013411 20

p(x)=1+x+x3 GF(8)乘法运算表

times a0 a1 a2 a3 a4 a5 a6

a0 a0 a1 a2 a3 a4 a5 a6

a1 a1 a2 a3 a4 a5 a6 a0

a2 a2 a3 a4 a5 a6 a0 a1

a3 a3 a4 a5 a6 a0 a1 a2

a4 a4 a5 a6 a0 a1 a2 a3

a5 a5 a6 a0 a1 a2 a3 a4

a6 a6 a0 a1 a2 a3 a4 a5

2013411 21

bull 如果GF(p)上的所有元素(除0外)都可表示为某元素a的幂

则a称为GF(p)上的本原元

bull 例34 考虑GF(5)因为p=5是个素数模算数可以进行

考虑该域上的元素2

20=1(mod 5)=1 21=2(mod 5)=2

22=4(mod 5)=4 23=8(mod 5)=3

因此所有GF(5)上的非零元素即1234都可以表示成

2的幂故2是GF(5)上的本原元大家可以验证3也是

GF(5)上的本原元

2013411 22

bull GF(pm)中在模p(x)运算下的扩域上x所表示的元素是本原

bull 例如 用本原多项式p(x)=1+x+x3 来构造GF(8)设GF(8)上的

本原元为a 通过将a的幂模p(a)得到GF(8)上的所有元素

a的幂 GF(8)上的元素 a0 1 a1 a a2 a2

a3 a+1 a4 a2+a a5 a2+a+1 a6 a2+1

2013411 23

bull 定理 设 b1b2hellipbp-1 为GF(p)上的非零域元素则 xp-1+1 =(x+b1)(x+b2)hellip(x+bp-1)

bull 从循环码知识我们知道为了找到分组长度为n的循环码的

生成多项式首先分解xn+1因此xn+1可以表示为多个因子的

乘积即

xn+1=f1(x)f2(x)hellipfw(x)

bull 在扩展域GF(pm)中n=pm-1

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 7: 第三章 BCH码 - USTC

2013411 7

bull 部分不可约多项式表

2阶 1 7

3阶 1 13

4阶 1 23 3 37 5 07

5阶 1 45 3 75 5 67

2013411 8

nle 31的本原BCH码

n k t g(x) 7 4 1 13 15 11 1 23 15 7 2 721 15 5 3 2467 31 26 1 45 31 21 2 3551 31 16 3 107657 31 11 5 5423325 31 6 7 313365047

2013411 9

部分非本原BCH码

n k d g(x) 17 9 5 727 21 16 3 43 21 12 5 1663 21 6 7 126357 21 4 9 643215 23 12 7 5343 25 5 5 4102041 27 9 3 1001001 27 7 6 7007007 33 6 7 3043

2013411 10

33 有限域 bull 一个元素个数有限的域称为有限域或者伽罗华域(Galois

field)

bull 有限域中元素的个数为一个素数记为GF(p)其中p为素数

bull 一个大于1的整数如果它的正因数只有1和它本身就叫做

素数否则就叫做合数

bull 有限域中运算满足

ndash 交换律a+b=b+a ab=b a

ndash 结合律(a+b)+c=a+(b+c)a(bc)=(ab) c

ndash 和分配律a (b+c)=a b+a c

11

bull 可以将GF(p)延伸为一个含有pm个元素的域称为GF(p)的扩展域表示

为GF(pm)m是一个非零正整数注意GF(p)是GF(pm)的子集

bull 二进制域GF(2)是扩展域GF(2m)的一个子域类似于实数域是复数域的一

个子域一样除了数字0和1之外在扩展域中还有特殊的元素用一个

新的符号a表示GF(2m)中任何非0元素都可由a的幂次表示

bull 有限元素的集合GF(2m)只能含有2m个元素并且对乘法封闭其约束

条件为

bull 根据这个多项式限制条件任何幂次等于或超过2m-1的域元素都可降阶为

下述幂次小于2m-1的元素

bull 这样GF(2m)的元素可表示为

01)12( =+minusm

a

11)12()2( ++minus+ == nnn aaaamm

0)2( 22210 minus=m

aaaaGF m

2013411 12

扩展域GF(2m)中的加法

bull 在GF(2m)中将每个非0元素用多项式ai(x)表示其系数至少

有一个不为0对于i=01 2hellip2m-2有

ai = ai(x) = ai0+ai1x+ai2x2+hellip+aim-1xm-1

bull 考虑m=3有限域表示为GF(23)下表为上式描述的基本元素

x0x1x2映射为7个元素ai和一个0元素表中的各行是二进

制数字序列代表上式中的系数ai0ai1ai2的取值

2013411 13

域 元 素

基本元素 x0 x1 x2

0 0 0 0 a0 1 0 0 a1 0 1 0 a2 0 0 1 a3 1 1 0 a4 0 1 1 a5 1 1 1 a6 1 0 1 a7 1 0 0

多项式为f(x)=1+x+x3的GF(8)的元素与基本元素之间的映射

2013411 14

bull 有限域中两个元素的加法定义为两个多项式中同幂次项系数

进行模2加即

ai+aj=(ai0+aj0)+ (ai1+aj1)x+hellip +(aim-1+ajm-1)xm-1

bull 有限域的本原多项式因为这些函数用来定义有限域GF(2m)

一个多项式是本原多项式的充要条件一个m阶的不可约多项

式f(x)如果f(x)整除xn+1的最小正整数n满足n=2m-1则该多

项式是本原的

bull 例33 本原多项式的辨别

(1) p1(x)=1+x+x4

(2) p2(x)=1+x+x2+x3+x4

分析 (1)通过验证这个幂次为m=4的多项式是否能够整除 xn+1但不能整

除1lenlt15范围内的xn+1就可以确定它是否为本原多项式经反复计算

p1(x)是本原多项式p2(x)不是因为它能整除x5+1

2013411 15

部分本原多项式

m m 3 1+x+x3 11 1+x2+x11

4 1+x+x4 12 1+x+x4+x6+x12

5 1+x2+x5 13 1+x+x3+x4+x13

6 1+x+x6 14 1+x+x6+x10+x14

7 1+x3+x7 15 1+x+x15

8 1+x2+x3+x4+x8 16 1+x+x3+x12+x16

9 1+x4+x9 17 1+x3+x17

10 1+x3+x10 18 1+x7+x18

2013411 16

考虑一个本原多项式定义的有限域的例子

bull 选择p(x)=1+x+x3多项式的幂次为m=3所以由p(x)所定义

的域中包含了2m=23=8个元素求解p(x)的根就是指找到x使p(x)=0我们所熟悉的二进制数0和1不能满足因为

p(1)=1p(0)=1 (运用模2运算)由基本代数学理论我们知

道对于幂次为m的多项式必然有m个根对于这个例子

p(x)=0有3个根由于这3个根不可能位于与p(x)系数相同

的有限域中而是位于扩展域GF(23)中用扩展域的元素

a来定义多项式p(x)的根可写成如下形式p(a)=0

2013411 17

即 1+a+a3=0 a3=1+a

这意味着a3可以表示为更低阶a项的加权和

类似地有

a4=aa3=a(1+a)=a+a2

a5=aa4=a(a+a2)=a2+a3=1+a+a2

a6=aa5=a(1+a+a2)=a+a2+a3=1+a2

a7=aa6=a(1+a2)=a+a3=1=a0

所以有限域GF(23)的8个元素为

0a0a1a2a3a4a5a6

2013411 18

bull 这8个元素中哪些是p(x)=0的3个根呢我们可通过枚举

找到

p(a0)=1 a0不是

p(a1)=1+a+a3=0 a1是

p(a2)=1+a2+a6=1+a0=0 a2是

p(a3)=1+a3+a9=1+a3+a2=1+a5=a4 a3不是

p(a4)=1+a4+a12=1+a4+a5=1+a0=0 a4是

同理可计算p(a5)p(a6)都不等于0所以p(x)=1+x+x3的

3个根是a a2 a4

2013411 19

p(x)=1+x+x3 GF(8)加法运算表

+ a0 a1 a2 a3 a4 a5 a6

a0 0 a3 a6 a1 a5 a4 a2

a1 a3 0 a4 a0 a2 a6 a5

a2 a6 a4 0 a5 a1 a3 a0

a3 a1 a0 a5 0 a6 a2 a4

a4 a5 a2 a1 a6 0 a0 a3

a5 a4 a6 a3 a2 a0 0 a1

a6 a2 a5 a0 a4 a3 a1 0

2013411 20

p(x)=1+x+x3 GF(8)乘法运算表

times a0 a1 a2 a3 a4 a5 a6

a0 a0 a1 a2 a3 a4 a5 a6

a1 a1 a2 a3 a4 a5 a6 a0

a2 a2 a3 a4 a5 a6 a0 a1

a3 a3 a4 a5 a6 a0 a1 a2

a4 a4 a5 a6 a0 a1 a2 a3

a5 a5 a6 a0 a1 a2 a3 a4

a6 a6 a0 a1 a2 a3 a4 a5

2013411 21

bull 如果GF(p)上的所有元素(除0外)都可表示为某元素a的幂

则a称为GF(p)上的本原元

bull 例34 考虑GF(5)因为p=5是个素数模算数可以进行

考虑该域上的元素2

20=1(mod 5)=1 21=2(mod 5)=2

22=4(mod 5)=4 23=8(mod 5)=3

因此所有GF(5)上的非零元素即1234都可以表示成

2的幂故2是GF(5)上的本原元大家可以验证3也是

GF(5)上的本原元

2013411 22

bull GF(pm)中在模p(x)运算下的扩域上x所表示的元素是本原

bull 例如 用本原多项式p(x)=1+x+x3 来构造GF(8)设GF(8)上的

本原元为a 通过将a的幂模p(a)得到GF(8)上的所有元素

a的幂 GF(8)上的元素 a0 1 a1 a a2 a2

a3 a+1 a4 a2+a a5 a2+a+1 a6 a2+1

2013411 23

bull 定理 设 b1b2hellipbp-1 为GF(p)上的非零域元素则 xp-1+1 =(x+b1)(x+b2)hellip(x+bp-1)

bull 从循环码知识我们知道为了找到分组长度为n的循环码的

生成多项式首先分解xn+1因此xn+1可以表示为多个因子的

乘积即

xn+1=f1(x)f2(x)hellipfw(x)

bull 在扩展域GF(pm)中n=pm-1

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 8: 第三章 BCH码 - USTC

2013411 8

nle 31的本原BCH码

n k t g(x) 7 4 1 13 15 11 1 23 15 7 2 721 15 5 3 2467 31 26 1 45 31 21 2 3551 31 16 3 107657 31 11 5 5423325 31 6 7 313365047

2013411 9

部分非本原BCH码

n k d g(x) 17 9 5 727 21 16 3 43 21 12 5 1663 21 6 7 126357 21 4 9 643215 23 12 7 5343 25 5 5 4102041 27 9 3 1001001 27 7 6 7007007 33 6 7 3043

2013411 10

33 有限域 bull 一个元素个数有限的域称为有限域或者伽罗华域(Galois

field)

bull 有限域中元素的个数为一个素数记为GF(p)其中p为素数

bull 一个大于1的整数如果它的正因数只有1和它本身就叫做

素数否则就叫做合数

bull 有限域中运算满足

ndash 交换律a+b=b+a ab=b a

ndash 结合律(a+b)+c=a+(b+c)a(bc)=(ab) c

ndash 和分配律a (b+c)=a b+a c

11

bull 可以将GF(p)延伸为一个含有pm个元素的域称为GF(p)的扩展域表示

为GF(pm)m是一个非零正整数注意GF(p)是GF(pm)的子集

bull 二进制域GF(2)是扩展域GF(2m)的一个子域类似于实数域是复数域的一

个子域一样除了数字0和1之外在扩展域中还有特殊的元素用一个

新的符号a表示GF(2m)中任何非0元素都可由a的幂次表示

bull 有限元素的集合GF(2m)只能含有2m个元素并且对乘法封闭其约束

条件为

bull 根据这个多项式限制条件任何幂次等于或超过2m-1的域元素都可降阶为

下述幂次小于2m-1的元素

bull 这样GF(2m)的元素可表示为

01)12( =+minusm

a

11)12()2( ++minus+ == nnn aaaamm

0)2( 22210 minus=m

aaaaGF m

2013411 12

扩展域GF(2m)中的加法

bull 在GF(2m)中将每个非0元素用多项式ai(x)表示其系数至少

有一个不为0对于i=01 2hellip2m-2有

ai = ai(x) = ai0+ai1x+ai2x2+hellip+aim-1xm-1

bull 考虑m=3有限域表示为GF(23)下表为上式描述的基本元素

x0x1x2映射为7个元素ai和一个0元素表中的各行是二进

制数字序列代表上式中的系数ai0ai1ai2的取值

2013411 13

域 元 素

基本元素 x0 x1 x2

0 0 0 0 a0 1 0 0 a1 0 1 0 a2 0 0 1 a3 1 1 0 a4 0 1 1 a5 1 1 1 a6 1 0 1 a7 1 0 0

多项式为f(x)=1+x+x3的GF(8)的元素与基本元素之间的映射

2013411 14

bull 有限域中两个元素的加法定义为两个多项式中同幂次项系数

进行模2加即

ai+aj=(ai0+aj0)+ (ai1+aj1)x+hellip +(aim-1+ajm-1)xm-1

bull 有限域的本原多项式因为这些函数用来定义有限域GF(2m)

一个多项式是本原多项式的充要条件一个m阶的不可约多项

式f(x)如果f(x)整除xn+1的最小正整数n满足n=2m-1则该多

项式是本原的

bull 例33 本原多项式的辨别

(1) p1(x)=1+x+x4

(2) p2(x)=1+x+x2+x3+x4

分析 (1)通过验证这个幂次为m=4的多项式是否能够整除 xn+1但不能整

除1lenlt15范围内的xn+1就可以确定它是否为本原多项式经反复计算

p1(x)是本原多项式p2(x)不是因为它能整除x5+1

2013411 15

部分本原多项式

m m 3 1+x+x3 11 1+x2+x11

4 1+x+x4 12 1+x+x4+x6+x12

5 1+x2+x5 13 1+x+x3+x4+x13

6 1+x+x6 14 1+x+x6+x10+x14

7 1+x3+x7 15 1+x+x15

8 1+x2+x3+x4+x8 16 1+x+x3+x12+x16

9 1+x4+x9 17 1+x3+x17

10 1+x3+x10 18 1+x7+x18

2013411 16

考虑一个本原多项式定义的有限域的例子

bull 选择p(x)=1+x+x3多项式的幂次为m=3所以由p(x)所定义

的域中包含了2m=23=8个元素求解p(x)的根就是指找到x使p(x)=0我们所熟悉的二进制数0和1不能满足因为

p(1)=1p(0)=1 (运用模2运算)由基本代数学理论我们知

道对于幂次为m的多项式必然有m个根对于这个例子

p(x)=0有3个根由于这3个根不可能位于与p(x)系数相同

的有限域中而是位于扩展域GF(23)中用扩展域的元素

a来定义多项式p(x)的根可写成如下形式p(a)=0

2013411 17

即 1+a+a3=0 a3=1+a

这意味着a3可以表示为更低阶a项的加权和

类似地有

a4=aa3=a(1+a)=a+a2

a5=aa4=a(a+a2)=a2+a3=1+a+a2

a6=aa5=a(1+a+a2)=a+a2+a3=1+a2

a7=aa6=a(1+a2)=a+a3=1=a0

所以有限域GF(23)的8个元素为

0a0a1a2a3a4a5a6

2013411 18

bull 这8个元素中哪些是p(x)=0的3个根呢我们可通过枚举

找到

p(a0)=1 a0不是

p(a1)=1+a+a3=0 a1是

p(a2)=1+a2+a6=1+a0=0 a2是

p(a3)=1+a3+a9=1+a3+a2=1+a5=a4 a3不是

p(a4)=1+a4+a12=1+a4+a5=1+a0=0 a4是

同理可计算p(a5)p(a6)都不等于0所以p(x)=1+x+x3的

3个根是a a2 a4

2013411 19

p(x)=1+x+x3 GF(8)加法运算表

+ a0 a1 a2 a3 a4 a5 a6

a0 0 a3 a6 a1 a5 a4 a2

a1 a3 0 a4 a0 a2 a6 a5

a2 a6 a4 0 a5 a1 a3 a0

a3 a1 a0 a5 0 a6 a2 a4

a4 a5 a2 a1 a6 0 a0 a3

a5 a4 a6 a3 a2 a0 0 a1

a6 a2 a5 a0 a4 a3 a1 0

2013411 20

p(x)=1+x+x3 GF(8)乘法运算表

times a0 a1 a2 a3 a4 a5 a6

a0 a0 a1 a2 a3 a4 a5 a6

a1 a1 a2 a3 a4 a5 a6 a0

a2 a2 a3 a4 a5 a6 a0 a1

a3 a3 a4 a5 a6 a0 a1 a2

a4 a4 a5 a6 a0 a1 a2 a3

a5 a5 a6 a0 a1 a2 a3 a4

a6 a6 a0 a1 a2 a3 a4 a5

2013411 21

bull 如果GF(p)上的所有元素(除0外)都可表示为某元素a的幂

则a称为GF(p)上的本原元

bull 例34 考虑GF(5)因为p=5是个素数模算数可以进行

考虑该域上的元素2

20=1(mod 5)=1 21=2(mod 5)=2

22=4(mod 5)=4 23=8(mod 5)=3

因此所有GF(5)上的非零元素即1234都可以表示成

2的幂故2是GF(5)上的本原元大家可以验证3也是

GF(5)上的本原元

2013411 22

bull GF(pm)中在模p(x)运算下的扩域上x所表示的元素是本原

bull 例如 用本原多项式p(x)=1+x+x3 来构造GF(8)设GF(8)上的

本原元为a 通过将a的幂模p(a)得到GF(8)上的所有元素

a的幂 GF(8)上的元素 a0 1 a1 a a2 a2

a3 a+1 a4 a2+a a5 a2+a+1 a6 a2+1

2013411 23

bull 定理 设 b1b2hellipbp-1 为GF(p)上的非零域元素则 xp-1+1 =(x+b1)(x+b2)hellip(x+bp-1)

bull 从循环码知识我们知道为了找到分组长度为n的循环码的

生成多项式首先分解xn+1因此xn+1可以表示为多个因子的

乘积即

xn+1=f1(x)f2(x)hellipfw(x)

bull 在扩展域GF(pm)中n=pm-1

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 9: 第三章 BCH码 - USTC

2013411 9

部分非本原BCH码

n k d g(x) 17 9 5 727 21 16 3 43 21 12 5 1663 21 6 7 126357 21 4 9 643215 23 12 7 5343 25 5 5 4102041 27 9 3 1001001 27 7 6 7007007 33 6 7 3043

2013411 10

33 有限域 bull 一个元素个数有限的域称为有限域或者伽罗华域(Galois

field)

bull 有限域中元素的个数为一个素数记为GF(p)其中p为素数

bull 一个大于1的整数如果它的正因数只有1和它本身就叫做

素数否则就叫做合数

bull 有限域中运算满足

ndash 交换律a+b=b+a ab=b a

ndash 结合律(a+b)+c=a+(b+c)a(bc)=(ab) c

ndash 和分配律a (b+c)=a b+a c

11

bull 可以将GF(p)延伸为一个含有pm个元素的域称为GF(p)的扩展域表示

为GF(pm)m是一个非零正整数注意GF(p)是GF(pm)的子集

bull 二进制域GF(2)是扩展域GF(2m)的一个子域类似于实数域是复数域的一

个子域一样除了数字0和1之外在扩展域中还有特殊的元素用一个

新的符号a表示GF(2m)中任何非0元素都可由a的幂次表示

bull 有限元素的集合GF(2m)只能含有2m个元素并且对乘法封闭其约束

条件为

bull 根据这个多项式限制条件任何幂次等于或超过2m-1的域元素都可降阶为

下述幂次小于2m-1的元素

bull 这样GF(2m)的元素可表示为

01)12( =+minusm

a

11)12()2( ++minus+ == nnn aaaamm

0)2( 22210 minus=m

aaaaGF m

2013411 12

扩展域GF(2m)中的加法

bull 在GF(2m)中将每个非0元素用多项式ai(x)表示其系数至少

有一个不为0对于i=01 2hellip2m-2有

ai = ai(x) = ai0+ai1x+ai2x2+hellip+aim-1xm-1

bull 考虑m=3有限域表示为GF(23)下表为上式描述的基本元素

x0x1x2映射为7个元素ai和一个0元素表中的各行是二进

制数字序列代表上式中的系数ai0ai1ai2的取值

2013411 13

域 元 素

基本元素 x0 x1 x2

0 0 0 0 a0 1 0 0 a1 0 1 0 a2 0 0 1 a3 1 1 0 a4 0 1 1 a5 1 1 1 a6 1 0 1 a7 1 0 0

多项式为f(x)=1+x+x3的GF(8)的元素与基本元素之间的映射

2013411 14

bull 有限域中两个元素的加法定义为两个多项式中同幂次项系数

进行模2加即

ai+aj=(ai0+aj0)+ (ai1+aj1)x+hellip +(aim-1+ajm-1)xm-1

bull 有限域的本原多项式因为这些函数用来定义有限域GF(2m)

一个多项式是本原多项式的充要条件一个m阶的不可约多项

式f(x)如果f(x)整除xn+1的最小正整数n满足n=2m-1则该多

项式是本原的

bull 例33 本原多项式的辨别

(1) p1(x)=1+x+x4

(2) p2(x)=1+x+x2+x3+x4

分析 (1)通过验证这个幂次为m=4的多项式是否能够整除 xn+1但不能整

除1lenlt15范围内的xn+1就可以确定它是否为本原多项式经反复计算

p1(x)是本原多项式p2(x)不是因为它能整除x5+1

2013411 15

部分本原多项式

m m 3 1+x+x3 11 1+x2+x11

4 1+x+x4 12 1+x+x4+x6+x12

5 1+x2+x5 13 1+x+x3+x4+x13

6 1+x+x6 14 1+x+x6+x10+x14

7 1+x3+x7 15 1+x+x15

8 1+x2+x3+x4+x8 16 1+x+x3+x12+x16

9 1+x4+x9 17 1+x3+x17

10 1+x3+x10 18 1+x7+x18

2013411 16

考虑一个本原多项式定义的有限域的例子

bull 选择p(x)=1+x+x3多项式的幂次为m=3所以由p(x)所定义

的域中包含了2m=23=8个元素求解p(x)的根就是指找到x使p(x)=0我们所熟悉的二进制数0和1不能满足因为

p(1)=1p(0)=1 (运用模2运算)由基本代数学理论我们知

道对于幂次为m的多项式必然有m个根对于这个例子

p(x)=0有3个根由于这3个根不可能位于与p(x)系数相同

的有限域中而是位于扩展域GF(23)中用扩展域的元素

a来定义多项式p(x)的根可写成如下形式p(a)=0

2013411 17

即 1+a+a3=0 a3=1+a

这意味着a3可以表示为更低阶a项的加权和

类似地有

a4=aa3=a(1+a)=a+a2

a5=aa4=a(a+a2)=a2+a3=1+a+a2

a6=aa5=a(1+a+a2)=a+a2+a3=1+a2

a7=aa6=a(1+a2)=a+a3=1=a0

所以有限域GF(23)的8个元素为

0a0a1a2a3a4a5a6

2013411 18

bull 这8个元素中哪些是p(x)=0的3个根呢我们可通过枚举

找到

p(a0)=1 a0不是

p(a1)=1+a+a3=0 a1是

p(a2)=1+a2+a6=1+a0=0 a2是

p(a3)=1+a3+a9=1+a3+a2=1+a5=a4 a3不是

p(a4)=1+a4+a12=1+a4+a5=1+a0=0 a4是

同理可计算p(a5)p(a6)都不等于0所以p(x)=1+x+x3的

3个根是a a2 a4

2013411 19

p(x)=1+x+x3 GF(8)加法运算表

+ a0 a1 a2 a3 a4 a5 a6

a0 0 a3 a6 a1 a5 a4 a2

a1 a3 0 a4 a0 a2 a6 a5

a2 a6 a4 0 a5 a1 a3 a0

a3 a1 a0 a5 0 a6 a2 a4

a4 a5 a2 a1 a6 0 a0 a3

a5 a4 a6 a3 a2 a0 0 a1

a6 a2 a5 a0 a4 a3 a1 0

2013411 20

p(x)=1+x+x3 GF(8)乘法运算表

times a0 a1 a2 a3 a4 a5 a6

a0 a0 a1 a2 a3 a4 a5 a6

a1 a1 a2 a3 a4 a5 a6 a0

a2 a2 a3 a4 a5 a6 a0 a1

a3 a3 a4 a5 a6 a0 a1 a2

a4 a4 a5 a6 a0 a1 a2 a3

a5 a5 a6 a0 a1 a2 a3 a4

a6 a6 a0 a1 a2 a3 a4 a5

2013411 21

bull 如果GF(p)上的所有元素(除0外)都可表示为某元素a的幂

则a称为GF(p)上的本原元

bull 例34 考虑GF(5)因为p=5是个素数模算数可以进行

考虑该域上的元素2

20=1(mod 5)=1 21=2(mod 5)=2

22=4(mod 5)=4 23=8(mod 5)=3

因此所有GF(5)上的非零元素即1234都可以表示成

2的幂故2是GF(5)上的本原元大家可以验证3也是

GF(5)上的本原元

2013411 22

bull GF(pm)中在模p(x)运算下的扩域上x所表示的元素是本原

bull 例如 用本原多项式p(x)=1+x+x3 来构造GF(8)设GF(8)上的

本原元为a 通过将a的幂模p(a)得到GF(8)上的所有元素

a的幂 GF(8)上的元素 a0 1 a1 a a2 a2

a3 a+1 a4 a2+a a5 a2+a+1 a6 a2+1

2013411 23

bull 定理 设 b1b2hellipbp-1 为GF(p)上的非零域元素则 xp-1+1 =(x+b1)(x+b2)hellip(x+bp-1)

bull 从循环码知识我们知道为了找到分组长度为n的循环码的

生成多项式首先分解xn+1因此xn+1可以表示为多个因子的

乘积即

xn+1=f1(x)f2(x)hellipfw(x)

bull 在扩展域GF(pm)中n=pm-1

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 10: 第三章 BCH码 - USTC

2013411 10

33 有限域 bull 一个元素个数有限的域称为有限域或者伽罗华域(Galois

field)

bull 有限域中元素的个数为一个素数记为GF(p)其中p为素数

bull 一个大于1的整数如果它的正因数只有1和它本身就叫做

素数否则就叫做合数

bull 有限域中运算满足

ndash 交换律a+b=b+a ab=b a

ndash 结合律(a+b)+c=a+(b+c)a(bc)=(ab) c

ndash 和分配律a (b+c)=a b+a c

11

bull 可以将GF(p)延伸为一个含有pm个元素的域称为GF(p)的扩展域表示

为GF(pm)m是一个非零正整数注意GF(p)是GF(pm)的子集

bull 二进制域GF(2)是扩展域GF(2m)的一个子域类似于实数域是复数域的一

个子域一样除了数字0和1之外在扩展域中还有特殊的元素用一个

新的符号a表示GF(2m)中任何非0元素都可由a的幂次表示

bull 有限元素的集合GF(2m)只能含有2m个元素并且对乘法封闭其约束

条件为

bull 根据这个多项式限制条件任何幂次等于或超过2m-1的域元素都可降阶为

下述幂次小于2m-1的元素

bull 这样GF(2m)的元素可表示为

01)12( =+minusm

a

11)12()2( ++minus+ == nnn aaaamm

0)2( 22210 minus=m

aaaaGF m

2013411 12

扩展域GF(2m)中的加法

bull 在GF(2m)中将每个非0元素用多项式ai(x)表示其系数至少

有一个不为0对于i=01 2hellip2m-2有

ai = ai(x) = ai0+ai1x+ai2x2+hellip+aim-1xm-1

bull 考虑m=3有限域表示为GF(23)下表为上式描述的基本元素

x0x1x2映射为7个元素ai和一个0元素表中的各行是二进

制数字序列代表上式中的系数ai0ai1ai2的取值

2013411 13

域 元 素

基本元素 x0 x1 x2

0 0 0 0 a0 1 0 0 a1 0 1 0 a2 0 0 1 a3 1 1 0 a4 0 1 1 a5 1 1 1 a6 1 0 1 a7 1 0 0

多项式为f(x)=1+x+x3的GF(8)的元素与基本元素之间的映射

2013411 14

bull 有限域中两个元素的加法定义为两个多项式中同幂次项系数

进行模2加即

ai+aj=(ai0+aj0)+ (ai1+aj1)x+hellip +(aim-1+ajm-1)xm-1

bull 有限域的本原多项式因为这些函数用来定义有限域GF(2m)

一个多项式是本原多项式的充要条件一个m阶的不可约多项

式f(x)如果f(x)整除xn+1的最小正整数n满足n=2m-1则该多

项式是本原的

bull 例33 本原多项式的辨别

(1) p1(x)=1+x+x4

(2) p2(x)=1+x+x2+x3+x4

分析 (1)通过验证这个幂次为m=4的多项式是否能够整除 xn+1但不能整

除1lenlt15范围内的xn+1就可以确定它是否为本原多项式经反复计算

p1(x)是本原多项式p2(x)不是因为它能整除x5+1

2013411 15

部分本原多项式

m m 3 1+x+x3 11 1+x2+x11

4 1+x+x4 12 1+x+x4+x6+x12

5 1+x2+x5 13 1+x+x3+x4+x13

6 1+x+x6 14 1+x+x6+x10+x14

7 1+x3+x7 15 1+x+x15

8 1+x2+x3+x4+x8 16 1+x+x3+x12+x16

9 1+x4+x9 17 1+x3+x17

10 1+x3+x10 18 1+x7+x18

2013411 16

考虑一个本原多项式定义的有限域的例子

bull 选择p(x)=1+x+x3多项式的幂次为m=3所以由p(x)所定义

的域中包含了2m=23=8个元素求解p(x)的根就是指找到x使p(x)=0我们所熟悉的二进制数0和1不能满足因为

p(1)=1p(0)=1 (运用模2运算)由基本代数学理论我们知

道对于幂次为m的多项式必然有m个根对于这个例子

p(x)=0有3个根由于这3个根不可能位于与p(x)系数相同

的有限域中而是位于扩展域GF(23)中用扩展域的元素

a来定义多项式p(x)的根可写成如下形式p(a)=0

2013411 17

即 1+a+a3=0 a3=1+a

这意味着a3可以表示为更低阶a项的加权和

类似地有

a4=aa3=a(1+a)=a+a2

a5=aa4=a(a+a2)=a2+a3=1+a+a2

a6=aa5=a(1+a+a2)=a+a2+a3=1+a2

a7=aa6=a(1+a2)=a+a3=1=a0

所以有限域GF(23)的8个元素为

0a0a1a2a3a4a5a6

2013411 18

bull 这8个元素中哪些是p(x)=0的3个根呢我们可通过枚举

找到

p(a0)=1 a0不是

p(a1)=1+a+a3=0 a1是

p(a2)=1+a2+a6=1+a0=0 a2是

p(a3)=1+a3+a9=1+a3+a2=1+a5=a4 a3不是

p(a4)=1+a4+a12=1+a4+a5=1+a0=0 a4是

同理可计算p(a5)p(a6)都不等于0所以p(x)=1+x+x3的

3个根是a a2 a4

2013411 19

p(x)=1+x+x3 GF(8)加法运算表

+ a0 a1 a2 a3 a4 a5 a6

a0 0 a3 a6 a1 a5 a4 a2

a1 a3 0 a4 a0 a2 a6 a5

a2 a6 a4 0 a5 a1 a3 a0

a3 a1 a0 a5 0 a6 a2 a4

a4 a5 a2 a1 a6 0 a0 a3

a5 a4 a6 a3 a2 a0 0 a1

a6 a2 a5 a0 a4 a3 a1 0

2013411 20

p(x)=1+x+x3 GF(8)乘法运算表

times a0 a1 a2 a3 a4 a5 a6

a0 a0 a1 a2 a3 a4 a5 a6

a1 a1 a2 a3 a4 a5 a6 a0

a2 a2 a3 a4 a5 a6 a0 a1

a3 a3 a4 a5 a6 a0 a1 a2

a4 a4 a5 a6 a0 a1 a2 a3

a5 a5 a6 a0 a1 a2 a3 a4

a6 a6 a0 a1 a2 a3 a4 a5

2013411 21

bull 如果GF(p)上的所有元素(除0外)都可表示为某元素a的幂

则a称为GF(p)上的本原元

bull 例34 考虑GF(5)因为p=5是个素数模算数可以进行

考虑该域上的元素2

20=1(mod 5)=1 21=2(mod 5)=2

22=4(mod 5)=4 23=8(mod 5)=3

因此所有GF(5)上的非零元素即1234都可以表示成

2的幂故2是GF(5)上的本原元大家可以验证3也是

GF(5)上的本原元

2013411 22

bull GF(pm)中在模p(x)运算下的扩域上x所表示的元素是本原

bull 例如 用本原多项式p(x)=1+x+x3 来构造GF(8)设GF(8)上的

本原元为a 通过将a的幂模p(a)得到GF(8)上的所有元素

a的幂 GF(8)上的元素 a0 1 a1 a a2 a2

a3 a+1 a4 a2+a a5 a2+a+1 a6 a2+1

2013411 23

bull 定理 设 b1b2hellipbp-1 为GF(p)上的非零域元素则 xp-1+1 =(x+b1)(x+b2)hellip(x+bp-1)

bull 从循环码知识我们知道为了找到分组长度为n的循环码的

生成多项式首先分解xn+1因此xn+1可以表示为多个因子的

乘积即

xn+1=f1(x)f2(x)hellipfw(x)

bull 在扩展域GF(pm)中n=pm-1

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 11: 第三章 BCH码 - USTC

11

bull 可以将GF(p)延伸为一个含有pm个元素的域称为GF(p)的扩展域表示

为GF(pm)m是一个非零正整数注意GF(p)是GF(pm)的子集

bull 二进制域GF(2)是扩展域GF(2m)的一个子域类似于实数域是复数域的一

个子域一样除了数字0和1之外在扩展域中还有特殊的元素用一个

新的符号a表示GF(2m)中任何非0元素都可由a的幂次表示

bull 有限元素的集合GF(2m)只能含有2m个元素并且对乘法封闭其约束

条件为

bull 根据这个多项式限制条件任何幂次等于或超过2m-1的域元素都可降阶为

下述幂次小于2m-1的元素

bull 这样GF(2m)的元素可表示为

01)12( =+minusm

a

11)12()2( ++minus+ == nnn aaaamm

0)2( 22210 minus=m

aaaaGF m

2013411 12

扩展域GF(2m)中的加法

bull 在GF(2m)中将每个非0元素用多项式ai(x)表示其系数至少

有一个不为0对于i=01 2hellip2m-2有

ai = ai(x) = ai0+ai1x+ai2x2+hellip+aim-1xm-1

bull 考虑m=3有限域表示为GF(23)下表为上式描述的基本元素

x0x1x2映射为7个元素ai和一个0元素表中的各行是二进

制数字序列代表上式中的系数ai0ai1ai2的取值

2013411 13

域 元 素

基本元素 x0 x1 x2

0 0 0 0 a0 1 0 0 a1 0 1 0 a2 0 0 1 a3 1 1 0 a4 0 1 1 a5 1 1 1 a6 1 0 1 a7 1 0 0

多项式为f(x)=1+x+x3的GF(8)的元素与基本元素之间的映射

2013411 14

bull 有限域中两个元素的加法定义为两个多项式中同幂次项系数

进行模2加即

ai+aj=(ai0+aj0)+ (ai1+aj1)x+hellip +(aim-1+ajm-1)xm-1

bull 有限域的本原多项式因为这些函数用来定义有限域GF(2m)

一个多项式是本原多项式的充要条件一个m阶的不可约多项

式f(x)如果f(x)整除xn+1的最小正整数n满足n=2m-1则该多

项式是本原的

bull 例33 本原多项式的辨别

(1) p1(x)=1+x+x4

(2) p2(x)=1+x+x2+x3+x4

分析 (1)通过验证这个幂次为m=4的多项式是否能够整除 xn+1但不能整

除1lenlt15范围内的xn+1就可以确定它是否为本原多项式经反复计算

p1(x)是本原多项式p2(x)不是因为它能整除x5+1

2013411 15

部分本原多项式

m m 3 1+x+x3 11 1+x2+x11

4 1+x+x4 12 1+x+x4+x6+x12

5 1+x2+x5 13 1+x+x3+x4+x13

6 1+x+x6 14 1+x+x6+x10+x14

7 1+x3+x7 15 1+x+x15

8 1+x2+x3+x4+x8 16 1+x+x3+x12+x16

9 1+x4+x9 17 1+x3+x17

10 1+x3+x10 18 1+x7+x18

2013411 16

考虑一个本原多项式定义的有限域的例子

bull 选择p(x)=1+x+x3多项式的幂次为m=3所以由p(x)所定义

的域中包含了2m=23=8个元素求解p(x)的根就是指找到x使p(x)=0我们所熟悉的二进制数0和1不能满足因为

p(1)=1p(0)=1 (运用模2运算)由基本代数学理论我们知

道对于幂次为m的多项式必然有m个根对于这个例子

p(x)=0有3个根由于这3个根不可能位于与p(x)系数相同

的有限域中而是位于扩展域GF(23)中用扩展域的元素

a来定义多项式p(x)的根可写成如下形式p(a)=0

2013411 17

即 1+a+a3=0 a3=1+a

这意味着a3可以表示为更低阶a项的加权和

类似地有

a4=aa3=a(1+a)=a+a2

a5=aa4=a(a+a2)=a2+a3=1+a+a2

a6=aa5=a(1+a+a2)=a+a2+a3=1+a2

a7=aa6=a(1+a2)=a+a3=1=a0

所以有限域GF(23)的8个元素为

0a0a1a2a3a4a5a6

2013411 18

bull 这8个元素中哪些是p(x)=0的3个根呢我们可通过枚举

找到

p(a0)=1 a0不是

p(a1)=1+a+a3=0 a1是

p(a2)=1+a2+a6=1+a0=0 a2是

p(a3)=1+a3+a9=1+a3+a2=1+a5=a4 a3不是

p(a4)=1+a4+a12=1+a4+a5=1+a0=0 a4是

同理可计算p(a5)p(a6)都不等于0所以p(x)=1+x+x3的

3个根是a a2 a4

2013411 19

p(x)=1+x+x3 GF(8)加法运算表

+ a0 a1 a2 a3 a4 a5 a6

a0 0 a3 a6 a1 a5 a4 a2

a1 a3 0 a4 a0 a2 a6 a5

a2 a6 a4 0 a5 a1 a3 a0

a3 a1 a0 a5 0 a6 a2 a4

a4 a5 a2 a1 a6 0 a0 a3

a5 a4 a6 a3 a2 a0 0 a1

a6 a2 a5 a0 a4 a3 a1 0

2013411 20

p(x)=1+x+x3 GF(8)乘法运算表

times a0 a1 a2 a3 a4 a5 a6

a0 a0 a1 a2 a3 a4 a5 a6

a1 a1 a2 a3 a4 a5 a6 a0

a2 a2 a3 a4 a5 a6 a0 a1

a3 a3 a4 a5 a6 a0 a1 a2

a4 a4 a5 a6 a0 a1 a2 a3

a5 a5 a6 a0 a1 a2 a3 a4

a6 a6 a0 a1 a2 a3 a4 a5

2013411 21

bull 如果GF(p)上的所有元素(除0外)都可表示为某元素a的幂

则a称为GF(p)上的本原元

bull 例34 考虑GF(5)因为p=5是个素数模算数可以进行

考虑该域上的元素2

20=1(mod 5)=1 21=2(mod 5)=2

22=4(mod 5)=4 23=8(mod 5)=3

因此所有GF(5)上的非零元素即1234都可以表示成

2的幂故2是GF(5)上的本原元大家可以验证3也是

GF(5)上的本原元

2013411 22

bull GF(pm)中在模p(x)运算下的扩域上x所表示的元素是本原

bull 例如 用本原多项式p(x)=1+x+x3 来构造GF(8)设GF(8)上的

本原元为a 通过将a的幂模p(a)得到GF(8)上的所有元素

a的幂 GF(8)上的元素 a0 1 a1 a a2 a2

a3 a+1 a4 a2+a a5 a2+a+1 a6 a2+1

2013411 23

bull 定理 设 b1b2hellipbp-1 为GF(p)上的非零域元素则 xp-1+1 =(x+b1)(x+b2)hellip(x+bp-1)

bull 从循环码知识我们知道为了找到分组长度为n的循环码的

生成多项式首先分解xn+1因此xn+1可以表示为多个因子的

乘积即

xn+1=f1(x)f2(x)hellipfw(x)

bull 在扩展域GF(pm)中n=pm-1

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 12: 第三章 BCH码 - USTC

2013411 12

扩展域GF(2m)中的加法

bull 在GF(2m)中将每个非0元素用多项式ai(x)表示其系数至少

有一个不为0对于i=01 2hellip2m-2有

ai = ai(x) = ai0+ai1x+ai2x2+hellip+aim-1xm-1

bull 考虑m=3有限域表示为GF(23)下表为上式描述的基本元素

x0x1x2映射为7个元素ai和一个0元素表中的各行是二进

制数字序列代表上式中的系数ai0ai1ai2的取值

2013411 13

域 元 素

基本元素 x0 x1 x2

0 0 0 0 a0 1 0 0 a1 0 1 0 a2 0 0 1 a3 1 1 0 a4 0 1 1 a5 1 1 1 a6 1 0 1 a7 1 0 0

多项式为f(x)=1+x+x3的GF(8)的元素与基本元素之间的映射

2013411 14

bull 有限域中两个元素的加法定义为两个多项式中同幂次项系数

进行模2加即

ai+aj=(ai0+aj0)+ (ai1+aj1)x+hellip +(aim-1+ajm-1)xm-1

bull 有限域的本原多项式因为这些函数用来定义有限域GF(2m)

一个多项式是本原多项式的充要条件一个m阶的不可约多项

式f(x)如果f(x)整除xn+1的最小正整数n满足n=2m-1则该多

项式是本原的

bull 例33 本原多项式的辨别

(1) p1(x)=1+x+x4

(2) p2(x)=1+x+x2+x3+x4

分析 (1)通过验证这个幂次为m=4的多项式是否能够整除 xn+1但不能整

除1lenlt15范围内的xn+1就可以确定它是否为本原多项式经反复计算

p1(x)是本原多项式p2(x)不是因为它能整除x5+1

2013411 15

部分本原多项式

m m 3 1+x+x3 11 1+x2+x11

4 1+x+x4 12 1+x+x4+x6+x12

5 1+x2+x5 13 1+x+x3+x4+x13

6 1+x+x6 14 1+x+x6+x10+x14

7 1+x3+x7 15 1+x+x15

8 1+x2+x3+x4+x8 16 1+x+x3+x12+x16

9 1+x4+x9 17 1+x3+x17

10 1+x3+x10 18 1+x7+x18

2013411 16

考虑一个本原多项式定义的有限域的例子

bull 选择p(x)=1+x+x3多项式的幂次为m=3所以由p(x)所定义

的域中包含了2m=23=8个元素求解p(x)的根就是指找到x使p(x)=0我们所熟悉的二进制数0和1不能满足因为

p(1)=1p(0)=1 (运用模2运算)由基本代数学理论我们知

道对于幂次为m的多项式必然有m个根对于这个例子

p(x)=0有3个根由于这3个根不可能位于与p(x)系数相同

的有限域中而是位于扩展域GF(23)中用扩展域的元素

a来定义多项式p(x)的根可写成如下形式p(a)=0

2013411 17

即 1+a+a3=0 a3=1+a

这意味着a3可以表示为更低阶a项的加权和

类似地有

a4=aa3=a(1+a)=a+a2

a5=aa4=a(a+a2)=a2+a3=1+a+a2

a6=aa5=a(1+a+a2)=a+a2+a3=1+a2

a7=aa6=a(1+a2)=a+a3=1=a0

所以有限域GF(23)的8个元素为

0a0a1a2a3a4a5a6

2013411 18

bull 这8个元素中哪些是p(x)=0的3个根呢我们可通过枚举

找到

p(a0)=1 a0不是

p(a1)=1+a+a3=0 a1是

p(a2)=1+a2+a6=1+a0=0 a2是

p(a3)=1+a3+a9=1+a3+a2=1+a5=a4 a3不是

p(a4)=1+a4+a12=1+a4+a5=1+a0=0 a4是

同理可计算p(a5)p(a6)都不等于0所以p(x)=1+x+x3的

3个根是a a2 a4

2013411 19

p(x)=1+x+x3 GF(8)加法运算表

+ a0 a1 a2 a3 a4 a5 a6

a0 0 a3 a6 a1 a5 a4 a2

a1 a3 0 a4 a0 a2 a6 a5

a2 a6 a4 0 a5 a1 a3 a0

a3 a1 a0 a5 0 a6 a2 a4

a4 a5 a2 a1 a6 0 a0 a3

a5 a4 a6 a3 a2 a0 0 a1

a6 a2 a5 a0 a4 a3 a1 0

2013411 20

p(x)=1+x+x3 GF(8)乘法运算表

times a0 a1 a2 a3 a4 a5 a6

a0 a0 a1 a2 a3 a4 a5 a6

a1 a1 a2 a3 a4 a5 a6 a0

a2 a2 a3 a4 a5 a6 a0 a1

a3 a3 a4 a5 a6 a0 a1 a2

a4 a4 a5 a6 a0 a1 a2 a3

a5 a5 a6 a0 a1 a2 a3 a4

a6 a6 a0 a1 a2 a3 a4 a5

2013411 21

bull 如果GF(p)上的所有元素(除0外)都可表示为某元素a的幂

则a称为GF(p)上的本原元

bull 例34 考虑GF(5)因为p=5是个素数模算数可以进行

考虑该域上的元素2

20=1(mod 5)=1 21=2(mod 5)=2

22=4(mod 5)=4 23=8(mod 5)=3

因此所有GF(5)上的非零元素即1234都可以表示成

2的幂故2是GF(5)上的本原元大家可以验证3也是

GF(5)上的本原元

2013411 22

bull GF(pm)中在模p(x)运算下的扩域上x所表示的元素是本原

bull 例如 用本原多项式p(x)=1+x+x3 来构造GF(8)设GF(8)上的

本原元为a 通过将a的幂模p(a)得到GF(8)上的所有元素

a的幂 GF(8)上的元素 a0 1 a1 a a2 a2

a3 a+1 a4 a2+a a5 a2+a+1 a6 a2+1

2013411 23

bull 定理 设 b1b2hellipbp-1 为GF(p)上的非零域元素则 xp-1+1 =(x+b1)(x+b2)hellip(x+bp-1)

bull 从循环码知识我们知道为了找到分组长度为n的循环码的

生成多项式首先分解xn+1因此xn+1可以表示为多个因子的

乘积即

xn+1=f1(x)f2(x)hellipfw(x)

bull 在扩展域GF(pm)中n=pm-1

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 13: 第三章 BCH码 - USTC

2013411 13

域 元 素

基本元素 x0 x1 x2

0 0 0 0 a0 1 0 0 a1 0 1 0 a2 0 0 1 a3 1 1 0 a4 0 1 1 a5 1 1 1 a6 1 0 1 a7 1 0 0

多项式为f(x)=1+x+x3的GF(8)的元素与基本元素之间的映射

2013411 14

bull 有限域中两个元素的加法定义为两个多项式中同幂次项系数

进行模2加即

ai+aj=(ai0+aj0)+ (ai1+aj1)x+hellip +(aim-1+ajm-1)xm-1

bull 有限域的本原多项式因为这些函数用来定义有限域GF(2m)

一个多项式是本原多项式的充要条件一个m阶的不可约多项

式f(x)如果f(x)整除xn+1的最小正整数n满足n=2m-1则该多

项式是本原的

bull 例33 本原多项式的辨别

(1) p1(x)=1+x+x4

(2) p2(x)=1+x+x2+x3+x4

分析 (1)通过验证这个幂次为m=4的多项式是否能够整除 xn+1但不能整

除1lenlt15范围内的xn+1就可以确定它是否为本原多项式经反复计算

p1(x)是本原多项式p2(x)不是因为它能整除x5+1

2013411 15

部分本原多项式

m m 3 1+x+x3 11 1+x2+x11

4 1+x+x4 12 1+x+x4+x6+x12

5 1+x2+x5 13 1+x+x3+x4+x13

6 1+x+x6 14 1+x+x6+x10+x14

7 1+x3+x7 15 1+x+x15

8 1+x2+x3+x4+x8 16 1+x+x3+x12+x16

9 1+x4+x9 17 1+x3+x17

10 1+x3+x10 18 1+x7+x18

2013411 16

考虑一个本原多项式定义的有限域的例子

bull 选择p(x)=1+x+x3多项式的幂次为m=3所以由p(x)所定义

的域中包含了2m=23=8个元素求解p(x)的根就是指找到x使p(x)=0我们所熟悉的二进制数0和1不能满足因为

p(1)=1p(0)=1 (运用模2运算)由基本代数学理论我们知

道对于幂次为m的多项式必然有m个根对于这个例子

p(x)=0有3个根由于这3个根不可能位于与p(x)系数相同

的有限域中而是位于扩展域GF(23)中用扩展域的元素

a来定义多项式p(x)的根可写成如下形式p(a)=0

2013411 17

即 1+a+a3=0 a3=1+a

这意味着a3可以表示为更低阶a项的加权和

类似地有

a4=aa3=a(1+a)=a+a2

a5=aa4=a(a+a2)=a2+a3=1+a+a2

a6=aa5=a(1+a+a2)=a+a2+a3=1+a2

a7=aa6=a(1+a2)=a+a3=1=a0

所以有限域GF(23)的8个元素为

0a0a1a2a3a4a5a6

2013411 18

bull 这8个元素中哪些是p(x)=0的3个根呢我们可通过枚举

找到

p(a0)=1 a0不是

p(a1)=1+a+a3=0 a1是

p(a2)=1+a2+a6=1+a0=0 a2是

p(a3)=1+a3+a9=1+a3+a2=1+a5=a4 a3不是

p(a4)=1+a4+a12=1+a4+a5=1+a0=0 a4是

同理可计算p(a5)p(a6)都不等于0所以p(x)=1+x+x3的

3个根是a a2 a4

2013411 19

p(x)=1+x+x3 GF(8)加法运算表

+ a0 a1 a2 a3 a4 a5 a6

a0 0 a3 a6 a1 a5 a4 a2

a1 a3 0 a4 a0 a2 a6 a5

a2 a6 a4 0 a5 a1 a3 a0

a3 a1 a0 a5 0 a6 a2 a4

a4 a5 a2 a1 a6 0 a0 a3

a5 a4 a6 a3 a2 a0 0 a1

a6 a2 a5 a0 a4 a3 a1 0

2013411 20

p(x)=1+x+x3 GF(8)乘法运算表

times a0 a1 a2 a3 a4 a5 a6

a0 a0 a1 a2 a3 a4 a5 a6

a1 a1 a2 a3 a4 a5 a6 a0

a2 a2 a3 a4 a5 a6 a0 a1

a3 a3 a4 a5 a6 a0 a1 a2

a4 a4 a5 a6 a0 a1 a2 a3

a5 a5 a6 a0 a1 a2 a3 a4

a6 a6 a0 a1 a2 a3 a4 a5

2013411 21

bull 如果GF(p)上的所有元素(除0外)都可表示为某元素a的幂

则a称为GF(p)上的本原元

bull 例34 考虑GF(5)因为p=5是个素数模算数可以进行

考虑该域上的元素2

20=1(mod 5)=1 21=2(mod 5)=2

22=4(mod 5)=4 23=8(mod 5)=3

因此所有GF(5)上的非零元素即1234都可以表示成

2的幂故2是GF(5)上的本原元大家可以验证3也是

GF(5)上的本原元

2013411 22

bull GF(pm)中在模p(x)运算下的扩域上x所表示的元素是本原

bull 例如 用本原多项式p(x)=1+x+x3 来构造GF(8)设GF(8)上的

本原元为a 通过将a的幂模p(a)得到GF(8)上的所有元素

a的幂 GF(8)上的元素 a0 1 a1 a a2 a2

a3 a+1 a4 a2+a a5 a2+a+1 a6 a2+1

2013411 23

bull 定理 设 b1b2hellipbp-1 为GF(p)上的非零域元素则 xp-1+1 =(x+b1)(x+b2)hellip(x+bp-1)

bull 从循环码知识我们知道为了找到分组长度为n的循环码的

生成多项式首先分解xn+1因此xn+1可以表示为多个因子的

乘积即

xn+1=f1(x)f2(x)hellipfw(x)

bull 在扩展域GF(pm)中n=pm-1

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 14: 第三章 BCH码 - USTC

2013411 14

bull 有限域中两个元素的加法定义为两个多项式中同幂次项系数

进行模2加即

ai+aj=(ai0+aj0)+ (ai1+aj1)x+hellip +(aim-1+ajm-1)xm-1

bull 有限域的本原多项式因为这些函数用来定义有限域GF(2m)

一个多项式是本原多项式的充要条件一个m阶的不可约多项

式f(x)如果f(x)整除xn+1的最小正整数n满足n=2m-1则该多

项式是本原的

bull 例33 本原多项式的辨别

(1) p1(x)=1+x+x4

(2) p2(x)=1+x+x2+x3+x4

分析 (1)通过验证这个幂次为m=4的多项式是否能够整除 xn+1但不能整

除1lenlt15范围内的xn+1就可以确定它是否为本原多项式经反复计算

p1(x)是本原多项式p2(x)不是因为它能整除x5+1

2013411 15

部分本原多项式

m m 3 1+x+x3 11 1+x2+x11

4 1+x+x4 12 1+x+x4+x6+x12

5 1+x2+x5 13 1+x+x3+x4+x13

6 1+x+x6 14 1+x+x6+x10+x14

7 1+x3+x7 15 1+x+x15

8 1+x2+x3+x4+x8 16 1+x+x3+x12+x16

9 1+x4+x9 17 1+x3+x17

10 1+x3+x10 18 1+x7+x18

2013411 16

考虑一个本原多项式定义的有限域的例子

bull 选择p(x)=1+x+x3多项式的幂次为m=3所以由p(x)所定义

的域中包含了2m=23=8个元素求解p(x)的根就是指找到x使p(x)=0我们所熟悉的二进制数0和1不能满足因为

p(1)=1p(0)=1 (运用模2运算)由基本代数学理论我们知

道对于幂次为m的多项式必然有m个根对于这个例子

p(x)=0有3个根由于这3个根不可能位于与p(x)系数相同

的有限域中而是位于扩展域GF(23)中用扩展域的元素

a来定义多项式p(x)的根可写成如下形式p(a)=0

2013411 17

即 1+a+a3=0 a3=1+a

这意味着a3可以表示为更低阶a项的加权和

类似地有

a4=aa3=a(1+a)=a+a2

a5=aa4=a(a+a2)=a2+a3=1+a+a2

a6=aa5=a(1+a+a2)=a+a2+a3=1+a2

a7=aa6=a(1+a2)=a+a3=1=a0

所以有限域GF(23)的8个元素为

0a0a1a2a3a4a5a6

2013411 18

bull 这8个元素中哪些是p(x)=0的3个根呢我们可通过枚举

找到

p(a0)=1 a0不是

p(a1)=1+a+a3=0 a1是

p(a2)=1+a2+a6=1+a0=0 a2是

p(a3)=1+a3+a9=1+a3+a2=1+a5=a4 a3不是

p(a4)=1+a4+a12=1+a4+a5=1+a0=0 a4是

同理可计算p(a5)p(a6)都不等于0所以p(x)=1+x+x3的

3个根是a a2 a4

2013411 19

p(x)=1+x+x3 GF(8)加法运算表

+ a0 a1 a2 a3 a4 a5 a6

a0 0 a3 a6 a1 a5 a4 a2

a1 a3 0 a4 a0 a2 a6 a5

a2 a6 a4 0 a5 a1 a3 a0

a3 a1 a0 a5 0 a6 a2 a4

a4 a5 a2 a1 a6 0 a0 a3

a5 a4 a6 a3 a2 a0 0 a1

a6 a2 a5 a0 a4 a3 a1 0

2013411 20

p(x)=1+x+x3 GF(8)乘法运算表

times a0 a1 a2 a3 a4 a5 a6

a0 a0 a1 a2 a3 a4 a5 a6

a1 a1 a2 a3 a4 a5 a6 a0

a2 a2 a3 a4 a5 a6 a0 a1

a3 a3 a4 a5 a6 a0 a1 a2

a4 a4 a5 a6 a0 a1 a2 a3

a5 a5 a6 a0 a1 a2 a3 a4

a6 a6 a0 a1 a2 a3 a4 a5

2013411 21

bull 如果GF(p)上的所有元素(除0外)都可表示为某元素a的幂

则a称为GF(p)上的本原元

bull 例34 考虑GF(5)因为p=5是个素数模算数可以进行

考虑该域上的元素2

20=1(mod 5)=1 21=2(mod 5)=2

22=4(mod 5)=4 23=8(mod 5)=3

因此所有GF(5)上的非零元素即1234都可以表示成

2的幂故2是GF(5)上的本原元大家可以验证3也是

GF(5)上的本原元

2013411 22

bull GF(pm)中在模p(x)运算下的扩域上x所表示的元素是本原

bull 例如 用本原多项式p(x)=1+x+x3 来构造GF(8)设GF(8)上的

本原元为a 通过将a的幂模p(a)得到GF(8)上的所有元素

a的幂 GF(8)上的元素 a0 1 a1 a a2 a2

a3 a+1 a4 a2+a a5 a2+a+1 a6 a2+1

2013411 23

bull 定理 设 b1b2hellipbp-1 为GF(p)上的非零域元素则 xp-1+1 =(x+b1)(x+b2)hellip(x+bp-1)

bull 从循环码知识我们知道为了找到分组长度为n的循环码的

生成多项式首先分解xn+1因此xn+1可以表示为多个因子的

乘积即

xn+1=f1(x)f2(x)hellipfw(x)

bull 在扩展域GF(pm)中n=pm-1

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 15: 第三章 BCH码 - USTC

2013411 15

部分本原多项式

m m 3 1+x+x3 11 1+x2+x11

4 1+x+x4 12 1+x+x4+x6+x12

5 1+x2+x5 13 1+x+x3+x4+x13

6 1+x+x6 14 1+x+x6+x10+x14

7 1+x3+x7 15 1+x+x15

8 1+x2+x3+x4+x8 16 1+x+x3+x12+x16

9 1+x4+x9 17 1+x3+x17

10 1+x3+x10 18 1+x7+x18

2013411 16

考虑一个本原多项式定义的有限域的例子

bull 选择p(x)=1+x+x3多项式的幂次为m=3所以由p(x)所定义

的域中包含了2m=23=8个元素求解p(x)的根就是指找到x使p(x)=0我们所熟悉的二进制数0和1不能满足因为

p(1)=1p(0)=1 (运用模2运算)由基本代数学理论我们知

道对于幂次为m的多项式必然有m个根对于这个例子

p(x)=0有3个根由于这3个根不可能位于与p(x)系数相同

的有限域中而是位于扩展域GF(23)中用扩展域的元素

a来定义多项式p(x)的根可写成如下形式p(a)=0

2013411 17

即 1+a+a3=0 a3=1+a

这意味着a3可以表示为更低阶a项的加权和

类似地有

a4=aa3=a(1+a)=a+a2

a5=aa4=a(a+a2)=a2+a3=1+a+a2

a6=aa5=a(1+a+a2)=a+a2+a3=1+a2

a7=aa6=a(1+a2)=a+a3=1=a0

所以有限域GF(23)的8个元素为

0a0a1a2a3a4a5a6

2013411 18

bull 这8个元素中哪些是p(x)=0的3个根呢我们可通过枚举

找到

p(a0)=1 a0不是

p(a1)=1+a+a3=0 a1是

p(a2)=1+a2+a6=1+a0=0 a2是

p(a3)=1+a3+a9=1+a3+a2=1+a5=a4 a3不是

p(a4)=1+a4+a12=1+a4+a5=1+a0=0 a4是

同理可计算p(a5)p(a6)都不等于0所以p(x)=1+x+x3的

3个根是a a2 a4

2013411 19

p(x)=1+x+x3 GF(8)加法运算表

+ a0 a1 a2 a3 a4 a5 a6

a0 0 a3 a6 a1 a5 a4 a2

a1 a3 0 a4 a0 a2 a6 a5

a2 a6 a4 0 a5 a1 a3 a0

a3 a1 a0 a5 0 a6 a2 a4

a4 a5 a2 a1 a6 0 a0 a3

a5 a4 a6 a3 a2 a0 0 a1

a6 a2 a5 a0 a4 a3 a1 0

2013411 20

p(x)=1+x+x3 GF(8)乘法运算表

times a0 a1 a2 a3 a4 a5 a6

a0 a0 a1 a2 a3 a4 a5 a6

a1 a1 a2 a3 a4 a5 a6 a0

a2 a2 a3 a4 a5 a6 a0 a1

a3 a3 a4 a5 a6 a0 a1 a2

a4 a4 a5 a6 a0 a1 a2 a3

a5 a5 a6 a0 a1 a2 a3 a4

a6 a6 a0 a1 a2 a3 a4 a5

2013411 21

bull 如果GF(p)上的所有元素(除0外)都可表示为某元素a的幂

则a称为GF(p)上的本原元

bull 例34 考虑GF(5)因为p=5是个素数模算数可以进行

考虑该域上的元素2

20=1(mod 5)=1 21=2(mod 5)=2

22=4(mod 5)=4 23=8(mod 5)=3

因此所有GF(5)上的非零元素即1234都可以表示成

2的幂故2是GF(5)上的本原元大家可以验证3也是

GF(5)上的本原元

2013411 22

bull GF(pm)中在模p(x)运算下的扩域上x所表示的元素是本原

bull 例如 用本原多项式p(x)=1+x+x3 来构造GF(8)设GF(8)上的

本原元为a 通过将a的幂模p(a)得到GF(8)上的所有元素

a的幂 GF(8)上的元素 a0 1 a1 a a2 a2

a3 a+1 a4 a2+a a5 a2+a+1 a6 a2+1

2013411 23

bull 定理 设 b1b2hellipbp-1 为GF(p)上的非零域元素则 xp-1+1 =(x+b1)(x+b2)hellip(x+bp-1)

bull 从循环码知识我们知道为了找到分组长度为n的循环码的

生成多项式首先分解xn+1因此xn+1可以表示为多个因子的

乘积即

xn+1=f1(x)f2(x)hellipfw(x)

bull 在扩展域GF(pm)中n=pm-1

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 16: 第三章 BCH码 - USTC

2013411 16

考虑一个本原多项式定义的有限域的例子

bull 选择p(x)=1+x+x3多项式的幂次为m=3所以由p(x)所定义

的域中包含了2m=23=8个元素求解p(x)的根就是指找到x使p(x)=0我们所熟悉的二进制数0和1不能满足因为

p(1)=1p(0)=1 (运用模2运算)由基本代数学理论我们知

道对于幂次为m的多项式必然有m个根对于这个例子

p(x)=0有3个根由于这3个根不可能位于与p(x)系数相同

的有限域中而是位于扩展域GF(23)中用扩展域的元素

a来定义多项式p(x)的根可写成如下形式p(a)=0

2013411 17

即 1+a+a3=0 a3=1+a

这意味着a3可以表示为更低阶a项的加权和

类似地有

a4=aa3=a(1+a)=a+a2

a5=aa4=a(a+a2)=a2+a3=1+a+a2

a6=aa5=a(1+a+a2)=a+a2+a3=1+a2

a7=aa6=a(1+a2)=a+a3=1=a0

所以有限域GF(23)的8个元素为

0a0a1a2a3a4a5a6

2013411 18

bull 这8个元素中哪些是p(x)=0的3个根呢我们可通过枚举

找到

p(a0)=1 a0不是

p(a1)=1+a+a3=0 a1是

p(a2)=1+a2+a6=1+a0=0 a2是

p(a3)=1+a3+a9=1+a3+a2=1+a5=a4 a3不是

p(a4)=1+a4+a12=1+a4+a5=1+a0=0 a4是

同理可计算p(a5)p(a6)都不等于0所以p(x)=1+x+x3的

3个根是a a2 a4

2013411 19

p(x)=1+x+x3 GF(8)加法运算表

+ a0 a1 a2 a3 a4 a5 a6

a0 0 a3 a6 a1 a5 a4 a2

a1 a3 0 a4 a0 a2 a6 a5

a2 a6 a4 0 a5 a1 a3 a0

a3 a1 a0 a5 0 a6 a2 a4

a4 a5 a2 a1 a6 0 a0 a3

a5 a4 a6 a3 a2 a0 0 a1

a6 a2 a5 a0 a4 a3 a1 0

2013411 20

p(x)=1+x+x3 GF(8)乘法运算表

times a0 a1 a2 a3 a4 a5 a6

a0 a0 a1 a2 a3 a4 a5 a6

a1 a1 a2 a3 a4 a5 a6 a0

a2 a2 a3 a4 a5 a6 a0 a1

a3 a3 a4 a5 a6 a0 a1 a2

a4 a4 a5 a6 a0 a1 a2 a3

a5 a5 a6 a0 a1 a2 a3 a4

a6 a6 a0 a1 a2 a3 a4 a5

2013411 21

bull 如果GF(p)上的所有元素(除0外)都可表示为某元素a的幂

则a称为GF(p)上的本原元

bull 例34 考虑GF(5)因为p=5是个素数模算数可以进行

考虑该域上的元素2

20=1(mod 5)=1 21=2(mod 5)=2

22=4(mod 5)=4 23=8(mod 5)=3

因此所有GF(5)上的非零元素即1234都可以表示成

2的幂故2是GF(5)上的本原元大家可以验证3也是

GF(5)上的本原元

2013411 22

bull GF(pm)中在模p(x)运算下的扩域上x所表示的元素是本原

bull 例如 用本原多项式p(x)=1+x+x3 来构造GF(8)设GF(8)上的

本原元为a 通过将a的幂模p(a)得到GF(8)上的所有元素

a的幂 GF(8)上的元素 a0 1 a1 a a2 a2

a3 a+1 a4 a2+a a5 a2+a+1 a6 a2+1

2013411 23

bull 定理 设 b1b2hellipbp-1 为GF(p)上的非零域元素则 xp-1+1 =(x+b1)(x+b2)hellip(x+bp-1)

bull 从循环码知识我们知道为了找到分组长度为n的循环码的

生成多项式首先分解xn+1因此xn+1可以表示为多个因子的

乘积即

xn+1=f1(x)f2(x)hellipfw(x)

bull 在扩展域GF(pm)中n=pm-1

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 17: 第三章 BCH码 - USTC

2013411 17

即 1+a+a3=0 a3=1+a

这意味着a3可以表示为更低阶a项的加权和

类似地有

a4=aa3=a(1+a)=a+a2

a5=aa4=a(a+a2)=a2+a3=1+a+a2

a6=aa5=a(1+a+a2)=a+a2+a3=1+a2

a7=aa6=a(1+a2)=a+a3=1=a0

所以有限域GF(23)的8个元素为

0a0a1a2a3a4a5a6

2013411 18

bull 这8个元素中哪些是p(x)=0的3个根呢我们可通过枚举

找到

p(a0)=1 a0不是

p(a1)=1+a+a3=0 a1是

p(a2)=1+a2+a6=1+a0=0 a2是

p(a3)=1+a3+a9=1+a3+a2=1+a5=a4 a3不是

p(a4)=1+a4+a12=1+a4+a5=1+a0=0 a4是

同理可计算p(a5)p(a6)都不等于0所以p(x)=1+x+x3的

3个根是a a2 a4

2013411 19

p(x)=1+x+x3 GF(8)加法运算表

+ a0 a1 a2 a3 a4 a5 a6

a0 0 a3 a6 a1 a5 a4 a2

a1 a3 0 a4 a0 a2 a6 a5

a2 a6 a4 0 a5 a1 a3 a0

a3 a1 a0 a5 0 a6 a2 a4

a4 a5 a2 a1 a6 0 a0 a3

a5 a4 a6 a3 a2 a0 0 a1

a6 a2 a5 a0 a4 a3 a1 0

2013411 20

p(x)=1+x+x3 GF(8)乘法运算表

times a0 a1 a2 a3 a4 a5 a6

a0 a0 a1 a2 a3 a4 a5 a6

a1 a1 a2 a3 a4 a5 a6 a0

a2 a2 a3 a4 a5 a6 a0 a1

a3 a3 a4 a5 a6 a0 a1 a2

a4 a4 a5 a6 a0 a1 a2 a3

a5 a5 a6 a0 a1 a2 a3 a4

a6 a6 a0 a1 a2 a3 a4 a5

2013411 21

bull 如果GF(p)上的所有元素(除0外)都可表示为某元素a的幂

则a称为GF(p)上的本原元

bull 例34 考虑GF(5)因为p=5是个素数模算数可以进行

考虑该域上的元素2

20=1(mod 5)=1 21=2(mod 5)=2

22=4(mod 5)=4 23=8(mod 5)=3

因此所有GF(5)上的非零元素即1234都可以表示成

2的幂故2是GF(5)上的本原元大家可以验证3也是

GF(5)上的本原元

2013411 22

bull GF(pm)中在模p(x)运算下的扩域上x所表示的元素是本原

bull 例如 用本原多项式p(x)=1+x+x3 来构造GF(8)设GF(8)上的

本原元为a 通过将a的幂模p(a)得到GF(8)上的所有元素

a的幂 GF(8)上的元素 a0 1 a1 a a2 a2

a3 a+1 a4 a2+a a5 a2+a+1 a6 a2+1

2013411 23

bull 定理 设 b1b2hellipbp-1 为GF(p)上的非零域元素则 xp-1+1 =(x+b1)(x+b2)hellip(x+bp-1)

bull 从循环码知识我们知道为了找到分组长度为n的循环码的

生成多项式首先分解xn+1因此xn+1可以表示为多个因子的

乘积即

xn+1=f1(x)f2(x)hellipfw(x)

bull 在扩展域GF(pm)中n=pm-1

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 18: 第三章 BCH码 - USTC

2013411 18

bull 这8个元素中哪些是p(x)=0的3个根呢我们可通过枚举

找到

p(a0)=1 a0不是

p(a1)=1+a+a3=0 a1是

p(a2)=1+a2+a6=1+a0=0 a2是

p(a3)=1+a3+a9=1+a3+a2=1+a5=a4 a3不是

p(a4)=1+a4+a12=1+a4+a5=1+a0=0 a4是

同理可计算p(a5)p(a6)都不等于0所以p(x)=1+x+x3的

3个根是a a2 a4

2013411 19

p(x)=1+x+x3 GF(8)加法运算表

+ a0 a1 a2 a3 a4 a5 a6

a0 0 a3 a6 a1 a5 a4 a2

a1 a3 0 a4 a0 a2 a6 a5

a2 a6 a4 0 a5 a1 a3 a0

a3 a1 a0 a5 0 a6 a2 a4

a4 a5 a2 a1 a6 0 a0 a3

a5 a4 a6 a3 a2 a0 0 a1

a6 a2 a5 a0 a4 a3 a1 0

2013411 20

p(x)=1+x+x3 GF(8)乘法运算表

times a0 a1 a2 a3 a4 a5 a6

a0 a0 a1 a2 a3 a4 a5 a6

a1 a1 a2 a3 a4 a5 a6 a0

a2 a2 a3 a4 a5 a6 a0 a1

a3 a3 a4 a5 a6 a0 a1 a2

a4 a4 a5 a6 a0 a1 a2 a3

a5 a5 a6 a0 a1 a2 a3 a4

a6 a6 a0 a1 a2 a3 a4 a5

2013411 21

bull 如果GF(p)上的所有元素(除0外)都可表示为某元素a的幂

则a称为GF(p)上的本原元

bull 例34 考虑GF(5)因为p=5是个素数模算数可以进行

考虑该域上的元素2

20=1(mod 5)=1 21=2(mod 5)=2

22=4(mod 5)=4 23=8(mod 5)=3

因此所有GF(5)上的非零元素即1234都可以表示成

2的幂故2是GF(5)上的本原元大家可以验证3也是

GF(5)上的本原元

2013411 22

bull GF(pm)中在模p(x)运算下的扩域上x所表示的元素是本原

bull 例如 用本原多项式p(x)=1+x+x3 来构造GF(8)设GF(8)上的

本原元为a 通过将a的幂模p(a)得到GF(8)上的所有元素

a的幂 GF(8)上的元素 a0 1 a1 a a2 a2

a3 a+1 a4 a2+a a5 a2+a+1 a6 a2+1

2013411 23

bull 定理 设 b1b2hellipbp-1 为GF(p)上的非零域元素则 xp-1+1 =(x+b1)(x+b2)hellip(x+bp-1)

bull 从循环码知识我们知道为了找到分组长度为n的循环码的

生成多项式首先分解xn+1因此xn+1可以表示为多个因子的

乘积即

xn+1=f1(x)f2(x)hellipfw(x)

bull 在扩展域GF(pm)中n=pm-1

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 19: 第三章 BCH码 - USTC

2013411 19

p(x)=1+x+x3 GF(8)加法运算表

+ a0 a1 a2 a3 a4 a5 a6

a0 0 a3 a6 a1 a5 a4 a2

a1 a3 0 a4 a0 a2 a6 a5

a2 a6 a4 0 a5 a1 a3 a0

a3 a1 a0 a5 0 a6 a2 a4

a4 a5 a2 a1 a6 0 a0 a3

a5 a4 a6 a3 a2 a0 0 a1

a6 a2 a5 a0 a4 a3 a1 0

2013411 20

p(x)=1+x+x3 GF(8)乘法运算表

times a0 a1 a2 a3 a4 a5 a6

a0 a0 a1 a2 a3 a4 a5 a6

a1 a1 a2 a3 a4 a5 a6 a0

a2 a2 a3 a4 a5 a6 a0 a1

a3 a3 a4 a5 a6 a0 a1 a2

a4 a4 a5 a6 a0 a1 a2 a3

a5 a5 a6 a0 a1 a2 a3 a4

a6 a6 a0 a1 a2 a3 a4 a5

2013411 21

bull 如果GF(p)上的所有元素(除0外)都可表示为某元素a的幂

则a称为GF(p)上的本原元

bull 例34 考虑GF(5)因为p=5是个素数模算数可以进行

考虑该域上的元素2

20=1(mod 5)=1 21=2(mod 5)=2

22=4(mod 5)=4 23=8(mod 5)=3

因此所有GF(5)上的非零元素即1234都可以表示成

2的幂故2是GF(5)上的本原元大家可以验证3也是

GF(5)上的本原元

2013411 22

bull GF(pm)中在模p(x)运算下的扩域上x所表示的元素是本原

bull 例如 用本原多项式p(x)=1+x+x3 来构造GF(8)设GF(8)上的

本原元为a 通过将a的幂模p(a)得到GF(8)上的所有元素

a的幂 GF(8)上的元素 a0 1 a1 a a2 a2

a3 a+1 a4 a2+a a5 a2+a+1 a6 a2+1

2013411 23

bull 定理 设 b1b2hellipbp-1 为GF(p)上的非零域元素则 xp-1+1 =(x+b1)(x+b2)hellip(x+bp-1)

bull 从循环码知识我们知道为了找到分组长度为n的循环码的

生成多项式首先分解xn+1因此xn+1可以表示为多个因子的

乘积即

xn+1=f1(x)f2(x)hellipfw(x)

bull 在扩展域GF(pm)中n=pm-1

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 20: 第三章 BCH码 - USTC

2013411 20

p(x)=1+x+x3 GF(8)乘法运算表

times a0 a1 a2 a3 a4 a5 a6

a0 a0 a1 a2 a3 a4 a5 a6

a1 a1 a2 a3 a4 a5 a6 a0

a2 a2 a3 a4 a5 a6 a0 a1

a3 a3 a4 a5 a6 a0 a1 a2

a4 a4 a5 a6 a0 a1 a2 a3

a5 a5 a6 a0 a1 a2 a3 a4

a6 a6 a0 a1 a2 a3 a4 a5

2013411 21

bull 如果GF(p)上的所有元素(除0外)都可表示为某元素a的幂

则a称为GF(p)上的本原元

bull 例34 考虑GF(5)因为p=5是个素数模算数可以进行

考虑该域上的元素2

20=1(mod 5)=1 21=2(mod 5)=2

22=4(mod 5)=4 23=8(mod 5)=3

因此所有GF(5)上的非零元素即1234都可以表示成

2的幂故2是GF(5)上的本原元大家可以验证3也是

GF(5)上的本原元

2013411 22

bull GF(pm)中在模p(x)运算下的扩域上x所表示的元素是本原

bull 例如 用本原多项式p(x)=1+x+x3 来构造GF(8)设GF(8)上的

本原元为a 通过将a的幂模p(a)得到GF(8)上的所有元素

a的幂 GF(8)上的元素 a0 1 a1 a a2 a2

a3 a+1 a4 a2+a a5 a2+a+1 a6 a2+1

2013411 23

bull 定理 设 b1b2hellipbp-1 为GF(p)上的非零域元素则 xp-1+1 =(x+b1)(x+b2)hellip(x+bp-1)

bull 从循环码知识我们知道为了找到分组长度为n的循环码的

生成多项式首先分解xn+1因此xn+1可以表示为多个因子的

乘积即

xn+1=f1(x)f2(x)hellipfw(x)

bull 在扩展域GF(pm)中n=pm-1

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 21: 第三章 BCH码 - USTC

2013411 21

bull 如果GF(p)上的所有元素(除0外)都可表示为某元素a的幂

则a称为GF(p)上的本原元

bull 例34 考虑GF(5)因为p=5是个素数模算数可以进行

考虑该域上的元素2

20=1(mod 5)=1 21=2(mod 5)=2

22=4(mod 5)=4 23=8(mod 5)=3

因此所有GF(5)上的非零元素即1234都可以表示成

2的幂故2是GF(5)上的本原元大家可以验证3也是

GF(5)上的本原元

2013411 22

bull GF(pm)中在模p(x)运算下的扩域上x所表示的元素是本原

bull 例如 用本原多项式p(x)=1+x+x3 来构造GF(8)设GF(8)上的

本原元为a 通过将a的幂模p(a)得到GF(8)上的所有元素

a的幂 GF(8)上的元素 a0 1 a1 a a2 a2

a3 a+1 a4 a2+a a5 a2+a+1 a6 a2+1

2013411 23

bull 定理 设 b1b2hellipbp-1 为GF(p)上的非零域元素则 xp-1+1 =(x+b1)(x+b2)hellip(x+bp-1)

bull 从循环码知识我们知道为了找到分组长度为n的循环码的

生成多项式首先分解xn+1因此xn+1可以表示为多个因子的

乘积即

xn+1=f1(x)f2(x)hellipfw(x)

bull 在扩展域GF(pm)中n=pm-1

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 22: 第三章 BCH码 - USTC

2013411 22

bull GF(pm)中在模p(x)运算下的扩域上x所表示的元素是本原

bull 例如 用本原多项式p(x)=1+x+x3 来构造GF(8)设GF(8)上的

本原元为a 通过将a的幂模p(a)得到GF(8)上的所有元素

a的幂 GF(8)上的元素 a0 1 a1 a a2 a2

a3 a+1 a4 a2+a a5 a2+a+1 a6 a2+1

2013411 23

bull 定理 设 b1b2hellipbp-1 为GF(p)上的非零域元素则 xp-1+1 =(x+b1)(x+b2)hellip(x+bp-1)

bull 从循环码知识我们知道为了找到分组长度为n的循环码的

生成多项式首先分解xn+1因此xn+1可以表示为多个因子的

乘积即

xn+1=f1(x)f2(x)hellipfw(x)

bull 在扩展域GF(pm)中n=pm-1

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 23: 第三章 BCH码 - USTC

2013411 23

bull 定理 设 b1b2hellipbp-1 为GF(p)上的非零域元素则 xp-1+1 =(x+b1)(x+b2)hellip(x+bp-1)

bull 从循环码知识我们知道为了找到分组长度为n的循环码的

生成多项式首先分解xn+1因此xn+1可以表示为多个因子的

乘积即

xn+1=f1(x)f2(x)hellipfw(x)

bull 在扩展域GF(pm)中n=pm-1

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 24: 第三章 BCH码 - USTC

2013411 24

bull 例35 考虑GF(2)和它的扩展域GF(8)这里p=2m=3对x7+1进行分解

x7+1=(x+1)(x3+x+1)(x3+x2+1)

同时我们知道GF(8)中的非零元素为1 a a+1 a2 a2+1 a2+a a2+a+1因此我们可以写为

x7+1=(x+1)(x+a)(x+a+1)(x+a2)(x+a2+1)(x+a2+a)(x+a2+a+1)

=(x+1)[(x+a)(x+a2)(x+a2+a)][(x+a+1)(x+a2+1)(x+a2+a+1)]

而在GF(8)上有

x3+x+1= (x+a)(x+a2)(x+a2+a)

x3+x2+1=(x+a+1)(x+a2+1)(x+a2+a+1)

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 25: 第三章 BCH码 - USTC

2013411 25

极小多项式fi(x) 对应的根 元素用a的幂表示

x+1 1 a0

x3+x+1

aa2和a2+a a1a2a4

x3+x2+1 a+1a2+1和a2+a+1 a3a6a5

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 26: 第三章 BCH码 - USTC

2013411 26

34 BCH码的编码 bull 对一个分组长度n=pm-1确定可纠t个错误的BCH码的生成

多项式的步骤

1 选取一个次数为m的素多项式并构造GF(pm)

2 求aii=012hellipn-2的极小多项式fi(x)

3 可纠t个错误的码的生成多项式为

g(x)=LCM[f1(x)f2(x)hellipf2t(x)]

用这种方法设计的码至少能纠t个错误在很多情况下这些

码能纠多于t个错误因此d=2t+1称为码的设计距离其

最小距离dge 2t+1注意一旦确定了n和t我们便可以确

定BCH码的生成多项式

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 27: 第三章 BCH码 - USTC

2013411 27

bull 例36 考虑GF(2)上的本原多项式p(a)=a4+a+1我们将以此来构造

GF(16)设a为本原元GF(16)上以a的幂表示形式的元素及它们对

应的极小多项式为 a的幂 GF(16)的元素 极小多项式

a0 1 x+1 a1 a x4+x+1 a2 a2 x4+x+1 a3 a3 x4+x3+x2+x+1 a4 a+1 x4+x+1 a5 a2+a x2+x+1 a6 a3+a2 x4+x3+x2+x+1 a7 a3+a+1 x4+x3+1 a8 a2+1 x4+x+1 a9 a3+a x4+x3+x2+x+1 a10 a2+a+1 x2+x+1 a11 a3+a2+a x4+x3+1 a12 a3+a2+a+1 x4+x3+x2+x+1 a13 a3+a2+1 x4+x3+1 a14 a3+1 x4+x3+1

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 28: 第三章 BCH码 - USTC

2013411 28

bull 我们希望确定纠单错的BCH码的生成多项式即t=1且n=15由前面公式可知一个BCH码的生成多项式由

LCM[f1(x)f2(x)hellipf2t(x)]给出利用前面的表我们可获得极

小多项式f1(x)和f2(x)于是有

g(x)=LCM[f1(x)f2(x)]

=LCM[(x4+x+1) (x4+x+1)]

=x4+x+1

因为deg g(x)=n-k可得n-k=4所以k=11于是我们得到纠单

一错误的BCH(1511)码的生成多项式该码的设计距离为

d=2t+1=3可以计算该码的实际最小距离d也是3

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 29: 第三章 BCH码 - USTC

2013411 29

如果希望纠2个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)]

=LCM[(x4+x+1)(x4+x+1) (x4+x3+x2+x+1)(x4+x+1)]

= (x4+x+1)(x4+x3+x2+x+1)

= x8+x7+x6+x4+1

因为deg g(x)=n-k=8所以k=7于是我们得到纠2个错误的

BCH(157)码的生成多项式该码的设计距离为d=2t+1=5可以计算该码的实际最小距离d也是5

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 30: 第三章 BCH码 - USTC

2013411 30

如果希望纠3个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x)f5(x)f6(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)

= x10+x8+x5+x4+x2+x+1

因为deg g(x)=n-k=10所以k=5于是我们得到纠3个错误的

BCH(155)码的生成多项式该码的设计距离为d=2t+1=7可以计算该码的实际最小距离d也是7

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 31: 第三章 BCH码 - USTC

2013411 31

如果希望纠4个错误且n=15则其生成多项式为

g(x)=LCM[f1(x)f2(x)f3(x)f4(x) f5(x)f6(x)f7(x)f8(x)]

= (x4+x+1)(x4+x3+x2+x+1)(x2+x+1)(x4+x3+1)

= x14+x13+x12+x11+x10+x9+x8+x7 +x6+x5+x4+x3+x2+x+1

因为deg g(x)=n-k=14所以k=1(简单的重复码)于是我

们得到纠4个错误的BCH(151)码的生成多项式该码的设

计距离为d=2t+1=9可以计算该码的实际最小距离d是15在此情况下设计距离不等于实际最小距离码设计得太过

度了该码实际可纠(d-1)2=7个随机错误

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 32: 第三章 BCH码 - USTC

2013411 32

35 BCH码的译码 bull 根据生成多项式可以构造出快速的硬件编码器而对于

BCH码的译码由于它是循环码的一个子类任何对循环码

的标准译码过程都适用于BCH码下面我们主要讨论专门针

对BCH码的更高效的算法

Gorenstein-zierler译码算法

设c(x)为发送码字多项式e(x)为错误多项式则接收到的多

项式为r(x)=c(x)+e(x)

设y1y2hellipyw为g(x)在GF(pm)上的根即g(yi)=0i=12hellipw

因为对某个信息多项式a(x)有c(x)=a(x)g(x)所以c(yi)=0

r(yi)=c(yi)+e(yi)=e(yi) i=12hellipw

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 33: 第三章 BCH码 - USTC

2013411 33

bull 假设BCH码是根据一个域元素a来构造的考虑错误多项式

e(x)=en-1xn-1+en-2xn-2+hellip+e1x+e0

其中最多有t个系数为非零(可纠t个错误)假设实际发生了v个错误其中0levlet设错误发生在位置i1i2hellipiv 则错误多项

式可写为

其中 为第k个错误的大小对二元码

v

v

ii

ii

ii xexexexe +++= )( 2

2

1

1

kie 1=

kie

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 34: 第三章 BCH码 - USTC

2013411 34

对纠错问题我们必须知道两件事

(1)错误在哪里发生了即错误的位置

(2)错误程度

因此未知量为i1i2hellipiv和 hellip 它们分别表明错

误发生的位置和程度

伴随式可通过对接收到的关于a的多项式计算得到

定义错误程度 和错误位置

k=12hellipv其中ik为第k个错误的位置Xk是与这个位置相关

的域元素

1ie

2ie

vie

v

v

ii

ii

ii aeaeae

aeaeacarS+++=

=+==

)()()()(2

2

1

1

1

kik eY = kik aX =

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 35: 第三章 BCH码 - USTC

2013411 35

bull 现在伴随多项式可写为

S1=Y1X1+Y2X2+hellip+YvXv

对j=12hellip2t 我们定义伴随式

Sj=r(aj)=c(aj)+e(aj)=e(aj)

于是我们可得到2t个联立方程组它有v个错误位置未知量

X1X2hellipXv和v个错误程度未知量Y1Y2hellipYv

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 36: 第三章 BCH码 - USTC

2013411 36

bull 定义错误定位多项式

U(x)=Uvxv+Uv-1xv-1+hellip+U1x+1

这个多项式的根是错误位置的逆 k=12hellipv即

U(x)=(1-xX1)(1-xX2)hellip(1-xXv)

所以如果我们知道错误定位多项式U(x)的系数便可以求

得错误位置X1X2hellipXv经过一系列代数变换我们可得如

下矩阵

1minuskX

=

+

+

minus

minusminus+

+

minus

v

v

v

v

v

vvvv

vv

vv

S

SS

U

UU

SSSS

SSSSSSSS

2

2

1

1

1

12221

132

121

错误定位多项式的系数可通过对伴随式矩阵M求逆得到

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 37: 第三章 BCH码 - USTC

2013411 37

BCH码的译码步骤

1 作为测试值令v=t计算伴随矩阵M的行列式如果行列

式的值为零令v=t-1再一次计算M的行列式重复这个过

程直到找到一个v值使伴随矩阵的行列式不为0该v值就

是实际产生错误的数目

2 求M的逆并计算错误定位多项式U(x)的系数

3 求解U(x)=0的零点从中可计算错误位置X1X2hellipXv如果

是二元码就到此为止(因为错误程度为1)

4 如果不是二元码回到方程组解这些方程组就得到错误程

+++=

+++=+++=

2tvv

2t22

2t112t

2vv

222

2112

vv22111

XYXYXYS

XYXYXYSXYXYXYS

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 38: 第三章 BCH码 - USTC

2013411 38

bull 例37 考虑纠3个错误的BCH(155)码它的生成多项式为

g(x)=x10+x8+x5+x4+x2+x+1

设传输的是全0码字接收到的多项式为r(x)=x5+x3故有两个错

误分别在第4个位置和第6个位置错误多项式为e(x)=x5+x3

但译码器并不知道这些它连实际发生了几个错误都不知道

解利用Gorenstein-aierler译码算法首先用GF(16)上的算术计

算出伴随式

S1=a5+a3=a11 S2=a10+a6=a7

S3=a15+a9=a7 S4=a20+a12=a14

S5=a25+a15=a5 S6=a30+a18=a14

因为这是个纠3个错的码首先令v=t=3

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 39: 第三章 BCH码 - USTC

2013411 39

Det(M)=0 这表明发生的错误数少于3个

下面令v=2

Det(M) ne 0 这表明实际发生了2个错误

下面计算M-1

=

=

5147

1477

7711

543

432

321

aaaaaaaaa

SSSSSSSSS

M

=

= 77

711

32

21

aaaa

SSSS

M

=minus

117

771

aaaa

M

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 40: 第三章 BCH码 - USTC

2013411 40

求解U1和U2可得U2=a8及U1=a11 从而

U(x)=a8x2+a11x+1=(1+xa5)(1+xa3)

因此恢复出来的错误位置为a5和a3因为该码是二元码错

误程度为1故e(x)=x5+x3

7 7 72 31

7 11 141 4

U S a a aM

U S a a aminus

= sdot =

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 41: 第三章 BCH码 - USTC

2013411 41

36 戈雷(Golay)码 bull 在第9页中我们曾给出一些部分非本原BCH码的列表

Golay码就是(2312)码由表可查出其生成多项式

(5343)8=101 011 100 011

即 g1(x)=x11+x9+x7+x6+x5+x+1

或g2(x)=x11+x10+x6+x5+x4+x2+1

它们都是x23+1的因式即x23+1=(x+1)g1(x)g2(x)

其最小码距为7可纠正不大于3个的随机错误

bull Golay码是一个完备码如果r 位监督位所组成的校正子

与误码图样一一对应这种码组称为完备码

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 42: 第三章 BCH码 - USTC

2013411 42

bull 定理一个有M个码字最小距离为2t+1的q-元(nk)码

满足

其中qn这个界称为汉明界一个能到达汉明界的码称为完

备码即上式取等号

bull 容易证明

nt qqtn

qn

qnn

M le

minus

++minus

+minus

+

)1()1(2

)1(10

2

2312 2323

223

123

023

2 =

+

+

+

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 43: 第三章 BCH码 - USTC

2013411 43

37 Reed-Solomon (RS)码

bull 1960年MIT Lincoln实验室的S Reed和G Solomon在Journal of the Society for Industrial and Applied Mathematics上发表

的一篇论文 Polynomial Codes over Certain Finite Fields (某些有限域上的多项式码)

bull RS码的编码系统是建立在比特组基础上的即字节而不

是单个的0和1因此它是非二进制BCH码这使得它处理

突发错误特别好

备注在许多现实生活的信道中错误不是随机的而是突

发的例如在一个移动通信信道中信号衰退导致突发错

误当错误连续发生时我们称它们为突发错误

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 44: 第三章 BCH码 - USTC

2013411 44

bull 对于任意选取的正整数s可构造一个相应码长为n=qs-1的q进制BCH码其中码元符号取自有限域GF(q)而q为素数

的幂当s=1 qgt2时所建立的码长为n=q-1的q进制BCH码

称为RS码当q=2m(mgt1)码元符号取自域GF(2m)的二进

制RS码可用来纠正突发错误

bull 输入信息分为km比特一组即每个符号有m比特k个符

号形成一组

bull 一个可纠t个符号错误的RS码有如下参数 码长n=2m-1 符号 或 m(2m-1) bit 信息段k 符号 或 km bit 监督段n-k=2t 符号 或 m(n-k)=2mt bit 最小码距d=2t+1 符号 或 md=m(2t+1) bit

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45
Page 45: 第三章 BCH码 - USTC

2013411 45

例38 试构造一个能纠3个错误符号码长n=15m=4的RS码

解已知t=3n=15m=4 所以有

码距d=2t+1=7个符号(28bit) 监督段2t=6个符号(24bit)

信息段n-6=9个符号(36bit) 码长n=15个符号(60bit)

因此该码是(159)RS码也可看作是(6036)二进制码

最小距离为d的RS码生成多项式应具有如下形式

g(x)=(x+a)(x+a2)hellip(x+ad-1)

本例中d=7

g(x)=(x+a)(x+a2)hellip(x+a6)

=x6+a10x5+a14x4+a4x3+a6x2+a9x+a6

其中ai是GF(q)中的一个元素

RS码生成多项式的次数总是2t

  • 第三章 BCH码
  • 本章内容
  • 31 引言
  • 32 BCH码简述
  • 幻灯片编号 5
  • 幻灯片编号 6
  • 幻灯片编号 7
  • nle 31的本原BCH码
  • 部分非本原BCH码
  • 33 有限域
  • 幻灯片编号 11
  • 扩展域GF(2m)中的加法
  • 幻灯片编号 13
  • 幻灯片编号 14
  • 部分本原多项式
  • 考虑一个本原多项式定义的有限域的例子
  • 幻灯片编号 17
  • 幻灯片编号 18
  • p(x)=1+x+x3 GF(8)加法运算表
  • p(x)=1+x+x3 GF(8)乘法运算表
  • 幻灯片编号 21
  • 幻灯片编号 22
  • 幻灯片编号 23
  • 幻灯片编号 24
  • 幻灯片编号 25
  • 34 BCH码的编码
  • 幻灯片编号 27
  • 幻灯片编号 28
  • 幻灯片编号 29
  • 幻灯片编号 30
  • 幻灯片编号 31
  • 35 BCH码的译码
  • 幻灯片编号 33
  • 幻灯片编号 34
  • 幻灯片编号 35
  • 幻灯片编号 36
  • BCH码的译码步骤
  • 幻灯片编号 38
  • 幻灯片编号 39
  • 幻灯片编号 40
  • 36 戈雷(Golay)码
  • 幻灯片编号 42
  • 37 Reed-Solomon (RS)码
  • 幻灯片编号 44
  • 幻灯片编号 45