第三章 bch码 - ustc
TRANSCRIPT
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-
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
-