信息论与编码-卷积码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息论与编码--卷积码
(掌握利用编码电路求生成矩阵和监督矩阵)
差错控制编码系统中除了使用分组码之外,另一类广泛应用的称为卷积码,在分组码的编码和译码过程中,每个码字的监督元只与本码字的信息元有关,而与其它码字的信息元无关,即分组码的编码器是一个无记忆的逻辑电路。
但是,卷积码的编码过程中,本码字的监督元不仅与本码字的信息元有关,而且与前m 个码字的信息元有关,因此卷积码的编码器是一个有记忆的时序电路。
卷积码由于更充分地利用码字之间的相关性,可以减少码字长度,简化编译码电路,并得到较好的差错控制性能,因此卷积码在通信领域,特别是卫星通信,空间通信领域得到广泛的应用。
7-1 卷积码的基本原理 7-1-1 卷积码的基本概念
[例子]:通过一个例子说明卷积码的一些基本概念;
下图给出了一个(3,2,2)卷积码编码器的原理图,
当某一时刻,编码器输入并行一个信息码字为mi=[mi(1),mi(2)],编码器并行输出由三个码元组成的卷积码的码字,
c i (1)
c (1)
c i (2) c i (3)
m i (1) m i (2)
[ci]=[ci(1),ci(2),ci(3)]=[mi(1),mi(2),pi]。
[ci]称为一个码字。
mi 为信息元,pi 为监督元。
可以看出卷积码的输入输出关系为:
ci(1)=mi(1) ci(2)=mi(2)
ci(3)=mi(1)+mi(2)+mi-1(2)+mi-2(1)
可见,卷积码当前输出的码字的监督元不仅与当前输入的信息元有关而且还与前2个码元有关。
这时编码器由2级移位寄存器构成。
定义:卷积码字中码元的个数为n0,码字中信息元个数为k0,由m 级移位寄存器构成的编码器称m 为编码码字约束长度。
有的教材称m’=m+1为约束长度,(m+1)n0为编码码元约束长度。
卷积码记为(n0,k0,m)。
定义:R=k0/n0为码率(Code rate)。
它是表示卷积码的编码效率。
卷积码的编码器的一般形式为:
看以下卷积码的约束关系图:
在译码时,译码在ci 时要利用到ci-1,ci-2,同时译码字ci+1,ci+2时还要利用到ci 。
因此译码约束长度一般要大于编码约束长度,因为:虽然一般理解译码字ci 时只利用ci+1,ci+2但实际上这时译出的ci 可能译错,当译ci+2时同样是对ci 的一种校验。
还可以对cI 的译码进行修改。
这是卷积码的特别之处。
m 1 m 2 … m k0
c 1 c 2 … c n0
… …
如果卷积码编码器的输入端输入有头无尾的一个半无限序列,即信息码字序列为[m] =m0,m1,m2,…mi…,则编码器的输出也将是一个半无限序列,[C] =c0,c1,c2,…ci,…,称为卷积码的码字序列。
卷积码同样有系统卷积码和非系统卷积码之分。
系统卷积码的码字中明显的包含着k0位信息码元,而非系统卷积码的信息码元是隐含在码字中的。
如图所示,为一个(2,1,2)非系统卷积码的编码器;
约束关系为: ci(1)=mi-2+mi-1+mi ci(2)=mi-2+mi
如果输入的信息序列为: [m]=(m0,m1,m2,……)=(1,1,1,……) 则输出的码字序列为: [C]=(11,01,10,……)。
7-1-2 卷积码的监督矩阵描述
同分组码一样,卷积码也可以用生成矩阵和监督矩阵来描述。
[截短卷积码的基本监督矩阵]:
m i
c i
例如:卷积码编码电路如图所示,求监督矩阵,并求当输入信息源为10010时,对应的输出码字?
通过一个例子说明:看一个(3,1,2)系统卷积码,其编码电路为:
n0=3, k 0=1, m=2, m’=m+1=3
输入信息序列:m={……mi+1, mi, mi -1, mi-2, ……} 输出码字为:[ci]={mi, pi1, pi2} 可以看出其监督关系为: pi1=mi+mi-1 pi2=mi+mi-2
下面看一下在编码器一个约束长度的监督关系:
0mi-2+0pi-2,1+0pi-2,2+1mi-1+0pi-1,1+0pi-1,2+1mi+1pi,1+0pi,2=0 1mi-2+0pi-2,1+0pi-2,2+0mi-1+0pi-1,1+0pi-1,2+1mi+0pi,1+1pi,2=0 写成方程的矩阵形式:
000 100 110 [C i ]T
=[0]
100
000
101
其中码字序列[Ci]为截短卷积码;
[Ci]=[ci-2,ci-1,ci]=[mi-2, pi-2,1, pi-2,2, mi-1, pi-1,1, pi-1,2, mI, pi,1, pi,2]
定义其系数矩阵为:
[h]=
000 100 110 =[P 20 P 10 P 0I 2]=[h 2 h 1 h 0]
100
000
101
截短卷积码的基本监督矩阵。
[P 2]=
[P 1]= 1 [P 0]= 1 [0]= 0 [I 2]= 1 0
1 0 1 0 0 1
m i
m i
p i1
p i2
基本监督矩阵的一般形式为:
[h]=[Pm0 Pm-10 ……P10 P0Ir0]=[hm hm-1 ……h1 h0]
hm = Pm0 ; hm-1 = Pm-10……h1 = P10; h0= P0Ir0;
基本监督关系为:
[h][Ci]T=[0]
[h]矩阵为n0-k0=r0行,(m+1)×n0列矩阵;
Ir0矩阵为(n0-k0)×(n0-k0)单位阵;
0矩阵为(n0-k0)×(n0-k0)零矩阵;
Pm矩阵为(n0-k0)×k0阶矩阵;
例如上面介绍的(3,2,2)系统卷积码的基本监督矩阵为:
[h]=[100 010 111] r0=3-2=1行; (m+1)×n0=3×3=9列矩阵;
P2=[10]; P1=[01]; P0=[11]。
h2=100; h1=010; h0=111;
[初始截短卷积码的监督矩阵]:
初始截短卷积码定义为:在编码器初始状态为零时,初始输入m+1个信息码字编码器输出的卷积码。
即:[C]初=[c0 c1 … cm],根据基本监督矩阵的定义,可以很方便地得到初始截短卷积码的监督关系为:[H]初[C]初=[0],而监督矩阵为:
[H]初= P0I r0
=
h0
P10 P0I r0h1 h0
……
P m0 P m-10 ……P10 P0I r0h m h m-1……h1 h0
[H]初矩阵为(m+1)×r0行;(m+1)×n0列;(3,1,2)卷积码的[H]初为:
[H]初= h0
=
110
101
h1h0
100 110
000 101
h2 h1 h0
000 100 110
100 000 101
(3,2,2)卷积码的[H]初为:
[H]初= h0
=
111
h1h0010 111
h2h1h0100 010 111
[卷积码的监督矩阵];
上面介绍的是初始截短卷积码的监督矩阵,实际上卷积码的监督矩阵应当是一个有头无尾的矩阵,它对应的基本监督关系为:
[H][C]T=[0]
其中:[C]=[C0,C1,C2,……Cm,Cm+1,……]
[H]= P0I r0
=
h0
P10 P0I r0h1 h0
…………
P m0 P m-10 ……P10 P0I r0h m h m-1……h1h0 P m0 P m-10 ……P10 P0I r0h m h m-1……h1h0 P m0 P m-10 ……P10 P0I r0h m h m-1……h1h0
…. …. … …
例如(3,2,2)卷积码的监督矩阵为:
[H]= h0
=
111
h1h0010 111
h2h1h0100 010 111 …
h2h1h0100 010 111 …
h2h1h0100 010 111
7-1-3卷积码的生成矩阵描述
卷积码同样也可以用生成矩阵来描述,
[卷积码的生成矩阵]:
同分组码一样,卷积码的生成矩阵与监督矩阵同样也有相互正交的关系:
因此,可以很方便的得到:
截短卷积码的基本监督矩阵的一般形式为:
[g]=[g0 g1 …… gm]=[Ik0P0T 0P1T ……0P mT]
初始截短卷积码的监督矩阵的一般形式为:
[G]初=
g 0 g 1 …… g m =
I k0P 0T 0P 1T ……0P m T g 0 …… g m-1
I k0P 0T ……0P m-1T …… ……
g 0
I k0P 0T
卷积码的无穷监督矩阵的一般形式为:
[G]= g 0 g 1 …… g m =
I k0P 0T 0P 1T ……0P m T
g 0 g 1…… g m I k0P 0T 0P 1T ……0P m T ……
……
g 0 g 1 …… g m I k0P 0T 0P 1T ……0P m T
g 0 g 1 …… g m I k0P 0T 0P 1T ……0P m T ……
……
例如:(3,1,2)卷积码的这几种矩阵分别为:
[h]=
000 100 110
=[P 20 P 10 P 0I 2]=[h 2 h 1 h 0]
100 000 101
[g]=[111 010 001]=[I 1P 0T 0P 1T 0P 2T ]
[G]初= g 0 g 1 g 2 = I 1P 0T 0P 1T 0P 2T = 111 010 001
g 0 g 1 I k0P 0T 0P 1T
000 111 010
g 0 I k0P 0T 000 000 111
[G]= g 0 g 1 g 2 =
111 010 001 g 0 g 1 g 2 111 010 001 …… ……
g 0 g 1 g 2 111 010 001 g 0 g 1 g 2 111 010 001 …… ……
[卷积码生成矩阵的多项式描述]:
看一个(3,1,2)系统卷积码,其编码电路为:
通过前面的(3,1,2)系统卷积码的例子的编码电路可以看出:编码器的三个输出支路可以由三个生成多项式来确定。
g(1)(x)=1 g(2)(x)=1+x g(3)(x)=1+x2
一个(n0,k0,m)卷积码的支路生成多项式的一般形式为:
m i
m i
p i1
p i2
g(1)(x)=g0(1)+g1(1)x+…+gm(1)xm g(2)(x)=g0(2)+g1(2)x+…+gm(2)xm ……
g(n0)(x)=g0(n0)+g1(n0)x+…+gm(n0)xm 如果用向量表示支路的生成多项式为: g(i)=[ g0(i) g1(i) g2(i)…… gm(i) ] 这时,卷积码的基本生成矩阵为:
[g]=[g0 g1 …… gm]=[g0(1) g0(2) … g0(n0) g1(1) g1(2)…g1(n0) ……gm(1) gm(2)…gm(n0)]
g0=[g0(1) g0(2) … g0(n0)] g1=[g1(1) g1(2)…g1(n0)]
……
gm=[gm(1) gm(2)…gm(n0)]
由这个基本生成矩阵可以得到卷积码的生成矩阵和初始截短卷积码的生成矩阵等。
例如:(3,1,2)系统卷积码的生成矩阵为: g(1)=[ g0(1) g1(1) g2(1)]=[100] g(2)=[ g0(2) g1(2) g2(2)]=[110] g(3)=[ g0(3) g1(3) g2(3)]=[101] g0 =[111] g1 =[010] g2 =[001]
[G]=
111 010 001
111 010 001 ……
111 010 001
111 010 001 ……
[非系统卷积码的描述]:
利用这种生成多项式表示的生成矩阵特别适合描述非系统卷积码。
例:已知:(2,1,2)非系统卷积码的编码器;
其(2,1,2)非系统卷积码的支路生成多项式为: g (1)(x)=1+x+x 2 g (2)(x)=1+x 2
g (1)=[ g 0(1) g 1(1) g 2(1)]=[111]
m i
c i
g(2)=[ g0(2) g1(2) g2(2)]=[101]
其基本生成矩阵为:[g]=[11 10 11] 生成矩阵为:
[G]= 11 10 11
11 10 11
……
11 10 11
11 10 11
……
非系统卷积码的监督矩阵从电路图中很难得到,较好的方法是先得到生成矩阵,然后再由生成矩阵求监督矩阵,(作练习)。
7-1-3 卷积码的编码举例
看以下(2,1,3)非系统卷积码的例子:
g(1)(x)=1+x2+x3
g(2)(x)=1+x+x2+x3
g(1)=[ g0(1) g1(1) g2(1) g3(1)]=[1011]
g(2)=[ g0(2) g1(2) g2(2) g3(2)]=[1111]
当输入的码字序列为[m]=[10111]时,求输出的卷积码?
[生成矩阵方法]:
由生成多项式可以得到其生成矩阵为:
g0=[g0(1) g0(2)]=[11]; g1=[g1(1) g1(2)]=[01];
g2=[g2(1) g2(2)]=[11]; g3=[g3(1) g3(2)]=[11];
[G]= g0 g1 g2 g3
=
11 01 11 11
g0 g1 g2 g311 01 11 11
g0 g1 g2 g311 01 11 11
g0 g1 g2 g311 01 11 11
g0 g1 g2 g311 01 11 11
由[C]=[m][G]=[10111][G]=[11 01 00 01 01 01 00 11]
[时域卷积方法]:
利用时域卷积的方法可以分别得到编码器两个支路的输出序列,然后将两个支路的序列交织后可以得到编码器的输出序列。
[C(1)]=[m]*[g(1)]=[10111]*[1011]=[10000001]
[C(2)]=[m]*[g(2)]=[10111]*[1111]=[11011101]
注:时域卷积方法:(反转-交错-乘积和)
10111000 10111000 1101 1101 1101 1101
1 0 0(1+1) 0(1+1)
10111000 10111000 10111000 10111000
1101 1101 1101 1101
0 0 0 1
即:[10111]*[1011]=[10000001]
10111000 10111000 10111000 10111000
1111 1111 1111 1111 10111000 10111000 10111000 10111000
1111 1111 1111 1111
即:[10111]*[1011]=[11011101]
由此可以得到输出序列为:
[C]=[C0,C1,C2,C3,C4…]=[ C0(1) C0(2), C1(1) C1(2), C2(1) C2(2), C3(1) C3(2), C4(1) C4(2),…]
=[11 01 00 01 01 01 00 11]
[多项式计算方法]:
对于线性系统来说,时域上的卷积可以用域上多项式的乘法运算来代替。
对于(2,1,3)非系统卷积码:
g(1)(x)=1+x2+x3
g(2)(x)=1+x+x2+x3
当输入序列为[m]=[10111]时,m(x)=1+x2+x3+x4
C(1)(x)=m(x)g(1)(x)= (1+x2+x3+x4) (1+x2+x3) =1+x7
C(2)(x)=m(x)g(2)(x)= (1+x2+x3+x4) (1+x+x2+x3) =1+x+x3+x4+x5+x7
将两个支路的序列交织合成为一个输出序列为:
C(x)=C(1)(x2)+xC(2)(x2)
=1+x14+x(1+x2+x6+x8+x10+x14)
=1+x+x3+x7+x9+x11+x14+x15
对应序列为:[C]= [11 01 00 01 01 01 00 11]
如果对于一个一般的(n0,k0,m)卷积码编码器,其支路生成多项式为:
g(1)(x)=g0(1)+g1(1)x+…+g m(1)x m
g(2)(x)=g0(2)+g1(2)x+…+g m(2)x m
……
g(n0)(x)=g0(n0)+g1(n0)x+…+g m(n0)x m
支路输出序列为:
C(1)(x)=m(x)g(1)(x)
C(2)(x)=m(x)g(2)(x)
……
C(n0)(x)=m(x)g(n0)(x)
合路输出序列为:
C(x)=C(1)(x n0)+xC(2)(x n0)+x2C(x n0)+……+x n0-1C(n0)(x n0)
另外还有一种利用多项式计算输出序列的方法:首先得到一个复合生成多项式,g(x)=g(1)(x2)+xg(2)(x2)
=(1+x4+x6)+x(1+x2+x4+x6)
=1+x+x3+x4+x5+x6+x7
C(x)=m(x2)g(x)
=(1+x4+x6+x8)(1+x+x3+x4+x5+x6+x7)
=1+x+x3+x7+x9+x11+x14+x15
如果对于一个一般的(n0,1,m)卷积码编码器,其复合生成多项式为:
g(x)=g (1)(x n0)+xg (2)(x n0)+x 2g (3)(x n0)+……+x n0-1g (n0)(x n0)
已知一个(3,1,2)系统卷积码,其编码电路为:
利用生成多项式(时域卷积法或多项式计算法)或生成矩阵的方法求当输入为10011时,输出对应的码为?
解:方法一、求生成矩阵根据题意得:
g (1)(x)=1
g (2)(x)=1+x
g (3)(x)=1+x 2
所以:
g (1)=[ g 0(1) g 1(1) g 2(1)]=[100]
g (2)=[ g 0(2) g 1(2) g 2(2)]=[110]
g (3)=[ g 0(3) g 1(3) g 2(3)]=[101]
g 0 =[111]
g 1 =[010]
g 2 =[001]
[G]= 111 010 001
111 010 001
111 010 001 111 010 001
111 010 001
……
在根据C=MG 得到码字
法二:多项式运算得到:
g (1)(x)=1
g (2)(x)=1+x
g (3)(x)=1+x 2
所以:当输入序列为[m]=[10011]时,m(x)=1+x 3+x 4
C (1)(x)=m(x)g (1)(x)= (1+x 3+x 4)1=1+x 3+x 4
m i m i p i1 p i2
C(2)(x)=m(x)g(2)(x)= (1+x3+x4) (1+x) =1+x+x3+x5
C(3)(x)=m(x)g(3)(x)= (1+x3+x4) (1+ x2) =1+x2+x3+x4+x5+x6将三个支路的序列交织合成为一个输出序列为:C(x)=C(1)(x3)+xC(2)(x3)+ x2C(3)(x3)
=1+x9+x12+x(1+x3+x9+x15)+ x2(1+x6+x9+x12+x15+x18)=1+x+x2+x4+x8+x9+x10+x11+x12+x14+x16+x17+x20
对应序列为:[C]= [111 010 001 111 101 011 001]。