BPSK和QPSK调制解调原理及MATLAB程序.docx
- 文档编号:11453059
- 上传时间:2023-03-01
- 格式:DOCX
- 页数:12
- 大小:123.55KB
BPSK和QPSK调制解调原理及MATLAB程序.docx
《BPSK和QPSK调制解调原理及MATLAB程序.docx》由会员分享,可在线阅读,更多相关《BPSK和QPSK调制解调原理及MATLAB程序.docx(12页珍藏版)》请在冰豆网上搜索。
BPSK和QPSK调制解调原理及MATLAB程序
PSK调制方式
PSK原理介绍(以2-PSK为例)
移相键控(PSK)又称为数字相位调制,二进制移相键控记作2PSK。
绝对相移是利用载波的相位(指初相)直接表示数字信号的相移方式。
二进制相移键控中,通常用相位0和兀来分别表示“0”或“1”。
2PSK已调信号的时域表达式为s2psk(t)=s(t)cosWct,2PSK移相键控中的基带信号与频移键控和幅度键控是有区别的,频移键控和幅度键控为单极性非归零矩形脉冲序列,移相键控为为双极性数字基带信号,就模拟调制法而言,与产生2ASK信号的方法比较,只是对s(t)要求不同,因此2PSK信号可以看作是双极性基带信号作用下的DSB调幅信
号。
在二进制数字调制中,当正弦载波的相位随二进制数字基带信号离散变化时,则产生二进制移相键控(2PSK)信号。
通常用已调信号载波的0°和180°分别表示二进制数字基带信号的1和0。
二进制移相键控信号的时域表达式为
e2psK(t)=[丫。
“g(t-nT5)]coswL.t
n
其中.an与2ASK和2FSK时的不同,在2PSK调制中,an应选择双极性°
发送概率为P
an=
若g(t)是脉宽为Ts.髙度为1的矩形脉冲时,则有
kCOSwet,发送概率为P
e2PsK(t)=Y
J-COSwet,发送概率为1-P
由上式可看出,当发送二进制符号1时,已调信号e2PSK(t)取0°相位,发送二进制符号0时,e2PSK(t)取180°相位。
若用n表示第n个符号的绝对
相位,则有
0。
.发送1符号
4>n=
180°.发送0符号
由于在2PSK信号的载波恢复过程中存在着180。
的相位模糊,所以2PSK信号的相干解调存在随机的''倒n”现象,从而使得2PSK方式在实际中很少采用。
为了解决2PSK信号解调过程的反向工作问题,提出了二进制差分相位键控(2DPSK),这里不再详述。
2-PSK调制解调
二进制移相键控信号的调制原理:
如图9所示。
其中图(a)是采用模拟调制的方法产生2PSK信号,图(b)是采用数字键控的方法产生2PSK信号。
解调器原理:
如图10所示。
2PSK信号的解调通常都是采用相干解调,在相干解调过程中需要用到与接收的2PSK信号同频同相的相干载波。
(b)数字键控的方法产生2PSK信号
图92PSK信号的调制原理图
图102PSK信号的解调原理图
图112PSK信号相干解调各点时间波形
就键控法来说,用数字基带信号s(t)控制开关电路,选择不同相位的载波输出,这时s(t)为单极性NRZ或双极性NRZ脉冲序列信号均可。
当基带信号为0时候,连通开关0,产生无差别的载波,当所发出的信号为1时,既连通开关II改变载波的相位。
在移相键控中还有一种差分移相键,他和普通的移相键控区别在与,差分移相键只有在当前传输的码元和上次传输的码元产生差别时才会产生相位的变化。
移相键控相对与幅度键控和移频键控有着更好的抗干扰性,也更适合于在信道中传输。
QPSK调制
QPSK信号可以看作两个载波正交2PSK信号的合成。
用调相法产生QPSK调制器框图如图12所示,QPSK的调制器可以看作是由两个BPSK调制器构成,输入的串行二进制信息序列经过串并变换,变成两路速率减半的序列,电平发生器分别产生双极性的二电平信号I(t)和Q(t),然后对cosAtw和sinAt3进行调制,相加后即可得到QPSK信号
二进制信息
图12QPSK调制器框图
QPSK解调
QPSK信号的解调原理如图3-5的方框图所示。
解调是从已调信号中提取信号的过程,在某种意义上解调是调制的逆过程。
由于QPSK信号可以看作是两正交2PSK信号的叠加,故用两路正交的相干载波去解调,这样能够很容易地分离出这两路正交的2PSK信号。
相干解调后的两路并行码元a和b经过“并/串”转换后成为串行数据输出。
图3-5QPSK信号解调原理方框图
BPSK调制解调程序
%构造载波,产生8个码元,生成已调信号%
a=randsrc(l,8,[0:
1]);%产生8个随机的二进制数
1=1inspace(0,2*pi,50);%利用1inspace函数创建数组,2pi长度取点50个模拟一个码元
f=sin(2*l);%生成载波
t=linspace(0,10*pi,400);%定义时轴length为10pi,取点400个,代表8个码元的总取样点数
out=l:
400;%规定已调信号length
b二1:
400;%规定基带信号length
w=l:
400;%规定载波length
%生成PSK信号%
fori=l:
8
ifa(i)==0
forj=l:
50
out(j+50*(i-l))=f(j);%若码元为0则将载波输出
end
else
forj=l:
50
out(j+50*(i-l))=-f(j);%若码元为1则将载波反相输出
end
end
%输出载波和基带信号%
fori=l:
8
forj=l:
50
b(j+50*(i-l))=a(i);%b作为调制信号输出w(j+50*(i-l))=f(j);%w作为载波输出end
end
subplot(3,3,1)»plot(ttb),axis([010*pi]).xlabel(*tf).ylabel('幅度r)ttitle(r
基带信号');gridon;
subplot(3,3,2),plot(trw),axis([010*pi]).xlabel('t,ylabel('幅度title('载波');gridon;
subplot(3,3,3).plot(t,out),axis([010*pi]),xlabelCt'),ylabel(*幅度
f),title(*PSK波形*);gridon;
%已调信号加入高斯白變声%
noise=awgn(out,80,'measured');%产生噪音并加入到已调信号out中,信噪
比80
subplot(334);
plot(t,noise):
ylabelC幅度');title('噪音+信号’);xlabel(*t1);xlabel(rt*);ylabel('幅度');title('通过BPF后的波形');
axis([010*pi]):
gridon;
%信号经过相乘器%
f=[ffffffffl;勰调整载波函数的长度,与BPF输出函数统一
length
s=sf.*f;%信号与载波相乘
s=(T)・*s;
subplot(336);
plot(tfs);%画出信号通过该相乘器的波形
xlabel(rt*):
ylabelC幅度');title(°通过相乘器后波形');axis([O10*pi-11]);gridon;
%信号通过LPF%
Fs=400;
t=(1:
400)*10*pi/Fs;
力抽样频率400HZ
%时轴步进
[b,a]=ellip(4,t40,[10]*2/Fs);
sf=filter(b,ats);
subplot(337);
%设计IIR-LPF
%信号通过该滤波器
plot(t,sf);%画出信号通过该低通滤波器的波形
xlabel(rt*);ylabel(9幅度’);title('通过LPF后的波形°);
axis([010*pi-11]);gridon;
%抽样判决%b=;
fori=l:
8
forj=l:
50
%设置判决门限
ifsf(j+50*(i-l))>b
sf(j+50*(i-l))=l;
%若30判决门限,说明此时码元为1
else
sf(j+50*(i-l))=0;
%若5代判决门限,说明此时码元为0
end
end
end
subplot(338);plot(t,sf);
%画出信号通过抽样判决器的波形
xlabel(rt*);ylabel('幅度');titleC抽样判决后波形');axis([310*pi]);
gridon;
QPK调制解调程序
(1)调制
%调相法
clearal1
closeal1
t=[-l:
:
];
tt=length(t):
xl=ones(1,800);fori=l:
tt
if(t(i)>=-l&t(i)<=l)I
(t(i)>=5&t(i)<=7);
elsexl(i)=-l;
end
end
tl=[O:
:
]:
t2=0:
:
;
t3=-l:
:
i=l:
ttl
if(tl(i)>=0&tl(i)<=2)(tl(i)>=4&tl(i)<=8);
x2(i)=l;
elsex2(i)=-l;
end
end
f=O:
:
l;
xrc=+*cos(pi*f);
yl=conv(xl,xrc)/;
y2=conv(x2,xrc)/;
nO二:
randn(size(t2));
fl=l;
i=xl.*cos(2*pi*fl*t);
q=x2.*sin(2*pi*fl*t1);
I=i(101:
800);
Q-q(1:
700);
QPSK=sqrt(1/2).*I+sqrt(1/2).*Q;
QPSKn=(sqrt(1/2).*I+sqrt(1/2).*Q)+nO;
j
nl=randn(size(t2));
irc=yl.*cos(2*pi*fl*t3):
qrc=y2.*sin(2*pi*fl*t4);
Irc=irc(101:
800):
Qrc=qrc(l:
700);
QPSKrc=(sqrt(1/2).*1rc+sqrt(1/2).*Qrc):
QPSKrc.nl=QPSKrc+nl;
figure(l)
subplot(4,1,1):
plot(t3,i_rc):
axis([-l8T1]);ylabel(ra序列’);
subplot(4,1,2):
plot(t4,qrc);axis([-l8-11]);ylabel(rb序列');
subplot(4,1,3):
plot(t2.QPSK_rc):
axis([-l8-11]):
ylabeK*合成序列');subplot(4,1,4):
plot(t2,QPSKrc.nl):
axis([-l8-11]):
ylabel(r加入噪声');
(2)解调
%设定T=l,不加噪声
clearall
closeall
%调制
bitin=randint(le3t1,[01]):
bit.I=bit_in(l:
2:
le3);
bit_Q=bit.in(2:
2:
le3);dataI=-2水bit1+1;
dataQ=-2水bit_Q~1;
dataIl=repmat(dataI\20,1);dataQl=repmat(dataQr,20,1):
fori=l:
le4
data_I2(i)=dataII(i);
dataQ2(i)-dataQI(i):
end;
t=0:
:
;
f=0:
:
l;
xrc=+*cos(pi*f);
data12rc=conv(data12,xrc)/;dataQ2rc=conv(dataQ2.xrc)/;fl=l;
tl=0:
:
le3+;
Irc=data12rc.*cos(2*pi*fl*tl):
Qrc=dataQ2rc.*sin(2*pi*fl*tl):
QPSK_rc=(sqrt(1/2).*1rc+sqrt(l/2).*Qrc);
%解调
Idemo二QPSKrc.*cos(2*pi*fl*t1):
Qdemo二QPSKrc.*sin(2*pi*fl*t1):
Irecover=conv(Idemotxrc):
Qrecover=conv(Qdemo,xrc):
1=1recover(11:
10010):
Q二Qrecover(11:
10010):
t2=0:
:
;
t3=0:
:
;datarecover=[];
fori=l:
20:
10000data_recover=[data_recoverI(i:
1:
i+19)Q(i:
1:
i+19)];
end;
ddd=-2*bitin+1;
dddl=repmat(ddd‘,10.1);
fori=l:
le4
ddd2(i)=dddl(i);
end
figure(l)
subplot(4,1,1):
plot(t3,1);axis([020-66]);ylabel(r解调后奇位’);
subplot(4,1,2):
plot(t3.Q):
axis([020-66]);ylabel(9解调后偶位’);
subplot(4,1,3):
plot(t2,datarecover);axis([020-66]);ylabelC解调后序列°);
subplot(4,1,4);plot(trddd2):
axis([020-66]);ylabel('原始序列');
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- BPSK QPSK 调制 解调 原理 MATLAB 程序