1.1课程设计目的 ..................................................................................................................... 1 1.2课程设计要求 ..................................................................................................................... 1 第二章 原理 .................................................................................................................................... 2
2.1卷积码 ................................................................................................................................. 2 2.2卷积码的算法 ..................................................................................................................... 2 2.3卷积码的Viterbi译码 ........................................................................................................ 2 第三章 Matlab中卷积码译码器的设计过程与仿真 ................................................................... 5
3.1 Matlab维特比译码器模块介绍 ........................................................................................ 5 3.2Matlab中卷积码维特比译码器的设计.............................................................................. 6 第四章 Matlab中卷积码译码器的误码率分析 ......................................................................... 10 第五章 总结 .................................................................................................................................. 12
卷积码差错控制的系统仿真
卷积码差错控制的系统仿真
第一章 引言
1.1课程设计目的
利用系统开发平台Windows xp,通过Matlab(7.0)软件进行设计与仿真,对一个卷积码序列进行维特比(Viterbi)译码输出,并进行误码率分析。
1.2课程设计要求
1)用子系统来实现,系统包括:信源部分、信道部分、新宿部分。 2)信源部分的数据源采用随机二进制序列,并对其进行卷积码调制。 3)信道部分对调制后的信号加译。 4)信宿部分对信号调制及维比特译码。 5)编程实现波形,实现误码分析。
070305136 杨雯雁
1
卷积码差错控制的系统仿真
第二章 原理
2.1卷积码
卷积码是1955年由爱里斯(Elias)提出的一种性能优越的信道编码。他通常用( n,K,N)表示,他是把K个信息比特编成n个信息比特,但K和n通常很小,特别适宜于以串行方式传输信息,延时小。N为编码约束长度,说明编码过程中互相约束的码段个数。卷积码编码后的n个码元不仅与当前组的k个信息比特有关,而且与前N一1个输入组的信息比特有关。编码过程中相互关联的码元有N×n个。R=k/n.是卷积码的码率,码率和约束长度是衡量卷积码的两个重要参数。卷积码广泛应用在无线通信标准中,如GSM,CDMA2000,IS一95中。
2.2卷积码的算法
卷积码的编码描述方法有5种:冲激响应描述法、生成矩阵描述法、多项式乘积描述法、状态图描述法和网格图描述法。
图1.1卷积码编码器
由于可以通过将按时间移位的脉冲进行线性叠加,或者将输入序列和编码器的脉冲响应相卷积,来产生输出编码,因此这种编码器称为卷积编码器。
2.3卷积码的Viterbi译码
Vterbi译码是最大似然译码,译码的任务是在树状图或网格图中选择一条路径,计算出各支路与接收到的信息序列的距离。从中选出距离最小的一条支路作为译码输出。这样选出来的输出序列和发送端发出的序列最为相似。换句话说,此序列出错的概率最低。因此,Viterbi
译码是一种极大似然译码。通常把可能的译码序列与接收序列之间的距离称为量度。Viterbi译码分为硬判决Viterbi译码和软判Viterbi译码,他们之间惟一不同之处在于支路量度的计算方法。硬判Viterbi译码以序列之间的汉明距离作为
070305136 杨雯雁
2
卷积码差错控制的系统仿真
量度,适用于二进制对称信道(BSC);而软判决Viterbi译码则是将信道输出的信号进行Q(>2)电平量化,然后再进行Viterbi译码,这样充分利用了信道输出信号的信息,提高了译码的可靠性,是一种适用于离散无记忆信道(DMC)的译码方法。
下面以图2.1的(2,1,3)卷积码编码器所编出的码为例,来说明维特比解码的方法和运作过程。为了能说明解码过程,这里给出该码的状态图,如图2.2所示:
y1j b
00 11 a 11 c 00 10 01 01 d 输入序列 m,m,„m,„ 12jmj mj-1 mj-2 输出序列
y2j 图2.1 (2,1,3)卷积码编码器 图2.2 (2,1,3)卷积码状态图 维特比译码需要利用图来说明移码过程。根据卷积码画网格的方法,我们可以画出该码的网格图,如图2.3所示。该图设输入信息数目L=5,所以画L+N=8个时间单位,图中分别标以0至7。这里设编码器从a状态开始运作。该网格图的每一条路径都对应着不同的输入信息序列。由于所有可能输入信息序列共有2kL个,因而网格图中所有可能的路径也为2kL条。这里节点a=00,b=01,c=10,d=11。
图2.3 (2,1,3)卷积码网格图
由图2.3可以看出,序列m是发送方卷积编码器的输入序列,即为通信系统要传输
070305136 杨雯雁
3
卷积码差错控制的系统仿真
的数字信号,码字u为序列m按相应参数卷积编码后得到的码字,也是信道中传输的信号,接收码字Z是u加上信道噪声后在接收方接收到的码字序列。网格图的每个时间间隔内,标注的是各个分支上接收码元Z和编码器网格图相应各个分支上分支字之间的汉明距离即分支路径距离(Branch Metric)。Viterbi译码算法正是利用了编码网格图的特殊结构,计算网格图上在时刻t 到达各个状态的路径和接收序列之间的相似度(Measureof Similarity),即上面标注的分
支路径距离,经过“加一比一选”操作,去除不可能成为最大似然选择对象的网格图上的路径。即如果两条路径到达同一状态,则选择具有最小路径距离的路径,这条路径被称为幸存路径(Surviving Path)。对所有的状态进行这样的路径操作,译码器不断在网格图上深入,根据最后得到的幸存路径实现最终判决。由于较早的抛弃了不可能的路径,从而降低了译码器的复杂性。由上述可见,译码器的运行是前向的、无反馈的。他接收一段,计算一段,选择一段最可能的码段(分支),从而达到整个码序列是一个有最大似然函数的序列。Viterbi算法的每一级的计算复杂度相同,因此他总的计算复杂度和存储量与传输序列长度L成正比,传输序列很长时,判决需要的长延时和相当大的存储量是我们无法承受的。因些,实际应用中采用截短Viterbi算法,即不需要接收到所有序列才进行判决,当译码器接收并处理完固定r(r《L)个码段后,在接收r+1个码时,他将比较前r级的路径量度,然后从中选取最小者,由此得到与最小量度对应的幸存路径,将此路径对应的r个码段判决输出。r称为回溯长度。
070305136 杨雯雁
4
卷积码差错控制的系统仿真
第三章 Matlab中卷积码译码器的设计过程与仿真
3.1 Matlab维特比译码器模块介绍
在Matlab软件的Simulink组件库中包含有的两种卷积码译码模块,即后验概率卷积译码器和维特比译码器。如果卷积编码器的输入长度为k,输出信号的长度为n,则维特比译码器的输入好输出信号长度分别是n和k的整数倍[1]。 维特比译码器模块主要有以下几个参数: 1)Trellis structure(Trellis结构)
与维特比一冒起相对应的卷积编码器的Trellis结构。它既可以是Matlab工作区中的一个Trellis变量,也可以是通过poly2trellis()函数产生的Trellis结构。 2)Decision Type(判决类型)
维特比译码器德判决类型有3种:Unquantized(非量化)、Hard Decision(硬判决)和Soft Decision(软判决)。ision(软判决),如表3.1所示。
表3.1维特比译码器的判决类型
判决类型 Unquantized 解码器的输出类型 实数 说明 +1表示逻辑0;-1表示逻辑1 0表示逻辑0;1表示逻辑1 Hard Decision 0, 1 Soft Decision 介于0和2b-1之间的0表示具有取值为0的最大概率;2b-1整数,其中b是软判决表示具有取值为1的最大概率;介于两位的个数 者之间的数表示取0和1的相对概率。 3)Number of soft decision bits(软判决的个数)
当Decision type设置为Soft Decision时,本参数有效,并且当它的取值为b时,维特比译码器的输出是介于0和2b-1之间的一个整数。 4)Traceback depth(反馈深度)
反馈深度D影响着维特比译码的精度,同时也影响着解码的时延(即在输出第一个解码数据之前输出的0的个数)。 5)Operation mode(操作模式)
维特比译码器有3种操作模式:Continuous、Terminated或Truncated。如果
070305136 杨雯雁
5
卷积码差错控制的系统仿真
维特比译码器德输出信号是抽样信号,则应该把本参数设置为Continuous模式;当输入信号时帧数据时,操作模式可以是Continuous、Terminated或Truncated。对于Continuous模式,维特比译码器在每帧数据结束时保存译码器的内部状态,用于对下一帧实施解码;在Truncated模式下,解码器在每帧数据结束的时候总能恢复到全零状态,它对应于卷积编码器的On each frame复位方式;Terminated模式适用于卷积编码器的每帧输入信号的末尾有足够多的零,能够把卷积编码器在完成一帧数据的编码之后把内部状态恢复为0[2]。 6)Enable rest input port(启用复位信号端口)
当Operation mode参数设置为Continuous并且选中了本选项前面的复选框之后,维特比译码器增加一个输出信号端口Rst。同时当Rst的输入信号不等于0时,维特比译码器复位到初始状态[3]。
3.2Matlab中卷积码维特比译码器的设计
1)仿真系统通信模型
图3.2 仿真通信系统模型
其中,信源为随机输入的10 000个二进制码元,信道为简单的加性高斯白噪声信道,调制方式为BPSK调制啪,译码方式采用了Viterbi硬判决译码。适用于二进制对称信道(BSC)。可见,本设计由3个子系统组成:
编译码器约定参
信号 噪声信信号信号 信源模信宿模
图3.3 整体设计结构模块框图
2)信源模块:信源模块由贝努利二进制序列产生器、卷积码编码器以及二进制相位调制3个模块组成,如图3.4所示
070305136 杨雯雁 6
卷积码差错控制的系统仿真
图3.4 信源模块系统框图
各个模块的参数设置分别如表3.2~表3.4所示。
表3.2 Bernoulli Binary Generator(贝努利二进制序列产生器)的参数设置[4]
参数名称 模块类型 Probability of zero Initial seed Sample time Frame-based output Samples per frame 参数值 Bernoulli Binary Generator 0.7 25700 0.0001 Checked 10000 表3.3 Convolutional Encoder(卷积码编码器)的参数设置
参数名称 模块类型 Trellis Reset 参数值 Convolutional Encoder Poly2trellis(7,[171 133]) On each frame 表3.4 BPSK Modulator Baseband(二进制相位调制模块)的参数设置
参数名称 模块类型 Phase offset(rad) Samples per symbol 参数值 BPSK Modulator Baseband 0 1 070305136 杨雯雁
7
卷积码差错控制的系统仿真
3)信道模块:本设计使用相对较简单的一个加性高斯白噪声信道作为噪声信道,它在二进制相位调制信号中叠加高斯白噪声。加性高斯白噪声模块的参数设置如表3.5[5]。
表3.5 AWGN Channel(加性高斯白噪声模块)的参数设置
参数名称 模块类型 Initial seed Mode SNR(dB) Input signal power(watts) AWGN Channel 1230 Signal to noise ratio(SNR) SNR 1
参数值
图3.6 信道模块示意图
4)信宿模块:信宿模块在接收到二进制相位调制信号后,首先由BPSK Demodulator Baseband (二进制相位解调模块)对信号进行量化,得到硬判决量化信号,然后通过Viterbi Decoder(维特比译码器)对软判决信号实施译码。译码输出信号和信源模块产生的原始信号输入到Error Rate Calculator(误比特率统计模块)中,统计得到的数据一方面通过Display(显示模块)显示出来,另一方面通过一个Selector(选择器)把其中的第一个元素(即编码信号的误比特率)保存到工作区变量BitErrorRate中。信宿模块如下图3.7所示。
070305136 杨雯雁 8
卷积码差错控制的系统仿真
图3.7 信宿模块
各关键模块参数设置如表3.7、表3.8所示。
表3.7 BPSK Demodulator Baseband(二进制相位解调模块)的参数设置
参数名称 模块类型 Phase offset(rad) Decision type Output data type 参数值 BPSK Demodulator Baseband 0 Hard decision Inherit via internal rule 表3.7 Viterbi Decoder(维特比译码器)的参数设置
参数名称 模块类型 Trellis structure Decision type Treceback depth Operation mode Viterbi Decoder poly2trellis(7, [171 133]) Hard decision 1000 Truncated 参数值 将此完整设计保存,命名为d.mdl。
070305136 杨雯雁 9
卷积码差错控制的系统仿真
第四章 Matlab中卷积码译码器的误码率分析
编制M文件convolutionh.m,使d.mdl在不同的信噪比条件下重复执行前面建立的项目d.mdl。然后绘制信道的信噪比与编码信号误比特率之间的关系曲线图。
M文件代码如下: x=-10:5; %y表示信号的误比特率 y=x;
%准备一个空白图形 hold off;
%重复运行d.mdl,检验不同条件下硬判决译码的性能 for i=1:length(x) %信道的信噪比依次取x中的元素 SNR=x(i);
%运行仿真程序,得到的误比特率保存在工作区变量BitErrorRate中 sim('d');
%计算BitErrorRate的均值作为本次仿真的误比特率 y(i)=mean(BitErrorRate); end
%绘制x和y的关系曲线图,纵坐标采用对数坐标 semilogy(x,y); %保持已经绘制的图形 hold on
执行此M文件,得到如图4.1所示的关系曲线图,由此图可见,随着信道信噪比的提升,维特比译码所得结果的误比特率越低,信道的可信度越高,信噪比在大于-2时信道的误码率开始明显降低。
070305136 杨雯雁
10
卷积码差错控制的系统仿真
图4.1 convolutionh.m运行结果
070305136 杨雯雁
11
卷积码差错控制的系统仿真
第五章 总结
以往每做一次课程设计,感觉自己的收获总会不少,这次也不例外。做课程设计是为了让我们对平时学习的理论知识与实际操作相结合,在理论和实验教学基础上进一步巩固已学基本理论及应用知识并加以综合提高,学会将知识应用于实际的方法,提高分析和解决问题的能力。
通过这次的卷积码差错控制的系统仿真设计与制作,让我了解了Matlab软件,了解了移动通信理念。但是最后的成品却不一定与理想的不太一样,因为,在实际有着各种各样的条件制约着。所以,在设计时应考虑两者的差异,从中找出最适合的设计方法。
在做课程设计的过程中,我深深地感受到了自己所学到知识的有限,明白了只学好课本上的知识是不够的,要通过图书馆和互联网等各种渠道来扩充自己的知识。在实验过程中我们曾经遇到过问题。但是我们没有沮丧。在老师的帮助下,进一步培养了我们一丝不苟的科学态度和不厌其烦的耐心。在实验的过程中我们互相讨论互相合作,使得我们的实验得以顺利完成,体会到了合作的力量,感受到了1+1>2。所有的这些心得会对我以后的学习和工作有帮助作用,忠心感谢马老师实验过程中的谆谆教导;忠心感谢学校给我们提供这次实验机会。
参考文献
[1] Rodger E.Ziemer,Roger L.Peterson 著. 尹长川,郝建军,罗涛 等 译. 数字通信基础 (Introduction to Digital Communication). 原书第2版. 北京:机械工业出版社,2005.1
[2] 樊昌信,张甫翊,徐炳祥,吴成柯. 通信原理.第5版. 北京:国防工业出版社,2007.1
[3] 邓华. Matlab通信仿真及应用实例详解. 北京:人民邮电出版社,2003.9 [4]陈国通. 数字通信. 哈尔滨:哈尔滨工业大学出版社,2002.4
[5]孙祥,徐流美,吴清. Matlab7.0基础教程. 北京:清华大学出版社,2005.5
070305136 杨雯雁
12
因篇幅问题不能全部显示,请点此查看更多更全内容