基于MATLAB的卷积码的分析与应用毕业设计.docx
《基于MATLAB的卷积码的分析与应用毕业设计.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的卷积码的分析与应用毕业设计.docx(45页珍藏版)》请在冰豆网上搜索。
基于MATLAB的卷积码的分析与应用毕业设计
毕业设计
基于MATLAB的卷积码的分析与应用
毕业设计(论文)任务书
毕业设计(论文)题目:
基于MATLAB的卷积码的分析与应用
设计(论文)的基本内容:
(1)介绍纠错控制编码的相关理论,重点分析卷积码的相关编码和解码理论。
(2)在MATLAB中编写卷积码的编码和解码程序,模拟通信系统,针对TD-SCDMA系统中的卷积码进行仿真。
(3)进行纠错译码验证,纠错比较及误码率相关因素分析。
毕业设计(论文)专题部分:
题目:
设计或论文专题的基本内容:
学生接受毕业设计(论文)题目日期
第2周
指导教师签字:
2010年3月8日
基于MATLAB的卷积码的分析与应用
摘要
随着现代通信的发展,特别是在未来4G通信网络中,高速信息传输和高可靠性传输成为信息传输的两个主要方面,而可靠性尤其重要。
因为信道状况的恶劣,信号不可避免会受到干扰而出错。
为实现可靠性通信,主要有两种途径:
一种是增加发送信号的功率,提高接收端的信号噪声比;另一种是采用编码的方法对信道差错进行控制。
前者常常受条件限制,不是所有情况都能采用。
因此差错控制编码得到了广泛应用。
介绍了多种信道编码方式,着重介绍了卷积码的编码方法和解码方式。
介绍了MATLAB的使用方法、编程方法、语句、变量、函数、矩阵等。
介绍了TD-SCDMA通信系统和该系统下的卷积码,搭建了系统通信模型。
编写卷积码的编码和解码程序。
用MATLAB仿真软件对TD-SCDMA系统的卷积码编解码进行仿真。
对其纠正错码性能进行验证,并且对误码率进行仿真和分析。
卷积码的编码解码方式有很多,重点仿真Viterbi算法。
Viterbi算法就是利用卷积码编码器的格图来计算路径度量,选择从起始时刻到终止时刻的惟一幸存路径作为最大似然路径。
沿着最大似然路径回溯到开始时刻,所走过的路径对应的编码输出就是最大似然译码输出序列。
它是一种最大似然译码方法,当编码约束长度不大、或者误码率要求不是很高的情况下,Viterbi译码器设备比较简单,计算速度快,因而Viterbi译码器被广泛应用于各种领域。
关键词:
卷积码;信道编码;TD-SCDMA;MATLAB
第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]。
随着数字通信系统业务的不断拓展,随着卷积编码理论的不断发展和完善,卷积码的应用必将越来越广泛,卷积码在现在通信系统中的作用必将越来越大。
主要内容
论文框架:
第一章介绍了卷积码的研究背景,第二章介绍了卷积码的相关理论,信道编码、线性分组码、循环码及卷积码的表示方式、编码方式、解码方式,第三章介绍了实现卷积码仿真所需要的软件方式,第四章进行卷积码设计与仿真,介绍了TD-SCDMA系统下的卷积码,对卷积码性能进行了研究。
主要内容:
介绍了信道编码方式。
着重研究列举了卷积码的编码方法和解码方式,介绍了MATLAB的使用方法和TD-SCDMA系统。
编写卷积码的编码和解码程序。
并且用MATLAB仿真软件对TD-SCDMA系统的卷积码编解码进行仿真,Viterbi算法就是利用卷积码编码器的格图来计算路径度量,选择从起始时刻到终止时刻的惟一幸存路径作为最大似然路径。
沿着最大似然路径回溯到开始时刻,所走过的路径对应的编码输出就是最大似然译码输出序列。
它是一种最大似然译码方法,当编码约束长度不大、或者误码率要求不是很高的情况下,Viterbi译码器设备比较简单,计算速度快,因而Viterbi译码器被广泛应用于各种领域。
第2章相关理论介绍
信道编码
在数字通信中,根据不同的目的,编码可分为信源编码和信道编码。
信源编码是为了提高数字信号的有效性以及为了使模拟信号数字化而采取的编码。
信道编码是为了降低误码率,提高数字通信的可靠性而采取的编码。
信道编码现在已经得到广泛的应用。
2.1.1信道编码的分类
信道编码有多种分类方式,主要有按照关系、范围及用途三种。
(1)根据纠错码各码组信息元和监督元的函数关系,可分为线性码和非线性码。
如果函数关系是线性的,即满足一组线性方程式,则称为线性码,否则为非线性码。
(2)根据上述关系涉及的范围,可分为分组码和卷积码。
分组码的各码元仅与本组的信息元有关;卷积码中的码元不仅与本组的信息元有关,而且还与前面若干组的信息元有关。
(3)根据码的用途,可分为检错码和纠错码。
检错码以检错为目的,不一定能纠错;而纠错码以纠错为目的,一定能检错[4,5]。
2.1.2编码效率
用差错控制编码提高通信系统的可靠性,是以降低有效性为代价换来的。
定义编码效率尺来衡量有效性:
R=k/n,其中,k是信息元的个数,n为码长。
对纠错码的基本要求是:
检错和纠错能力尽量强;编码效率尽量高;编码规律尽量简单。
线性分组码
线性分组码中的线性是指码组中码元间的约束关系是线性的,而分组则是对编码方法而言,即编码时将每k个信息位分为一组进行独立处理,变换成长度为n(n>k)的二进制码组。
线性分组码的编码过程可以简单描述成一个矢量和一个矩阵相乘的结果,即C=mG,其中C是经过编码后得到的n维编码输出{c0,c1,…,cn-1},m是信息序列分组{m0,m1,…,mk-1},G是由k个n维矢量{g0,g1,…,gk-1}构成的矩阵。
线性分组码编码问题的核心就是如何在n维线性空间Vn中找出满足一定要求的、由2k个矢量组成的k维线性子空间,也就是说,在满足给定码字最小距离或编码速率的前提下,如何根据已知的k个信息比特求得r=n-k个校验比特。
通过对码字生成矩阵G的初等变换,可以得到惟一的行简化梯形矩阵,再经过列交换可以得到如下形式的生成矩阵。
(2.1)
其中P是k×(n-k)的矩阵。
这种形式的生成矩阵G称为标准生成矩阵,按照标准矩阵生成的码字为
(2.2)
其中前n-k-1个比特为校验比特,其值为
(2.3)
后面k个比特就是信息比特。
这种在生成码字中包含信息序列的编码码字称为线性系统分组码,简称为系统码。
系统码的编码结构相当简单,以系统(7,4)为例,其生成矩阵为:
(2.4)
系统码的编码结构非常简单,比如对系统(7,4)码,根据上面的生成矩阵G,只要在输入编码器的每组k个数字的后面,附加上(n-k)个监督码元就可得到所编出的n个码字。
系统(7,4)码对应的监督矩阵为
(2.5)
假如发送的码字为c=(1001011),而接收到的码字为Y=(1001001),信道传输中产生的错误为e=(0000010)。
由S=y·HT可求出S=(1,1,1)。
循环码
循环码是线性分组码中最重要的一类,循环码是指码集合中的任一码字经过循环移位后得到的码字仍然是码集合中的码字。
循环码的码字可以用矢量的形式表示,即:
(2.6)
也可用码多项式表示,即:
(2.7)
循环码c向右移一位的码字可由下式得出
(2.8)
循环码可由它的生成多项式
(2.9)
唯一确定。
信息序列也可以表示成多项式
(2.10)
那么生成码字可表示成
(2.11)
由于多项式乘法等价于多项式系数的卷积,故
(2.12)
循环码编码则可以通过移位寄存器组成的乘法电路结构实现。
由数论知识可知,(n,k)循环码的生成多项式g(x)一定是xn-1的n-k次因式:
(2.13)
反之,若g(x)为n-k次多项式,且xn-1能被g(x)整除,则g(x)一定能生成一个(n,k)循环码。
以g(x)为生成多项式所构成的(n,k)循环码中
g(x),xg(x),…,xk-1g(x)(2.14)
等七个多项式必定是线性无关,则循环码的生成矩阵G为
(2.15)
循环码的编码也可以通过移位寄存器组成的除法电路结构实现。
以(7,4)循
环码为例,选(7,4)码生成矩阵
g(x)=g3(x)=1+x+x3(2.16)
它除尽1+x7,若输入信息码元为m(x)=1+x3
则由
(2.17)
因此,码多项式为
(2.18)
对应的码字为C=(0111001)其中最右边的4位是信息元,详细的编码过程如下:
(1)三级移位寄存器初始状态为000,此时门打开,信息组以
(2.19)
即1001次序分两路进入编码器:
一路直接输出;另一路送入g(x)除法电路。
(2)经4次移位后,信息组1001全部输出,它就是系统码的4个信息元;另一路则将全部信息元送入g(x)除法电路,并完成除法运算,这时移位寄存器中的状态就是余式r(x)系数,即为码的监督元(c0c1c2)。
(3)输出开关倒向上面2,经3次移位,移位器由监督元(c0c1c2),跟在信息元(c3c4c5c6)后面依次输出为C=(c0c1c2c3c4c5c6)=(0111001)。
(4)送入第二组信息元,重复上述过程。
该码最小距离为3,它能纠正7个码元一组中任何单个错误,这7种错误图样和全零矢量一起组成译码表的陪集首,它组成了所有可能纠正的图样。
现假设接收的多项式为
(2.20)
即Y=(1111001)。
译码器工作步骤如下:
(1)将移位寄存器清零。
(2)输入Y分两路进入译码器:
一路进入缓存器;另一路经门1进入伴随式计算电路与寄存器,并分别计算S0、S1、S2值。
(3)在输出Y的同时,S0、S1、S2依次循环移位。
无错误时,错误检测电路无输出,最后输出的码字C的码元与Y相对应码元一致,有错误时,S0=S2=1,S1=0,错误检测电路输出为“1”,它正好与Y中错误位在输出端的模2加中相遇,并予以纠正后再输出。
卷积码
相对于分组码而言,分组码的编码和译码都是各分组独立的进行,彼此不相关联。
而卷积码的每一组不仅与本组的k位信息位有关,还和这以前各组的信息位有关。
卷积码的结构比较复杂,但n和k的值相对于分组码来说比较小。
译码也相对比较容易些。
2.1.3卷积码简介
非分组码的卷积码的编码器是在任一段规定时间内产生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卷积码是1955年Elias最早提出,1957年Wozencraft提出了序列译码。
1963年Massey提出了一种性能稍差,但比较实用的门限译码方法。
1967年维特比(Viterbi)提出了最大似然译码。
它对存储器级数较小的卷积码的译码很容易实现,称为维特比算法或维特比译码。
2.1.4卷积码的编码
卷积码的编码器是由一个有k个输入位(端)、n个输出位(端),且具有m级移位寄存器所构成的有限状态的有记忆系统,通常称它为时序网络。
2.1.4.1卷积码的解析表示法
一个二元(2,1,4)卷积码的编码器,它是由k=1,即一个输入位(端),n=2,即两个输出位(端),K=4,m=3即三级移位寄存器所组成的有限状态的有记忆系统。
(1)离散卷积
若输入信息序列为(这里的卷积码是u0首先输入)
(2.21)
则对应输出为两个码字序列
(2.22)
其相应编码方程可写为
(2.23)
其中“﹡”表示卷积运算,g①g②表示编码器的两个脉冲冲击响应,即编码可由输入信息序列u和编码器的两个冲击响应的卷积得到,故称为卷积码[7]。
这里的脉冲冲击响应是指,当输入信息为u=(100…)时,所观察到的两个输出序列值。
由于编码器有m=3级寄存器,故冲激响应至多可持续到K=m+1=3+1=4位,且可写成:
(2.24)
在一般情况下有:
(2.25)
经编码器后,两个输出序列合并为一个输出码字序列为:
(2.26)
若输入信息序列为:
(2.27)
则有:
(2.28)
(2.29)
最后输出的码字为:
(2.30)
(2)生成矩阵
上述冲激响应g①g②又称为生成序列,若将该生成序列g①g②按如下方法排列,构成如下生成矩阵(当K=4,m=3时):
(2.31)
上述矩阵中,其中空白部分均为0。
则上述编码方程可改为矩阵形式
(2.32)
G为卷积码的生成矩阵,若输入信息序列为一无限序列时,即u=(10111…),生成矩阵则为一个半无限矩阵,即有起点无终点,因此称它为半无限。
若:
(2.33)
则:
(2.34)
(3)码多项式
若将生成序列表达成多项式形式,有
(2.35)
输入信息序列也可表达为多项式形式
(2.36)
则卷积码可以用下列码多项式形式表达
(2.37)
(2.38)
2.1.4.2卷积码的图形表示法
卷积码的图形表示法有很多种,在此介绍最常用的三种,状态图表示法、树图表示法、网格图表示法。
(1)状态图表示法
卷积编码器在下一时刻的输出取决于编码器当前的状态及下一时刻的输入。
当前状态取决于编码器在当时各移位寄存器所存储的内容,称编码器的各移位寄存器在任一时刻的存数(0或1)为编码器在该时刻的一个状态。
编码器的总可能状态数是2mk个。
对于n=2,k=1,K=3,m=2的(2,1,3)卷积编码器,则其总的可能状态数是4个。
设以Si表示某状态,i=0,1,2,3,在某tj时刻,此(2,1,3)卷积编码器的输出表述为
(2.39)
它取决于uj,uj-1及uj-2三个值,其中uj是当前的输入值,uj-1及uj-2是以前输入的两个值。
若要求出下一个tj+1时刻的输出值,则要知道当前的uj及uj-1值。
当输入下一时刻的uj+1值时,就可以求出下一个tj+1时刻的c①j+1及c②j+1值。
所以,为决定下一个tj+1时刻编码器的输出,此(2,1,3)卷积编码器在当前tj时刻的状态用Si=(uj,uj-1)(i=0,1,2,3)表示即可。
如表2.1所示。
表2.1状态转移表
uj
uj-1
Si
0
0
S0=a
1
0
S0=b
0
1
S0=c
1
1
S0=d
设输入信息序列为:
(2.40)
1)首先,对移位寄存器清洗、复0,移存器状态为00;
2)输入:
u0=1,输出
,
,故
,移位寄存器状态改为10;
3)输入:
u1=0,则根据(010),可算出:
,故
,移位寄存器状态改为01;
4)输入:
u2=1,则根据(101),可算出:
,故
,移位寄存器状态改为10;
5)输入:
u3=1,则根据(110),可算出:
,故
,移位寄存器状态改为11;
6)输入:
u4=1,则根据(111),可算出:
,故
,移位寄存器状态改为11;
7)输入:
u5=0,则根据(011),可算出:
,故
,移位寄存器状态改为01;
8)输入:
u6=0,则根据(001),可算出:
,故
,移位寄存器状态改为00;
9)输入:
u7=0,则根据(000),可算出:
,故
,移位寄存器状态改为00;
11(0)01(0)
按照上述步骤,可画出状态图如图2.1所示。
图2.1(2,1,3)卷积码状态图
图2.1中,4个圆圈中的数字表示状态,状态之间的连线与箭头表示转移方向,称作分支,分支上的数字表示由一个状态到另一个状态转移时的输出码字,而括号中数字表示相应的输入信息数字。
例如若当前状态为11,即S3=11,则当下一时刻的输入信息位为u1=0时,输出码字c1=01,下一刻的状态为S2=01。
若输入信息位u1=1,则输出码字为c1=10,下一时刻的状态仍为S3=11。
(2)树图表示法
如果要展示出编码器的输入、输出所有可能情况,则可采用树图来描述,它是将上述编码器的状态图按时间展开而成的,如图2.2所示。
由图2.2可见,若设初始状态S0=00作为树根,对每个时刻可能的输入进行分支,若分支的节点级数用
表示,则当
时,有两个可能分支。
若u0=0,则向上,即0分支向上,若u0=1则向下,即1分支向下,它们都达到下一个一级节点(
)。
当
时,对每个一级节点根据u1的取值也将产生上、下两个分支,并推进到相应的二级节点(
)。
依此类推,就可以得到一个无限延伸的树状结构图。
图2.2中各分支上的数字表示相应输出的码字。
字段
表示编码器所处的状态。
对于特定输入信息序列:
u=(10111000)(2.41)
相应的输出:
c=(1110000110011100…)(2.42)
10
b
01
图2.2(2,1,3)卷积码树图表示
(3)网格图表示法
网格图的纵坐标表示所有状态,横坐标表示时间。
这类网格图描述法在卷积码的概率译码中,特别在维特比译码中特别有用,它综合了状态图与树图的优点,即网格图既具有状态图结构简单,又具有树图的时序关系清晰特点。
以(2,1,3)卷积码为例,当节点级数大于
时,状态
呈现重复。
利用这种重复,即如果将图2.2中
以后,码树上处于同一状态的同一节点折叠起来加以合并,就可以得到纵深宽度(或称高度)为2km=22=4的网格图,如图2.3所示。
图2.3中实线表示输入为0时所走的分支,虚线表示输入为1时所走的分支。
由图2.3可见这个图实质上是将图2.2的树图重复部分合并而成的。
它自
即第二级节点开始,从同一状态出发所延伸的树结构完全一样。
因此网格图能更为简洁地表示卷积码[8]。
如果任意给定一个输入信息序列,则它在网格图中就必将存在一条特定的路径,比如u=(1011100),其输出编码为c=(11100001100111),即为上述网格图2.3中粗黑线所表示的路径。
网格图是研究卷积码最大似然译码维特比算法的重要工具。
a=0000000000000000
11111111111111
b=1010110011001100
101010
c=0101010101
01010101
d=11
101010
l=0l=1l=2l=3l=4l=5l=6l=7
l=01234567
图2.3(2,1,3)卷积码网格图表示法
2.1.5卷积码的解码
卷积码的解码方式可以分为两类:
代数解码和概率解码。
代数解码是利用编码本身的代数结构进行解码,不考虑信道的统计特性。
大数逻辑解码,又称门限解码,是卷积码代数解码的最主要一种方法,也可以应用于循环码的解码。
大数逻辑解码对于约束长度较短的卷积码最为有效,而且设备较简单。
概率解码(又称最大似然解码)则是基于信道的统计特性和卷积码的特点进行计算。
首先由沃曾克拉夫特针对无记忆信道提出的序贯解码就是概率解码方法之一;另一种概率解码方法是维特比(Viterbi)算法。
当码的约束长度较短时,它比序贯解码算法的效率更高、速度更快,目前得到广泛的应用[9,10]。
2.1.5.1大数逻辑解码
卷积码的大数逻辑解码是基于卷积码的代数表述运算的,其一般工作原理如图2.4所示。
首先将接受信息位暂存于移存器中,并从接收码元的信息位和监督位计算校正子。
然后,将计算得出的校正子暂存,并用它来检测错码的位置。
在信息位移存器输出端,接有一个模2加电路;当检测到输出的信息位有错时,在输出的信息为上加“1”,从而纠正之[11]。
在图2.5中画出了一个(2,1,6)卷积码编码器。
信息位移存器
图2.4大数逻辑解码一般工作原理
输入
图2.5(2,1,6)卷积码编码器原理方框图
图2.5中编码器的监督位和信息位的关系如下,当输入序列为b1b2b3b4时,监督位为:
(2.43)
其监督关系式如下:
(2.44)
Si(i=1~6)称为校正子,经过简单线性变换,可以得出如下正交校验方程组:
(2.45)
只有信息位b1出现在每个方程中,监督位和其他信息位均最多只出现一次。
因此,在接收端解码时,