信息论与编码卷积码.docx
《信息论与编码卷积码.docx》由会员分享,可在线阅读,更多相关《信息论与编码卷积码.docx(17页珍藏版)》请在冰豆网上搜索。
信息论与编码卷积码
信息论与编码--卷积码
(掌握利用编码电路求生成矩阵和监督矩阵)
差错控制编码系统中除了使用分组码之外,另一类广泛应用的称为卷积码,在分组码的编码和译码过程中,每个码字的监督元只与本码字的信息元有关,而与其它码字的信息元无关,即分组码的编码器是一个无记忆的逻辑电路。
但是,卷积码的编码过程中,本码字的监督元不仅与本码字的信息元有关,而且与前m个码字的信息元有关,因此卷积码的编码器是一个有记忆的时序电路。
卷积码由于更充分地利用码字之间的相关性,可以减少码字长度,简化编译码电路,并得到较好的差错控制性能,因此卷积码在通信领域,特别是卫星通信,空间通信领域得到广泛的应用。
7-1卷积码的基本原理
7-1-1卷积码的基本概念
[例子]:
通过一个例子说明卷积码的一些基本概念;
mi
(2)
mi
(1)
ci
(2)
c
(1)
ci
(1)
下图给出了一个(3,2,2)卷积码编码器的原理图,
ci(3)
当某一时刻,编码器输入并行一个信息码字为mi=[mi
(1),mi
(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为码率(Coderate)。
它是表示卷积码的编码效率。
卷积码的编码器的一般形式为:
c1
c2
…
cn0
m1
m2
…
mk0
Convolutionalcode
Encoder
看以下卷积码的约束关系图:
ci+2(3)ci+2
(2)ci+2
(1)
…
…
ci-2(3)ci-2
(2)ci-2
(1)
ci-1(3)ci-1
(2)ci-1
(1)
ci+1(3)ci+1
(2)ci+1
(1)
ci(3)ci
(2)ci
(1)
在译码时,译码在ci时要利用到ci-1,ci-2,同时译码字ci+1,ci+2时还要利用到ci。
因此译码约束长度一般要大于编码约束长度,因为:
虽然一般理解译码字ci时只利用ci+1,ci+2但实际上这时译出的ci可能译错,当译ci+2时同样是对ci的一种校验。
还可以对cI的译码进行修改。
这是卷积码的特别之处。
如果卷积码编码器的输入端输入有头无尾的一个半无限序列,即信息码字序列为[m]=m0,m1,m2,…mi…,则编码器的输出也将是一个半无限序列,[C]=c0,c1,c2,…ci,…,称为卷积码的码字序列。
卷积码同样有系统卷积码和非系统卷积码之分。
系统卷积码的码字中明显的包含着k0位信息码元,而非系统卷积码的信息码元是隐含在码字中的。
如图所示,为一个(2,1,2)非系统卷积码的编码器;
ci
(1)
ci
mi
ci
(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卷积码的监督矩阵描述
同分组码一样,卷积码也可以用生成矩阵和监督矩阵来描述。
[截短卷积码的基本监督矩阵]:
例如:
卷积码编码电路如图所示,求监督矩阵,并求当输入信息源为10010时,对应的输出码字?
通过一个例子说明:
看一个(3,1,2)系统卷积码,其编码电路为:
ci
mi
mi
pi1
D1
D0
pi2
n0=3,k0=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
[Ci]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
=[P20P10P0I2]=[h2h1h0]
100
000
101
截短卷积码的基本监督矩阵。
[P2]=
0
[P1]=
1
[P0]=
1
[0]=
0
[I2]=
10
1
0
1
0
01
基本监督矩阵的一般形式为:
[h]=[Pm0Pm-10……P10P0Ir0]=[hmhm-1……h1h0]
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]=[100010111]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]初=[c0c1…cm],根据基本监督矩阵的定义,可以很方便地得到初始截短卷积码的监督关系为:
[H]初[C]初=[0],而监督矩阵为:
[H]初=
P0Ir0
=
h0
P10P0Ir0
h1h0
……
Pm0Pm-10……P10P0Ir0
hmhm-1……h1h0
[H]初矩阵为(m+1)×r0行;(m+1)×n0列;
(3,1,2)卷积码的[H]初为:
[H]初=
h0
=
110
101
h1h0
100110
000101
h2h1h0
000100110
100000101
(3,2,2)卷积码的[H]初为:
[H]初=
h0
=
111
h1h0
010111
h2h1h0
100010111
[卷积码的监督矩阵];
上面介绍的是初始截短卷积码的监督矩阵,实际上卷积码的监督矩阵应当是一个有头无尾的矩阵,它对应的基本监督关系为:
[H][C]T=[0]
其中:
[C]=[C0,C1,C2,……Cm,Cm+1,……]
[H]=
P0Ir0
=
h0
P10P0Ir0
h1h0
……
……
Pm0Pm-10……P10P0Ir0
hmhm-1……h1h0
Pm0Pm-10……P10P0Ir0
hmhm-1……h1h0
Pm0Pm-10……P10P0Ir0
hmhm-1……h1h0
….….
……
例如(3,2,2)卷积码的监督矩阵为:
[H]=
h0
=
111
h1h0
010111
h2h1h0
100010111…
h2h1h0
100010111…
h2h1h0
100010111
7-1-3卷积码的生成矩阵描述
卷积码同样也可以用生成矩阵来描述,
[卷积码的生成矩阵]:
同分组码一样,卷积码的生成矩阵与监督矩阵同样也有相互正交的关系:
因此,可以很方便的得到:
截短卷积码的基本监督矩阵的一般形式为:
[g]=[g0g1……gm]=[Ik0P0T0P1T……0PmT]
初始截短卷积码的监督矩阵的一般形式为:
[G]初=
g0g1……gm
=
Ik0P0T0P1T……0PmT
g0……gm-1
Ik0P0T……0Pm-1T
……
……
g0
Ik0P0T
卷积码的无穷监督矩阵的一般形式为:
[G]=
g0g1……gm
=
Ik0P0T0P1T……0PmT
g0g1……gm
Ik0P0T0P1T……0PmT
……
……
g0g1……gm
Ik0P0T0P1T……0PmT
g0g1……gm
Ik0P0T0P1T……0PmT
……
……
例如:
(3,1,2)卷积码的这几种矩阵分别为:
[h]=
000
100
110
=[P20P10P0I2]=[h2h1h0]
100
000
101
[g]=[111010001]=[I1P0T0P1T0P2T]
[G]初=
g0g1g2
=
I1P0T0P1T0P2T
=
111010001
g0g1
Ik0P0T0P1T
000111010
g0
Ik0P0T
000000111
[G]=
g0g1g2
=
111010001
g0g1g2
111010001
……
……
g0g1g2
111010001
g0g1g2
111010001
……
……
[卷积码生成矩阵的多项式描述]:
看一个(3,1,2)系统卷积码,其编码电路为:
ci
mi
mi
pi1
D1
D0
pi2
通过前面的(3,1,2)系统卷积码的例子的编码电路可以看出:
编码器的三个输出支路可以由三个生成多项式来确定。
g
(1)(x)=1
g
(2)(x)=1+x
g(3)(x)=1+x2
一个(n0,k0,m)卷积码的支路生成多项式的一般形式为:
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]=[g0g1……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]=
111010001
111010001
……
111010001
111010001
……
[非系统卷积码的描述]:
利用这种生成多项式表示的生成矩阵特别适合描述非系统卷积码。
例:
已知:
(2,1,2)非系统卷积码的编码器;
ci
(1)
ci
mi
ci
(2)
其(2,1,2)非系统卷积码的支路生成多项式为:
g
(1)(x)=1+x+x2
g
(2)(x)=1+x2
g
(1)=[g0
(1)g1
(1)g2
(1)]=[111]
g
(2)=[g0
(2)g1
(2)g2
(2)]=[101]
其基本生成矩阵为:
[g]=[111011]
生成矩阵为:
[G]=
111011
111011
……
111011
111011
……
非系统卷积码的监督矩阵从电路图中很难得到,较好的方法是先得到生成矩阵,然后再由生成矩阵求监督矩阵,(作练习)。
7-1-3卷积码的编码举例
看以下(2,1,3)非系统卷积码的例子:
m
C
(1)
C
C
(2)
其两个支路的生成多项式分别为:
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]=
g0g1g2g3
=
11011111
g0g1g2g3
11011111
g0g1g2g3
11011111
g0g1g2g3
11011111
g0g1g2g3
11011111
由[C]=[m][G]=[10111][G]=[1101000101010011]
[时域卷积方法]:
利用时域卷积的方法可以分别得到编码器两个支路的输出序列,然后将两个支路的序列交织后可以得到编码器的输出序列。
[C
(1)]=[m]*[g
(1)]=[10111]*[1011]=[10000001]
[C
(2)]=[m]*[g
(2)]=[10111]*[1111]=[11011101]
注:
时域卷积方法:
(反转-交错-乘积和)
10111000
10111000
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
1
1
0(1+1)
1(1+1+1)
10111000
10111000
10111000
10111000
1111
1111
1111
1111
1
1
0
1
即:
[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),…]
=[1101000101010011]
[多项式计算方法]:
对于线性系统来说,时域上的卷积可以用域上多项式的乘法运算来代替。
对于(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]=[1101000101010011]
如果对于一个一般的(n0,k0,m)卷积码编码器,其支路生成多项式为:
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
支路输出序列为:
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)(xn0)+xC
(2)(xn0)+x2C(xn0)+……+xn0-1C(n0)(xn0)
另外还有一种利用多项式计算输出序列的方法:
首先得到一个复合生成多项式,
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)(xn0)+xg
(2)(xn0)+x2g(3)(xn0)+……+xn0-1g(n0)(xn0)
已知一个(3,1,2)系统卷积码,其编码电路为:
ci
mi
mi
pi1
D1
D0
pi2
利用生成多项式(时域卷积法或多项式计算法)或生成矩阵的方法求当输入为10011时,输出对应的码为?
解:
方法一、求生成矩阵根据题意得:
g
(1)(x)=1
g
(2)(x)=1+x
g(3)(x)=1+x2
所以:
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]=
111010001
111010001
111010001
111010001
111010001
……
在根据C=MG得到码字
法二:
多项式运算得到:
g
(1)(x)=1
g
(2)(x)=1+x
g(3)(x)=1+x2
所以:
当输入序列为[m]=[10011]时,m(x)=1+x3+x4
C
(1)(x)=m(x)g
(1)(x)=(1+x3+x4)1=1+x3+x4
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]=[111010001111101011001]