您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 16QAM调制与解调的MATLAB实现及调制性能分析
通信原理课程设计报告书课题名称16QAM调制与解调的MATLAB实现及调制性能分析姓名学号学院通信与电子工程学院专业通信工程指导教师李梦醒2012年01月01日一、设计任务及要求:※※※※※※※※※※※※※※※※※※※※※※※※2009级通信工程专业通信原理课程设计16QAM调制与解调的MATLAB实现及调制性能分析设计任务:利用MATLAB设计一个16QAM调制与解调系统,并对其进行性能分析。要求:1.设计一个16QAM调制与解调系统。2.设计程序时必须使得程序尽可能的简单。3.利用MATLAB进行程序编写并对系统进行仿真分析。指导教师签名:20年月日二、指导教师评语:指导教师签名:2010年月日三、成绩验收盖章2010年月日1设计目的(1)掌握16QAM调制与解调的原理。(2)掌握星座图的原理并能熟悉星座图的应用。(3)熟悉并掌握MATLAB的使用方法。(4)通过对16QAM调制性能的分析了解16QAM调制相对于其它调制方式的优缺点。2设计原理正交振幅调制(QuadratureAmplitudeModulation,QAM)是一种振幅和相位联合键控。虽然MPSK和MDPSK等相移键控的带宽和功率方面都具有优势,即带宽占用小和比特噪声比要求低。但是由图1可见,在MPSK体制中,随着8/15图18PSK信号相位M的增大,相邻相位的距离逐渐减小,使噪声容限随之减小,误码率难于保证。为了改善在M大时的噪声容限,发展出了QAM体制。在QAM体制中,信号的振幅和相位作为两个独立的参量同时受到调制。这种信号的一个码元可以表示为0()cos()(1)kkkstAtkTtkT(2—1)式中:k=整数;kA和k分别可以取多个离散值。式(2—1)可以展开为00()coscossinsinkkkkkstAtAt(2—2)令Xk=Akcosk,Yk=-Aksink则式(2—1)变为00()cossinkkkstXtYt(2—3)8/58/38/8/78/98/118/13kX和kY也是可以取多个离散的变量。从式(2—3)看出,()kst可以看作是两个正交的振幅键控信号之和。在式(2—1)中,若k值仅可以取/4和-/4,Ak值仅可以取+A和-A,则此QAM信号就成为QPSK信号,如图2所示:图24QAM信号矢量图所以,QPSK信号就是一种最简单的QAM信号。有代表性的QAM信号是16进制的,记为16QAM,它的矢量图示于下图中:图316QAM信号矢量图图中用黑点表示每个码元的位置,并且示出它是由两个正交矢量合成的。类似地,有64QAM和256QAM等QAM信号,如图4、图5所示。它们总称为MQAMAk调制。由于从其矢量图看像是星座,故又称星座调制。16QAM信号的产生方法主要有两种。第一种是正交调幅法,即用两路独立的正交4ASK信号叠加,形成16QAM信号,如图6所示。第二种方法是复合相图6正交调幅法移法,它用两路独立的QPSK信号叠加,形成16QAM信号,如图7所示。图中图7复合相移法图464QAM信号矢量图图5256QAM信号矢量图AMAMAM虚线大圆上的4个大黑点表示一个QPSK信号矢量的位置。在这4个位置上可以叠加上第二个QPSK矢量,后者的位置用虚线小圆上的4个小黑点表示。3设计过程3.1设计思路由设计原理中可知MQAM调制又称为星座调制,故我们在设计16QAM调制系统时就可以星座图来进行编程。下面我们就借用如图8所示的星座图设计一个16QAM调制系统。图816QAM星座在图中共有16个点,每个点用4个比特表示,代表调制以后的一个矢量位置(这个点拥有唯一的振幅与相位)。因此我们可以把横轴看作是实轴,纵轴看作虚轴。由于每个点与跟它相邻的四个点是等距,且设为2,则每个点都可用一个虚数进行表示。例如点0000可用-1-j表示,这个虚数的模就是相当于16QAM信号的振幅,相角就相当于16QAM信号的相位。所以16QAM的调制过程就可以用如下语句进行描述:ifA(1,b:c)==[0000]B(k)=-1-1i;elseifA(1,b:c)==[0001]B(k)=-3-1i;elseifA(1,b:c)==[0010]B(k)=-1-3i;elseifA(1,b:c)==[0011]B(k)=-3-3i;elseifA(1,b:c)==[0100]B(k)=1-1i;elseifA(1,b:c)==[0101]B(k)=1-3i;elseifA(1,b:c)==[0110]B(k)=3-1i;elseifA(1,b:c)==[0111]B(k)=3-3i;elseifA(1,b:c)==[1000]B(k)=-1+1i;elseifA(1,b:c)==[1001]B(k)=-1+3i;elseifA(1,b:c)==[1010]B(k)=-3+1i;elseifA(1,b:c)==[1011]B(k)=-3+3i;elseifA(1,b:c)==[1100]B(k)=1+1i;elseifA(1,b:c)==[1101]B(k)=3+1i;elseifA(1,b:c)==[1110]B(k)=1+3i;elseifA(1,b:c)==[1111]B(k)=3+3i;end当调制以后的信号经过信道加噪以后,我们必须对其进行解调。由于加噪了的缘故,调制以后的信号不再是原来的信号,而应该有不同。因此在解调时不能简单的将上述过程逆转,即不能由-1-j就判断为0000。而应该对虚数的实部和虚部设定一个范围后再进行判断。这个范围边界的选取原理我们可以借用量化的概念,取相邻虚数的实部的平均数和虚部的平均数。以下为16QAM解调过程的程序语句:if(real(D(n))-2)&&(imag(D(n))-2)C(1,d:e)=[0011];elseif(real(D(n))-2)&&(imag(D(n))0)C(1,d:e)=[0001];elseif(real(D(n))-2)&&(imag(D(n))2)C(1,d:e)=[1010];elseif(real(D(n))-2)&&(imag(D(n))=2)C(1,d:e)=[1011];elseif(real(D(n))0)&&(imag(D(n))-2)C(1,d:e)=[0010];elseif(real(D(n))0)&&(imag(D(n))0)C(1,d:e)=[0000];elseif(real(D(n))0)&&(imag(D(n))2)C(1,d:e)=[1000];elseif(real(D(n))0)&&(imag(D(n))=2)C(1,d:e)=[1001];elseif(real(D(n))2)&&(imag(D(n))-2)C(1,d:e)=[0101];elseif(real(D(n))2)&&(imag(D(n))0)C(1,d:e)=[0100];elseif(real(D(n))2)&&(imag(D(n))2)C(1,d:e)=[1100];elseif(real(D(n))2)&&(imag(D(n))=2)C(1,d:e)=[1110];elseif(real(D(n))=2)&&(imag(D(n))-2)C(1,d:e)=[0111];elseif(real(D(n))=2)&&(imag(D(n))0)C(1,d:e)=[0110];elseif(real(D(n))=2)&&(imag(D(n))2)C(1,d:e)=[1101];elseif(real(D(n))=2)&&(imag(D(n))=2)C(1,d:e)=[1111];end3.2设计总程序clearall;closeall;N=40000;K=4*N;%信息长度L=7*N;W=7*N/4;E=randsrc(1,K,[0,1]);%信源´B=zeros(1,W);%16QAM调制后的信号C=zeros(1,L);%16QAM解调后的信号num=zeros(20,1);%误比特数ber=zeros(20,1);%误比特率forSNR=1:1:20%汉明编码A=encode(E,7,4,'hamming/binary');%16QAM调制过程fork=1:Wb=4*k-3;c=4*k;ifA(1,b:c)==[0000]B(k)=-1-1i;elseifA(1,b:c)==[0001]B(k)=-3-1i;elseifA(1,b:c)==[0010]B(k)=-1-3i;elseifA(1,b:c)==[0011]B(k)=-3-3i;elseifA(1,b:c)==[0100]B(k)=1-1i;elseifA(1,b:c)==[0101]B(k)=1-3i;elseifA(1,b:c)==[0110]B(k)=3-1i;elseifA(1,b:c)==[0111]B(k)=3-3i;elseifA(1,b:c)==[1000]B(k)=-1+1i;elseifA(1,b:c)==[1001]B(k)=-1+3i;elseifA(1,b:c)==[1010]B(k)=-3+1i;elseifA(1,b:c)==[1011]B(k)=-3+3i;elseifA(1,b:c)==[1100]B(k)=1+1i;elseifA(1,b:c)==[1101]B(k)=3+1i;elseifA(1,b:c)==[1110]B(k)=1+3i;elseifA(1,b:c)==[1111]B(k)=3+3i;endend%信道加噪D=awgn(B,SNR);%16QAM解调过程forn=1:Wd=4*n-3;e=4*n;if(real(D(n))-2)&&(imag(D(n))-2)C(1,d:e)=[0011];elseif(real(D(n))-2)&&(imag(D(n))0)C(1,d:e)=[0001];elseif(real(D(n))-2)&&(imag(D(n))2)C(1,d:e)=[1010];elseif(real(D(n))-2)&&(imag(D(n))=2)C(1,d:e)=[1011];elseif(real(D(n))0)&&(imag(D(n))-2)C(1,d:e)=[0010];elseif(real(D(n))0)&&(imag(D(n))0)C(1,d:e)=[0000];elseif(real(D(n))0)&&(imag(D(n))2)C(1,d:e)=[1000];elseif(real(D(n))0)&&(imag(D(n))=2)C(1,d:e)=[1001];elseif(real(D(n))2)&&(imag(D(n))-2)C(1,d:e)=[0101];elseif(real(D(n))2)&&(imag(D(n))0)C(1,d:e)=[0100];elseif(real(D(n))2)&&(imag(D(n))2)C(1,d:e)=[1100];elseif(real(D(n))2)&&(imag(D(n))=2)C(1,d:e)=[1110];elseif(real(D(n))=2)&&(imag(D(n))-2)C(1,d:e)=[0111];elseif(real(D(n))=2)&&(imag(D(n))0)C(1,d:e)=[0110];elseif(real(D(n))=2)&&(imag(D(n))2)C(1,d:e)=[1101];elseif(real(D(n))=2)&&(imag(D(n))=2)C(1,d:e)=[1111];endend%汉明译码F=decode(C,7,4,'hamming/binary');%求误比特率[num(SNR,1),ber(SNR,1)]=biterr(F,E);end%误比特数图plot
本文标题:16QAM调制与解调的MATLAB实现及调制性能分析
链接地址:https://www.777doc.com/doc-4778171 .html