《通信系统建模与仿真》大作业——QPSK通信系统仿真通信一班20092420144游贺龙一、基本原理1.1QPSK简介在数字相位调制中,M个信号波形可表示为22(1)/Re2()cos2122()cos1cos2()sin(1)sin2cjftjmMmcccstgteegtftmMgtmftgtmftMM(m=1,2,…,M,0tT)式中,g(t)是信号脉冲形状,2(1)/mmM(m=1,2,…,M)是载波的M个可能的相位,用于传送发送信息。这些信号波形具有相等的能量,即220011()()22TTmgstdtgtdt而且这些信号波形可以表示为两个标准正交信号波形1()ft和2()ft的线性星座图合,即1122()()()mmmstsftsft,式中12()()cos2cgftgtft22()()sin2cgftgtft且二维向量1,2mmmsss为22cos(1),sin(1)22ggmsmmMM(m=1,2,…,M)其中当M=4时就是本文要讨论的4PSK(QPSK),QPSK的载波相位有四种取值,每种取值代表两比特的信号。随着信号的改变,幅度恒定的载波信号的相位在四种取值间跳变。这四个相位的取值为间隔相等的值,比如,0,/2,,3/2,每一个相位值对应于唯一的一对消息比特。有一种变形,称为/4QPSK是通过在每一个符号间隔的载波相位中引入附加的/4相移来使符号同步变得容易些。QPSK信号可以表示为:2()cos(1)2sQPSKcsESttiT0StT,i=1,2,3,4式中SE为单位符号的信号能量,即0StT时间内的信号能量;c为载波角频率,sT为符号持续时间。QPSK信号可以看成是对两个正交的载波进行多电平双边带调制后所得信号的叠加,因此可以用正交调制的方法得到QPSK信号。QPSK信号的星座如图4.1.1所示:图1.1QPSK信号星座图1.2QPSK相位解调与检测从AWGN信道中,在一个信号区间内接收到的带宽信号可以表示为()()()()cos(2)()sin(2)mmccscrtutntutntftntft这里()cnt和()snt是加性噪声的两个正交分量。可以将这个接收信号与1()()cos(2)Tctgtft,2()sin(2)Tcgtft给出的1()t和2()t作相关,两个相关器的输出产生受噪声污损的信号分量,它们可表示为22(cossin)mscssmmrsnnnMM式中cn和sn定义为1()()2cTcngtntdt1()()2sTsngtntdt这两个正交噪声分量()cnt和()snt是零均值,互不相关的高斯随机过程。这样,()()0csEnEn和()0csEnn。cn和sn的方差是220()()2csNEnEn最佳检测器将接收信号向量r投射到M个可能的传输信号向量{ms}之一上去,并选取对应于最大投影的向量。据此,得到相关准则为(,)mmCrsrs,m=0,1,…,M-1由于全部信号都具有相等的能量,因此,对数字相位调制一种等效的检测器标准是计算接收信号向量r=(cr,sr)的相位为arctansrcrr并从信号集{ms}中选取其相位最接近r的信号。在AWGN信道中,因为二相相位调制与二进制PAM是相同的,所以差错概率为202bPQN,式中b是每比特的能量。四相相位调制可以看作两个正交载波上的二相相位调制系统,所以1个比特的差错概率与二相相位调制是一样的。对于M4的符号差错概率不存在简单的闭式表达式。对MP的一种好的近似式是0022sin22sinsMbPQNMkQNM式中2logkM比特/符号。1.3QPSK调制解调原理四相相位键控(QPSK)也称之为正交PSK,其调制原理如图4.1.2所示。图1.2QPSK调制原理图如果输入的二进制信息码流(假设+1V为逻辑1,-1V为逻辑0)串行进入比特分离器,产生2个码流以并行方式输出,分别被送入I(正交支路)通道及Q(同相支路)通道,又各自经过一个平衡调制器,与一个和参考振荡器同频的正交的载波(sint和cost)调制形成了四相相移键控信号即得到平衡器的输出信号后,经过一个带通滤波器,然后再进入行信号叠加,可以得到已经调制的QPSK信号。QPSK的4种(I,Q星座图合为4种[00],[01],[10],[11])输出相位有相等的幅度,而且2个相邻的相位相差值为90度,但是输出相位并不满足2mmM(m=0,1,…,M-1),信号相位移可以偏移45度和-45度,接受端仍可以得到正确的解码,实际中数字输入电压必须比峰值载波电压高出很多,以确保平衡器的正常工作。经过调制的信号通过信道传输到达用户端,需要进行解调,这样一过程是与调制相类似的逆过程。首先,QPSK信号经过功率分离器形成两路相同的信号,进入乘积检验波,用两个正交的载波信号(sint和cost)实现相干解调,然后各自通过一个低通滤波器滤波得到低频和直流的成分,再经过一个并行-串行变换器,得到解调信号。QPSK的解调原理如图4.1.3所示。图1.3QPSK解调原理图目前QPSK调制的实现主要是利用数字电路和专用芯片来完成,通常利用可编程数字电路对基带信号进行码元变换,差分编码,成型滤波等处理后得到同相分量和正交分量,然后将两路信号分量经过数模转换获得模拟信号送入一个正交相乘器与中频载波调制得到中频QPSK调制信号。该方法适合高码率数字信号的传输,但系统的开放性和灵活性较差。在解调过程中,若不考虑信道失真及噪声的影响,加到解调器输入端的接收信号在一个码元持续时间内可表示为:()()cos()()cos()SckkckstgtkTtgtt式中,g(t)为信号的包络;k为码元中的载波相位;c为载波角频率;该信号同时加到两个鉴相(相乘)器上,在上支路积分器输出电压为:1000()cos()cos11()cos(2)cos()22sssTckcTTkkUgtttdtgttdtgtdt取样器在t=sT时刻对IU进行取样,所得到的是两个电压的叠加,即前一积分在sT时刻的积分值加上后一积分在sT时刻的积分值。当持续时间sT内包含整数个载波周期时,前一积分在t=sT时刻的积分值为0,这时测到取样值完全由后一个积分所决定。后一积分在t=sT时刻的积分值是1/2cosk与包络g(t)的面积的乘积。因此I支路取样器的输出电压与cosk成正比,即1coskU同理可得Q支路的输出电压与sink成正比,即sinkkU若判决器按极性判决,正的取样值为“1”,负的取样值为“0”,则可将调相信号解调为相应的数字信号,再经并串变换即可恢复出与发送端完全相同的数字信号。二、仿真1、误码率、时域图、眼图仿真等三、总结对实验结果的简单分析和说明由图可见QPSK仿真误码率曲线和理论误码率曲线重合在一起,QPSK仿真误比特率曲线和理论误比特率曲线也重合在一起,误码率约是误比特率的两倍,说明实验方法是正确可行的。QPSK信号的误码率:QPSK信号的误比特率:误码率是误比特率的两倍。22/2111rerfcPe2/21rerfcPe程序:closeallclcclearallSNR_DB=[0:1:12];sum=1000000;data=randsrc(sum,2,[01]);[a1,b1]=find(data(:,1)==0&data(:,2)==0);message(a1)=-1-j;[a2,b2]=find(data(:,1)==0&data(:,2)==1);message(a2)=-1+j;[a3,b3]=find(data(:,1)==1&data(:,2)==0);message(a3)=1-j;[a4,b4]=find(data(:,1)==1&data(:,2)==1);message(a4)=1+j;scatterplot(message)title('B点信号的星座图')A=1;Tb=1;Eb=A*A*Tb;P_signal=Eb/Tb;NO=Eb./(10.^(SNR_DB/10));P_noise=P_signal*NO;sigma=sqrt(P_noise);forEb_NO_id=1:length(sigma)noise1=sigma(Eb_NO_id)*randn(1,sum);noise2=sigma(Eb_NO_id)*randn(1,sum);receive=message+noise1+noise2*j;resum=0;total=0;m1=find(angle(receive)=pi/2&angle(receive)0);remessage(1,m1)=1+j;redata(m1,1)=1;redata(m1,2)=1;m2=find(angle(receive)pi/2&angle(receive)=pi);remessage(1,m2)=-1+j;redata(m2,1)=0;redata(m2,2)=1;m3=find(angle(receive)-pi&angle(receive)=-pi/2);remessage(1,m3)=-1-j;redata(m3,1)=0;redata(m3,2)=0;m4=find(angle(receive)-pi/2&angle(receive)=0);remessage(1,m4)=1-j;redata(m4,1)=1;redata(m4,2)=0;[resum,ratio1]=symerr(data,redata);pbit(Eb_NO_id)=resum/(sum*2);[total,ratio2]=symerr(message,remessage);pe(Eb_NO_id)=total/sum;endscatterplot(receive)title('C点信号的星座图')Pe=1-(1-1/2*erfc(sqrt(10.^(SNR_DB/10)/2))).^2;Pbit=1/2*erfc(sqrt(10.^(SNR_DB/10)/2));figure(3)semilogy(SNR_DB,pe,':s',SNR_DB,Pe,'-*',SNR_DB,pbit,'-o',SNR_DB,Pbit,':+')legend('QPSK仿真误码率','QPSK理论误码率','QPSK仿真误比特率','QPSK理论误比特率',1)xlabel('信噪比/dB')ylabel('概率P')girdon