BPSK和QPSK调制解调原理及MATLAB程序.docx

上传人:b****8 文档编号:9114562 上传时间:2023-02-03 格式:DOCX 页数:13 大小:107.67KB
下载 相关 举报
BPSK和QPSK调制解调原理及MATLAB程序.docx_第1页
第1页 / 共13页
BPSK和QPSK调制解调原理及MATLAB程序.docx_第2页
第2页 / 共13页
BPSK和QPSK调制解调原理及MATLAB程序.docx_第3页
第3页 / 共13页
BPSK和QPSK调制解调原理及MATLAB程序.docx_第4页
第4页 / 共13页
BPSK和QPSK调制解调原理及MATLAB程序.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

BPSK和QPSK调制解调原理及MATLAB程序.docx

《BPSK和QPSK调制解调原理及MATLAB程序.docx》由会员分享,可在线阅读,更多相关《BPSK和QPSK调制解调原理及MATLAB程序.docx(13页珍藏版)》请在冰豆网上搜索。

BPSK和QPSK调制解调原理及MATLAB程序.docx

BPSK和QPSK调制解调原理及MATLAB程序

BPSK和QPSK调制解调原理及MATLAB程序

2.1PSK调制方式

PSK原理介绍(以2-PSK为例)

移相键控(PSK)又称为数字相位调制,二进制移相键控记作2PSK。

绝对相移是利用载波的相位(指初相)直接表示数字信号的相移方式。

二进制相移键控中,通常用相位0和π来分别表示“0”或“1”。

2PSK已调信号的时域表达式为s2psk(t)=s(t)cosωct,2PSK移相键控中的基带信号与频移键控和幅度键控是有区别的,频移键控和幅度键控为单极性非归零矩形脉冲序列,移相键控为为双极性数字基带信号,就模拟调制法而言,与产生2ASK信号的方法比较,只是对s(t)要求不同,因此2PSK信号可以看作是双极性基带信号作用下的DSB调幅信号。

在二进制数字调制中,当正弦载波的相位随二进制数字基带信号离散变化时,则产生二进制移相键控(2PSK)信号。

通常用已调信号载波的0°和180°分别表示二进制数字基带信号的1和0。

二进制移相键控信号的时域表达式为

e2PSK(t)=[

g(t-nTs)]coswct

其中,an与2ASK和2FSK时的不同,在2PSK调制中,an应选择双极性。

1,发送概率为P

an=

-1,发送概率为1-P

若g(t)是脉宽为Ts,高度为1的矩形脉冲时,则有

cosωct,发送概率为P

e2PSK(t)=

-cosωct,发送概率为1-P

由上式(6.2-28)可看出,当发送二进制符号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信号,图(b)是采用数字键控的方法产生2PSK信号。

解调器原理:

如图10所示。

2PSK信号的解调通常都是采用相干解调,在相干解调过程中需要用到与接收的2PSK信号同频同相的相干载波。

(a)模拟调制产生2PSK信号

(b)数字键控的方法产生2PSK信号

图92PSK信号的调制原理图

两个BPSK调制器构成,输入的串行二进制信息序列经过串并变换,变成两路速率减半的序列,电平发生器分别产生双极性的二电平信号I(t)和Q(t),然后对cosAtω和sinAtω进行调制,相加后即可得到QPSK信号

图12QPSK调制器框图

QPSK解调

QPSK信号的解调原理如图3-5的方框图所示。

解调是从已调信号中提取信号的过程,在某种意义上解调是调制的逆过程。

由于QPSK信号可以看作是两正交2PSK信号的叠加,故用两路正交的相干载波去解调,这样能够很容易地分离出这两路正交的2PSK信号。

相干解调后的两路并行码元a和b经过“并/串”转换后成为串行数据输出。

BPSK调制解调程序

%构造载波,产生8个码元,生成已调信号%

a=randsrc(1,8,[0:

1]);%产生8个随机的二进制数

l=linspace(0,2*pi,50);%利用linspace函数创建数组,2pi长度取点50个模拟一个码元

f=sin(2*l);%生成载波

t=linspace(0,10*pi,400);%定义时轴length为10pi,取点400个,代表8个码元的总取样点数

out=1:

400;%规定已调信号length

b=1:

400;%规定基带信号length

w=1:

400;%规定载波length

%生成PSK信号%

fori=1:

8

ifa(i)==0

forj=1:

50

out(j+50*(i-1))=f(j);%若码元为0则将载波输出

end

else

forj=1:

50

out(j+50*(i-1))=-f(j);%若码元为1则将载波反相输出

end

end

end

%输出载波和基带信号%

fori=1:

8

forj=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([010*pi-0.51.2]),xlabel('t'),ylabel('幅度'),title('基带信号');gridon;

subplot(3,3,2),plot(t,w),axis([010*pi-1.21.2]),xlabel('t'),ylabel('幅度'),title('载波');gridon;

subplot(3,3,3),plot(t,out),axis([010*pi-1.21.2]),xlabel('t'),ylabel('幅度'),title('PSK波形');gridon;

%已调信号加入高斯白噪声%

noise=awgn(out,80,'measured');%产生噪音并加入到已调信号out中,信噪比80

subplot(334);

plot(t,noise);

ylabel('幅度');title('噪音+信号');xlabel('t');

axis([010*pi-1.21.2]);gridon;

%信号通过BPF%

Fs=400;%抽样频率400HZ

t=(1:

400)*10*40/Fs;%时轴步进

[b,a]=ellip(4,0.1,40,[10,25]*2/Fs);%设计IIR-BPF

sf=filter(b,a,noise);%信号通过该滤波器

subplot(335);

plot(t,sf);%画出信号通过该BPF的波形

xlabel('t');ylabel('幅度');title('通过BPF后的波形');

axis([010*pi-1.21.2]);gridon;

%信号经过相乘器%

f=[ffffffff];%%调整载波函数的长度,与BPF输出函数统一length

s=sf.*f;%信号与载波相乘

s=(-1).*s;

subplot(336);

plot(t,s);%画出信号通过该相乘器的波形

xlabel('t');ylabel('幅度');title('通过相乘器后波形');

axis([010*pi-11]);gridon;

%信号通过LPF%

Fs=400;%抽样频率400HZ

t=(1:

400)*10*pi/Fs;%时轴步进

[b,a]=ellip(4,0.1,40,[10]*2/Fs);%设计IIR-LPF

sf=filter(b,a,s);%信号通过该滤波器

subplot(337);

plot(t,sf);%画出信号通过该低通滤波器的波形

xlabel('t');ylabel('幅度');title('通过LPF后的波形');

axis([010*pi-11]);gridon;

%抽样判决%

b=0.26;%设置判决门限

fori=1:

8

forj=1:

50

ifsf(j+50*(i-1))>b

sf(j+50*(i-1))=1;%若sf>判决门限,说明此时码元为1

else

sf(j+50*(i-1))=0;%若sf<判决门限,说明此时码元为0

end

end

end

subplot(338);

plot(t,sf);%画出信号通过抽样判决器的波形

xlabel('t');ylabel('幅度');

title('抽样判决后波形');

axis([310*pi-0.51.2]);

gridon;

QPK调制解调程序

(1)调制

%调相法

clearall

closeall

t=[-1:

0.01:

7-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;

elsex1(i)=-1;

end

end

t1=[0:

0.01:

8-0.01];

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;

elsex2(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(4,1,1);plot(t3,i_rc);axis([-18-11]);ylabel('a序列');

subplot(4,1,2);plot(t4,q_rc);axis([-18-11]);ylabel('b序列');

subplot(4,1,3);plot(t2,QPSK_rc);axis([-18-11]);ylabel('合成序列');

subplot(4,1,4);plot(t2,QPSK_rc_n1);axis([-18-11]);ylabel('加入噪声');

(2)解调

%设定T=1,不加噪声

clearall

closeall

%调制

bit_in=randint(1e3,1,[01]);

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;

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(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_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_recoverI(i:

1:

i+19)Q(i:

1:

i+19)];

end;

 

ddd=-2*bit_in+1;

ddd1=repmat(ddd',10,1);

fori=1:

1e4

ddd2(i)=ddd1(i);

end

figure

(1)

subplot(4,1,1);plot(t3,I);axis([020-66]);ylabel('解调后奇位');

subplot(4,1,2);plot(t3,Q);axis([020-66]);ylabel('解调后偶位');

subplot(4,1,3);plot(t2,data_recover);axis([020-66]);ylabel('解调后序列');

subplot(4,1,4);plot(t,ddd2);axis([020-66]);ylabel('原始序列');

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职高对口

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1