您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页QPSK调制解调的仿真

QPSK调制解调的仿真

来源:意榕旅游网


QPSK调制解调的仿真

通信工程专业综合课程设计

引言

近年来,软件无线电作为解决通信兼容性问题的重要方法受到各方面的注意。它的中心思想是在通用的硬件平台上,用软件来实现各种功能,包括调制解调类型、数据格式、通信协议等。通过软件的增加、修改或升级就可以实现新的功能,充分体现了的灵活性、可扩展性等。其中软件的增加、高频谱效率的调制解调模块是移动通信系统的关键技术,它的软件化也是实现软件无线电的重要环节。

QPSK是英文Quadrature Phase Shift Keying的缩略语简称,意为正交相移键控,是一种数字调制方式。在19世纪80年代初期,人们选用恒定包络数字调制。这类数字调制技术的优点是已调信号具有相对窄的功率谱和对放大设备没有线性要求,不足之处是其频谱利用率低于线性调制技术。19世纪80年代中期以后,四相绝对移相键控(QPSK)技术以其抗干扰性能强、误码性能好、频谱利用率高等优点,广泛应用于数字微波通信系统、数字卫星通信系统、宽带接入、移动

第 2 页 共 57 页

通信工程专业综合课程设计

第 3 页 共 57 页

通信工程专业综合课程设计

第 4 页 共 57 页

通信工程专业综合课程设计

成模块,以此来实现QPSK系统的仿真。另一种方案是在Matlab环境下,用软件编程的方法来实现调制解调系统的仿真,并且得出不同信道的误码率,并作以比较。 1.1 方案一

在Matlab环境下,用软件编程的方法来实现QPSK调制解调系统的仿真。Matlab是一款由美国Math Works公司出品的商业数学软件。MATLAB 是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可以用来创建用户界面及与调用其它语言(包括C,C++和FORTRAN)编写的程序。我们此次可以应用它的这种功能,在熟练掌握语言编程以及深刻理解QPSK的基础上,严格按照程序仿真的流程图对各部分进行程序编写并仿真。应用理论知识来验证最终的仿真结果是否正确。 1.2 方案二

在Matlab环境下的Simulink模块库中应用模块来搭建QPSK调制解调系统的仿真电路模块。在深入了解QPSK调制解调系统理论知识的情况下,根据理论知识构建调制解调的系统框图。在此基础上选择合适的电路器件以及设置合理的参数,构成调制解调的总体电路框图。Simulink是MATLAB最重要的组件之一,它提供一个动态系统建模、仿真和综合分析的集成环境。在该环境中只要通过简单的鼠标操作,就可以构造出复杂的系统。Simulink提供了一个建立模型方块图的图形用户接口,这个创建过程只需单击和拖动鼠标操作就能完成,它提供了一种

第 5 页 共 57 页

通信工程专业综合课程设计

更快捷、直接明了的方式,而且用户可以立即看到系统的仿真结果。在此基础上完成电路图的搭建,得出仿真结果,并与实际的理论结果相比较。 1.3 方案确立

在经过详细的考虑和比较之后,我确立了方案一为本次课程设计的最终方案。QPSK的调制方法有两种,分别是相乘电路法和选择法,结合本次设计的实际情况,最终选择用程序方式实现相乘电路的调制方式。因为在Matlab中应用程序对QPSK调制解调系统进行仿真,一方面降低了系统设计的复杂性,并且有效的克服了电子瓶颈的问题。因为在电子电路中,总体电路对参数设置是非常敏感的,一旦参数设置出现小的偏差,将会影响到整个电路的结果。另一方面程序的仿真过程中可以将主程序分为很多个子程序,将它们逐个进行仿真,这样不会影响到整体结果,可以逐步进行调试。结合以上的比较论证以及自身的能力,最终我决定用程序法来完成此次对QPSK调制解调系统的仿真。 2 仿真原理

四相相位调制解调是利用载波的四种不同相位差来表征输入的数字信息 ,是四进制移相键控。QPSK是在 M =4时的调相技术 ,它规定了四种载波相位 ,分别为 45°, 135°, 225°, 275°,调制器输入的数据是二进制数字序列 ,为了能和四进制的载波相位配合起来 ,则需要

第 6 页 共 57 页

通信工程专业综合课程设计

把二进制数据变换为四进制数据 ,这就是说需要把二进制数字序列中每两个比特分成一组 ,共有四种组合 ,即 00, 01, 10, 11,其中每一组称为双比元。每一个双比元是由两位二进制信息比特组成 ,它们分别代表四进制四个符号中的一个符号。QPSK中每次调制可传输 2个信息比特 ,这些信息比特是通过载波的四种相位来传递的。解调器根据星座图及接收到的载波信号的相位来判断发送端发送的信息比特。数字调制用“星座图 ”来描述 ,星座图中定义了一种调制技术的两个基本参数 : (1)信号分布; (2) 与调制数字比特之间的映射关系。星座图中规定了星座点与传输比特间的对应关系 ,这种关系称为“映射 ”,一种调制技术的特性可由信号分布和映射完全定义 ,即可由星座图来完全定义[3 ]。在 QPSK调制中 ,QPSK信号可以看作两个载波正交的 2PSK调制器构成。串 /并变换器将输入的二进制序列分为速率减半的两个并行的双极性序列 ,然后分别对 sinωct和 cosωct调制 ,相加后得到QPSK调制信号。QPSK同相支路和正交支路可分别采用相干解调方式解调 ,得到 I( t)和 Q ( t)。经抽样判决和并 /

第 7 页 共 57 页

通信工程专业综合课程设计

串变换器 ,将上、下支路得到的并行数据恢复成串行数据。

2.1 QPSK调制原理

在 QPSK调制中 ,QPSK信号可以看作两个载波正交的 2PSK调制器构成。串 /并变换器将输入的二进制序列分为速率减半的两个并行的双极性序列 ,然后分别对 sinωct和 cosωct调制 ,相加后得到QPSK调制信号。QPSK同相支路和正交支路可分别采用相干解调方式解调 ,得到 I( t)和 Q ( t)。经抽样判决和并 /串变换器 ,将上、下支路得到的并行数据恢复成串行数据。

调制原理框图如图2.1所示

图2.1 QPSK调制

原理框图

原理分析:

第 8 页 共 57 页

通信工程专业综合课程设计

基本原理及系统结构QPSK与二进制PSK一样,传输信号包含的信息都存在于相位中。的别的载波相位取四个等间隔值之一,如л/4, 3л/4,5л/4,和7л/4。相应的,可将发射信号定义为

2E/tcos[2ft(2i1)/4] 0≤t≤T

Si(t) = (2.1.1)

其中,i=1,2,2,4;E为发射信号的每个符号的能量,T为符号持续时间,载波频率f等于nc/T,nc为固定整数。每一个可能的相位值对应于一个特定的二位组。例如,可用前述的一组相位值来表示格雷码的一组二位组:10,00,01,11。

下面介绍QPSK信号的产生和检测。如果a为典型的QPSK发射机框图。输入的二进制数据序列首先被不归零(NRZ)电平编码转换器转换为极性形式,即负号1和0分别用Eb 0

和-Eb表示。接着,该二进制波形被分接器分成两个分别由输入序列的奇数位偶数位组成的彼此的

第 9 页 共 57 页

通信工程专业综合课程设计

二进制波形,这两个二进制波形分别用a1(t),和a2(t)表示。容易注意到,在任何一信号时间间隔内a1(t),和a2(t)的幅度恰好分别等于Si1和 Si2,即由发送的二位组决定。这两个二进制波形a1(t),和a2(t)被用来调制一对正交载波或者说正交基本函数:1(t)=2cos(2ft),2(t)=2sin(2ft)。这样就得到一TTcc对二进制PSK信号。1(t)和2(t)的正交性使这两个信号可以被地检测。最后,将这两个二进制PSK信号相加,从而得期望的QPSK。

2.2 QPSK解调原理

在 QPSK解调中 ,正交支路和同相支路分别设置两个相关器 (或匹配滤波器 ) ,得到 I( t)和 Q ( t) ,经电平判决和并 /串变换后即可恢复原始信息从发射机发射的已调信号经过传输媒质传播到接收端 ,接收机接收到的己调信号为:

SQPSK( t) = I( t)

cosωct (2.2.1)

I( t)、Q ( t)分别为同相和正交支路 ,ωc为

第 10 页 共 57 页

+Q ( t) sinωct

通信工程专业综合课程设计

载波频率 ,那么相干解调后 ,同相支路相乘可得:

Ii( t) = SQPSK( t) cosωct = [ I( t)

cosωct +Q ( t) sinωct]cosωct

=I( t) cos2wct +Q ( t) sin wct /2 =I( t)/2- I( t) cos 2ωct +Q ( t)

sin 2ωct (2.2.2)正交支路相乘可得:

Qq( t) = SQPSK( t) sinωct = [ I( t)

cosωct +Q ( t) sinωct]sinωct

= I( t) sinωct ×cosωct +Q (t)

sin2ωct

=I(t) sin 2ωct/2 +Q ( t)-Q ( t) cos

2ωct (2.2.3) 经过低通滤波器可得:Ii( t) =0.5I( t), Qq( t) =0.5Q ( t) (2.2.4)

原理框图如图2.2所示:

第 11 页 共 57 页

通信工程专业综合课程设计

1(t ) 同相信道 门

限=0

低通判决门限 filrer 接收信 号 x(t) 复接器 发送二进制序列的估计 低通判决门限 filrer 门限=0

图2.2 QPSK解调原理框图 原理分析:

QPSK接收机由一对共输入地相关器组成。这两个相关器分别提供本地产生地相干参考信号。相关器接收信号1(t)和2(t)

x(t),相

关器输出地x1和x2被用来与门限值0进行比较。如果x1>0,则判决同相信道地输出为符号1;如果x1<0 ,则判决同相信道的输出为符号0。;类似地。如果正交通道也是如此判决输出。最后同相信道和正交信道输出这两个二进制数据序

第 12 页 共 57 页

2(t) 正交信道

通信工程专业综合课程设计

列被复加器合并,重新得到原始的二进制序列。在AWGN信道中,判决结果具有最小的负号差错概率。

2.3调制解调系统总框图

过采样脉冲成型升余弦滤波×相干载波coswt×相干解调coswt低通滤波抽样判决二进制双极性不归零序列串/并变换相干载波sinwt+AWGN/RAY信道并/串变换输出相干解调sinwt过采样脉冲成型升余弦滤波××低通滤波抽样判决

图2.3 QPSK调制与解调系统总框图 3 仿真与分析 3.1 程序仿真流程图

程序仿真流程图是程序仿真的步骤及大体框架,基于流程图,我们可以有效的避免程序次序的先后问题,将主程序分割成很多个子程序来逐一实现,严格按照流程图的次序进行编程仿真。最终将各个子程序综合起来实现最终的程序仿真。

流程图如图3.1所示

第 13 页 共 57 页

通信工程专业综合课程设计

开始i图3.1程序仿真流程图

3.2 QPSK调制方式的Matlab仿真

I 路信号是用余弦载波,由2进制数据流的奇数序列组成;Q路信号用正弦载波,由2进制数据流的偶数序列组成。下面的a是Idata,b就是Qdata,它们分布与各自的载波相乘分别输出 I 路信号和 Q 路信号。I 路信号加上Q路信号就是QPSK输出信号。当 I 路载波信号是0相位时为1,是180°相位时为0;当Q路载波信号是0相位时为1,是180°相位时为0。

调制仿真图如图3.2所示:

结束 第 14 页 共 57 页

通信工程专业综合课程设计

1a序列0-1-11012345678b序列0-1-11012345678合成序列0-1-1012345678 3.2

matlab调制仿真图

3.3 QPSK解调方式Matlab仿真

正交支路和同相支路分别设置两个相关器(或匹配滤波器) ,得到I(t)和Q(t) ,经电平判决和并/串变换后即可恢复原始信息。

I_demo=QPSK_rc_n0.*cos(2*pi*f1*t1); % 解调(相干解调,与载波相乘)

Q_demo=QPSK_rc_n0.*sin(2*pi*f1*t1);

I_recover=conv(I_demo,xrc); % 低通滤波

Q_recover=conv(Q_demo,xrc);

第 15 页 共 57 页

通信工程专业综合课程设计

原序列20-220-220-220-201020304050607080901000102030405060解调后序列7080901000102030405060Q 支路解调7080901000102030405060I 支路解调708090100图3.3 matlab解调仿真图

根据图2.1和图2.2的流程框图设计仿真程序,得出结果并且分析如下: 3.4 理想信道下的仿真

仿真结果出现的波形依次是基带信号,基带信号的功率谱密度,调制信号,调制信号的功率谱密度,解调输出,解调输出功率谱密度。

实验结果如图3.4所示

第 16 页 共 57 页

通信工程专业综合课程设计

图3.4理想信道下的

QPSK仿真结果

第 17 页 共 57 页

通信工程专业综合课程设计

图3.4结果显示,完成了QPSK信号在理想信道上的调制,传输,解调的过程,由于调制过程中加进了载波,因此调制信号的功率谱密度会发生变化。并且可以看出调制解调的结果没有误码。

3.5 高斯信道下的仿真

在高斯信道下的仿真结果出现的波形依次是调制信号,调制信号功率谱密度,高斯噪声曲线,QPSK信号星座图(Awgn)。

结果如图3.4所示:

第 18 页 共 57 页

通信工程专业综合课程设计

图3.5高斯信道下的QPSK仿真结果

由图3.5可以得到高斯信道下的调制信号,高斯噪声,调制输出功率谱密度曲线和QPSK信号的星座图。

在高斯噪声的影响下,调制信号的波形发生了明显的变化,其功率谱密度函数相对于图3.4中的调制信号的功率谱密度只发生了微小的变化,

第 19 页 共 57 页

通信工程专业综合课程设计

原因在于高斯噪声是一个均值为0的白噪声,在各个频率上其功率是均匀的,因此此结果是真确的。星座图反映可接收信号早高斯噪声的影响下发生了误码,但是大部分还是保持了原来的特性。

3.6 先通过瑞利衰落信道再通过高斯信道的仿真

信号先通过瑞丽衰落信道再通过高斯信道的仿真后出现的波形依次是调制信号(Ray+Awgn),调试信号功率谱密度(Ray),QPSK信号星座图(Awgn+Ray),误码率曲线。

仿真结果如图3.6所示:

第 20 页 共 57 页

通信工程专业综合课程设计

图3.6先通过瑞利衰落信道再通过高斯信道的仿真结果

由图3.6可以得到瑞利衰落信道前后的星座图,调制信号的曲线图及其功率谱密度。最后显示的是高斯信道和瑞利衰落信道的误码率对比。由图可知瑞利衰落信道下的误码率比高斯信道下的误码率高。

至此,仿真实验就全部完成。

第 21 页 共 57 页

通信工程专业综合课程设计

4 结束语

本次试验是基于matlab环境下的QPSK调制解调系统的仿真。由此次仿真实验可知,由于高斯信道和瑞利信道的影响,波形发生了明显的变化,功率谱密度也发生变化,星座图可反映在噪声影响下产生的误码。从仿真解调前与调制后的图对比可知仿真正确。通过图3.3可知瑞利信道下的误码率和误比特率明显高于高斯信道,并与理论值基本符合。

随着通信事业的发展,通信系统的设计也会越来越复杂,通过计算机的仿真,可以大大地降低通信过程实验成本。本文设计出一个QPSK仿真模型,以衡量QPSK在理想信道,高斯白噪声信道,以及先通过瑞利再通过高斯信道的性能,通过仿真,可以更好地了解QPSK系统的工作原理,而且为硬件的研制提供一定的参考作用。

第 22 页 共 57 页

通信工程专业综合课程设计

这次的通信专业方向设计让我把通信原理的一些内容又重新复习了一遍,中间出了很多问题,比如用matlab7.0版本就不能把几个图整合到一起,也就是不能使用subplot函数,会出现Undefined

function

or

variable

\"hanalysisparammenu\"的错误.而我后来又换成了matlab7.8就可以实现该功能。我把程序发给老师后老师细心的帮我进行了排错,我错误的以为依靠高版本的优化功能把在低版本不能实现的功能强制执行,所以我还有很多地方需要学习,包括对误码率进行计算的两个函数我也是借鉴的网上的程序。这次方向设计让我学会了很多,也认识到了自己还有很多方面的欠缺,希望在今后的学习和工作中好好努力,尽快的弥补自己的不足。

第 23 页 共 57 页

通信工程专业综合课程设计

致谢

一个月的课程设计很快就过去了,在这期间我学习和掌握了使用MATLAB的工具箱simulink对数字通信系统的仿真。回想起这期间的经历,感慨万千。课程设计是对大学四年所学的知识的一次总结、一次检验。同时也是锻炼和进一步提高自己自学能力的一次宝贵机会。在做本次设计的初期阶段,由于自己在很的多知识

第 24 页 共 57 页

通信工程专业综合课程设计

点上有所遗忘,因此设计的进度相当缓慢,特别是在原理分析和simulink仿真上更是裹足不前。我重点复习并新学习了相关章节的知识,并很快理解了要点,进度由此快速展开。设计后期阶段,在设计思路上卡了壳。此时,查阅了很多资料并多次请教老师,使我得以进行软件调试从而验证了设计的正确可行性并按时完成设计,在此特别感谢魏瑞老师的指导,此外还要感谢学校教研室给我们这次宝贵而难得的机会,也感谢帮助和支持我的同学。在此表示衷心的感谢!。由于理论知识有限、文中难免出现不足之处,敬请各位老师批评指正。

第 25 页 共 57 页

通信工程专业综合课程设计

第 26 页 共 57 页

通信工程专业综合课程设计

参考文

[1]张志勇等.《精通matlab6.5》[J].北京:北京航空航天大学出版社,2003.3. [2]John G.Proakis Masoud Salehi Gerhard Bauch.著 刘树棠译comtemporary communication systems using matlab and simulink.北京:电子工业出版社,2005.4. [3]樊昌信,张甫詡、徐炳祥、吴成柯 .《通信原理》[M] .北京:国防工业出版社,2001.5. [4]王立宁,乐光新,詹菲等.《MATLAB与通信仿真》[M] .北京:人民邮电出版社, 1999 [5] 陈怀琛,吴大正,高西金 《matlab 及在信息课程中的应用》[J]北京:电子工业出版社,2006

[6] 楼天顺、刘晓东、李博涵《基于matlab7.x的系统分析与设计》[M].西安:西安电子科技大学出版社, 2005.5

[7]张肃文主编 .《高频电子线路》[M] .北京:

第 27 页 共 57 页

通信工程专业综合课程设计

高等教育出版社, 2004.11

[8]程佩青编著 .《数字信号处理教程》[M] .北京:清华大学出版社, 2006.3

[9]张辉、曹丽娜、王勇 编著 .《通信原理辅导》[M] 西安.西安电子科技大学出版社, 2004.11

[10]徐明远 .《MATLAB仿真在通信工程中的应用》[J]. 西安. 西安电子科技大学出版社, 2005.6

[11]田丽华等.《编码理论》[J].西安 西安电子科技大学出版社, 2003.8

第 28 页 共 57 页

通信工程专业综合课程设计

附录 %主文件

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%题目:基于matlab环境下的QPSK仿真 %%%%%%%作者: 杨遇春

%%%%%%%完成日期: 2015-01-14 %%%%%%%邮箱:710476235@qq.com

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clear;

第 29 页 共 57 页

通信工程专业综合课程设计

%%%%%%%%%%%%%%%%%%%%% %%% 初始化参数 %%%%%%%%%%%%%%%%%%%%%

T=1; % 基带信号宽度,也就是频率

fc=10/T; % 载波频率 ml=2; % 调制信号类型的一个标志位(选取2的原因见23行) nb=100; % 传输的比特数

delta_T=T/200; % 采样间隔 fs=1/delta_T; % 采样频率 SNR=0; % 信噪比 t=0:delta_T:nb*T-delta_T; % 限定t的取值范围

N=length(t); % 采样数 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%% 调制部分

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 基带信号的产生

第 30 页 共 57 页

通信工程专业综合课程设计

data=randn(1,nb)>0.5; % 调用一个随机函数(0 or 1),输出到一个1*100的矩阵 datanrz=data.*2-1; % 变成极性码

data1=zeros(1,nb/delta_T); % 创建一个1*nb/delta_T的零矩阵 for q=1:nb

data1((q-1)/delta_T+1:q/delta_T)=datanrz(q); % 将极性码变成对应的波形信号 end

% 将基带信号变换成对应波形信号

data0=zeros(1,nb/delta_T); % 创建一个1*nb/delta_T的零矩阵 for q=1:nb

data0((q-1)/delta_T+1:q/delta_T)=data(q); % 将极性码变成对应的波形信号 end

% 发射的信号

data2=abs(fft(data1)); % 串并转换,将奇偶位数据分开

第 31 页 共 57 页

通信工程专业综合课程设计

idata=datanrz(1:ml:(nb-1)); % 将奇偶位分开,因此间隔m1为2 qdata=datanrz(2:ml:nb); % QPSK信号的调制

ich=zeros(1,nb/delta_T/2); % 创建一个1*nb/delta_T/2的零矩阵,以便后面存放奇偶位数据 for i=1:nb/2

ich((i-1)/delta_T+1:i/delta_T)=idata(i); end

for ii=1:N/2

a(ii)=sqrt(2/T)*cos(2*pi*fc*t(ii)); end

idata1=ich.*a; % 奇数位数据与余弦函数相乘,得到一路的调制信号 qch=zeros(1,nb/2/delta_T); for j1=1:nb/2

qch((j1-1)/delta_T+1:j1/delta_T)=qdata(j1); end

第 32 页 共 57 页

通信工程专业综合课程设计

for jj=1:N/2

b(jj)=sqrt(2/T)*sin(2*pi*fc*t(jj)); end

qdata1=qch.*b; % 偶数位数据与余弦函数相乘,得到另一路的调制信号

s=idata1+qdata1; % 将奇偶位数据合并,s即为QPSK调制信号

ss=abs(fft(s)); % 快速傅里叶变换得到频谱

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%% 瑞利衰落信道和高斯信道

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 瑞利衰落信道

ray_ich=raylrnd(0.8,1,nb/2/delta_T); ray_qch=raylrnd(0.8,1,nb/2/delta_T); Ray_idata=idata1.*ray_ich; Ray_qdata=qdata1.*ray_qch; Ray_s=Ray_idata+Ray_qdata;

第 33 页 共 57 页

通信工程专业综合课程设计

%%%%%%%%%%%%%%%%%%%%%%%%%% % 高斯信道

s1=awgn(s,SNR); % 通过高斯信道之后的信号

s11=abs(fft(s1)); % 快速傅里叶变换得到频谱

s111=s1-s; % 高斯噪声曲线

%%%%%%%%%%%%%%%%%%%%%%%%%%

Awgn_s=awgn(Ray_s,SNR); % 通过高斯信道再通过瑞利衰落信道

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%% QPSK 解调部分

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 解调部分(高斯信道)

idata2=s1.*a; % 这里面其实隐藏了一个串并转换的过程

qdata2=s1.*b; % 对应的信号与正余弦信号相乘

第 34 页 共 57 页

通信工程专业综合课程设计

idata3=zeros(1,nb/2); % 建立1*nb数组,以存放解调之后的信号 qdata3=zeros(1,nb/2);

% 抽样判决的过程,与0作比较,data>=0,则置1,否则置0 for n=1:nb/2 %

A1(n)=sum(idata2((n-1)/delta_T+1:n/delta_T)); if

sum(idata2((n-1)/delta_T+1:n/delta_T))>=0 idata3(n)=1;

else idata3(n)=0; end %

A2(n)=sum(qdata2((n-1)/delta_T+1:n/delta_T)); if

sum(qdata2((n-1)/delta_T+1:n/delta_T))>=0 qdata3(n)=1; else qdata3(n)=0;

第 35 页 共 57 页

通信工程专业综合课程设计

end end

% 为了显示星座图,将信号进行处理 idata4=zeros(1,nb/2); qdata4=zeros(1,nb/2); for n=1:nb/2

Awgn_ichsum(n)=sum(idata2((n-1)/delta_T+1:n/delta_T))*delta_T; if Awgn_ichsum(n)>=0 idata4(n)=1; else idata4(n)=0; end

Awgn_qchsum(n)=sum(qdata2((n-1)/delta_T+1:n/delta_T))*delta_T; if Awgn_qchsum(n)>=0 qdata4(n)=1; else qdata4(n)=0; end end

第 36 页 共 57 页

通信工程专业综合课程设计

% 将判决之后的数据存放进数组 demodata=zeros(1,nb);

demodata(1:ml:(nb-1))=idata3; % 存放奇数位

demodata(2:ml:nb)=qdata3; % 存放偶数位

%为了显示,将它变成波形信号(即传输一个1代表单位宽度的高电平)

demodata1=zeros(1,nb/delta_T); % 创建一个1*nb/delta_T的零矩阵 for q=1:nb

demodata1((q-1)/delta_T+1:q/delta_T)=demodata(q); % 将极性码变成对应的波形信号 end

% 累计误码数

% abs(demodata-data)求接收端和发射端 % 数据差的绝对值,累计之后就是误码个数 Awgn_num_BER=sum(abs(demodata-data))

%%%%%%%%%%%%%%%%%%% % 解调部分(瑞利+高斯)

第 37 页 共 57 页

通信工程专业综合课程设计

Ray_idata2=Ray_s.*a; % 这里面其实隐藏了一个串并转换的过程

Ray_qdata2=Ray_s.*b; % 对应的信号与正余弦信号相乘

% Ray_idata3=zeros(1,nb/2); % 建立1*nb数组,以存放解调之后的信号 % Ray_qdata3=zeros(1,nb/2);

% 抽样判决的过程,与0作比较,data>=0,则置1,否则置0 % for n=1:nb/2 %

if

Ray_sum(Ray_idata2((n-1)/delta_T+1:n/delta_T))>=0

% Ray_idata3(n)=1;

% else Ray_idata3(n)=0; % end %

if

Ray_sum(Ray_qdata2((n-1)/delta_T+1:n/delta_T))>=0

% Ray_qdata3(n)=1; % else Ray_qdata3(n)=0;

第 38 页 共 57 页

通信工程专业综合课程设计

% end % end

% 为了显示星座图,将信号进行处理 Ray_idata4=zeros(1,nb/2); Ray_qdata4=zeros(1,nb/2); for n=1:nb/2

Ray_ichsum(n)=sum(idata2((n-1)/delta_T+1:n/delta_T))*delta_T; if Ray_ichsum(n)>=0 Ray_idata4(n)=1; else Ray_idata4(n)=0; end

Ray_qchsum(n)=sum(qdata2((n-1)/delta_T+1:n/delta_T))*delta_T; if Ray_qchsum(n)>=0 Ray_qdata4(n)=1; else Ray_qdata4(n)=0; end end

第 39 页 共 57 页

通信工程专业综合课程设计

% 将判决之后的数据存放进数组 Ray_demodata=zeros(1,nb);

Ray_demodata(1:ml:(nb-1))=Ray_idata4; 存放奇数位

Ray_demodata(2:ml:nb)=Ray_qdata4; % 存放偶数位

%为了显示,将它变成波形信号(即传输一个1代表单位宽度的高电平)

Ray_demodata1=zeros(1,nb/delta_T); % 创建一个1*nb/delta_T的零矩阵 for q=1:nb

Ray_demodata1((q-1)/delta_T+1:q/delta_T)=Ray_demodata(q); % 将极性码变成对应的波形信号 end

% 累计误码数

% abs(demodata-data)求接收端和发射端 % 数据差的绝对值,累计之后就是误码个数 Ray_num_BER=sum(abs(Ray_demodata-data))

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

第 40 页 共 57 页

%

通信工程专业综合课程设计

%%%%%%%%%

%% 误码率计算

%% 调用了cm_sm32();和cm_sm33()函数 %%声明: 函数声明在另外俩个M文件中 %%作用: cm_sm32()用于瑞利信道误码率的计算

%% cm_sm33()用于高斯信道误码率的计算 %% ecoh on/off 作用在于决定是否显示指令内容

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% SNRindB1=0:1:6; SNRindB2=0:0.1:6; % 瑞利衰落信道

for i=1:length(SNRindB1),

[pb,ps]=cm_sm32(SNRindB1(i)); % 比特误码率

smld_bit_ray_err_prb(i)=pb; smld_symbol_ray_err_prb(i)=ps; disp([ps,pb]); echo off;

第 41 页 共 57 页

通信工程专业综合课程设计

end; % 高斯信道 echo on;

for i=1:length(SNRindB1),

[pb1,ps1]=cm_sm33(SNRindB1(i)); smld_bit_awgn_err_prb(i)=pb1; smld_symbol_awgn_err_prb(i)=ps1; disp([ps1,pb1]); echo off; end; % 理论曲线 echo on;

for i=1:length(SNRindB2),

SNR=exp(SNRindB2(i)*log(10)/10); % 信噪比

theo_err_awgn_prb(i)=0.5*erfc(sqrt(SNR)); % 高斯噪声理论误码率

theo_err_ray_prb(i)=0.5*(1-1/sqrt(1+1/SNR)); % 瑞利衰落信道理论误码率

第 42 页 共 57 页

通信工程专业综合课程设计

echo off; end;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

h = spectrum.welch; % 类似于C语言的宏定义,方便以下的调用

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%% 输出显示部分

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% 第一部分(理想) figure(1) subplot(3,2,1);

plot(data0),title('基带信号'); axis([0 20000 -2 2]); subplot(3,2,2);

psd(h,data1,'fs',fs),title('基带信号功率谱密度');

第 43 页 共 57 页

通信工程专业综合课程设计

subplot(3,2,3);

plot(s),title('调制信号'); axis([0 500 -3 3]); subplot(3,2,4);

psd(h,s,'fs',fs),title('调制信号功率谱密度');

subplot(3,2,5);

plot(demodata1),title('解调输出'); axis([0 20000 -2 2]); subplot(3,2,6);

psd(h,demodata1,'fs',fs),title('解调输出功率谱密度');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 通过高斯信道 figure(2) subplot(2,2,1);

plot(s1),title('调制信号(Awgn)'); axis([0 500 -5 5]); subplot(2,2,2);

psd(h,s1,'fs',fs),title('调制信号功率谱密度(Awgn)');

第 44 页 共 57 页

通信工程专业综合课程设计

subplot(2,2,3);

plot(s111),title('高斯噪声曲线'); axis([0 2000 -5 5]); subplot(2,2,4); for i=1:nb/2

plot(idata(i),qdata(i),'r+'),title('QPSK信号星座图(Awgn)');hold on; axis([-2 2 -2 2]);

plot(Awgn_ichsum(i),Awgn_qchsum(i),'*');hold on;

legend('理论值(发射端)','实际值(接收端)'); end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%通过高斯信道再通过瑞利衰落信道 figure(3) subplot(2,2,1)

plot(Ray_s),title('调制信号(Ray+Awgn)'); axis([0 500 -5 5]); subplot(2,2,2);

psd(h,Ray_s,'fs',fs),title('调制信号功率

第 45 页 共 57 页

通信工程专业综合课程设计

谱密度(Ray)'); subplot(2,2,3); for i=1:nb/2

plot(idata(i),qdata(i),'r+'),title('QPSK信号星座图(Awgn+Ray)');hold on; axis([-2 2 -2 2]);

plot(Ray_ichsum(i),Ray_qchsum(i),'*');hold on;

legend('理论值(发射端)','实际值(接收端)'); end

subplot(2,2,4)

semilogy(SNRindB2,theo_err_awgn_prb,'r'),title('误码率曲线');hold on;

semilogy(SNRindB1,smld_bit_awgn_err_prb,'r*');hold on;

semilogy(SNRindB2,theo_err_ray_prb);hold on;

semilogy(SNRindB1,smld_bit_ray_err_prb,'*

第 46 页 共 57 页

通信工程专业综合课程设计

');

xlabel('Eb/No');ylabel('BER');

legend('理论AWGN','仿真AWGN','理论Rayleigh','仿真Rayleigh'); %文件2

function [pb,ps]=cm_sm32(snr_in_dB) % [pb,ps]=cm_sm32(snr_in_dB)

% CM_SM3 finds the probability of bit error and symbol error for

% the given value of snr_in_dB, signal to noise ratio in dB. N=100;

E=1; % energy per symbol numofsymbolerror=0; numofbiterror=0; counter=0;

第 47 页 共 57 页

通信工程专业综合课程设计

snr=10^(snr_in_dB/10); % signal to noise ratio

sgma=sqrt(E/snr)/2; % noise variance

s00=[1 0]; s01=[0 1]; s11=[-1 0]; s10=[0 -1]; % signal mapping

% generation of the data source while(numofbiterror<100) for i=1:N,

temp=rand; % a uniform random variable between 0 and 1 if

(temp<0.25), % with probability 1/4, source output is \"00\"

dsource1(i)=0; dsource2(i)=0; elseif

(temp<0.5), % with probability 1/4, source output is \"01\" dsource1(i)=0; dsource2(i)=1;

第 48 页 共 57 页

通信工程专业综合课程设计

elseif

(temp<0.75), % with probability 1/4, source output is \"10\" dsource1(i)=1; dsource2(i)=0;

else % with probability 1/4, source output is \"11\"

dsource1(i)=1; dsource2(i)=1; end; end;

% detection and the probability of error calculation

for i=1:N,

ray=raylrnd(0.8);

n=sgma*randn(1,2); % 2 normal distributed r.v with 0, variance sgma if

((dsource1(i)==0)

&

(dsource2(i)==0)),

第 49 页 共 57 页

通信工程专业综合课程设计

r=ray*s00+n; elseif

((dsource1(i)==0)

&

(dsource2(i)==1)), r=ray*s01+n; elseif

((dsource1(i)==1)

&

(dsource2(i)==0)), r=s10*ray+n; else

r=s11*ray+n; end;

% The correlation metrics are computed below

c00=dot(r,s00);

c01=dot(r,s01);

c10=dot(r,s10); c11=dot(r,s11);

% The decision on the ith symbol is made next

c_max=max([c00,c01,c10,c11]); if (c00==c_max), decis1=0; decis2=0; elseif decis2=1; elseif decis2=0;

第 50 页 共 57 页

(c01==c_max), (c10==c_max),

decis1=0; decis1=1;

通信工程专业综合课程设计

else decis1=1; decis2=1; end;

% Increment the error counter, if the decision is not correct symbolerror=0; if

symbolerror=1; end; if

symbolerror=1; end; if end; end

counter=counter+1; end

ps=numofsymbolerror/(N*counter); % since there are totally

第 51 页 共 57 页

(decis1~=dsource1(i)),

numofbiterror=numofbiterror+1;

(decis2~=dsource2(i)),

numofbiterror=numofbiterror+1;

(symbolerror==1),

numofsymbolerror=numofsymbolerror+1;

通信工程专业综合课程设计

N symbols

pb=numofbiterror/(2*N*counter); % since 2N bits are transmitted

%文件3

function [pb1,ps1]=cm_sm32(snr_in_dB) % [pb,ps]=cm_sm32(snr_in_dB)

% CM_SM3 finds the probability of bit error and symbol error for

% the given value of snr_in_dB, signal to noise ratio in dB. N=100;

E=1; % energy per symbol

snr=10^(snr_in_dB/10); % signal to noise ratio

sgma=sqrt(E/snr)/2; % noise variance

s00=[1 0]; s01=[0 1]; s11=[-1 0]; s10=[0

第 52 页 共 57 页

通信工程专业综合课程设计

-1]; % signal mapping

% generation of the data source numofsymbolerror=0; numofbiterror=0; counter=0;

while(numofbiterror<100) for i=1:N,

temp=rand; % a uniform random variable between 0 and 1 if

(temp<0.25), % with probability 1/4, source output is \"00\"

dsource1(i)=0; dsource2(i)=0; elseif

(temp<0.5), % with probability 1/4, source output is \"01\" dsource1(i)=0; dsource2(i)=1; elseif

(temp<0.75), %

第 53 页 共 57 页

通信工程专业综合课程设计

with probability 1/4, source output is \"10\" dsource1(i)=1; dsource2(i)=0;

else % with probability 1/4, source output is \"11\"

dsource1(i)=1; dsource2(i)=1; end; end;

% detection and the probability of error calculation

for i=1:N,

% the received signal at the detection, for the ith symbol,is:

n=sgma*randn(1,2); % 2 normal distributed r.v with 0, variance sgma if

((dsource1(i)==0)

&

(dsource2(i)==0)), r=s00+n;

第 页 共 57 页

通信工程专业综合课程设计

elseif ((dsource1(i)==0) &

(dsource2(i)==1)), r=s01+n; elseif

((dsource1(i)==1)

&

(dsource2(i)==0)), r=s10+n; else r=s11+n; end;

% The correlation metrics are computed below

c00=dot(r,s00);

c01=dot(r,s01);

c10=dot(r,s10); c11=dot(r,s11);

% The decision on the ith symbol is made next

c_max=max([c00,c01,c10,c11]); if (c00==c_max), decis1=0; decis2=0; elseif decis2=1; elseif decis2=0;

else decis1=1; decis2=1;

第 55 页 共 57 页

(c01==c_max), (c10==c_max),

decis1=0; decis1=1;

通信工程专业综合课程设计

end;

% Increment the error counter, if the decision is not correct symbolerror=0; if

symbolerror=1; end; if

symbolerror=1; end; if end; end

counter=counter+1; end

ps1=numofsymbolerror/(N*counter); % since there are totally N symbols

第 56 页 共 57 页

(decis1~=dsource1(i)),

numofbiterror=numofbiterror+1;

(decis2~=dsource2(i)),

numofbiterror=numofbiterror+1;

(symbolerror==1),

numofsymbolerror=numofsymbolerror+1;

通信工程专业综合课程设计

pb1=numofbiterror/(2*N*counter); % since 2N bits are transmitted

第 57 页 共 57 页

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务