四相移相键控QPSK调制及解调实验.docx
《四相移相键控QPSK调制及解调实验.docx》由会员分享,可在线阅读,更多相关《四相移相键控QPSK调制及解调实验.docx(11页珍藏版)》请在冰豆网上搜索。
四相移相键控QPSK调制及解调实验
通信对抗原理
实验报告
实验名称:
四相移相键控(QPSK)调制及解调实验
学生姓名:
学生学号:
学生班级:
所学专业:
实验日期:
1.实验目的
1.掌握QPSK调制解调原理及特性。
2..熟悉Matlab仿真软件的使用。
2.实验内容
1、编写Matlab程序仿真QPSK调制及相干解调。
2、观察IQ两路基带信号的特征及与输入NRZ码的关系。
3、观察IQ调制解调过程中各信号变化。
4、观察功率谱的变化。
5、分析仿真中观察的数据,撰写实验报告。
3.实验原理
1、QPSK调制原理
QPSK又叫四相绝对相移调制,它是一种正交相移键控。
QPSK利用载波的四种不同相位来表征数字信息。
由于每一种载波相位代表两个比特信息,因此,对于输入的二进制数字序列应该先进行分组,将每两个比特编为一组,然后用四种不同的载波相位来表征。
我们把组成双比特码元的前一信息比特用a代表,后一信息比特用b代表。
双比特码元中两个信息比特ab通常是按格雷码排列的,它与载波相位的关系如表1-1所示,矢量关系如图1-1所示。
图1-1(a)表示A方式时QPSK信号矢量图,图1-1(b)表示B方式时QPSK信号的矢量图。
由于正弦和余弦的互补特性,对于载波相位的四种取值,在A方式中:
45°、135°、225°、315°,则数据
、
通过处理后输出的成形波形幅度有两种取值±
;B方式中:
0°、90°、180°、270°,则数据
、
通过处理后输出的成形波形幅度有三种取值±1、0。
表1-1双比特码元与载波相位关系
双比特码元
载波相位
A
B
A方式
B方式
0
1
1
0
0
0
1
1
225°
315°
45°
135°
0°
90°
180°
270°
图1-1 QPSK信号的矢量图
下面以A方式的QPSK为例说明QPSK信号相位的合成方法。
串/并变换器将输入的二进制序列依次分为两个并行序列,然后通过基带成形得到的双极性序列(从D/A转换器输出,幅度为±
)。
设两个双极性序列中的二进制数字分别为a和b,每一对ab称为一个双比特码元。
双极性的a和b脉冲通过两个平衡调制器分别对同相载波及正交载波进行二相调制,得到图1-2中虚线矢量,将两路输出叠加,即得到QPSK调制信号,其相位编码关系如表1-2所示。
图1-2 矢量图
表1-2 QPSK信号相位编码逻辑关系
a
1
-1
-1
1
b
1
1
-1
-1
a路平衡调制器输出
b路平衡调制器输出
合成相位
0°
90°
45°
180°
90°
135°
180°
270°
225°
0°
270°
315°
用调相法产生QPSK调制器框图如图1-3所示。
图1-3 QPSK调制器框图
图1-4 二进制码经串并变换后码型
由图1-3可以看到,QPSK的调制器可以看作是由两个BPSK调制器构成,输入的串行二进制信息序列经过串并变换,变成两路速率减半的序列,电平发生器分别产生双极性的二电平信号I(t)和Q(t),然后对
和
进行调制,相加后即可得到QPSK信号。
经过串并变换后形成的两个支路如图1-4所示,一路为单数码元,另外一路为偶数码元,这两个支路互为正交,一个称为同相支路,即I支路;另外一路称为正交支路,即Q支路。
2、QPSK相干解调原理
QPSK由于QPSK可以看作是两个正交2PSK信号的合成,故它可以采用与2PSK信号类似的解调方法进行解调,即由两个2PSK信号相干解调器构成,其原理框图如图1-5所示。
图1-5 QPSK解调原理框图
3、星座图
星座显示是示波器显示的数字等价形式,将正交基带信号的I和Q两路分别接入示波器的两个输入通道,通过示波器的“X-Y”的功能即可以很清晰地看到调制信号的星座图。
我们知道QPSK信号可以用正交调制方法产生。
在它的星座图中,四个信号点之间任何过渡都是可能的,如图1-6(a)所示。
OQPSK信号将正交路信号偏移T2/2,结果是消除了已调信号中突然相移180度的现象,每隔T2/2信号相位只可能发生±90度的变化。
因而星座图中信号点只能沿正方形四边移动,如图1-6(b)所示。
MSK信号配置图如图1-6(c)所示,1比特区间仅使用圆周的1/4,信号点必是轴上4个点中任何一个,因此,相位必然连续。
(a)QPSK (b)OQPSK (c)MSK
图1-6 相位转移图
4.实验代码
clearall;
j=sqrt(-1);
data2=randint(1,100);
data2_out=zeros(1,100);
data2_1=zeros(1,50);
data2_2=zeros(1,50);
Ia=zeros(1,200);
Qa=zeros(1,200);
error_rate=zeros(1,50);
mi=0.8;
mq=1.5;
i=1;
whilei<101
ifmod(i,2)==1;
data2_1(1,i/2+0.5)=data2(1,i);
else
data2_2(1,i/2)=data2(1,i);
end
i=i+1;
end
data24=data2_2+data2_1*2;
i=1;
whilei<51
ifdata24(1,i)==0
Ia(1,4*i)=1;
Ia(1,4*i-1)=1;
Ia(1,4*i-2)=1;
Ia(1,4*i-3)=1;
Qa(1,4*i-0)=0;
Qa(1,4*i-1)=0;
Qa(1,4*i-2)=0;
Qa(1,4*i-3)=0;
else
ifdata24(1,i)==1
Ia(1,4*i)=0;
Ia(1,4*i-1)=0;
Ia(1,4*i-2)=0;
Ia(1,4*i-3)=0;
Qa(1,4*i)=-1;
Qa(1,4*i-1)=-1;
Qa(1,4*i-2)=-1;
Qa(1,4*i-3)=-1;
else
ifdata24(1,i)==2
Ia(1,4*i)=0;
Ia(1,4*i-1)=0;
Ia(1,4*i-2)=0;
Ia(1,4*i-3)=0;
Qa(1,4*i)=1;
Qa(1,4*i-1)=1;
Qa(1,4*i-2)=1;
Qa(1,4*i-3)=1;
else
ifdata24(1,i)==3
Ia(1,4*i)=-1;
Ia(1,4*i-1)=-1;
Ia(1,4*i-2)=-1;
Ia(1,4*i-3)=-1;
Qa(1,4*i)=0;
Qa(1,4*i-1)=0;
Qa(1,4*i-2)=0;
Qa(1,4*i-3)=0;
end
end
end
end
i=i+1;
end
Fd=1;
Fs=4;
[num,den]=rcosine(Fd,Fs,'fir',0.5,3);
B=Ia;
Ia=conv(B,num);
Ia=Ia(1,12:
211);
C=Qa;
Qa=conv(C,num);
Qa=Qa(1,12:
211);
subplot(5,1,1);plot(1:
200,Ia);
subplot(5,1,2);plot(1:
200,Qa);
fc=177;
cos_c=zeros(1,200);
sin_c=zeros(1,200);
i=1;
whilei<201
cos_c(1,i)=cos(2*pi*i*fc/4);
sin_c(1,i)=sin(2*pi*i*fc/4);
i=i+1;
end
data_in=Ia.*cos_c+Qa.*sin_c;
forx=0:
1:
49
error_m=0;
fory=1:
100
data_out=awgn(data_in,x/5);
data_out_c=data_out.*cos_c;
data_out_s=data_out.*sin_c;
doc_f=fft(data_out_c);
la_f=fft(Ia);
doc_f_mag=abs(doc_f);
doc_f_ang=angle(doc_f);
fori=51:
1:
149
doc_f_mag(1,i)=doc_f_mag(1,i)/3;
end
I_j=doc_f_mag.*exp(j*doc_f_ang);
Ia_j1=ifft(I_j);
Ia_j1=real(Ia_j1);
fori=1:
50
sum=0;
forn=1:
4;
sum=sum+Ia_j1(1,4*(i-1)+n);
end
sum=sum/4;
ifsum>=mi
F(1,4*i-3)=1;
F(1,4*i-2)=1;
F(1,4*i-1)=1;
F(1,4*i)=1;
else
ifsum<=-mi
F(1,4*i-3)=-1;
F(1,4*i-2)=-1;
F(1,4*i-1)=-1;
继续阅读