1、2.1 PSK 调制方式PSK 原理介绍(以 2-PSK 为例)移相键控(PSK)又称为数字相位调制,二进制移相键控记作 2PSK。绝对相移是利用载波的相位(指初相)直接表示数字信号的相移方式。二进制相移键控中,通常用相位 0 和 来分别表示“0”或“1” 。2PSK 已调信号的时域表达式为s2psk(t)=s(t)cosct, 2PSK 移相键控中的基带信号与频移键控和幅度键控是有区别的,频移键控和幅度键控为单极性非归零矩形脉冲序列,移相键控为为双极性数字基带信号,就模拟调制法而言,与产生 2ASK 信号的方法比较,只是对s(t)要求不同,因此 2PSK 信号可以看作是双极性基带信号作用下的
2、 DSB 调幅信号。在二进制数字调制中,当正弦载波的相位随二进制数字基带信号离散变化时,则产生二进制移相键控(2PSK)信号。 通常用已调信号载波的 0和 180分别表示二进制数字基带信号的 1 和 0。 二进制移相键控信号的时域表达式为e2PSK(t)= g(t-nTs)coswct na其中, an 与 2ASK 和 2FSK 时的不同,在 2PSK 调制中,an 应选择双极性。1, 发送概率为 Pan=-1, 发送概率为 1-P 若 g(t)是脉宽为 Ts, 高度为 1 的矩形脉冲时,则有cosct, 发送概率为 Pe2PSK(t)= -cosct, 发送概率为 1-P由上式(6.2-2
3、8)可看出,当发送二进制符号 1 时,已调信号 e2PSK(t)取0相位,发送二进制符号 0 时,e2PSK(t)取 180相位。若用 n 表示第 n 个符号的绝对相位,则有0, 发送 1 符号n= 180, 发送 0 符号由于在 2PSK 信号的载波恢复过程中存在着 180的相位模糊,所以 2PSK信号的相干解调存在随机的“倒 ”现象,从而使得 2PSK 方式在实际中很少采用。为了解决 2PSK 信号解调过程的反向工作问题, 提出了二进制差分相位键控(2DPSK),这里不再详述。2-PSK 调制解调二进制移相键控信号的调制原理:如图 9 所示。 其中图(a)是采用模拟调制的方法产生 2PSK
4、 信号,图(b)是采用数字键控的方法产生 2PSK 信号。解调器原理:如图 10 所示。 2PSK 信号的解调通常都是采用相干解调, 在相干解调过程中需要用到与接收的 2PSK 信号同频同相的相干载波。 乘法器 e2PSK(t)cos(wct)s(t) 码型变换双极性不归零(a) 模拟调制产生 2PSK 信号cos(wct) e2PSK(t)s(t)开关电路180 度移相0 度180 度(b)数字键控的方法产生 2PSK 信号图 9 2PSK 信号的调制原理图 e2PSK(t)带通滤波器 相乘器低通滤波器抽样判决器a c d e输出定时脉冲cos(wct)b图 102PSK 信号的解调原理图1
5、 0a1 1 0 1 0 0bcde图 11 2PSK 信号相干解调各点时间波形 就键控法来说,用数字基带信号 s(t)控制开关电路,选择不同相位的载波输出,这时 s(t)为单极性 NRZ 或双极性 NRZ 脉冲序列信号均可。当基带信号为0 时候 ,连通开关 0,产生无差别的载波,当所发出的信号为 1 时,既连通开关 改变载波的相位。在移相键控中还有一种差分移相键,他和普通的移相键控区别在与,差分移相键只有在当前传输的码元和上次传输的码元产生差别时才会产生相位的变化。移相键控相对与幅度键控和移频键控有着更好的抗干扰性,也更适合于在信道中传输。QPSK 调制QPSK 信号可以看作两个载波正交 2
6、PSK 信号的合成。用调相法产生 QPSK 调制器框图如图 12 所示,QPSK 的调制器可以看作是由两个 BPSK 调制器构成,输入的串行二进制信息序列经过串并变换,变成两路速率减半的序列,电平发生器分别产生双极性的二电平信号 I(t)和 Q(t) ,然后对 cosAt 和 sinAt 进行调制,相加后即可得到 QPSK 信号电平产生载波发生器电平产生移相 90度二进制信息 输出 QPSK 信号串并转换Q(t)I(t)Acos(wt)Asin(wt)图 12 QPSK 调制器框图QPSK 解调QPSK 信号的解调原理如图 3-5 的方框图所示。解调是从已调信号中提取信号的过程,在某种意义上解
7、调是调制的逆过程。由于 QPSK 信号可以看作是两正交 2PSK 信号的叠加,故用两路正交的相干载波去解调,这样能够很容易地分离出这两路正交的 2PSK 信号。相干解调后的两路并行码元 a 和 b 经过 “并/ 串”转换后成为串行数据输出。载波 提取 相乘 低通 抽判 /2 相乘 低通 抽判 并/串 A(t) s(t) a b cos0t -sin0t 定时 提取 图3-5 QPSK信号解调原理方框图 BPSK 调制解调程序%构造载波,产生 8 个码元,生成已调信号 %a=randsrc(1,8,0:1);%产生 8 个随机的二进制数l=linspace(0,2*pi,50);%利用 lins
8、pace 函数创建数组,2pi 长度取点 50 个模拟一个码元f=sin(2*l);%生成载波t=linspace(0,10*pi,400);%定义时轴 length 为 10pi,取点 400 个,代表 8 个码元的总取样点数out=1:400;%规定已调信号 lengthb=1:400;% 规定基带信号 lengthw=1:400;%规定载波 length%生成 PSK 信号% for i=1:8 if a(i)=0 for j=1:50 out(j+50*(i-1)=f(j); %若码元为 0 则将载波输出end else for j=1:50 out(j+50*(i-1)=-f(j);
9、 %若码元为 1 则将载波反相输出end end end %输出载波和基带信号%for i=1:8 for j=1:50 b(j+50*(i-1)=a(i); %b 作为调制信号输出w(j+50*(i-1)=f(j); %w 作为载波输出end end subplot(3,3,1),plot(t,b),axis(0 10*pi -0.5 1.2), xlabel(t),ylabel(幅度),title(基带信号);grid on; subplot(3,3,2),plot(t,w),axis(0 10*pi -1.2 1.2), xlabel(t),ylabel(幅度),title(载波); g
10、rid on;subplot(3,3,3),plot(t,out),axis(0 10*pi -1.2 1.2),xlabel(t),ylabel(幅度),title(PSK 波形);grid on;%已调信号加入高斯白噪声%noise=awgn(out,80,measured) ; %产生噪音并加入到已调信号 out 中,信噪比80subplot(334); plot(t,noise); ylabel(幅度);title(噪音+信号); xlabel(t);axis(0 10*pi -1.2 1.2); grid on;%信号通过 BPF%Fs=400; %抽样频率 400HZt=(1:40
11、0)*10*40/Fs; %时轴步进b,a=ellip(4,0.1,40,10,25*2/Fs); %设计 IIR-BPFsf=filter(b,a,noise); %信号通过该滤波器subplot(335); plot(t,sf); %画出信号通过该 BPF 的波形xlabel(t); ylabel(幅度);title(通过 BPF 后的波形); axis(0 10*pi -1.2 1.2);grid on;%信号经过相乘器%f=f f f f f f f f; %调整载波函数的长度,与 BPF 输出函数统一 lengths=sf.*f;%信号与载波相乘s=(-1).*s;subplot(3
12、36); plot(t,s);%画出信号通过该相乘器的波形xlabel(t); ylabel(幅度);title(通过相乘器后波形); axis(0 10*pi -1 1);grid on;%信号通过 LPF%Fs=400; %抽样频率 400HZt=(1:400)*10*pi/Fs; %时轴步进b,a=ellip(4,0.1,40,10*2/Fs); %设计 IIR-LPFsf=filter(b,a,s); %信号通过该滤波器subplot(337); plot(t,sf); %画出信号通过该低通滤波器的波形xlabel(t); ylabel(幅度);title(通过 LPF 后的波形);
13、axis(0 10*pi -1 1);grid on;%抽样判决%b=0.26; %设置判决门限for i=1:8 for j=1:50 if sf(j+50*(i-1)bsf(j+50*(i-1)=1; %若 sf判决门限,说明此时码元为 1else sf(j+50*(i-1)=0; %若 sf=-1 x2(i)=1;else x2(i)=-1;endendf=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=x
14、2.*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(4,1
15、,1);plot(t3,i_rc);axis(-1 8 -1 1);ylabel(a 序列);subplot(4,1,2);plot(t4,q_rc);axis(-1 8 -1 1);ylabel(b 序列);subplot(4,1,3);plot(t2,QPSK_rc);axis(-1 8 -1 1);ylabel(合成序列);subplot(4,1,4);plot(t2,QPSK_rc_n1);axis(-1 8 -1 1);ylabel(加入噪声);(2)解调% 设定 T=1, 不加噪声clear allclose all% 调制bit_in = randint(1e3, 1, 0 1)
16、;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);for i=1:1e4data_I2(i)=data_I1(i);data_Q2(i)=data_Q1(i);end;t=0:0.1:1e3-0.1;f=0:0.1:1;xrc=0.5+0.5*cos(pi*f);data_I2_rc=conv(data_I2,xrc)/5.5;data_Q2_rc=conv
17、(data_Q2,xrc)/5.5;f1=1;t1=0:0.1:1e3+0.9;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);% 解调I_demo=QPSK_rc.*cos(2*pi*f1*t1);Q_demo=QPSK_rc.*sin(2*pi*f1*t1);I_recover=conv(I_demo,xrc);Q_recover=conv(Q_demo,xrc);I=I_recover(11:10010);Q=Q_reco
18、ver(11:10010);t2=0:0.05:1e3-0.05;t3=0:0.1:1e3-0.1;data_recover=;for i=1:20:10000data_recover=data_recover I(i:1:i+19) Q(i:1:i+19);end;ddd = -2*bit_in+1;ddd1=repmat(ddd,10,1);for i=1:1e4ddd2(i)=ddd1(i);endfigure(1)subplot(4,1,1);plot(t3,I);axis(0 20 -6 6); ylabel(解调后奇位 );subplot(4,1,2);plot(t3,Q);axis(0 20 -6 6); ylabel(解调后偶位 );subplot(4,1,3);plot(t2,data_recover);axis(0 20 -6 6); ylabel(解调后序列);subplot(4,1,4);plot(t,ddd2);axis(0 20 -6 6); ylabel(原始序列);