基于MATLAB的卷积码的分析与应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于MATLAB的卷积码的分析与应用
毕业设计(论文)任务书
基于MATLAB的卷积码的分析与应用
摘要
随着现代通信的发展,特别是在未来4G通信网络中,高速信息传输和高可靠性传输成为信息传输的两个主要方面,而可靠性尤其重要。
因为信道状况的恶劣,信号不可避免会受到干扰而出错。
为实现可靠性通信,主要有两种途径:一种是增加发送信号的功率,提高接收端的信号噪声比;另一种是采用编码的方法对信道差错进行控制。
前者常常受条件限制,不是所有情况都能采用。
因此差错控制编码得到了广泛应用。
介绍了多种信道编码方式,着重介绍了卷积码的编码方法和解码方式。
介绍了MATLAB的使用方法、编程方法、语句、变量、函数、矩阵等。
介绍了TD-SCDMA通信系统和该系统下的卷积码,搭建了系统通信模型。
编写卷积码的编码和解码程序。
用MATLAB仿真软件对TD-SCDMA系统的卷积码编解码进行仿真。
对其纠正错码性能进行验证,并且对误码率进行仿真和分析。
卷积码的编码解码方式有很多,重点仿真Viterbi算法。
Viterbi算法就是利用卷积码编码器的格图来计算路径度量,选择从起始时刻到终止时刻的惟一幸存路径作为最大似然路径。
沿着最大似然路径回溯到开始时刻,所走过的路径对应的编码输出就是最大似然译码输出序列。
它是一种最大似然译码方法,当编码约束长度不大、或者误码率要求不是很高的情况下,Viterbi译码器设备比较简单,计算速度快,因而Viterbi译码器被广泛应用于各种领域。
关键词:卷积码;信道编码;TD-SCDMA;MATLAB
目录
毕业设计(论文)任务书 (I)
摘要 (II)
Abstract......................................................................................... 错误!未定义书签。
第1章绪论 . (1)
1.1课题研究的背景和来源 (1)
1.2主要内容 (2)
第2章相关理论介绍 (3)
2.1信道编码 (3)
2.1.1 信道编码的分类 (3)
2.1.2 编码效率 (3)
2.2线性分组码 (3)
2.3循环码 (5)
2.4卷积码 (6)
2.4.1 卷积码简介 (7)
2.4.2 卷积码的编码 (7)
2.4.3 卷积码的解码 (13)
第3章MATLAB应用 (21)
3.1数和算术的表示方法 (21)
3.2向量与矩阵运算 (21)
3.2.1 通过语句和函数产生 (21)
3.2.2 矩阵操作 (22)
3.3矩阵的基本运算 (22)
3.3.1 矩阵乘法 (22)
3.3.2 矩阵除法 (23)
3.4MATLAB编程 (23)
3.4.1 关系运算 (23)
3.4.2 控制流 (25)
第4章卷积码的设计与仿真 (27)
4.1TD-SCDMA系统 (27)
4.1.1 系统简介 (27)
4.1.2 仿真通信系统模型 (27)
4.2卷积编码设计 (28)
4.3编解码程序实现 (29)
4.3.1 卷积码编解码设计 (29)
4.3.2 卷积码编解码程序设计 (32)
4.4卷积码实现 (34)
4.4.1 (2,1)卷积码的仿真研究 (34)
4.4.2 (3,1)卷积码的仿真研究 (36)
4.5卷积码误码率 (38)
第5章结论 (41)
5.1总结 (41)
5.2展望 (41)
参考文献 (43)
致谢 (45)
第1章绪论
1.1课题研究的背景和来源
纠错编码己有五十几年历史,早在1948年,香农(Shannon)在他的开创性论文“通信的数学理论”中,首次阐明了在有扰信道中实现可靠通信的方法,提出了著名的有扰信道编码定理,奠定了纠错码的基石。
以后,纠错码受到了越来越多的通信和数学工作者,特别是数学家的重视,使纠错码无论在理论上还是在实际中都得到了飞速发展[1]。
随着现代通信的发展,特别是在未来4G通信网络中,高速信息传输和高可靠性传输成为信息传输的两个主要方面,而可靠性尤其重要。
因为信道状况的恶劣,信号不可避免会受到干扰而出错。
为实现可靠性通信,主要有两种途径:一种是增加发送信号的功率,提高接收端的信号噪声比;另一种是采用编码的方法对信道差错进行控制。
前者常常受条件限制,不是所有情况都能采用。
例如卫星通信系统以很远的距离传送数据,由于衰落、噪声和干扰等的影响,信号在传输过程中将产生严重的畸变。
如果要求信号具有尽可能大的能量,卫星体积和载重就会大大增加,使成本相对于原来大大增加,所以不可能给信号提供太大的能量,而建立在香农基础上的编码理论正可以解决这个问题,使得成本降低,实用性增强。
前向纠错技术(FEC)特别是卷积编码是当今无线数字通信系统的一个十分重要的组成部分。
它是一种有效的信道编码方法,在实际中广泛应用。
目前无线数字通信系统都采用某一形式的卷积编码如在W-CDMA、DVB-S、DVB-T、IEE802.11系统中都使用了卷积编码。
由于其出色的纠错性能,一般在级联码中作为内码使用,从而保证外码有效地工作,大大提高了整个系统的纠错能力。
而Viterbi译码器正是针对卷积码的一种最佳译码方法[2]。
CDMA系统以其容量大、抗干扰能力强的特点成为第三代移动通信系统的标准。
CDMA系统的信道编码大多采用卷积编码,这是因为卷积码的纠错能力强,不仅能纠随机差错,还可以纠突发差错。
在CDMA系统中,对卷积码的译码采用Viterbi算法,它是一种最大似然译码方法,当编码约束长度不大、或者误码率要求不是很高的情况下,Viterbi译码器设备比较简单,计算速度快,因而Viterbi译码器被广泛应用于各种领域。
现代通信中,随着信号序列的传输速率的不断提高,要求卷积码译码的速度也要不断提高,Viterbi译码由于充分利用信号序列统计概率的特性而具有最佳性能。
信道编码的应用领域主要包括深空通信、卫星通信、数据传输、移动通信、
文件传输和数字音频/视频传输等。
卷积编码作为信道编码方式中最重要一种,被广泛使用于卫星通信、无人机测控、深空通信、移动通信、水声通信等数字通信系统,甚至被采纳到某些无线通信的标准之中,如GSM、IS.95和CDMA2000的标准。
在卫星通信中,码率为1/2和1/3的卷积码己经成为商业卫星通信系统中的标准编码方法。
在无人机测控中,与传统的信道改善控制指令传输误码的方式比较,利用卷积码对无人机遥控信道进行编码,在一定信道条件下,其控制指令传输误码有明显下降。
在码速率不增加的条件下,无人机系统控制指令传输可靠性得到明显改善[3]。
随着数字通信系统业务的不断拓展,随着卷积编码理论的不断发展和完善,卷积码的应用必将越来越广泛,卷积码在现在通信系统中的作用必将越来越大。
1.2主要内容
论文框架:第一章介绍了卷积码的研究背景,第二章介绍了卷积码的相关理论,信道编码、线性分组码、循环码及卷积码的表示方式、编码方式、解码方式,第三章介绍了实现卷积码仿真所需要的软件方式,第四章进行卷积码设计与仿真,介绍了TD-SCDMA系统下的卷积码,对卷积码性能进行了研究。
主要内容:介绍了信道编码方式。
着重研究列举了卷积码的编码方法和解码方式,介绍了MATLAB的使用方法和TD-SCDMA系统。
编写卷积码的编码和解码程序。
并且用MATLAB仿真软件对TD-SCDMA系统的卷积码编解码进行仿真,Viterbi算法就是利用卷积码编码器的格图来计算路径度量,选择从起始时刻到终止时刻的惟一幸存路径作为最大似然路径。
沿着最大似然路径回溯到开始时刻,所走过的路径对应的编码输出就是最大似然译码输出序列。
它是一种最大似然译码方法,当编码约束长度不大、或者误码率要求不是很高的情况下,Viterbi 译码器设备比较简单,计算速度快,因而Viterbi译码器被广泛应用于各种领域。
第2章相关理论介绍
2.1信道编码
在数字通信中,根据不同的目的,编码可分为信源编码和信道编码。
信源编码是为了提高数字信号的有效性以及为了使模拟信号数字化而采取的编码。
信道编码是为了降低误码率,提高数字通信的可靠性而采取的编码。
信道编码现在已经得到广泛的应用。
2.1.1信道编码的分类
信道编码有多种分类方式,主要有按照关系、范围及用途三种。
(1)根据纠错码各码组信息元和监督元的函数关系,可分为线性码和非线性码。
如果函数关系是线性的,即满足一组线性方程式,则称为线性码,否则为非线性码。
(2)根据上述关系涉及的范围,可分为分组码和卷积码。
分组码的各码元仅与本组的信息元有关;卷积码中的码元不仅与本组的信息元有关,而且还与前面若干组的信息元有关。
(3)根据码的用途,可分为检错码和纠错码。
检错码以检错为目的,不一定能纠错;而纠错码以纠错为目的,一定能检错[4,5]。
2.1.2编码效率
用差错控制编码提高通信系统的可靠性,是以降低有效性为代价换来的。
定义编码效率尺来衡量有效性:R=k/n,其中,k是信息元的个数,n为码长。
对纠错码的基本要求是:检错和纠错能力尽量强;编码效率尽量高;编码规律尽量简单。
2.2线性分组码
线性分组码中的线性是指码组中码元间的约束关系是线性的,而分组则是对编码方法而言,即编码时将每k个信息位分为一组进行独立处理,变换成长度为n(n>k)的二进制码组。
线性分组码的编码过程可以简单描述成一个矢量和一个矩阵相乘的结果,即C=mG,其中C是经过编码后得到的n维编码输出{c0,c1,…,c n-1},m是信息序列分组{m0,m1,…,m k-1},G是由k个n维矢量{g0,g1,…,g k-1}构成的矩阵。
线性分组码编码问题的核心就是如何在n维线性空间V n中找出满足一定要
求的、由2k 个矢量组成的k 维线性子空间,也就是说,在满足给定码字最小距离或编码速率的前提下,如何根据已知的k 个信息比特求得r =n -k 个校验比特。
通过对码字生成矩阵G 的初等变换,可以得到惟一的行简化梯形矩阵,再经过列交换可以得到如下形式的生成矩阵。
[]I p p p p p p p p p p g g g g g g g g g g g g k k k n k k n k k k k n k n n k k k n n k G *)(*1,11,10,11,11,10
,11,01,00
,01,11,10
,11,11,10
,11,01,00
,0110100010001-----------------=⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡⇒⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=ΛM ΛM M M M M M M M M
ΛM ΛΛM ΛΛM M M M
ΛΛM (2.1)
其中P 是k ×(n -k )的矩阵。
这种形式的生成矩阵G 称为标准生成矩阵,按照标准矩阵生成的码字为
[]{}
m m m p p p k k n I P m mG c 110110,…,,,,…,,·---=== (2.2) 其中前n-k-1个比特为校验比特,其值为
10,…,11,11,00--≤≤++=--k n i p m p m p m p i k k i i i (2.3)
后面k 个比特就是信息比特。
这种在生成码字中包含信息序列的编码码字称为线性系统分组码,简称为系统码。
系统码的编码结构相当简单,以系统(7,4)为例,其生成矩阵为:
⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎣⎡=1000110010001100101110001101G (2.4) 系统码的编码结构非常简单,比如对系统(7,4)码,根据上面的生成矩阵G ,只要在输入编码器的每组k 个数字的后面,附加上(n-k )个监督码元就可得到所编出的n 个码字。
系统(7,4)码对应的监督矩阵为
⎥⎥⎥⎦
⎤⎢⎢⎢⎣⎡=101110011100100111001H (2.5) 假如发送的码字为c =(1001011),而接收到的码字为Y =(1001001),信道传输中产生的错误为e =(0000010)。
由S =y ·H T 可求出S =(1,1,1)。
2.3 循环码
循环码是线性分组码中最重要的一类,循环码是指码集合中的任一码字经过循环移位后得到的码字仍然是码集合中的码字。
循环码的码字可以用矢量的形式表示,即:
),…,,(110c c c n c -= (2.6)
也可用码多项式表示,即:
x c c c n n x x c 1110…)(--+++= (2.7)
循环码c 向右移一位的码字可由下式得出
)1mod(……)(1221011210-++++=+++=----x x c x c x c c x c x c x c n n n n n n x xc (2.8)
循环码可由它的生成多项式
x g x g g k n k n x g --+++=…)(10 (2.9)
唯一确定。
信息序列也可以表示成多项式
x m x m m k k x m 1110…)(--+++= (2.10)
那么生成码字可表示成
)1mod()()()(-=x n x g x m x c (2.11)
由于多项式乘法等价于多项式系数的卷积,故
g m c j
k
n j j i i ∑-=-=0 (2.12) 循环码编码则可以通过移位寄存器组成的乘法电路结构实现。
由数论知识可知, (n ,k )循环码的生成多项式g (x )一定是x n -1的n-k 次因式:
)…)(…()()(11010x h x h h x g x g g x k k k n k n n x h x g ++++++==--- (2.13)
反之,若g (x )为n-k 次多项式,且x n -1能被g (x )整除,则g (x )一定能生成一个(n ,k )循环码。
以g (x )为生成多项式所构成的(n ,k )循环码中
g (x ),x g (x ),…,x k -1 g (x ) (2.14)
等七个多项式必定是线性无关,则循环码的生成矩阵G 为
⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡=---g g g g g g g g g k n k n k n G …0…0┆┆┆┆┆┆┆┆
0...0...00...00 (101010)
(2.15)
循环码的编码也可以通过移位寄存器组成的除法电路结构实现。
以(7,4)循 环码为例,选(7,4)码生成矩阵
g (x )= g 3(x )=1+x +x 3 (2.16)
它除尽1+x 7,若输入信息码元为m (x )=1+x 3
则由
)1mod(,)1()(·3
26334
7x x x x x x
x
x x x m k
n +++=+=+=--
(2.17) 因此,码多项式为
x
x x x x
x x
x x x m x r x c k
n 6
3234
72)1()(·)()(+++=+++=+=-- (2.18)
对应的码字为C =(0 1 1 1 0 0 1) 其中最右边的4位是信息元,详细的编码过程如下:
(1) 三级移位寄存器初始状态为000,此时门打开,信息组以
x
x x x x x m k
n 6
3
3
4
7)1()(+=+=-- (2.19)
即1001次序分两路进入编码器:一路直接输出;另一路送入g (x )除法电路。
(2) 经4次移位后,信息组1001全部输出,它就是系统码的4个信息元;另一路则将全部信息元送入g (x )除法电路,并完成除法运算,这时移位寄存器中的状态就是余式r (x )系数,即为码的监督元(c 0 c 1 c 2)。
(3) 输出开关倒向上面2,经3次移位,移位器由监督元(c 0 c 1 c 2),跟在信息元 (c 3 c4 c 5 c 6)后面依次输出为C =( c 0 c 1 c 2 c 3 c 4 c 5 c 6) =(0111001)。
(4) 送入第二组信息元,重复上述过程。
该码最小距离为3,它能纠正7个码元一组中任何单个错误,这7种错误图样和全零矢量一起组成译码表的陪集首,它组成了所有可能纠正的图样。
现假设接收的多项式为
x y x y x y x y y x y 6
6
3
3
2
2
1
)(++++=
(2.20)
即Y =(1 1 1 1 0 0 1)。
译码器工作步骤如下: (1) 将移位寄存器清零。
(2) 输入Y 分两路进入译码器:一路进入缓存器;另一路经门1进入伴随式计算电路与寄存器,并分别计算S 0、S 1、S 2值。
(3) 在输出Y 的同时,S 0、S 1、S 2依次循环移位。
无错误时,错误检测电路无输出,最后输出的码字C 的码元与Y 相对应码元一致,有错误时,S 0= S 2=1,S 1=0,错误检测电路输出为“1”,它正好与Y 中错误位在输出端的模2加中相遇,并予以纠正后再输出。
2.4 卷积码
相对于分组码而言,分组码的编码和译码都是各分组独立的进行,彼此不相关联。
而卷积码的每一组不仅与本组的k 位信息位有关,还和这以前各组的信息位有关。
卷积码的结构比较复杂,但n 和k 的值相对于分组码来说比较小。
译码
也相对比较容易些。
2.4.1 卷积码简介
非分组码的卷积码的编码器是在任一段规定时间内产生n 个码元,但它不仅取决于这段时间中的k 个信息位,还取决于前(K -1)段规定时间内的信息位,这K 段时间内的码元数目为K ·k ,称参数K 为卷积码的约束长度,每k 个比特输入,得到n 比特输出,编码效率为k /n ,约束长度为K 。
在k =1的条件下,移位寄存器级数m =K -1。
卷积码一般可用(n ,k ,K )来表示,其中k 为输入码元数,n 为输出码元数,而K 则为编码器的约束长度。
典型的卷积码一般选n 和k ( k < n ) 值较小,但约束长度K 可取较大值(K <10),以获得既简单又高性能的信道编码[6]。
卷积码是1955年Elias 最早提出,1957年Wozencraft 提出了序列译码。
1963年Massey 提出了一种性能稍差,但比较实用的门限译码方法。
1967年维特比(Viterbi)提出了最大似然译码。
它对存储器级数较小的卷积码的译码很容易实现,称为维特比算法或维特比译码。
2.4.2 卷积码的编码
卷积码的编码器是由一个有k 个输入位(端)、n 个输出位(端),且具有m 级移位寄存器所构成的有限状态的有记忆系统,通常称它为时序网络。
2.4.2.1 卷积码的解析表示法
一个二元(2,1,4)卷积码的编码器,它是由k =1,即一个输入位(端),n =2,即两个输出位(端),K =4,m =3即三级移位寄存器所组成的有限状态的有记忆系统。
(1) 离散卷积
若输入信息序列为(这里的卷积码是u 0首先输入)
)…(210u u u u
=
(2.21)
则对应输出为两个码字序列
)
…()…(②2
②
1②
②
①2①1①0
①c
c c c
c c c c
== (2.22)
其相应编码方程可写为
)
,(**②
①
②
②
①
①
c c c
g
u c g u c === (2.23)
其中“﹡”表示卷积运算,g ① g ②表示编码器的两个脉冲冲击响应,即编码可由输
入信息序列u 和编码器的两个冲击响应的卷积得到,故称为卷积码[7]。
这里的脉冲冲击响应是指,当输入信息为u =(100…)时,所观察到的两个输出序列值。
由于编码器有m =3级寄存器,故冲激响应至多可持续到K =m +1=3+1=4位,且可写成:
)
1111()1011(②
①
==g
g (2.24)
在一般情况下有:
)
…()
…(②
m
②1
②0
②
①
m
①1①0①
g g
g
g
g g g g == (2.25)
经编码器后,两个输出序列合并为一个输出码字序列为:
)…(②
1
①1
②0
①
②
c
c c c c
= (2.26)
若输入信息序列为:
)10111(=u
(2.27)
则有:
)10000001()1011(*)10111(①
==c
(2.28)
)11011101()1111(*)10111(②
==c
(2.29)
最后输出的码字为:
)0100111101000101(=c
(2.30)
(2) 生成矩阵
上述冲激响应g ① g ②又称为生成序列,若将该生成序列g ① g ②按如下方法排列,构成如下生成矩阵(当K =4,m =3时):
⎥⎥⎥⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢
⎢⎢⎢⎣
⎡=……
………②3①3②2
①2
②1
①1
②0
①0
②3①3②2①2②1①
1②0
①0
②3①
3②2①2②1①
1②
0①0g g g
g g
g g
g g g g g g g g
g g g g g g g g g G (2.31)
上述矩阵中,其中空白部分均为0。
则上述编码方程可改为矩阵形式
G ·
u c = (2.32) G 为卷积码的生成矩阵,若输入信息序列为一无限序列时,即u =(10111…),生成矩阵则为一个半无限矩阵,即有起点无终点,因此称它为半无限。
若:
)1111(),1011(),10111(②
①
===g g u
(2.33)
则:
()
1100010101000111111101111111011111
1101111111011111110111)10111(·=⎥⎥
⎥
⎥⎥
⎥⎦
⎤⎢⎢⎢⎢⎢⎢⎣⎡==G
u c (2.34) (3) 码多项式
若将生成序列表达成多项式形式,有
()()x
x x g
x
x g 3
2
②
3
2
①
+++11111++11011==== (2.35)
输入信息序列也可表达为多项式形式
()x x x u 4
3
2
+++110111== (2.36)
则卷积码可以用下列码多项式形式表达
(
)(
)
)
10000001(1111177
6
5
4
3
2
7
6
5
3
6
5
4
2
4
3
2
3
24
32①
22222=+=++++++=+++++++++++=+++++=x x x x x x x x x x x x x x x x x x x
x x x x c
(2.37)
(
)(
)
()
11011101111117
7
5
4
3
7
6
5
3
6
5
4
2
5
4
3
4
3
2
3
24
32②
=+=+++++=+++++++++++++++=++++++=x
x x x x x x x x x x x x x x x x x x x x x
x x x x x c
(2.38)
2.4.2.2 卷积码的图形表示法
卷积码的图形表示法有很多种,在此介绍最常用的三种,状态图表示法、树图表示法、网格图表示法。
(1) 状态图表示法
卷积编码器在下一时刻的输出取决于编码器当前的状态及下一时刻的输入。
当前状态取决于编码器在当时各移位寄存器所存储的内容,称编码器的各移位寄存器在任一时刻的存数(0或1)为编码器在该时刻的一个状态。
编码器的总可能状态数是2mk 个。
对于n =2,k =1,K =3,m =2的(2,1,3)卷积编码器,则其总的可能状态数是4个。
设以S i 表示某状态,i =0,1,2,3,在某t j 时刻,此 (2,1,3)
卷积编码器的输出表述为
u u c
u u u c 2
-j j ②j
2-j 1-j j ①j ⊕=⊕⊕= (2.39)
它取决于u j ,u j -1及u j -2三个值,其中u j 是当前的输入值,u j -1及u j -2是以前输入的两个值。
若要求出下一个t j +1时刻的输出值,则要知道当前的u j 及u j -1值。
当输入下一时刻的u j +1值时,就可以求出下一个t j +1时刻的c ①j +1及c ②j +1值。
所以,为决定下一个t j +1时刻编码器的输出,此(2,1,3)卷积编码器在当前t j 时刻的状态用S i =(u j ,u j -1) (i =0,1,2,3)表示即可。
如表2.1所示。
表2.1 状态转移表
u j u j -1 S i 0 0 S 0=a 1 0 S 0=b 0 1 S 0=c 1
1
S 0=d
设输入信息序列为:
()()...1011100 (2)
1
==u u u u u i
(2.40)
1) 首先,对移位寄存器清洗、复0,移存器状态为00;
2) 输入:u 0=1,输出1001①0
=⊕⊕=c ,101②0=⊕=c ,故()()11②
0①00==c c c ,移位寄存器状态改为10;
3) 输入:u 1=0,则根据(010),可算出:0,1②1①1==c c ,故)10(1=c ,移位寄存器
状态改为01;
4) 输入:u 2=1,则根据(101),可算出:0,0②2
①2==c c ,故)00(2=c ,移位寄存器状态改为10;
5) 输入:u 3=1,则根据(110),可算出:1,0②3①3==c c ,故)01(3=c ,移位寄存器
状态改为11;
6) 输入:u 4=1,则根据(111),可算出:0,1②4①4
==c c ,故)10(4=c ,移位寄存器状态改为11;
7) 输入:u 5=0,则根据(011),可算出:1,0②5①5==c c ,故)01(5=c ,移位寄存器
状态改为01;
8) 输入:u 6=0,则根据(001),可算出:1,1②6①6
==c c ,故)11(6=c ,移位寄存器
状态改为00;
9) 输入:u 7=0,则根据(000),可算出:0,0②
7①7
==c c ,故)00(7=c ,移位寄存器状态改为00;
按照上述步骤,可画出状态图如图2.1所示。
图2.1 (2,1,3)
卷积码状态图
图2.1中,4个圆圈中的数字表示状态,状态之间的连线与箭头表示转移方向,称作分支,分支上的数字表示由一个状态到另一个状态转移时的输出码字,而括号中数字表示相应的输入信息数字。
例如若当前状态为11,即S 3=11,则当下一时刻的输入信息位为u 1=0时,输出码字c 1=01,下一刻的状态为S 2=01。
若输入信息位u 1=1,则输出码字为c 1=10,下一时刻的状态仍为S 3=11。
(2) 树图表示法
如果要展示出编码器的输入、输出所有可能情况,则可采用树图来描述,它是将上述编码器的状态图按时间展开而成的,如图2.2所示。
由图2.2可见,若设初始状态S 0=00作为树根,对每个时刻可能的输入进行分支,若分支的节点级数用l 表示,则当0=l 时,有两个可能分支。
若u 0=0,则向上,即0分支向上,若u 0=1则向下,即1分支向下,它们都达到下一个一级节点(1=l )。
当1=l 时,对每个一级节点根据u 1的取值也将产生上、下两个分支,并推进到相应的二级节点(2=l )。
依此类推,就可以得到一个无限延伸的树状结构图。
图2.2中各分支上的数字表示相应输出的码字。
字段d c b a 、、、表示编码器所处的状态。
对于特定输入信息序列:
u =(10111000) (2.41)
相应的输出:
c =(11 10 00 01 10 01 11 00…) (2.42)
00(0) S 3
b
图2.2 (2,1,3)卷积码树图表示
(3) 网格图表示法
网格图的纵坐标表示所有状态,横坐标表示时间。
这类网格图描述法在卷积码的概率译码中,特别在维特比译码中特别有用,它综合了状态图与树图的优点,即网格图既具有状态图结构简单,又具有树图的时序关系清晰特点。
以(2,1,3)卷积码为例,当节点级数大于3121=+=+=m l 时,状态
d c b a 、、、呈现重复。
利用这种重复,即如果将图2.2中3=l 以后,码树上处
于同一状态的同一节点折叠起来加以合并,就可以得到纵深宽度(或称高度)为2km =22=4的网格图,如图2.3所示。
图2.3中实线表示输入为0时所走的分支,虚线表示输入为1时所走的分支。
由图2.3可见这个图实质上是将图2.2的树图重复部分合并而成的。
它自2=l 即第二级节点开始,从同一状态出发所延伸的树结构完全一样。
因此网格图能更为简洁地表示卷积码[8]。
如果任意给定一个输入信息序列,则它在网格图中就必将存在一条特定的路径,比如u =(1011100),其输出编码为c =(11 10 00 01 10 01 11),即为上述网格图2.3中粗黑线所表示的路径。
网格图是研究卷积码最大似然译码维特比算法的重要工具。
00 11 10 01 11 00 01 10 a b c d 00
a 11 10
b 01 11
c 00 01
d 10
00
a 11 00 a 11
0分支 树根 1分支
00 11 10 01 11 00 01 10
a b c d
10
b 01
图2.3 (2,1,3)卷积码网格图表示法
2.4.3 卷积码的解码
卷积码的解码方式可以分为两类:代数解码和概率解码。
代数解码是利用编码本身的代数结构进行解码,不考虑信道的统计特性。
大数逻辑解码,又称门限解码,是卷积码代数解码的最主要一种方法,也可以应用于循环码的解码。
大数逻辑解码对于约束长度较短的卷积码最为有效,而且设备较简单。
概率解码(又称最大似然解码)则是基于信道的统计特性和卷积码的特点进行计算。
首先由沃曾克拉夫特针对无记忆信道提出的序贯解码就是概率解码方法之一;另一种概率解码方法是维特比(Viterbi)算法。
当码的约束长度较短时,它比序贯解码算法的效率更高、速度更快,目前得到广泛的应用[9,10]。
2.4.3.1 大数逻辑解码
卷积码的大数逻辑解码是基于卷积码的代数表述运算的,其一般工作原理如图2.4所示。
首先将接受信息位暂存于移存器中,并从接收码元的信息位和监督位计算校正子。
然后,将计算得出的校正子暂存,并用它来检测错码的位置。
在信息位移存器输出端,接有一个模2加电路;当检测到输出的信息位有错时,在输出的信息为上加“1”,从而纠正之[11]。
在图2.5中画出了一个(2,1,6)卷积码编码器。
a=00 b=10 c=01 d=11
图2.4 大数逻辑解码一般工作原理
图2.5 (2,1,6)卷积码编码器原理方框图
图2.5中编码器的监督位和信息位的关系如下,当输入序列为b 1b 2b 3b 4时,监督位为:
⎪⎪
⎪⎪⎪⎪
⎩
⎪
⎪⎪⎪⎪⎪⎨⎧
+++=++=+==== (6321652154143)
32
211b b b b c b b b c b b c b c b c b c (2.43)
其监督关系式如下:
⎪⎪⎪⎪⎩⎪⎪
⎪⎪
⎨
⎧++++=+++=++=+=+=+=b b b b c s b b b c s b b c s b c s b c s b c s 6
321665215541443332221
11 (2.44)
S i (i =1~6) 称为校正子,经过简单线性变换,可以得出如下正交校验方程组:
⎪⎪⎩⎪⎪
⎨
⎧++++=++++=++=+=b b b c c s s b b b c s b b c s b c s 6
3162625
21554
1441
11 (2.45)
只有信息位b 1出现在每个方程中,监督位和其他信息位均最多只出现一次。
因此,在接收端解码时,考察b 1 c 1至b 6 c 6等12个码元,仅当b 1出错时,才可能有3个或3个以上方程等于“1”。
从而能够纠正b 1的错误。
按照这一原理画出的此(2,1,6)卷积码解码器原理方框图示于图2.6中。
由图2.6可见,当信息位出现一个错码时,仅当它位于信息位移存器的第6、3、2和1级时,才使校正子等于“1”。
因此,这时的校正子序列为100111;反之,当监督位出现一个错码时,校正子序列将为100000。
由此可见,当校正子序列中出现第一个“1”时,表示已经检出一个错码。
后面的几位校正子则指出是信息位错了,还是监督位错了。
门限电路将这4个电压(非模2)相加。
当相加结果大 于或等于3时,门限电路输出“1”,它除了送到输出端的模2加法器纠正输出码元b 1的错码外,还送到校正子移存器纠正其中错误[19,21]。
图2.6 (2,1,6)卷积码解码器原理方框图
此卷积码除了能够纠正两位在约束长度中的随机错误外,还能纠正部分多于
两位的错误。
为了克服突发错误,可以采用更长的约束长度和在约束长度中能纠正更多错误的码。
2.4.
3.2维特比解码算法
维特比解码算法是维特比于1967年提出的。
这种算法的基本原理是将接收到的信号序列和所有可能的发送信号序列比较,选择其中汉明距离最小的序列认为是当前发送信号序列。
若发送一个k位序列,则有2k种可能的发送序列。
当K 较大时,存储量太大,使实用受到限制。
维特比算法对此作了简化,使之能够实用。
一种(3,1,3)卷积码编码器方框图如图2.7。
图2.7 一种(3,1,3)卷积码编码器方框图
该(3,1,3)卷积码的状态图如图2.8。
c
图2.8 (3,1,3)卷积码状态图
设发送信息位为:1101,为了使图2.7中移存器的信息位全部移出,需要在信息位后面加入三个“0”,故经过编码后的发送序列为111 110 010 100 001 011 000,并且假设接收序列为111 010 010 110 001 011 000,其中第4和第11个码元为错码。
由于这是一个(n,k,N)=(3,1,3)卷积码,发送序列的约束度N=3,所以首先需要考察nN=9。