???2E/tcos[2?ft?(2i?1)],0?t?TbSt(t)??4?0,其他?
其中,i=1,2,3,4;E是发射信号的每个符号的能量,T为符号的持续时间,载波频率f等于nc/T,nc为固定整数。每一个可能的相位值对应于一个特定的二位组。下面介绍QPSK信号的产生和检测。如图为典型的QPSK发射机框图。输入的二进制数据序列首先被不归零(NRZ)电平编码转换器转换为极性形式,即负号1和0分别用
Eb和-
Eb表示。该二进制波形被分接器分成两个分别由输
入序列的奇数位偶数位组成的彼此独立的二进制波形,这两个二进制波形分别用a1(t)和a2(t)表示。此时,在任何一信号时间间隔内a1(t),和a2(t)的幅度恰好分别等于Si1和 Si2,即由发送的二位组决定。这两个二进制波形a1(t)和a2(t)
??t??2/Tcos?2?fct?,?2?t??2/Tsin?2?fct?。这样
被用来调制一对正交载波:1就得到一对二进制PSK信号。?1?t?和?2?t?的正交性使这两个信号可以被独立地检测。最后,将这两个二进制PSK信号相加,从而得期望的QPSK。 选择法
输入基带信号经过串并变换后用于控制一个相位选择电路,按照当时的输入双比特ab,决定选择哪个相位的载波输出。
调制原理图:
2、QPSK解调原理
QPSK接收机由一对共输入地相关器组成。这两个相关器分别提供本地产生地相干参考信号?1?t?和?2?t?。相关器接收信号x(t),相关器输出地x1和x2被用来与门限值0进行比较。如果x1>0,则判决同相信道地输出为符号1;如果x1<0 ,则判决同相信道的输出为符号0。如果正交通道也是如此判决输出。最后同相信道和正交信道输出这两个二进制数据序列被复加器合并,重新得到原始的二进制序列。在AWGN信道中,判决结果具有最小的负号差错概率。用两路具有相互正交特性的载波来解调信号,可以分离这两路正交的2PSK信号。相干解调后,并行码元经过并/串变换后,最终得到串行的数据流。
四、实验步骤
(1)QPSK调制程序
clear all close all
t=[-1:0.01:7-0.01]; t1=[0:0.01:8-0.01];
tt=length(t); x1=ones(1,800); fori=1:tt
if (t(i)>=-1 & t(i)<=1) | (t(i)>=5& t(i)<=7); x1(i)=1;
else x1(i)=-1; end end
t2 = 0:0.01:7-0.01; t3 = -1:0.01:7.1-0.01; t4 = 0:0.01:8.1-0.01; tt1=length(t1); x2=ones(1,800); fori=1:tt1
if (t1(i)>=0 & t1(i)<=2) | (t1(i)>=4& t1(i)<=8); x2(i)=1;
else x2(i)=-1; end end
f=0:0.1:1;
xrc=0.5+0.5*cos(pi*f); y1=conv(x1,xrc)/5.5; y2=conv(x2,xrc)/5.5; n0=randn(size(t2)); f1=1;
i=x1.*cos(2*pi*f1*t); q=x2.*sin(2*pi*f1*t1); I=i(101:800); Q=q(1:700);
QPSK=sqrt(1/2).*I+sqrt(1/2).*Q;
QPSK_n=(sqrt(1/2).*I+sqrt(1/2).*Q)+n0; n1=randn(size(t2));
i_rc=y1.*cos(2*pi*f1*t3); q_rc=y2.*sin(2*pi*f1*t4); I_rc=i_rc(101:800); Q_rc=q_rc(1:700);
QPSK_rc=(sqrt(1/2).*I_rc+sqrt(1/2).*Q_rc); QPSK_rc_n1=QPSK_rc+n1; figure(1)
subplot(3,1,1);plot(t3,i_rc);axis([-1 8 -1 1]);ylabel('a序列'); subplot(3,1,2);plot(t4,q_rc);axis([-1 8 -1 1]);ylabel('b序列');
subplot(3,1,3);plot(t2,QPSK_rc);axis([-1 8 -1 1]);ylabel('合成序列');
(2)QPSK解调程序
clear all close all
bit_in = randint(1e3, 1, [0 1]); bit_I =bit_in(1:2:1e3); bit_Q =bit_in(2:2:1e3); data_I = -2*bit_I+1; data_Q = -2*bit_Q+1;
data_I1=repmat(data_I',20,1); data_Q1=repmat(data_Q',20,1); fori=1:1e4
data_I2(i)=data_I1(i); data_Q2(i)=data_Q1(i); end;
f=0:0.1:1;
xrc=0.5+0.5*cos(pi*f);
data_I2_rc=conv(data_I2,xrc)/5.5; % data_I2_rc就是Idata data_Q2_rc=conv(data_Q2,xrc)/5.5; % data_Q2_rc就是Qdata f1=1;
t1=0:0.1:1e3+0.9; n0=rand(size(t1));
I_rc=data_I2_rc.*cos(2*pi*f1*t1); Q_rc=data_Q2_rc.*sin(2*pi*f1*t1);
QPSK_rc=(sqrt(1/2).*I_rc+sqrt(1/2).*Q_rc); QPSK_rc_n0=QPSK_rc+n0;
I_demo=QPSK_rc_n0.*cos(2*pi*f1*t1); Q_demo=QPSK_rc_n0.*sin(2*pi*f1*t1); I_recover=conv(I_demo,xrc); Q_recover=conv(Q_demo,xrc); I=I_recover(11:10010); Q=Q_recover(11:10010); t2=0:0.05:1e3-0.05; t3=0:0.1:1e3-0.1;
data_recover=[]; fori=1:20:10000
data_recover=[data_recover I(i:1:i+19) Q(i:1:i+19)]; end;
bit_recover=[]; fori=1:20:20000
if sum(data_recover(i:i+19))>0 data_recover_a(i:i+19)=1; bit_recover=[bit_recover 1]; else
data_recover_a(i:i+19)=-1; bit_recover=[bit_recover -1];
end end error=0;
dd = -2*bit_in+1; ddd=[dd'];
ddd1=repmat(ddd,20,1); fori=1:2e4
ddd2(i)=ddd1(i); end
fori=1:1e3
ifbit_recover(i)~=ddd(i) error=error+1; end end
p=error/1000; figure(1)
subplot(4,1,1);plot(t2,ddd2);axis([0 100 -2 2]);title('原序列');
subplot(4,1,2);plot(t1,I_demo);axis([0 100 -2 2]);title('I 支路解调'); subplot(4,1,3);plot(t1,Q_demo);axis([0 100 -2 2]);title('Q 支路解调');
subplot(4,1,4);plot(t2,data_recover_a);axis([0 100 -2 2]);title('解调后序列');
五、实验结果及分析
(1)调制