四相移相键控(QPSK)调制及解调实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通信对抗原理
实验报告
实验名称:四相移相键控(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°,则
数据k I
、k Q 通过处理后输出的成形波形幅度有两种取值±2/2;B 方式中:0°、90°、180°、270°,则数据k I
、k Q 通过处理后输出的成形波形幅度有三种取值±1、0。
表
(0,1)
(1,1)
(0,0)
参考相位
参考相位
(a)
(b)
图1-1 QPSK 信号的矢量图
下面以A 方式的QPSK 为例说明QPSK 信号相位的合成方法。
串/并变换器将输入的二进制序列依次分为两个并行序列,然后通过基带成形得到的双极性序列(从D/A 转换器输出,幅度为±2/2)。
设两个双极性序列中的二进制数字分别为a 和b,每一对ab 称为一个双比特码元.双极性的a 和b 脉冲通过两个平衡调制器分别对同相载波及正交载波进行二相调制,得到图1—2中虚线矢量,将两路输出叠加,即得到QPSK 调制信号,其相位编码关系如表1-2所示。
a(1)b(1)
b(0)
a(0)
图1-2 矢量图
表1—2 QPSK
用调相法产生
图1—3 QPSK调制器框图
10
010********
由图1-3可以看到,QPSK的调制器可以看作是由两个BPSK调制器构成,输入的串行二进制信息序列经过串并变换,变成两路速率减半的序列,电平发生器分别产生双极性的二电平信号I(t)和Q(t),然后对
A tω进行调制,相加后即可得到QPSK信号。
经过串并变换后形成的两个支路如图1—4所示,cos
A tω和sin
一路为单数码元,另外一路为偶数码元,这两个支路互为正交,一个称为同相支路,即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.实验代码
clear all;
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;
while i<101
if mod(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;
while i〈51
if data24(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
if data24(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
if data24(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
if data24(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;
while i<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;
for x=0:1:49
error_m=0;
for y=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);
for i=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);
for i=1:50
sum=0;
for n=1:4;
sum=sum+Ia_j1(1,4*(i—1)+n); end
sum=sum/4;
if sum>=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
if sum<=-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
F(1,4*i-3)=0;
F(1,4*i—2)=0;
F(1,4*i-1)=0;
F(1,4*i)=0;
end
end
end
Ia_j=F;
dos_f=fft(data_out_s);
Qa_f=fft(Qa);
dos_f_mag=abs(dos_f);
dos_f_ang=angle(dos_f);
for i=51:1:149
dos_f_mag(1,i)=dos_f_mag(1,i)/3;end
Q_j=dos_f_mag。
*exp(j*dos_f_ang);
Qa_j1=ifft(Q_j);
Qa_j1=2*real(Qa_j1);
for i=1:50
sum=0;
for n=1:4;
sum=sum+Qa_j1(1,4*(i—1)+n); end
sum=sum/4;
if sum>=mq
G(1,4*i-3)=1;
G(1,4*i-2)=1;
G(1,4*i-1)=1;
G(1,4*i)=1;
else
if sum<=—mq
G(1,4*i—3)=—1;
G(1,4*i-2)=—1;
G(1,4*i—1)=—1;
G(1,4*i)=-1;
else
G(1,4*i-3)=0;
G(1,4*i—2)=0;
G(1,4*i-1)=0;
G(1,4*i)=0;
end
end
end
Qa_j=G;
for i=1:50
if Ia_j(1,4*i-2)==1&&Qa_j(1,4*i-2)==0
data2_out(1,2*i—1)=0;
data2_out(1,2*i)=0;
else
if Ia_j(1,4*i-2)==0&&Qa_j(1,4*i—2)==1
data2_out(1,2*i-1)=1;
data2_out(1,2*i)=0;
else
if Ia_j(1,4*i—2)==—1&&Qa_j(1,4*i—2)==0 data2_out(1,2*i—1)=1;
data2_out(1,2*i)=1;
else
if Ia_j(1,4*i—2)==0&&Qa_j(1,4*i-2)==—1 data2_out(1,2*i—1)=0;
data2_out(1,2*i)=1;
end
end
end
end
end
for i=1:100
if data2(1,i)~=data2_out(1,i);
error_m=error_m+1;
end
end
end
error_rate(1,x+1)=error_m/10000;
end
subplot(5,1,3);plot(1:200,Ia_j);
subplot(5,1,4);plot(1:200,Qa_j);
subplot(5,1,5);semilogy(0:0。
2:9.8,error_rate);
5.实验结果
I,Q,误码率曲线图。