您的当前位置:首页正文

四相移相键控(QPSK)调制及解调实验

2024-03-11 来源:意榕旅游网
通 信 对 抗 原 理 实 验 报 告

实验名称:四相移相键控(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、

IQk通过处理后输出的成形波形幅度有两种取值±2/2;B方

式中:0°、90°、180°、270°,则数据k、值±1、0。

表1-1 双比特码元与载波相位关系

双比特码元 A 0 1 1 0 B 0 0 1 1 IQk通过处理后输出的成形波形幅度有三种取

载波相位 A方式 225° 315° 45° 135° B方式 0° 90° 180° 270° (0,1)(1,1)(1,0)45°参考相位(1,1)0°(0,0)参考相位(0,0)(1,0)(0,1)(a)图1-1 QPSK信号的矢量图

(b)

下面以A方式的QPSK为例说明QPSK信号相位的合成方法。

串/并变换器将输入的二进制序列依次分为两个并行序列,然后通过基带成形得到的双极性序列(从D/A转换器输出,幅度为±2/2)。设两个双极性序列中的二进制数字分别为a和b,每一对ab称为一个双比特码元。双极性的a和b脉冲通过两个平衡调制器分别对同相载波及正交载波进行二相调制,得到图1-2中虚线矢量,将两路输出叠加,即得到QPSK调制信号,其相位编码关系如表1-2所示。

b(0)(-1,1)(1,1)a(1)a(0)(-1,-1)b(1)(1,-1)

图1-2 矢量图

表1-2 QPSK信号相位编码逻辑关系 a 1 b a路平衡调制器输出 b路平衡调制器输1 0° 90° 45° -1 1 180° 90° 135° -1 -1 180° 270° 225° ° 1 -1 0° 270出 合成相位 用调相法产生QPSK调制器框图如图1-3所示。

° 315

图1-3 QPSK调制器框图

01010011011100+1-1Q(t)1101110I(t)1000010+1-1 图1-4 二进制码经串并变换后码型

由图1-3可以看到,QPSK的调制器可以看作是由两个BPSK调制器构成,输入的串行二进制信息序列经过串并变换,变成两路速率减半的序列,电平发生器分别产生双极性的二电平信号I(t)和Q(t),然后对Acost和Asin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个点中任何一个,因此,相位必然连续。

QQsin分量左转1/4周IIcos分量右转1/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,误码率曲线图

因篇幅问题不能全部显示,请点此查看更多更全内容