完整word版基于MATLAB的2DPSK信号仿真.docx
《完整word版基于MATLAB的2DPSK信号仿真.docx》由会员分享,可在线阅读,更多相关《完整word版基于MATLAB的2DPSK信号仿真.docx(27页珍藏版)》请在冰豆网上搜索。
完整word版基于MATLAB的2DPSK信号仿真
基于MATLAB的2DPSK信号的调制与解调仿真
西安电子科技大学
张**
一题目要求
二关于2DPSK
1基础知识________________________________________________________________2
22DPSK的调制原理_________________________________________________________2
32DPSK的解调原理_________________________________________________________3
三调制系统仿真
1调制系统设计____________________________________________________________4
1)产生基带信号______________________________________________________4
2)产生相对码________________________________________________________5
3)产生载波信号______________________________________________________6
4)调制______________________________________________________________6
2传输系统设计____________________________________________________________7
3解调系统设计___________________________________________________________7
1)带通滤波器________________________________________________________7
2)乘法器____________________________________________________________8
3)低通滤波器________________________________________________________8
4)抽样判决器________________________________________________________9
5)延迟单元__________________________________________________________9
6)码(反)变换器____________________________________________________9
4极性比较法结果_________________________________________________________10
5差分相干法结果_________________________________________________________11
四完整程序源码
1极性比较法程序DPSK.m_________________________________________________12
2差分相干法DPSK1.m________________________________________________15
一题目要求
产生2DPSK信号,画出时域波形和频谱,分别用极性比较法和差分相干法解调。
二关于2DPSK
1基础知识
2DPSK即二进制差分相移键控(2DPSK)二进制差分相移键控常简称为二相相对调相,记作2DPSK。
它不是利用载波相位的绝对数值传送数字信息,而是用前后码元的相对载波相位值传送数字信息。
所谓相对载波相位是指本码元初相与前一码元初相之差。
∆Φ=0→数字信息“0”;
∆Φ=π→数字信息“1”。
则数字信息序列与2DPSK信号的码元相位关系可举例表示如下:
数字信息:
1011011101
DPSK信号相位:
π00π00π0ππ0
或:
0ππ0ππ0π00π
22DPSK的调制原理
一般来说,2DPSK信号有两种调试方法,即模拟调制法和键控法。
2DPSK信号的的模拟调制法框图如图1所示,其中码变换的过程为将输入的单极性不归零码转换为双极性不归零码。
图1模拟调制法
2DPSK信号的的键控调制法框图如图2所示,其中码变换的过程为将输入的基带信号差分,即变为它的相对码。
选相开关作用为当输入为数字信息“0”时接相位0,当输入数字信息为“1”时接pi。
图2键控调制
32DPSK的解调原理
2DPSK信号最常用的解调方法有两种,一种是极性比较法,另一种是差分相干法。
差分相干法:
2DPSK信号先经过带通滤波器,去除调制信号频带以外的在信道中混入的噪声,此后该信号分为两路,一路延时一个码元的时间后与另一路的信号相乘,再经过低通滤波器去除高频成分,得到包含基带信号的低频信号,将其送入抽样判决器中进行抽样判决,抽样判决器的输出即为原基带信号。
它的原理框图如图
图3差分相干法法
极性比较法:
2DPSK信号经过带通滤波器,滤掉信道中产生的噪声,再与本地载波相乘,经过低通滤波器,得到包含基带信号的低频信号,将其送入抽样判决器得到相对码,再经过码(反)变换器得到基带信号。
原理图如下所示
图4极性比较法法
三仿真程序设计
1调制系统设计
1)产生基带信号
本例中使用matlab中的rand函数随机产生10个随机数,并采用就近取整的办法使其值为0、1.此过程产生的码为绝对码。
并且,每个值需要分配一定的长度。
代码如下:
clearall
closeall
i=10;%码元的个数
j=5000;
fc=4;
fm=i/5;
B=2*fm;
t=linspace(0,5,j);%将0-5区间平均分为j份
%%%%%%%%%%%%%产生基带信号%%%%%%%%%%%%%%%%
a=round(rand(1,i));%产生10个随机码,记为a
st1=t;
forn=1:
10
ifa(n)<1;
form=j/i*(n-1)+1:
j/i*n%j/i为每个码元的
st1(m)=0;
end
else
form=j/i*(n-1)+1:
j/i*n
st1(m)=1;
end
end
end
2)相对码产生
根据相对码的原理,源码中1的值对应相位改变π,源码中0的值对应相位不改变。
将π变为1,0仍为0,则形成相对码。
代码如下
b=zeros(1,i);
b
(1)=a
(1);
forn=2:
10
ifa(n)>=1;
ifb(n-1)>=1
b(n)=0;
else
b(n)=1;
end
else
b(n)=b(n-1);
end
end
st1=t;
forn=1:
10
ifb(n)<1;
form=j/i*(n-1)+1:
j/i*n
st1(m)=0;
end
else
form=j/i*(n-1)+1:
j/i*n
st1(m)=1;
end
end
end
subplot(412);
plot(t,st1);
title('相对码');
axis([0,5,-1,2]);
st2=t;
fork=1:
j;
ifst1(k)>=1;
st2(k)=0;
else
st2(k)=1;
end
end;
st1即为相对码,st2为相对码的反码,在调制中使用。
3)产生载波信号
代码:
s1=sin(2*pi*fc*t);
4)调制
按图一中所示,相对码及其反码分别和载波相乘再相加,即得到调制信号。
d1=st1.*s1;
d2=st2.*(-s1);%相移180
figure
(2);
subplot(4,1,1);
plot(t,d1);
title('st1*s1');
subplot(4,1,2);
plot(t,d2);
title('st2*s2');
e_dpsk=d1+d2;
图5码元产生
图6调制信号
2传输系统设计
传输系统设计比较简答,只需加入信道噪声即可。
代码:
noise=rand(1,j);
dpsk=e_dpsk+0.5*noise;%加入噪声
效果如图6所示
3解调系统设计
解调系统中,极性比较法和差分相干法有很多部分相同,可以用相同设计。
相同部分设计。
1)带通滤波器
在仿真过程省略。
2)乘法器
由于是仿真,可直接相乘。
3)低通滤波器
设计为只允许基频信号通过。
代码:
[f,af]=T2F(t,dpsk);
[t,dpsk]=lpf(f,af,B);
所用函数代码:
T2F子函数
function[f,sf]=T2F(t,st)
%ThisisafunctionusingtheFFTfunctiontocalculateasignal'sFourier
%Translation
%Inputisthetimeandthesignalvectors,thelengthoftimemustgreater
%than2
%Outputisthefrequencyandthesignalspectrum
dt=t
(2)-t
(1);
T=t(end);
df=1/T;
N=length(st);
Lpf子函数
f=-N/2*df:
df:
N/2*df-df;
sf=fft(st);
sf=T/N*fftshift(sf);
function[t,st]=lpf(f,sf,B)
%Thisfunctionfilteraninputdatausingalowpassfilter
%Inputs:
f:
frequencysamples
%sf:
inputdataspectrumsamples
%B:
lowpass'sbandwidthwitharectanglelowpass
%Outputs:
t:
timesamples
%st:
outputdata'stimesamples
df=f
(2)-f
(1);
T=1/df;
hf=zeros(1,length(f));
bf=[-floor(B/df):
floor(B/df)]+floor(length(f)/2);
hf(bf)=1;
yf=hf.*sf;
[t,st]=F2T(f,yf);
st=real(st);
4)抽样判决器
抽样判决器就是过零检测。
代码:
st=zeros(1,i);
form=0:
i-1;
ifdpsk(1,m*500+250)<0;
st(m+1)=0;
forj=m*500+1:
(m+1)*500;
dpsk(1,j)=0;
end
else
forj=m*500+1:
(m+1)*500;
st(m+1)=1;
dpsk(1,j)=1;
end
end
end
两种解调方式不同之处在于延迟单元和码(反)变换器。
5)延迟单元
延迟一个码元长度,第一个码元长度的内容根据编码规则,抽样判决。
代码:
ifdpsk(65)<0
dpsk_delay(1:
j/i)=dpsk(1:
j/i);
else
dpsk_delay(1:
j/i)=-dpsk(1:
j/i)
end
dpsk_delay(j/i+1:
j)=dpsk(1:
j-j/i);
6)码(反)变换器
将相对码变换为绝对码,与编码器正好相反。
代码:
dt=zeros(1,i);
dt
(1)=st
(1);
forn=2:
10;
if(st(n)-st(n-1))<=0&&(st(n)-st(n-1))>-1;
dt(n)=0;
else
dt(n)=1;
end
end
st=t;
forn=1:
10
ifdt(n)<1;
form=j/i*(n-1)+1:
j/i*n
st(m)=0;
end
else
form=j/i*(n-1)+1:
j/i*n
st(m)=1;
end
end
end
4极性比较法解调结果结果
如图,可见解调结果与源码完全一致。
图7极性比较法解调结果
图7源码
5差分相干法解调结果
如图,解调结果与源码完全一致。
图8差分相干法解调结果
图9源码
程序源码
1极性比较法DPSK.m
clearall
closeall
i=10;%码元的个数
j=5000;
fc=4;
fm=i/5;
B=2*fm;
t=linspace(0,5,j);%将0-5区间平均分为j份
%%%%%%%%%%%%%产生基带信号%%%%%%%%%%%%%%%%
a=round(rand(1,i));%产生10个随机码,记为a
st1=t;
forn=1:
10
ifa(n)<1;
form=j/i*(n-1)+1:
j/i*n%j/i为每个码元的
st1(m)=0;
end
else
form=j/i*(n-1)+1:
j/i*n
st1(m)=1;
end
end
end
figure
(1);
subplot(411);
plot(t,st1);
title('绝对码');
axis([0,5,-1,2]);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%差分变换
b=zeros(1,i);
b
(1)=a
(1);
forn=2:
10
ifa(n)>=1;
ifb(n-1)>=1
b(n)=0;
else
b(n)=1;
end
else
b(n)=b(n-1);
end
end
st1=t;
forn=1:
10
ifb(n)<1;
form=j/i*(n-1)+1:
j/i*n
st1(m)=0;
end
else
form=j/i*(n-1)+1:
j/i*n
st1(m)=1;
end
end
end
subplot(412);
plot(t,st1);
title('相对码');
axis([0,5,-1,2]);
st2=t;
fork=1:
j;
ifst1(k)>=1;
st2(k)=0;
else
st2(k)=1;
end
end;
subplot(413)
plot(t,st2)
title('相对码的反码')
axis([05-12])
%%%%%%%%%%%%载波信号%%%%%%%%%%%%%%%%%
s1=sin(2*pi*fc*t);
subplot(414);
plot(s1);
title('载波信号');
%%%%%%%%%%%%%%调制%%%%%%%%%%%%%%%%%%%%%%
d1=st1.*s1;
d2=st2.*(-s1);%相移180
figure
(2);
subplot(4,1,1);
plot(t,d1);
title('st1*s1');
subplot(4,1,2);
plot(t,d2);
title('st2*s2');
e_dpsk=d1+d2;
subplot(4,1,3);
plot(t,e_dpsk);
title('调制后波形');
noise=rand(1,j);
dpsk=e_dpsk+0.5*noise;%加入噪声
subplot(4,1,4);
plot(t,dpsk);
title('加噪声信号');
%%%%%%%%%%%%%与载波相乘%%%%%%%%%%%%%%%%%%%%%
dpsk=dpsk.*sin(2*pi*fc*t);%与载波相乘
figure
subplot(4,1,1);
plot(t,dpsk);
title('与载波相乘后波');
%%%%%%%%%%%%%低通滤波%%%%%%%%%%%%%%%%%%%%%%%%
[f,af]=T2F(t,dpsk);%通过低通滤波器
[t,dpsk]=lpf(f,af,B);
subplot(4,1,2);
plot(t,dpsk);
title('通过低通滤波器波形');
%%%%%%%%%%%%%%%抽样判决%%%%%%%%%%%%%%%%%%%%
st=zeros(1,i);
form=0:
i-1;
ifdpsk(1,m*500+250)<0;
st(m+1)=0;
forj=m*500+1:
(m+1)*500;
dpsk(1,j)=0;
end
else
forj=m*500+1:
(m+1)*500;
st(m+1)=1;
dpsk(1,j)=1;
end
end
end
subplot(4,1,3);
plot(t,dpsk);
axis([0,5,-1,2]);
title('抽样判决后波形')
%%%%%%%%%%%%%%码反变换%%%%%%%%%%%%%%%%%%
dt=zeros(1,i);
dt
(1)=st
(1);
forn=2:
10;
if(st(n)-st(n-1))<=0&&(st(n)-st(n-1))>-1;
dt(n)=0;
else
dt(n)=1;
end
end
st=t;
forn=1:
10
ifdt(n)<1;
form=j/i*(n-1)+1:
j/i*n
st(m)=0;
end
else
form=j/i*(n-1)+1:
j/i*n
st(m)=1;
end
end
end
subplot(4,1,4);
plot(t,st);
title('码反变换后波形');
axis([0,5,-1,2]);
2差分相干法DPSK1.m
clearall
closeall
i=10;%码元的个数
j=5000;
fc=4;
fm=i/5;
B=2*fm;
t=linspace(0,5,j);%将0-5区间平均分为j份
%%%%%%%%%%%%%产生基带信号%%%%%%%%%%%%%%%%
a=round(rand(1,i));%产生10个随机码,记为a
st1=t;
forn=1:
10
ifa(n)<1;
form=j/i*(n-1)+1:
j/i*n%j/i为每个码元的
st1(m)=0;
end
else
form=j/i*(n-1)+1:
j/i*n
st1(m)=1;
end
end
end
figure
(1);
subplot(411);
plot(t,st1);
title('绝对码');
axis([0,5,-1,2]);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%差分变换
b=zeros(1,i);
b
(1)=a
(1);
forn=2:
10
ifa(n)>=1;
ifb(n-1)>=1
b(n)=0;
else
b(n)=1;
end
else
b(n)=b(n-1);
end
end
st1=t;
forn=1:
10
ifb(n)<1;
form=j/i*(n-1)+1:
j/i*n
st1(m)=0;
end
else
form=j/i*(n-1)+1:
j/i*n
st1(m)=1;
end
end
end
subplot(412);
plot(t,st1);
title('相对码');
axis([0,5,-1,2]);
st2=t;
fork=1:
j;
ifst1(k)>=1;
st2(k)=0;
else
st2(k)=1;
end
end;
subplot(413)
plot(t,st2)
title('相对码的反码')
axis([05-12])
%%%%%%%%%%%%载波信号%%%%%%%%%%%%%%%%%
s1=sin(2*pi*fc*t);
subplot(414);
plot(s1);
title('载波信号');
%%%%%%%%%%%%%%调制%%%%%%%%%%%%%%%%%%%%%%
d1=st1.*s1;
d2=st2.*(-s1);%相移180
figure
(2);
subplot(4,1,1);
plot(t,d1);
title('st1*s1');
subplot(4,1,2);
plot(t,d2);
title('st2*s2');
e_dpsk=d1+d2;
subplot(4,1,3);
plot(t,e_dpsk);
title('调制后波形');
noise=rand(1,j);
dpsk=e_dpsk+0.5*noise;%加入噪声
subplot(4,1,4);
plot(t,dpsk);
title('加噪声信号');
%%%%%%%%%%%%延迟单元%%%%%%%%%%%%%%%%%%%%
ifdpsk(65)<0
dpsk_delay(1:
j/i)=dpsk(1:
j/i);
else
dpsk_delay(1:
j/i)=-dpsk(1:
j/i)
end
dpsk_delay(j/i+1:
j)=dpsk(1:
j-j/i);
%%%%%%%%%%%%与未延迟信号相乘%%%%%%%%%%%%%%
dpsk=dpsk.*dpsk_delay;
figure
subplot(3,1,1)
plot(t,dpsk);
title('延迟相乘后波形');
%%%%%%%%%%%%%低通滤波%%%%%%%%%%%%%%%%%%%%%%%%
[f,af]=T2F(t,dpsk);%通过低通滤波器
[t,dpsk]=lpf(f,af,B);
subplot(3,1,2);
plot(t,dpsk);
title('通过低通滤波器波形');
%%%%%%%%%%%%%%%抽样判决%%%%%%%%%%%%%%%%%%%%
st=zeros(1,i);
form=0:
i-1;
ifdpsk(1,m*500+250)<0;
st(m+1)=0;
forj=m*500+1:
(m+1)*500;
dpsk(1,j)=1;
end
else
forj=m*500+1:
(m+1)*500;
st(m+1)=1;
dpsk(1,j)=0;
end