循环码(7,3)码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

循环码(7,3)码
(生成多项式1
)(2
34
+++=x x x
x g )
摘要:本报告详细给出了循环码的定义以及由生成多项式求解生成
矩阵和系统生成矩阵的过程,并在Matlab 环境下写出了循
环码的编码器和解码器代码,实现了编码和译码功能。

分析和讨论了 此码发现错误、纠正错误的能力,并讨论了其与线性分组码、Hamming 码等信道编码的区别与联系。

关键字:循环码 编码 译码 检错 纠错 Matlab
信道编码:信道编码又称差错控制编码或纠错编码,它是提高信
息传输可靠性的有效方法之一。

一类一类信道编码是对传输信号的码型进行变换,使之更适合于信道特性或满足接收端对恢复信号的要求,从而减少信息的损失;另一类信道编码是在信息序列中人为的增加冗余位,使之具有相关特性,在接收端利用相关性进行检错或纠错,从而达到可靠通信的目的。

1.1、循环码
循环码是线性分组码中一个重要的分支。

它的检、纠错能力较强,编码和译码设备并不复杂,而且性能较好,不仅能纠随机错误,也能纠突发错误。

循环码是目前研究得最成熟的一类码,并且有严密的代数理论
基础,故有许多特殊的代数性质,这些性质有助于按所要求的纠错能力系统地构造这类码,且易于实现,所以循环码受到人们的高度重视,
在FEC 系统中得到了广泛应用。

1.1.1、循环码定义
定义:一个线性分组码,若具有下列特性,则称为循环码。

设码字 )(0121c c c c c n n ⋅⋅⋅=-- (1.1.1) 若将码元左移一位,得 ()
)(10121--⋅⋅⋅=n n c c c c c (1.1.2)
()
1c
也是一个码字。

由于(k n ,)线性分组码是n 维线性空间n V 中的一个k 维子空间,因此()k n ,循环码是n 维线性空间n V 中的一个k 维循环子空间。

注意:循环码并非由一个码字的全部循环移位构成。

1.1.2、循环码的特点
循环码有两个数学特征: (1)线性分组码的封闭型;
(2)循环性,即任一许用码组经过循环移位后所得到的码组仍为该许用码组集合中的一个码组。

即若()0
12
1a a a a n n ⋅⋅⋅--为一循环码组,则
()1
03
2---⋅⋅⋅n n n a a a a 、()2
143----⋅⋅⋅n n n n a a a a 、……还
是许用码组。

也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循环码组。

表1.1-1列出了某(7,3)循环码的全部码组。

码组信息位监督位码组信息位监督位
编号编号
1000000051001110 2001110161010011
30100
11
17
11
01
00
1 40
11101081110100 6
a
5
a
4
a
3
a
2
a
1
a
a
6
a
5
a
4
a
3
a
2
a
1
a
a
表1.1-1(7,3)循环码组
以3号码组(0100111)为例,左移循环一位变成5号码组(1001110),依次左移一位构成的状态图如图1.1-2所示。

1110100
0100111 011101000111011001110
1010011
1101001
3号
5号
2号
4号
8号 7号 6号
图1.1-1(7,3)循环码中的循环圈
可见除全零码组外,不论循环右移或左移,移多少位,其结果均在该循环码组的集合中(全零码组自己构成独立的循环圈)。

1.1.3、码多项式
为了用代数理论研究循环码,可将码组用多项式表示,循环码
组中各码元分别为多项式的系数。

长度为n 的码组
()0121a a a a A n n ⋅⋅⋅=--用码多项式表示则为
012
21
1)(a x a x
a x
a x A n n n n +⋅⋅⋅++=---- (1.1.3)
式中,x 的幂次是码元位置的标记。

若把一个码组左移i
位后的码组记为
),,,,(121)
(i n i n i n i n i a a a a A
-+-----⋅⋅⋅=,其码多项式为
i n i n n i n n i n i a x a x
a x
a x A -+-------++⋅⋅⋅++=12
21
1)
()( (1.1.4)
)()
(x A
i 可以根据)
(x A x i
按模1+n
x 运算得到,即
)1mod()()()
(+≡n
i i x x A x x A (1.1.5)

)()1)(()()
(x A
x x Q x A x i n i ++= (1.1.6)
式中,)(x Q 为)(x A x i 除以1+n
x 的商式,而)()(x A i 等于)(x A A i
⋅被
1+n
x 除得之余式。

以码组1011100为例,若将此码左移两位,则由式(1.1.6)可得
)()1)(()()
2(723462x A x x Q x x x x x ++=+++
易有其余式为x
x x x x A i +++=
4
56)()( ,对应的码组为1110010,它与
直接对码组进行循环左移的结果相同。

码多项式之间可以进行代数运算,在二元码中遵循模2运算的规则。

根据线性码的封闭性,任意两码字经模运算后仍为本码组中的码字。

1.1.4、生成多项式
(n,k )循环码码组集合中(全“0”码除外)幂次最低的多项式
(n-k )阶称为生成多项式)(x g 。

它是能整除1+n
x 且常数项为1的多项式,具有唯一性。

集合中其他码多项式,都是按模(1+n
x )运
算下)(x g 的倍式,即可以由多项式)(x g 产生循环码的全部码组。

假设信息码多项式为)(x m ,则对应的循环码多项式为
)()()(x g x m x A = (1.1.7) 式中,)(x m 为次数不大于1-k 的多项式,共有k
2个(k n ,)循环码组。

考查表1.1-1,其中4
=-k
n 阶的多项式只有编号为2的码组
(0011101),所以表中所示(7,3)循环码组的生成多项式
1)(2
3
4
+++=x x x x g ,并且该码组集合中的任何码多项式)(x A 都
可由信息位乘以生成多项式得到
)1mod()()()(0121+++⋅⋅⋅++=--n
k k x x g m m m m x A (1.1.8)
式中,)(0121m m m m k k ⋅⋅⋅--为信息码元。

对于(7,k )循环码,17+x 的因式分解为
)1)(1)(1(12
337+++++=+x x x x x x (1.1.9)
由该式可以构成表1.1-2所示几种(7,k )循环码。

表1.1-2 (7,3)循环码的生成多项式
从表1.1-2中可以看出,即使n,k 均已确定,也可能由多种生成
多项式供选择,选用的多项式不同,产生出的循环码组也不同。

1.1.5、生成矩阵
根据各码组集合中生成多项式的唯一性,可以构造生成矩阵G 。

由于g (x )的次数为k n -,则)(,),(),(1x g x x xg x g k -⋅⋅⋅都是码多项式,而且线性无关,因此以这k 各多项式对应的码组作为k 行就能构成该循环码的生成矩阵,因此循环码的生成矩阵多项式可以写成
(7,k) g(x)
(7,1) (7,3) (7,4) (7,6)
)1)(1(323++++x x x x
)1)(1()1)(1(3
23++++++x x x x x x 或
113
2
3
++++x x x x 或
1+x
⎥⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎣⎡=
-)()()()(1x g x g x x g x x G k (1.1.10) 以生成多项式1)(2
3
4
+++=x x x x g 构造)(x G ,相应的矩阵形式为
⎥⎥
⎥⎦

⎢⎢⎢⎣⎡+++++++++=
⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=1)()()()(2343
4524562x x x x x x x x x x x x g x g x x g x x G (1.1.11)
则G 为g(x)升幂排列时的G 为
⎥⎥⎥⎦

⎢⎢⎢⎣⎡=10
1
1
100
101110
0010111G (1.1.12) 对式(1.1.12)作线性变换,整理成典型形式的生成矩阵
⎥⎥⎥⎦

⎢⎢⎢⎣⎡=10
1
1
1
1
110010
0111001
G (1.1.13) 若信息码元与式(1.1.13)相乘,得到的就是系统循环码。

1.1.6、监督多项式与监督矩阵
如前所述,在(n ,k )循环码中,由于g(x)能除尽,因此1+n
x 可
分解成g(x)和其他因式的乘积,记为
)()(1x h x g x
n
=+
即可写成
)(1)(x g x x h n
+=
(1.1.14) 由于g(x)是常数项为1的r 次多项式,所以h(x)必为k 次多项式。

称h(x)为监督多项式或一致校验多项式,与式(1.1.10)给出的G(x)相对应,监督矩阵多项式可表示为
⎥⎥
⎥⎥
⎥⎦
⎤⎢⎢⎢⎢⎢⎣⎡=
-)()()()(*
**1x h x xh x h x x H r (1.1.15) 式中,)(*
x h 式h(x)的逆多项式。

由式(1.1.14)可知,前述生成多项式的g(x)的一致校验多项
式为1)(2
3++=x x x h ,所以其一致校验矩阵(监督矩阵)为
⎥⎥⎥
⎥⎦
⎤⎢⎢⎢⎢⎣⎡=
10
1
1
0101100
00101100001011)(X H (1.1.16)
1.1.7、系统循环码
循环码也可以构成为系统循环码。

为方便系统码的构造,将消息多项式和码式都记为高位在前,即),,,,(0121m m m m m k k ⋅⋅⋅=--的消息多
项式为m(x),
1
110)(--+++=k k x m x m m x m
又设码式的高幂次部分等于m(x),即
)
()()(1
11
110x p x m x
x
c x
c x
c x c c x c k
n n n k n k n k
n k n +⋅=++++++=---+-+--- k n r x p -=<∂)(
其中p(x)称为校验位多项式,由于码式是生成式的倍式,所以 ))((mod 0)()()()(x g x g x a x m x
x p k
n ==+-
))()(mod ()(x g x m x x p r
⋅-= 因此循环码的系统码码式为
))]((mod )([)()(x g x m x x m x x c r
r -= (1.1.17)
将循环码的系统码构造步骤总结为
(1)多项式乘))(()(x m x x m x r
r =
(2)多项式求模(余式) )())())(mod ((x p x g x m x r =
(3)多项式减)()())((x c x p x m x r =- 如果令)(x m 为单项式1
+r x ,1,,1,0-=k i
r x p x p x g x a x
i i r <∂+=+)(),
()()(1
i
r i i x
x p x c ++=)()(
那么容易看到,)(x c i 对应的向量i c ,1,,1,0-=k i 是线性无关的,从而得到循环码系统码的生成矩阵s G 为

⎥⎥


⎤⎢
⎢⎢⎢⎣⎡=
------1000
1000
11
,11,10
,11,111
101,00100
r k k k r r s p p p p p p p p p G
(1.1.18)
故由式(1.1.18)可以求得前述(7,3)循环码系统码的生成矩阵为
⎥⎥⎥⎦

⎢⎢⎢⎣⎡=10
1
1
1
1110010
0111001s G 1.1.8、循环码的编码
1. 利用生成多项式g(x)实现编码:
如上所述,但循环码的生成多项式g(x)确定时,码就完全确定了。

现在讨论生成多项式g(x)给定以后,如何实现循环码的编码问题。

若已知 g(x)=g n-k x n-k +g n-k-1x n-k-1+...g 1x+g 0 并设信息元多项式 m(x)=m k-1x k-1+m k-2x k-2+...m 1x+m 0
要编码成系统循环码形式,即码字的最左边k 位是信息元,其余n-k 位是校验元,则要用x n-k 乘以m(x),再加上校验元多项式r(x),这样得到的码字多项式c(x)为 c(x)=x n-k m(x)+r(x)
=m k-1x n-1+m k-2x n-2+...m 0x n-k +r n-k-1x n-k-1+...r 1x+r 0 其中 r(x)=r n-k-1x n-k-1+...r 1x+r 0 c(x)一定是g(x)的倍式,即有
c(x)=x n-k m(x)+r(x)=q(x)g(x) c(x)=x n-k m(x)+r(x)=0. mod g(x)
注意到g(x)为n-k 次多项式,而r(x)最多为n-k-1次多项式,必有 r(x)=x n-k m(x), mod g(x) (1.1.19) 即r(x)必是x n-k m(x)除以g(x)的余式。

式(1.1.19)指出了系统循环码的编码方法:首先将信息元多项式
m(x)乘以x n-k 成为x n-k m(x),然后将x n-k m(x)除以生成多项式g(x)得到余式r(x),该余式就是校验元多项式,从而得到码字多项式
c(x)=x n-k m(x)+r(x)。

综上所述,系统循环码的编码问题,可以归结为两个多项式的除法运算,即将x n-k m(x)除以生成多项式g(x)得到余式r(x)的运算,因此研究多项式除法的电路实现是必要的。

由前面得叙述以求得循环码的生成矩阵等,故对于生成式为1)(2
34+++=x x x x g 的(7,3)循环编码器,其编码原理图如图1.1-2。

B C D +++1
2
+
1-3拍
4-7拍
M A
A
图1.1-2(7,3)循环码编码器原理图
在Matlab 上运行代码如下:
clear;clc;
G=[1 0 0 1 1 0 1;0 1 0 1 1 1 0;0 0 1 0 1 1 1 ];
msg=randint(20,3,[0 1]);
code=mod(msg*G,2); %编码及加入噪声
noise=randerr(20,7);
code1=mod(code+noise,2);
for i=1:20
t=code1(i,:);
t=decode(t); %调用decode函数
nmsg(i,:) = t;
end
err=mod(nmsg+msg,2);
n=sum(sum(err))/1000; %误码率计算
disp(n);
1.1.9、循环码的译码
当码字c通过噪声信道传送时,会受到干扰而产生错误。

如信道产生 y=c+e
上式也可以写成多项式形式 y(x)=c(x)+e(x)
译码器的任务就是从y(x)中得到e ,然后求得估值码字
=y(x)+e (x),并从中得到信息组m (x)。

c
循环码的译码可按以下三个步骤进行:
①接收到的y(x)计算伴随式式s(x);
②根据伴随式s(x)找到对应的估值错误图样e (x);
③计算c =y(x)+e (x),得到估值码字c (x)。

若c (x)=c(x),则译码正确,否则,若c (x)≠c(x),则译码错误。

译码器实现的复杂程度,往往是一个纠错码能否使用的关键。

利用循环码的循环特性,经常会使其译码运算变得简单,这也是循环码
受到关注和重视的重要原因。

对于本报告讨论的(7,3)循环码,其译码器原理图如图1.1-3。

+D0D1D2D3
++
&
+
7级移位寄存器
M=1信号使各存储单位清零
输入Y(x)M
输出C(x)
图1.1-3(7,3)循环码译码器原理图
对此译码器,其Matlab上运行代码如下:
%译码器代码
function m=decode(code)
H = [1 1 0 1 0 0 0;1 1 1 0 1 0 0 ;0 1 1 0 0 1 0 ;1 0 1 0 0 0
1 ];
S=mod(code*H',2);
for i=1:7
if S==H(:,i)'
code(i)=~code(i);
break;
end
end
m=code(1:3)
1.1.10、循环码检错与纠错能力
由于循环码是一种线性分组码,所以其纠检错能力与线性分组码相当。

而线性分组码的最小距离可用来衡量码的抗干扰能力,那么一个码的最小距离就与它的纠检错能力有关。

定理: 对于任一个(n,k )线性分组码,若要在码字内
(1) 检测e 个错误,要求码的最小距离1+≥e d ;
(2) 纠正t 个错误,要求码的最小距离12+≥t d ;
(3) 纠正t 个错误同时检测e (t ≥)个错误,则要求
1++≥e t d ;
循环码的译码分检错译码与纠错译码两类。

在无记忆信道上,对码字c ,差错图案e 和接收向量r 的多项式描述为
)()()(x e x c x r += (1.1.20) 定义)(x r 的伴随多项式为)(x s
112210))
((mod )()(--++++==r r x s x s x s s x g x r x s (1.1.21)
由于)),((mod 0)()()(x g x g x a x c ==所以 ))()(mod ()(x g x e x s =
由此可见,0)(≠x s 则一定有差错产生,或说满足0))()(mod (≠x g x e 的差错图样)(x e 产生,它满足0))()(mod (=x g x e 。

循环码的检错译码即是计算)(x s 并判断是否为0。

1.2、讨论
线性分组码、Hamming码、循环码的联系与区别
线性分组码是同时具有分组特性(码字和消息长度恒定)和线性特性(消息相加后的编码等于各自编码后相加)的纠错码,它是整个纠错编码中很重要的一类码,也是讨论各种码的基础。

汉明码是一种典型的线性分组码,同时,循环码也属于线性分组码。

汉明码是1950年由汉明(Hamming)提出的,它性能良好,既具有较高的可靠性,又具有较高的传输率,而且编译码电路较为简单,易于工程实现;但汉明码的编码效率比较低,它每4个比特编码就需要3个比特的冗余校验比特,而且它只能纠正单个的错误。

循环码是线性分组码中一个重要的子类。

其代数结构完全建立在有限域基础上,具有很多有用的性质,易找到有效的编译码方法。

循环码的循环结构使码字的设计范围大大增加,同时大大简化了编译码结构。

它的检、纠错能力较强,编码和译码设备并不复杂,而且性能较好,不仅能纠随机错误,也能纠突发错误,是目前研究得最成熟的一类码。

2.1、参考文献
(1)陈运主编《信息论与编码》(第2版)——电子工业出版社;(2)孙丽华主编《信息论与纠错编码》——电子工业出版社;(3)王秉钧、王少毅、韩敏编著《通信原理及其应用》——国防工业出版社;
(4)刘卫国主编《MATLAB程序设计与应用》(第二版)——高等教
育出版社。

相关文档
最新文档