《毕业设计基于.matlab的QPSK系统仿真.doc》由会员分享,可在线阅读,更多相关《毕业设计基于.matlab的QPSK系统仿真.doc(14页珍藏版)》请在三一办公上搜索。
1、基于MATLAB的QPSK仿真设计与实现一.前言1.1QPSK系统的应用背景简介QPSK是英文Quadrature Phase Shift Keying的缩略语简称.意为正交相移键控.是一种数字调制方式。在19世纪80年代初期,人们选用恒定包络数字调制。这类数字调制技术的优点是已调信号具有相对窄的功率谱和对放大设备没有线性要求,不足之处是其频谱利用率低于线性调制技术。19世纪80年代中期以后,四相绝对移相键控技术以其抗干扰性能强、误码性能好、频谱利用率高等优点,广泛应用于数字微波通信系统、数字卫星通信系统、宽带接入、移动通信及有线电视系统之中。1.2 QPSK实验仿真的意义通过完成设计内容.复
2、习QPSK调制解调的基本原理.同时也要复习通信系统的主要组成部分.了解调制解调方式中最基础的方法。了解QPSK的实现方法及数学原理。并对通信这个概念有个整体的理解.学习数字调制中误码率测试的标准及计算方法。同时还要复习随机信号中时域用自相关函数.频域用功率谱密度来描述平稳随机过程的特性等基础知识.来理解高斯信道中噪声的表示方法.以便在编程中使用。理解QPSK调制解调的基本原理.并使用MATLAB编程实现QPSK信号在高斯信道和瑞利衰落信道下传输.以及该方式的误码率测试。复习MATLAB编程的基础知识和编程的常用算法以及使用MATLAB仿真系统的注意事项.并锻炼自己的编程能力.通过编程完成QPS
3、K调制解调系统的仿真.以及误码率测试.并得出响应波形。在完成要求任务的条件下.尝试优化程序。通过本次实验.除了和队友培养了默契学到了知识之外.还可以将次实验作为一种推广.让更多的学生来深入一层的了解QPSK以至其他调制方式的原理和实现方法。可以方便学生进行测试和对比。足不出户便可以做实验。1.3 实验平台和实验内容实验平台本实验是基于Matlab的软件仿真.只需PC机上安装MATLAB 6.0或者以上版本即可。本实验附带基于Matlab Simulink 模块化仿真.如需使用必须安装simulink 模块实验内容1.构建一个理想信道基本QPSK仿真系统,要求仿真结果有a.基带输入波形及其功率谱
4、b.QPSK信号及其功率谱 c.QPSK信号星座图2.构建一个在AWGN高斯白噪声信道条件下的QPSK仿真系统.要求仿真结果有a.QPSK信号及其功率谱b.QPSK信号星座图c.高斯白噪声信道条件下的误码性能以及高斯白噪声的理论曲线.要求所有误码性能曲线在同一坐标比例下绘制3验可选做扩展内容要求:构建一个先经过Rayleigh瑞利衰落信道.再通过AWGN高斯白噪声信道条件下的条件下的QPSK仿真系统.要求仿真结果有a.QPSK信号及其功率谱b.通过瑞利衰落信道之前和之后的信号星座图.前后进行比较c.在瑞利衰落信道和在高斯白噪声条件下的误码性能曲线.并和二.2.c中所要求的误码性能曲线在同一坐标
5、比例下绘制二、系统实现框图和分析2.1、QPSK调制部分.原理框图如图1所示1tQPSK信号st二进制数据序列极性NRZ电平编码器分离器2t图1原理分析:基本原理及系统结构 QPSK与二进制PSK一样.传输信号包含的信息都存在于相位中。的别的载波相位取四个等间隔值之一.如/4, 3/4,5/4,和7/4。相应的.可将发射信号定义为 0tTSit 0。. 其他其中.i1.2.2.4;E为发射信号的每个符号的能量.T为符号持续时间.载波频率f等于nc/T.nc为固定整数。每一个可能的相位值对应于一个特定的二位组。例如.可用前述的一组相位值来表示格雷码的一组二位组:10.00.01.11。下面介绍Q
6、PSK信号的产生和检测。如果a为典型的QPSK发射机框图。输入的二进制数据序列首先被不归零NRZ电平编码转换器转换为极性形式.即负号1和0分别用和表示。接着.该二进制波形被分接器分成两个分别由输入序列的奇数位偶数位组成的彼此独立的二进制波形.这两个二进制波形分别用a1t.和a2t表示。容易注意到.在任何一信号时间间隔内a1t.和a2t的幅度恰好分别等于Si1和 Si2.即由发送的二位组决定。这两个二进制波形a1t.和a2t被用来调制一对正交载波或者说正交基本函数:1t.2t。这样就得到一对二进制PSK信号。1t和2t的正交性使这两个信号可以被独立地检测。最后.将这两个二进制PSK信号相加.从而
7、得期望的QPSK。2.2、QPSK解调部分.原理框图如图2所示:1t 同相信道 门限0发送二进制序列的估计判决门限低通filrer判决门限复接器接收信 号xt低通filrer2t正交信道 门限0 图2原理分析:QPSK接收机由一对共输入地相关器组成。这两个相关器分别提供本地产生地相干参考信号1t和2t。相关器接收信号xt.相关器输出地x1和x2被用来与门限值0进行比较。如果x10,则判决同相信道地输出为符号1;如果x10 ,则判决同相信道的输出为符号0。;类似地。如果正交通道也是如此判决输出。最后同相信道和正交信道输出这两个二进制数据序列被复加器合并.重新得到原始的二进制序列。在AWGN信道中
8、.判决结果具有最小的负号差错概率。三、实验结果及分析根据图1和图2的流程框图设计仿真程序.得出结果并且分析如下:3.1、理想信道下的仿真.实验结果如图3所示 图3实验结果分析:如图上结果显示.完成了QPSK信号在理想信道上的调制.传输.解调的过程.由于调制过程中加进了载波.因此调制信号的功率谱密度会发生变化。并且可以看出调制解调的结果没有误码。3.2、高斯信道下的仿真.结果如图4所示:图4实验结果分析:由图4可以得到高斯信道下的调制信号.高斯噪声.调制输出功率谱密度曲线和QPSK信号的星座图。在高斯噪声的影响下.调制信号的波形发生了明显的变化.其功率谱密度函数相对于图1中的调制信号的功率谱密度
9、只发生了微小的变化.原因在于高斯噪声是一个均值为0的白噪声.在各个频率上其功率是均匀的.因此此结果是真确的。星座图反映可接收信号早高斯噪声的影响下发生了误码.但是大部分还是保持了原来的特性。3.3、先通过瑞利衰落信道再通过高斯信道的仿真。实验结果如图5所示:图5实验结果分析:由图5可以得到瑞利衰落信道前后的星座图.调制信号的曲线图及其功率谱密度。最后显示的是高斯信道和瑞利衰落信道的误码率对比。由图可知瑞利衰落信道下的误码率比高斯信道下的误码率高。至此.仿真实验就全部完成。四、致谢感谢指导老师*老师对我们的指导.帮我们解决了不少的问题。也感谢队友之间的相互合作。希望以后再接再厉.努力学习。附录参
10、考文献:1、MATLAB 宝典 陈杰等编著 电子工业出版社2、MATLAB信号处理 刘波, 文忠, 曾涯编著 北京电子工业出版社3、数字信号处理的MATLAB实现万永革编著北京科学出版社4、网上资料Simulink 仿真数据:1、调制框图.如图6所示图62、解调模块如图7所示图73、调制信号及其功率谱密度如图8所示图84、调制信号的星座图如图9所示:图95、基带信号与调制信号之间的关系如图10所示:图10附录2:%主文件%题目: 理想信道 瑞利衰落信道 高斯信道 下的QPSK仿真%作者: 陈镇沅%完成日期: 2011-4-6%clear;% 初始化参数%T=1; % 基带信号宽度.也就是频率f
11、c=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; % 采样数 % 调制部分% 基带信号的产生data=randn0.5; % 调用一个随机函数0 or 1.输出到一个1*100的矩阵datanrz=data.*2-1; % 变成极性码data1=zeros; % 创建一个1*nb/delta_T的零矩阵for q=1:nb dat
12、a1/delta_T+1:q/delta_T=datanrz; % 将极性码变成对应的波形信号end % 将基带信号变换成对应波形信号data0=zeros; % 创建一个1*nb/delta_T的零矩阵for q=1:nb data0/delta_T+1:q/delta_T=data; % 将极性码变成对应的波形信号end % 发射的信号data2=absfft;% 串并转换.将奇偶位数据分开idata=datanrz1:ml:; % 将奇偶位分开.因此间隔m1为2 qdata=datanrz;% QPSK信号的调制ich=zeros; % 创建一个1*nb/delta_T/2的零矩阵.以便
13、后面存放奇偶位数据for i=1:nb/2 ich/delta_T+1:i/delta_T=idata;endfor ii=1:N/2 a=sqrt*cos2*pi*fc*t; endidata1=ich.*a; % 奇数位数据与余弦函数相乘.得到一路的调制信号qch=zeros;for j1=1:nb/2 qch/delta_T+1:j1/delta_T=qdata;endfor jj=1:N/2 b=sqrt*sin2*pi*fc*t;endqdata1=qch.*b; % 偶数位数据与余弦函数相乘.得到另一路的调制信号s=idata1+qdata1; % 将奇偶位数据合并.s即为QPSK
14、调制信号ss=absfft; % 快速傅里叶变换得到频谱% 瑞利衰落信道和高斯信道% 瑞利衰落信道ray_ich=raylrnd;ray_qch=raylrnd;Ray_idata=idata1.*ray_ich;Ray_qdata=qdata1.*ray_qch;Ray_s=Ray_idata+Ray_qdata;% 高斯信道 s1=awgn; % 通过高斯信道之后的信号s11=absfft; % 快速傅里叶变换得到频谱 s111=s1-s; % 高斯噪声曲线%Awgn_s=awgn; % 通过高斯信道再通过瑞利衰落信道% QPSK 解调部分% 解调部分高斯信道idata2=s1.*a; %
15、 这里面其实隐藏了一个串并转换的过程qdata2=s1.*b; % 对应的信号与正余弦信号相乘idata3=zeros; % 建立1*nb数组.以存放解调之后的信号qdata3=zeros;% 抽样判决的过程.与0作比较.data=0,则置1.否则置0for n=1:nb/2% A1=sumidata2/delta_T+1:n/delta_T; if sumidata2/delta_T+1:n/delta_T=0 idata3=1; else idata3=0; end% A2=sumqdata2/delta_T+1:n/delta_T; if sumqdata2/delta_T+1:n/de
16、lta_T=0 qdata3=1; else qdata3=0; endend % 为了显示星座图,将信号进行处理idata4=zeros;qdata4=zeros;for n=1:nb/2 Awgn_ichsum=sumidata2/delta_T+1:n/delta_T*delta_T; if Awgn_ichsum=0 idata4=1; else idata4=0; end Awgn_qchsum=sumqdata2/delta_T+1:n/delta_T*delta_T; if Awgn_qchsum=0 qdata4=1; else qdata4=0; endend% 将判决之后的
17、数据存放进数组demodata=zeros;demodata1:ml:=idata3; % 存放奇数位demodata=qdata3; % 存放偶数位%为了显示.将它变成波形信号即传输一个1代表单位宽度的高电平demodata1=zeros; % 创建一个1*nb/delta_T的零矩阵for q=1:nb demodata1/delta_T+1:q/delta_T=demodata; % 将极性码变成对应的波形信号end % 累计误码数% abs求接收端和发射端% 数据差的绝对值.累计之后就是误码个数Awgn_num_BER=sumabs % 解调部分瑞利+高斯Ray_idata2=Ray_
18、s.*a; % 这里面其实隐藏了一个串并转换的过程Ray_qdata2=Ray_s.*b; % 对应的信号与正余弦信号相乘% Ray_idata3=zeros; % 建立1*nb数组.以存放解调之后的信号% Ray_qdata3=zeros;% 抽样判决的过程.与0作比较.data=0,则置1.否则置0% for n=1:nb/2% if Ray_sumRay_idata2/delta_T+1:n/delta_T=0% Ray_idata3=1;% else Ray_idata3=0; % end% if Ray_sumRay_qdata2/delta_T+1:n/delta_T=0% Ray
19、_qdata3=1;% else Ray_qdata3=0;% end% end % 为了显示星座图,将信号进行处理Ray_idata4=zeros;Ray_qdata4=zeros;for n=1:nb/2 Ray_ichsum=sumidata2/delta_T+1:n/delta_T*delta_T; if Ray_ichsum=0 Ray_idata4=1; else Ray_idata4=0; end Ray_qchsum=sumqdata2/delta_T+1:n/delta_T*delta_T; if Ray_qchsum=0 Ray_qdata4=1; else Ray_qda
20、ta4=0; endend % 将判决之后的数据存放进数组Ray_demodata=zeros;Ray_demodata1:ml:=Ray_idata4; % 存放奇数位Ray_demodata=Ray_qdata4; % 存放偶数位%为了显示.将它变成波形信号即传输一个1代表单位宽度的高电平Ray_demodata1=zeros; % 创建一个1*nb/delta_T的零矩阵for q=1:nb Ray_demodata1/delta_T+1:q/delta_T=Ray_demodata; % 将极性码变成对应的波形信号end % 累计误码数% abs求接收端和发射端% 数据差的绝对值.累计
21、之后就是误码个数Ray_num_BER=sumabs % % 误码率计算% 调用了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, pb,ps=cm_sm32SNRindB1; % 比特误码率 smld_bit_ray_err_prb=pb; smld_symbol_ray_err_prb=ps; disp; ec
22、ho off; end;% 高斯信道 echo on;for i=1:length, pb1,ps1=cm_sm33SNRindB1; smld_bit_awgn_err_prb=pb1; smld_symbol_awgn_err_prb=ps1; disp; echo off;end;% 理论曲线echo on;for i=1:length, SNR=expSNRindB2*log/10; % 信噪比 theo_err_awgn_prb=0.5*erfcsqrt; % 高斯噪声理论误码率 theo_err_ray_prb=0.5*1-1/sqrt; % 瑞利衰落信道理论误码率 echo of
23、f;end;%h = spectrum.welch; % 类似于C语言的宏定义.方便以下的调用 % 输出显示部分% 第一部分理想figuresubplot;plot,title;axis;subplot;psd,title;subplot;plot,title;axis;subplot;psd,title;subplot;plot,title;axis;subplot;psd,title;% 通过高斯信道figuresubplot;plot,title调制信号;axis;subplot;psd,title调制信号功率谱密度;subplot;plot,title;axis;subplot;for
24、 i=1:nb/2plotidata,qdata,r+,title;hold on;axis;plotAwgn_ichsum,Awgn_qchsum,*;hold on;legend;end%通过高斯信道再通过瑞利衰落信道 figure subplotplot,title调制信号;axis;subplot;psd,title调制信号功率谱密度;subplot;for i=1:nb/2plotidata,qdata,r+,title;hold on;axis;plotRay_ichsum,Ray_qchsum,*;hold on;legend;end subplot semilogy,title
25、;hold on; semilogy;hold on; semilogy;hold on; semilogy; xlabel;ylabel; legend;%文件2function pb,ps=cm_sm32% pb,ps=cm_sm32% 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 symbolnumofsymbolerror=0;numofbi
26、terror=0;counter=0;snr=10; % signal to noise ratiosgma=sqrt/2; % noise variances00=1 0; s01=0 1; s11=-1 0; s10=0 -1; % signal mapping% generation of the data sourcewhilenumofbiterrorfor i=1:N, temp=rand; % a uniform random variable between 0 and 1 if temp, % with probability 1/4, source output is 00
27、 dsource1=0; dsource2=0; elseif temp, % with probability 1/4, source output is 01 dsource1=0; dsource2=1; elseif temp, % with probability 1/4, source output is 10 dsource1=1; dsource2=0; else % with probability 1/4, source output is 11 dsource1=1; dsource2=1; end;end;% detection and the probability
28、of error calculationfor i=1:N, ray=raylrnd; n=sgma*randn; % 2 normal distributed r.v with 0, variance sgma if dsource1=0 & dsource2=0, r=ray*s00+n; elseif dsource1=0 & dsource2=1, r=ray*s01+n; elseif dsource1=1 & dsource2=0, r=s10*ray+n; else r=s11*ray+n; end; % The correlation metrics are computed
29、below c00=dot; c01=dot; c10=dot; c11=dot; % The decision on the ith symbol is made next c_max=max; if , decis1=0; decis2=0; elseif , decis1=0; decis2=1; elseif , decis1=1; decis2=0; else decis1=1; decis2=1; end; % Increment the error counter, if the decision is not correct symbolerror=0; if decis1=d
30、source1, numofbiterror=numofbiterror+1; symbolerror=1; end; if decis2=dsource2, numofbiterror=numofbiterror+1; symbolerror=1; end; if , numofsymbolerror=numofsymbolerror+1; end;endcounter=counter+1;endps=numofsymbolerror/; % since there are totally N symbolspb=numofbiterror/; % since 2N bits are tra
31、nsmitted %文件3function pb1,ps1=cm_sm32% pb,ps=cm_sm32% 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 symbolsnr=10; % signal to noise ratiosgma=sqrt/2; % noise variances00=1 0; s01=0 1; s11=-1 0; s10=0 -1; % signal mapping% generation of the data source