QPSK调制解调技术的设计与仿真.docx
《QPSK调制解调技术的设计与仿真.docx》由会员分享,可在线阅读,更多相关《QPSK调制解调技术的设计与仿真.docx(20页珍藏版)》请在冰豆网上搜索。
![QPSK调制解调技术的设计与仿真.docx](https://file1.bdocx.com/fileroot1/2023-2/24/df0b65fa-211c-4a85-9763-8f280146f5d7/df0b65fa-211c-4a85-9763-8f280146f5d71.gif)
QPSK调制解调技术的设计与仿真
摘要
在数字信号的调制方式中QPSK是目前最常用的一种数字信号调制方式,它具有较高的频谱利用率、较强的抗干扰性、在电路上实现也较为简单。
调制技术是通信领域里非常重要的环节,一种好的调制技术不仅可以节约频谱资源而且可以提供良好的通信性能。
QPSK调制是一种具有较高频带利用率和良好的抗噪声性能的调制方式,在数字移动通信中已经得到了广泛的应用。
本次设计在理解QPSK调制解调原理的基础上应用MATLAB语言来完成仿真,仿真出了QPSK的调制以及解调的仿真图,包括已调信号的波形,解调后的信号波形,眼图和误码率。
在仿真的基础上分析比较了各种调制方法的性能,并通过比较仿真模型与理论计算的性能,证明了仿真模型的可行性。
关键字:
QPSK;调制解调;MATLAB;分析与仿真
目录
一、设计目的2
二、设计要求3
三、设计原理3
3.1、2PSK数字调制原理3
3.2、QPSK的调制和解调4
四、具体设计和仿真7
4.1、设计思路7
4.2、源程序及其说明8
五、设计结果及分析13
六、设计心得17
七、参考文献18
QPSK解调器课程设计
一、设计目的
(1)巩固和加深学生对QPSK调制解调技术的基本知识的理解和掌握;
(2)掌握编程和程序调试的基本技能;
(3)利用MATLAB进行基本的软件设计,掌握软件设计一般方法,了解软件设计的思路;
(4)掌握书写程序设计报告的能力;
(5)提高运用MATLAB解决实际问题的能力;
二、设计要求
(1)掌握QPSK调制解调技术,用仿真软件设计实现QPSK调制解调器。
(2)深入分析各个小问题,编写个部分程序模块;
(3)对于设计中用到的MATLAB软件,要联系实际问题进行具体介绍;
(4)上机调试,确保程序能正确运行,然后对其进行仿真;
(5)设计完成后提交课程设计报告;
三、设计原理
3.1、2PSK数字调制原理
2PSK信号用载波相位的变化来表征被传输信息的状态,通常规定0相位载波和π相位载波分别表示传“1”和传“0”。
2PSK码元序列的波形与载频和码元持续时间之间的关系有关。
当一个码元中包含有整数个载波周期时,在相邻码元的边界处波形是不连续的,或者说相位是不连续的。
当一个码元中包含的载波周期数比整数个周期多半个周期时,则相位连续。
当载波的初始相位差90度时,即余弦波改为正弦波时,结果类似。
以上说明,相邻码元的相位是否连续与相邻码元的初始相位是否相同不可混为一谈。
只有当一个码元中包含有整数个载波周期时,相邻码元边界处的相位跳变才是由调制引起的相位变化。
2PSK信号的产生方法主要有两种。
第一种叫相乘法,是用二进制基带不归零矩形脉冲信号与载波相乘,得到相位反相的两种码元。
第二种方法叫选择法,是用此基带信号控制一个开关电路,以选择输入信号,开关电路的输入信号是相位相差
的同频载波。
这两种方法的复杂程度差不多,并且都可以用数字信号处理器实现。
图12PSK及2DPSK的调制方框
3.2、QPSK的调制和解调
四进制绝对相移键控(QPSK)直接利用载波的四种不同相位来表示数字信息。
如下:
图2QPSK信号相位φn矢量图
由于每一种相位代表两个比特信息,因此每个四进制码元可以用两个二进制码元的组合来表示。
两个二进制码元中的前一比特用a来表示,后一比特用b表示,则双比特ab与载波相位的关系入下图:
双比特码元
载波相位(φn)
a
b
A方式
B方式
0
1
1
0
0
0
1
1
0o
90o
180o
270o
225o
315o
45o
135o
表1双比特ab与载波相位的关系
四进制信号可等效为两个正交载波进行双边带调制所得信号之和。
这样,就把数字调相和线性调制联系起来,为四相波形的产生提供依据。
(1)QPSK调制原理:
QPSK的调制方法有正交调制方式(双路二相调制合成法或直接调相法)、相位选择法、插入脉冲法等。
这里我们采用正交调制方式。
QPSK的正交调制原理如图3所示:
它可以看成是由两个载波正交的2PSK调制器构成的。
图中串/并变换器将输入的二进制序列分为速度减半的两个并行双极性序列a和b(a,b码元在事件上是对齐的),再分别进行极性变换,把极性码变为双极性码(0→-1,1→+1)然后分别调制到cosωct和sinωct两个载波上,两路相乘器输出的信号是相互正交的抑制载波的双边带调制(DSB)信号,其相位与各路码元的极性有关,分别由a和b码元决定。
经相加电路后输出两路的合成波形,即是4PSK信号。
图中两个乘法器,其中一个用于产生0o与180o两种相位状态,另一个用于产生90o与270o两种相位状态,相加后就可以得到45o,135o,225o,和315o四种相位
图34PSK正交调制原理方框图
图4QPSK信号解调器原理方图
(2)QPSK解调原理
4PSK信号是两个载波正交的2PSK信号的合成。
所以,可以仿照2PSK相干检测法,用两个正交的相干载波分别检测两个分量a和b,然后还原成二进制双比特串行数字信号。
此法称作极性比较法(相干解调加码反变换器方式或相干正交解调发)
在不考虑噪声及传输畸变时,接收机输入的4PSK信号码元可表示为:
yi(t)=Acos(ωct+φn)
输入相位
φn
cosφn
的极性
sinφn
的极性
判决器输出
a
b
45o
135o
225o
315o
+
-
-
+
+
+
-
-
1
0
0
1
1
1
0
0
表2抽样判决器的判决准则
判决器是按极性来判决的。
即正抽样值判为1,负抽样值判为0.两路抽样判决器输出a、b,经并/串变换器就可将并行数据恢复成串行数据。
四、具体设计和仿真
4.1、设计思路
调制和解调的基本原理是利用信号与系统的频域分析和傅里叶变换的基本性质,将信号的频谱进行搬移,使之满足一定需要,从而完成信号的传输或处理。
QPSK数字解调包括:
模数转换、抽取或插值、匹配滤波、时钟和载波恢复等。
根据所处理基带信号的进制不同,分为二进制和多进制,多进制与二进制相比较,其频带利用率更高。
我们应该熟悉掌握QPSK调制解调原理,然后搜集相应的材料,根据基带信号的进制不同,分为二进制和多进制的,首先,应该设计好二进制的,写好二进制设计的源程序,然后在这基础上进行设计,QPSK即为4PSK,即为四进制的,对其频带、位数…进行综合研究。
把源程序修改好,对其进行调试,若有问题,就对其修改好,然后用MATLAB软件对其进行仿真,把波形处理好,然后截取出来。
具体系统框图5所示:
系统框图
图5系统框图
4.2、源程序及其说明
%QPSKsimulationwithGraycodingandsimpleRayleigh(noLOS)multipathandAWGNadded
%Runfromeditordebug(F5)
%JC-7/1/08
%Thepurposeofthism-fileistoshowabasebandsimulatedversionofQPSKwith
%Graycoding(RayleighmultipathandAWGNadded)whichmaygivevalidresults
%(stilltryingtofigureoutifthisprogramiscorrect-multipathsosubjective)
%whencomparedtotheoritical/simulatedAWGNMPSKanalysisSERandBER.
%Thesimulationassumesasinglechannel(nodiversityorFECcodesotherthanGray)
%perfectsystemwithperfectsyncandnointersymbolinterference.Theprogramcontains
%noRootRaisedCosineorRaisedCosinefiltersastheywouldjustadddelay.Ihope
%itwillbeusefultootherstoplaywithandgiveabasicunderstandingoftheproblems
%encounteredinthechannelwithvarioustypesofmultipath.
%Ihaveprovidedcomments,notesandreferencesforreview.Youcanalso
%downloadthefilesim_qpskgray.munderJCfileforBERandSERsimulation
%onlyinAWGNchannel.Whatthisallprovesisthatyouneedatleast17dB
%offademarginat10-3BERwithRayleighmultipathwhencomparingonlywithAWGN
%atSNRof7to8dB.Ofcourseyoucanlowerthiswithantennadiversity,FECcodes,etc
%orpossiblywithDSSSwithpsuedorandomcodesIfyouhavethecommunicationstoolbox
%youcanmakecomparisonswithwhatitgivesinit'splots(seereferences)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%TRANSMITTER
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear
%randn('state',0);%keepsbitsthesameonreruns
nr_data_bits=10000;%0'sand1's,keepevennumber-Takes~1minuteforarunof1million
%64000allowsbitsandcomplexvaluestobeshowninarrayeditor
nr_symbols=nr_data_bits/2;
b_data=(randn(1,nr_data_bits)>.5);%random0'sand1's
b=(b_data);
%MapthebitstobetransmittedintoQPSKsymbolsusingGraycoding.The
%resultingQPSKsymboliscomplex-valued,whereoneofthetwobitsineach
%QPSKsymbolaffectstherealpart(Ichannel)ofthesymbolandtheother
%bittheimaginarypart(Qchannel).Eachpartissubsequently
%modulatedtoformthecomplex-valuedQPSKsymbol.
%
%TheGraymappingresultingfromthetwobranchesareshownwhere
%onesymbolerrorcorrespondstoonebiterrorgoingcounterclockwise.
%imaginarypart(Qchannel)
%^
%|
%10x|x00(oddbit,evenbit)
%|
%-------+------->realpart(Ichannel)
%|
%11x|x01
%|
%Input:
%b=bits{0,1}tobemappedintoQPSKsymbols
%
%Output:
%d=complex-valuedQPSKsymbols0.70711+0.70711i,etc
d=zeros(1,length(b)/2);
%definitionoftheQPSKsymbolsusingGraycoding.
forn=1:
length(b)/2
p=b(2*n);
imp=b(2*n-1);
if(imp==0)&&(p==0)
d(n)=exp(j*pi/4);%45degrees
end
if(imp==1)&&(p==0)
d(n)=exp(j*3*pi/4);%135degrees
end
if(imp==1)&&(p==1)
d(n)=exp(j*5*pi/4);%225degrees
end
if(imp==0)&&(p==1)
d(n)=exp(j*7*pi/4);%315degrees
end
end
qpsk=d;
SNR=0:
30;%changeSNRvalues
BER1=[];
SNR1=[];
SER=[];
SER1=[];
sigma1=[];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Rayleighmultipath/AWGN(AdditiveWhiteGaussianNoise)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
forSNR=0:
length(SNR);%loopoverSNR-changeSNRvalues(0,5,10etcdB)
sigma=sqrt(10.0^(-SNR/10.0));
sigma=sigma/2;%Requiredadivisionby2togetclosetoexactsolutions(Notes)-WHY?
%Isdividingbytwo
(2)legitimate?
%sigma1=[sigma1sigma];
%addRayleighmultipath(noLOS)tosignal(qpsk)
x=randn(1,nr_symbols);
y=randn(1,nr_symbols);
ray=sqrt(0.5*(x.^2+y.^2));%variance=0.5-TrackstheoriticalPDFclosely
mpqpsk=qpsk.*ray;
%addnoisetoQPSKGraycodedsignalswithmultipath
mpsnqpsk=(real(mpqpsk)+sigma.*randn(size(mpqpsk)))+i.*(imag(mpqpsk)+sigma.*randn(size(mpqpsk)));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Receiver
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
r=mpsnqpsk;%receivedsignalplusnoiseandmultipath
%Detector-WhenGraycodingisconfiguredasshown,thedetectionprocess
%becomesfairlysimpleasshown.AsystemwithoutGraycodingrequiresamuch
%morecomplexalgorithimdetectionmethod
bhat=[real(r)<0;imag(r)<0];%detector
bhat=bhat(:
)';
bhat1=bhat;%0'sand1's
ne=sum(b~=bhat1);%numberoferrors
BER=ne/nr_data_bits;
SER=ne/nr_symbols;%considerthistobePs=log2(4)*Pb=2*Pb
SER1=[SER1SER];
BER1=[BER1BER];
SNR1=[SNR1SNR];
end
%Notes:
TheoriticalQPSKEXACTSOLUTIONforseveralSNR=Eb/NopointsonBER/SERplot
%AssumingGraycodingandAWGN
%Pb=Q(sqrt(2SNRbit))
%Ps=2Q(sqrt(2SNRbit))[1-.5Q(sqrt(2SNRbit))]
%SNR=7dB
%SNRbit=10^(7/10)=5.0118getratio
%Pb=Q(sqrt(2*SNRbit))=Q(sqrt(10.0237))=7.7116e-4(biterrorrate)
%whereQ=.5*erfc(sqrt(10.0237)/1.414)
%Ps=2*Q-Q^2=2*(7.7116e-4)-(7.7116e-4)^2=1.5e-3(symbolerrorrate)
%SNR=9dB
%SNRbit=10^(9/10)=7.943getratio
%Pb=Q(sqrt(2*SNRbit))=Q(sqrt(15.866))=3.37e-5(biterrorrate)
%Ps=2*Q-Q^2=2*(3.37e-5)-(3.37e-5)^2=6.74e-5(symbolerrorrate)
%0,1,2,3,4,5,6,8,10,11,12Youcandotherestofthesewithaloopandhold
%orhandploton"SimulationofBER/SERforQPSKwithGraycoding
%(RayleighmultipathandAWGN)graph2
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Plots
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure
(1);
plot(d,'o');%plotconstellationwithoutnoise
axis([-22-22]);
gridon;
xlabel('real');ylabel('imag');
title('QPSKconstellation');
figure
(2);
semilogy(SNR1,BER1,'*',SNR1,SER1,'o');
gridon;
xlabel('SNR=Eb/No(dB)');ylabel('BER/SER');
title('SimulationofBER/SERforQPSKwithGraycoding(RayleighmultipathandAWGN)');
legend('BER-simulated','SER-simulated');
figure(3)
plot(real(qpsk));
gridon;
axis([1200-22]);
title('QPSKsymbols');
xlabel('symbols');ylabel('Amplitude');
figure(4)
plot(20*log10(abs(ray)));
gridon;
axis([1200-3010]);
title('RayleighFadingEnvelope(variance=0.5)');
xlabel('symbols');ylabel('Amplitude/RMS(dB)');
%References
%ThiswebsiteshowsMatlabcodeforvariousfadingchannelsthatmaybehelpful
%http:
//www.urel.feec.vutbr.cz//RADIOENG/fulltexts/2003/03_04_12_16.pdfor
%searchthewebfor"MobileRadioChannelsModelinginMatlab-NikolayKOSTOV".If
%yougothroughandunderstandthispaper,I'msureitwillbehelpful.Ievenlearned
%howtouse-inf.
%PROAKIS,DigitalCommunications4thed.(chapter14)14.4.2FadingMultiphaseSignals
五、设计结果及分析
(1)2PSK调制解调系统的仿真
运行结果如图6所示:
图62PSK调制解调系统的仿真
(2)QPSK调制解调系统的仿真
运行结果如图7所示:
图7QPSK调制解调系统的仿真
(3)利用MATLAB研究QPSK信号
系统方框图如图8所示:
图8系统方框图
运行结果如图9、图10、图11所示:
图9系统仿真结果
实际的传输系统不可能完全的满足无码间串扰传输条件,评价传输系统的一种定性而且简单的方法就是观察信号通过加有噪声的信道后的眼图上右图是信号没有通过任何的系统的眼图,下面是信号通过信噪比为26dB的高斯白噪声后的眼图。
最下面是信号通过信噪比为16dB后的眼图。
通过对比可以知道