前言
一个通信原理课程中使用Matlab生成DBPSK波形的实验笔记。
内容
- 设发送二进制信息为10011101,码元速率为1波特,载波 sin(wt),幅值为1,初始相位为0。
- 当载波频率为2Hz,相位(或相位差)0°代表“0”,相位(或相位差)180°代表“1”,利用matlab软件画出DBPSK的波形
原理
利用前后相邻码元的载波相对相位变化传递数字信息,所以又称相对相移键控。假设∆φ为当前码元与前一码元的载波相位差,可定义一种数字信息与∆φ之间的关系为
程序源码
j=4000;
i=8;
t=linspace(0,i,j);
fc=2;%载波频率
%产生基带信号
a=[1,0,0,1,1,1,0,1]; % 二进制数据
st1=t;
for n=1:8
if a(n)<1
for m=j/8*(n-1)+1:j/8*n
st1(m)=0;
end
else
for m=j/8*(n-1)+1:j/8*n
st1(m)=1;
end
end
end
figure(1);
subplot(311);
plot(t,st1);
title('绝对码');
grid on ;axis([0,i,-1,2]);
%差分变换
b=zeros(1,8);
if(a(1)==0)
b(1)=0;
else
b(1)=1;
end
for n=2:8
if a(n)==b(n-1)
b(n)=0;
else
b(n)=1;
end
end
st1=t;
for n=1:8
if b(n)==0
for m=j/8*(n-1)+1:j/8*n
st1(m)=0;
end
else
for m=j/8*(n-1)+1:j/8*n
st1(m)=1;
end
end
end
subplot(323);
plot(t,st1);
title('相对码st1');
grid on ;axis([0,i,-1,2]);
st2=t;
for k=1:j
if st1(k)==1
st2(k)=0;
else
st2(k)=1;
end
end;
subplot(324); plot(t,st2);
title('相对码反码st2');
grid on;axis([0,i,-1,2]);
%载波信号
s1=sin(2*pi*fc*t+pi);
subplot(325); plot(s1);
grid on;axis([0 j -2 +2]);
title('载波信号s1');
s2=sin(2*pi*fc*t);
subplot(326); plot(s2);
grid on;axis([0 j -2 +2]);
title('载波信号s2');
%信号调制
d1=st1.*s1;
d2=st2.*s2;
figure(2);
subplot(311);plot(t,d1);
grid on; axis([0 n -2 +2]);
title('st1*s1');
subplot(312);plot(t,d2);
grid on ;axis([0 n -2 +2]);
title('st2*s2');
e_dpsk=d1+d2;
subplot(313);plot(t,e_dpsk);
grid on ;axis([0 n -2 +2]);
title('调制后波形');
结果分析
名称 | 初始相位 | - | - | - | - | - | - | - | - |
---|---|---|---|---|---|---|---|---|---|
绝对码 | - | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 |
相对码st1 | 0 | π | π | π | 0 | π | 0 | 0 | π |
相对码st2 | π | 0 | 0 | 0 | π | 0 | π | π | 0 |
相应的DBPSK信号调制过程波形如下图所示
结语
差分也就是相对,遇到0相位不变,遇到1相位就要发生变化。