您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于Matlab调制与解调系统仿真
西南科技大学课程设计报告课程名称:数字通信课程设计设计名称:基于Matlab的QPSK调制与解调系统仿真姓名:学号:班级:通信指导教师:龙惠民起止日期:西南科技大学信息工程学院制课程设计任务书学生班级:通信学生姓名:学号:设计名称:基于Matlab的QPSK调制与解调系统仿真起止日期:指导教师:龙惠民设计要求:基于Matlab的QPSK调制与解调系统仿真基本要求:分析QPSK调制、解调原理,画出系统框图,推导星座图(设载波相位为0°);产生随机二进制序列,作为待传输的数据,数据的速率是5Mbit/s;载波频率为50MHz,完成QPSK调制,分别画出两路信号经过乘法器后的时域波形,并给出分析、解释;产生加性高斯白噪声,画出时域波形及频谱,将加性高斯白噪声作为传输信道的干扰,画出接收端信号的时域图;完成QPSK解调,输出解码序列,画出信号经过乘法器,低通滤波器后的波形。计算系统信噪比、传输误码率扩展要求:计算在不同系统信噪比下,传输误码率;画出系统信噪比,传输误码率的曲线。课程设计学生日志时间设计内容6-21——6-23熟悉MATLAB软件与数字信号处理得有关资料6-24——6-28用MATLAB编写并调试程序,实现QPSK调制与解调6-29——7-1书写课程设计的论文7-2完善论文,准备答辩7-4答辩课程设计考勤表周星期一星期二星期三星期四星期五课程设计评语表指导教师评语:成绩:指导教师:年月日基于Matlab的QPSK调制与解调系统仿真一、设计目的和意义目的:用MATLAB设计QPSK调制与解调系统。意义:掌握用MATLAB工具来实现数字基带信号的调制与解调,包括QPSK的调制与解调的原理,工作流程,实现方法等。二、设计原理带通二进制键控系统中,每个码元只能传输1b信息,其频带利用率不高。为了提高频带利用率,最有效的办法是使一个码元传输多个比特的信息。这就是多进制键控体制。多进制数字调制是利用多进制数字基带信号去调制载波的振幅,频率或相位。因此,相应地有多进制数字振幅调制(MASK),多进制数字频率调制(MPSK)以及多进制数字相位调制(MPSK)等。QPSK(4PSK,正交相移键控)又叫四相绝对相移调制,是最常用的MPSK,分为/2系统和/4系统两种。它是利用载波的四种不同相位来表征数字信息。由于每一种载波相位代表两个比特信息,故每个四进制码元又被称为双比特码元。QPSK系统可采用多种调制方式:正交调制法,相位选择法,脉冲插入法。在这篇课程设计中采用了正交调制法进行设计。QPSK系统在用正交调制部分需要进行串/并变换,其中串/并变换电路将QPSK调制的两位编码按比特分开,走上下两路,分成的两路序列速率减半,电平发生器分别产生双极性二电平信号I(t)和Q(t),然后各自去调制相互正交的正弦波,再进行矢量合成,即得到QPSK信号。图2-1QPSK调制电路在解调部分可以用两个正交的载波信号实现相干解调。正交路和同相路分别设置两个相关器,得到I(t)和Q(t),经电平判决和并/串变换即可恢复原始信息。图2-2QPSK解调电路数字调制用“星座图”来描述,星座图中定义了一种调制技术的两个基本参数:(1)信号分布;(2)与调制数字比特之间的映射关系。星座图中规定了星座点与传输比特间的对应关系,这种关系称为“映射”,一种调制技术的特性可由信号分布和映射完全定义,即可由星座图来完全定义。QPSK的星座图相位有0,/2,,/4四种,它们分别对应于信息11,01,00和10。为了能和四进制的载波相位配合起来,则需要把二进制数据变换为四进制数据,这就是说需要把二进制数字序列中每两个比特分成一组,共有四种组合,即00,01,10,11,其中每一组称为双比特码元。每一个双比特码元是由两位二进制信息比特组成,它们分别代表四进制四个符号中的一个符号。QPSK中每次调制可传输2个信息比特,这些信息比特是通过载波的四种相位来传递的。解调器根据星座图及接收到的载波信号的相位来判断发送端发送的信息比特。01001110图2-3QPSK星座图三、详细设计步骤1根据QPSK的调制及解调原理及原理框图,MATLAB程序来仿真这个系统应遵循以下几个步骤:调制部分:(1)串/并变换(2)极性转换(3)电平产生(4)两分路分别与载波相乘(5)合并两路信号信道部分:加入高斯白噪声解调部分:(1)接收到的信号分别乘以正弦信号及余弦信号(2)两路信号分别进行抽样判决(3)并/串变换2用MATLAB程序来实现QPSK调制与解调系统仿真nb=8;%生成二进制序列的长度ml=2;%分奇偶位SNR=10;data=randint(1,nb,2);%调用一个随机函数(0or1),产生长度为nb的二进制序列bit=[];%存放产生的二进制波形forn=1:length(data)ifdata(n)==0;%这位为0,产生100个0(产生波形)bita=zeros(1,100);elsedata(n)==1;%为1,产生100个1bita=ones(1,100);endbit=[bitbita];endfigure(1)plot(bit);title('产生的二进制波形');gridon;axis([0100*length(data)-22]);%串并转换,将奇偶位数据分开idata=data(1:ml:(nb-1));%将奇偶位分开,因此间隔m1为2qdata=data(2:ml:nb);%偶数位%偶数位正弦调制f1=20;%单路信号的速率为载波的1/20s=qdata;t1=0:2*pi/99:2*pi;%采样频率为基带信号的100倍cp1=[];mod1=[];mod11=[];bit1=[];forn1=1:length(s)ifs(n1)==0;cp11=-ones(1,100);bit11=zeros(1,100);elses(n1)==1;cp11=ones(1,100);bit11=ones(1,100);endc1=sin(f1*t1);cp1=[cp1cp11];%基带信号的抽样波形mod1=[mod1c1];%载频信号的波形bit1=[bit1bit11];%正弦分路的波形endbpsksin=cp1.*mod1;%QPSK调制信号figure(3)subplot(2,1,1);plot(bit1,'LineWidth',1.5);title('二进制信息');gridon;axis([0100*length(s)-2.52.5]);subplot(2,1,2);plot(bpsksin,'LineWidth',1.5);title('正弦分路信号');gridon;axis([0100*length(s)-2.52.5]);%基数位余弦调制f2=20;%单路信号的速率为载波的1/20s=idata;t2=0:2*pi/99:2*pi;%采样频率为基带信号的100倍cp2=[];mod2=[];mod21=[];bit2=[];forn2=1:length(s)ifs(n2)==0;cp21=-ones(1,100);bit21=zeros(1,100);elses(n2)==1;cp21=ones(1,100);bit21=ones(1,100);endc2=cos(f2*t2);cp2=[cp2cp21];mod2=[mod2c2];%载频信号的波形bit2=[bit2bit21];%正弦分路的波形endbpskcos=cp2.*mod2;%QPSK调制信号figure(2)subplot(2,1,1);plot(bit2,'LineWidth',1.5);title('二进制信息');gridon;axis([0100*length(s)-2.52.5]);subplot(2,1,2);plot(bpskcos,'LineWidth',1.5);title('余弦分路信号');gridon;axis([0100*length(s)-2.52.5]);s=bpsksin+bpskcos;%两路信号合并%高斯白噪声s1=awgn(s,SNR);%通过高斯信道之后的信号s11=abs(fft(s1));%快速傅里叶变换得到频谱s111=s1-s;%高斯噪声曲线ss=abs(fft(s111));%快速傅里叶变换得到频谱h=spectrum.welch;%类似于C语言的宏定义,方便以下的调用figure(4)subplot(2,1,1);plot(s111),title('加性高斯白噪声时域波形');subplot(2,1,2);plot(abs(ss)),title('加性高斯白噪声频谱');figure(6)psd(h,s111,'fs',100),title('加性高斯白噪声功率谱密度');%解调部分(高斯信道)idata2=s1.*mod2;%余弦分路相干解调qdata2=s1.*mod1;%正弦分路相干解调figure(5)subplot(3,1,1);plot(s1);title('接收端信号的时域图');subplot(3,1,3);plot(qdata2);title('接收端正弦分路信号');subplot(3,1,2);plot(idata2);title('接收端余弦分路信号');idata3=zeros(1,nb/2);%建立1*nb数组,以存放解调之后的信号qdata3=zeros(1,nb/2);%抽样判决的过程,与0作比较,data=0,则置1,否则置0forn=1:nb/2ifsum(idata2((100*(n-1)+1):(100*n)))=0%100个抽样点相加与0比较idata3(n)=1;%大于等于0为1elseidata3(n)=0;%小于0为1endifsum(qdata2((100*(n-1)+1):(100*n)))=0qdata3(n)=1;elseqdata3(n)=0;endend%将判决之后的数据存放进数组demodata=zeros(1,nb);demodata(1:ml:(nb-1))=idata3;%存放奇数位demodata(2:ml:nb)=qdata3;%存放偶数位bit3=[];forn3=1:length(demodata)ifdemodata(n3)==0;bit31=zeros(1,100);elsedemodata(n3)==1;bit31=ones(1,100);endbit3=[bit3bit31];endfigure(7)plot(bit3);title('解调出的波形');gridon;axis([0100*length(demodata)-22]);[penumber,perat]=symerr(data,demodata)%计算误码率解误码个数四、设计结果及分析图4-1产生的随机二进制序列图4-2基数位的二进制序列及调制后的波形图4-3偶数位的二进制序列及调制后的波形图4-2和图4-3的两路信号分别是产生的二进制序列的偶数位和基数位,把信号(10000101)分为偶数位(0011)和基数位(1000)后基带信号的速率减半,即为2.5Mbit/s。基数位的基带信号用余弦信号调制,而偶数位的基带信号用正弦信号调制。当基带信号从1变为0或从0变为1时,正弦或余弦信号的相位翻转180度。图4-4加性高斯白噪声的时域波形及频谱图4-5接收端信号的时域图及正余弦两路信号的波形图4-6加性高斯白噪声的功率谱密度图4-7接收端最终解调后的二进制序列QPSK信号的误码率的计算公式:图4-8误比特数及误码率22/2111rerfcPe图4-9传输误码率的曲线五、体会这次的课程设计中我收获了很多的MATLAB实际操作的技巧,我学会了如何逐步调试MATLAB程序以及如何使用MATLAB的help命令来学会使用它自带的很多有用的函数。通过一次次的调试以及排除错误,我对QPSK的调制与解调原理以及如何实现它有了更加深入的认识。因为我对MATLA
本文标题:基于Matlab调制与解调系统仿真
链接地址:https://www.777doc.com/doc-3146449 .html