Matlab 2DPSK数字频带传输系统-西安电子科技大学-电子信息类-b测

一、实验原理

1、2DPSK调制原理

2PSK信号中,信号相位的变化是以未调正弦载波的相位作为参考,用载波相位的绝对数值来表示数字信息的,所以称为绝对移相。由于相干载波恢复中载波相位的180°相位模糊,导致解调出的二进制基带信号出现了反向现象,从而难以实际应用,由此提出了二进制差分相位键控

2DPSK是利用前后码元的载波相对相位变化传递数字信息的,所以又称相对相移键控,假设前后相邻码元的载波相位差为Δφ ,可定义一种数字信息与 之间的关系为
在这里插入图片描述数字信息与 之间的关系也可以定义为
在这里插入图片描述2DPSK的实现过程可以采用如下方法:首先对二进制数字基带信号进行差分编码,将绝对码表示成二进制信息变换为用相对码表示二进制信息,然后再进行绝对调相,从而产生二进制差分相位键控信号,2DPSK信号调制器原理图如下:
在这里插入图片描述

2、2DPSK解调原理

2DPSK信号可以采用相干解调方式(极性比较法)。其解调原理是:对2DPSK信号进行相干解调,恢复出相对码,在通过码反变换器变换为绝对码,从而恢复出发送的二进制数字信息。在解调过程中,若相干载波产生180°相位模糊,解调出的相对码将产生倒置现象,但是经过码反变换器后,输出的绝对码不会发生任何倒置现象,从而解决了载波相位模糊度的问题。
在这里插入图片描述2DPSK信号也可以采用差分相干解调方式(相位比较法)。其解调原理是直接比较前后码元的相位差,从而恢复发送的二进制数字信息。由于解调的同时完成了码反变换作用,故解调器不需要码反变换器。由于差分相干解调方式不需要专门的相干载波,因此是一种非相干解调方法。

在这里插入图片描述

二、实验流程

1、调制系统设计

1)产生基带信号

本次实验我们组使用matlab中的randi函数随机产生了20000个随机数,对应0/1二进制信源,此过程产生的码为绝对码

%产生基带信号波形
bits = randi(2,1,Nsym)-1;      %生成长度为Nsym的伪随机序列
s_t = ones(1,Num_Unit*Nsym);
High_Level = ones(1,Num_Unit);
Low_Level = zeros(1,Num_Unit);

for n = 1:Nsym
    if bits(n)==0
        s_t((n-1)*Num_Unit+1:n*Num_Unit)=Low_Level;
    else
        s_t((n-1)*Num_Unit+1:n*Num_Unit)=High_Level;
    end
end
figure(1)
subplot(211)
plot(s_t);title("绝对码");
2)产生相对码

根据相对码的原理在这里插入图片描述此实验中,我们把相对码初始值设为0

Diff_s_t = ones(1,Num_Unit*Nsym);
for i = 1:Nsym
    if i == 1
        Diff_s_t((i-1)*Num_Unit+1:i*Num_Unit)=mod(0+s_t((i-1)*Num_Unit+1:i*Num_Unit),2);
    else
        Diff_s_t((i-1)*Num_Unit+1:i*Num_Unit)=mod(Diff_s_t((i-2)*Num_Unit+1:(i-1)*Num_Unit)+s_t((i-1)*Num_Unit+1:i*Num_Unit),2);
    end
end
figure(1)
subplot(212)
plot(Diff_s_t);title("相对码");
3)产生载波信号

设载波振幅为1V,载波频率为120Khz

c_t = Ac*cos(2*pi*fc*t) ;
4) 调制

定义数字信息“1”对应相位差为0,数字信息“0”对应相位差为π,对生成的相对码进行绝对调相

Sm_t = ones(1,Num_Unit*Nsym);
for m = 1:Nsym
    if Diff_s_t((m-1)*Num_Unit+1:m*Num_Unit) == 1
        Sm_t((m-1)*Num_Unit+1:m*Num_Unit)=Ac*cos(2*pi*fc*t((m-1)*Num_Unit+1:m*Num_Unit)+pi/2);%1对应的相移为0,对应
    else
        Sm_t((m-1)*Num_Unit+1:m*Num_Unit)=Ac*cos(2*pi*fc*t((m-1)*Num_Unit+1:m*Num_Unit)-pi/2);%0对应的相移为pi
    end
end

2、传输系统设计

将调制信号通过高斯信道,画出对应时域波形和频域波形,设置信噪比SNR为8dB

%高斯信道传输
Sm_t_awgn = awgn(Sm_t, 8, 'measured');  %已调信号通过高斯信道,信噪比为8
figure(3)
subplot(313);
X_m3=fft(Sm_t_awgn,N)*2/N;
M_d3=abs(fftshift(X_m3));
f3=(-N/2:N/2-1)*fs/N;
plot(f3,M_d3);title('高斯信道传输后的调制信号频谱')
xlabel('Frequency');
ylabel('Amplitude');

3、解调系统设计

1)带通滤波器

采用巴特沃斯带通滤波器,设置通带为(96kHz,144kHz),阻带为(0,60kHz)和(180kHz,+∞),并进行归一化,通带纹波起伏为1dB,阻带纹波起伏为40dB

%通过带通滤波器
Wp = [96e3 144e3]/(fs/2);
Ws = [60e3 180e3]/(fs/2);%对Wp,Ws进行归一化
Rp = 1;
Rs = 40;
[n,Wn] = buttord(Wp,Ws,Rp,Rs);   %设计buttord巴特沃斯带通滤波器,n为滤波器阶数,Wn为截止频率

[b,a] = butter(n,Wn);
y_t = filter(b,a,Sm_t_awgn);
2)乘法器

将通过带通滤波器的信号乘以一个与高频载波同频同相的信号

3)低通滤波器

采用巴特沃斯低通滤波器,设置通带范围为(0,24kHz),阻带为(50kHz,+∞),并进行归一化,通带纹波起伏为1dB,阻带纹波起伏为40dB

Wp2 = 24e3/(fs/2);
Ws2 = 50e3/(fs/2);
Rp2 = 1;
Rs2 = 40;
[n2,Wn2] = buttord(Wp2,Ws2,Rp2,Rs2);   %设计buttord巴特沃斯带通滤波器,n为滤波器阶数,Wn为截止频率

[b2,a2] = butter(n2,Wn2);
d_t = filter(b2,a2,x_t);
4)抽样判决器

最佳抽样时刻为:中间时刻+系统延时,同时差分码有一个周期的延迟,我们在最佳抽样时刻进行抽样,如果抽样值大于0,则判为1;反之,判为0;

%抽样判决
e_t = zeros(1,N+2*Num_Unit);
group_delay = 30;
for k=1:Nsym-1
    if d_t((k*Num_Unit+group_delay+Num_Unit/2))>0
        e_t((k-1)*Num_Unit+1:k*Num_Unit)=1;
    else
        e_t((k-1)*Num_Unit+1:k*Num_Unit)=0;
    end
end
5)码反变换器

根据码反变换的原理在这里插入图片描述将抽样判决得到的相对码恢复为绝对码

f_t = ones(1,Nsym*Num_Unit);
for v = 1:Nsym
    if v == 1
       f_t(0+1:v*Num_Unit)=mod(0+e_t(0+1:v*Num_Unit),2);
    else
       f_t((v-1)*Num_Unit+1:v*Num_Unit)=mod(e_t((v-2)*Num_Unit+1:(v-1)*Num_Unit)+e_t((v-1)*Num_Unit+1:v*Num_Unit),2);
    end
end

三、源程序

clear
clc

%%
%参数设置
Rb = 24e3;               	%码元速率
Ts = 1/Rb;               	%码元持续时间
Nsym  = 20000;        		%码元数量
fs = 3072e3;         		%采样频率
dt = 1/fs;         			%采样间隔
Num_Unit = Ts/dt;          	%单位采样点数
Total_T = Nsym*Ts;     		%总时间
t = 0:dt:Total_T-dt;        %时间
fc = 120e3;             	%载波频率为120khz
Ac = 1;                		%载波振幅
%%
%产生基带信号波形
bits = randi(2,1,Nsym)-1;   %生成长度为Nsym的伪随机序列
s_t = ones(1,Num_Unit*Nsym);
High_Level = ones(1,Num_Unit);
Low_Level = zeros(1,Num_Unit);

for n = 1:Nsym
    if bits(n)==0
        s_t((n-1)*Num_Unit+1:n*Num_Unit)=Low_Level;
    else
        s_t((n-1)*Num_Unit+1:n*Num_Unit)=High_Level;
    end
end
figure(1)
subplot(211)
plot(s_t);title("绝对码");
axis([0,1500,0,1.2]);

%%
%差分编码
Diff_s_t = ones(1,Num_Unit*Nsym);
for i = 1:Nsym
    if i == 1
        Diff_s_t((i-1)*Num_Unit+1:i*Num_Unit)=mod(0+s_t((i-1)*Num_Unit+1:i*Num_Unit),2);
    else
        Diff_s_t((i-1)*Num_Unit+1:i*Num_Unit)=mod(Diff_s_t((i-2)*Num_Unit+1:(i-1)*Num_Unit)+s_t((i-1)*Num_Unit+1:i*Num_Unit),2);
    end
end
figure(1)
subplot(212)
plot(Diff_s_t);title("相对码");
axis([0,1500,0,1.2]);

%%
%2DPSK调制
c_t = Ac*cos(2*pi*fc*t) ;
Sm_t = ones(1,Num_Unit*Nsym);
for m = 1:Nsym
    if Diff_s_t((m-1)*Num_Unit+1:m*Num_Unit) == 1
        Sm_t((m-1)*Num_Unit+1:m*Num_Unit)=Ac*cos(2*pi*fc*t((m-1)*Num_Unit+1:m*Num_Unit)+pi/2);%1对应的相移为0,对应
    else
        Sm_t((m-1)*Num_Unit+1:m*Num_Unit)=Ac*cos(2*pi*fc*t((m-1)*Num_Unit+1:m*Num_Unit)-pi/2);%0对应的相移为pi
    end
end
figure(2)
subplot(311)
plot(c_t);title("载波信号");
axis([0,1500,-1.2,1.2]);
subplot(312)
plot(Sm_t);title("2DPSK调制信号");
axis([0,1500,-1.2,1.2]);
N = Nsym*Num_Unit;

figure(3)
subplot(311)
X_m1=fft(s_t,N)*2/N;
M_d1=abs(fftshift(X_m1));
f1=(-N/2:N/2-1)*fs/N;
plot(f1,M_d1);title('基带信号频谱')
xlabel('Frequency');
ylabel('Amplitude');

subplot(312)
X_m2=fft(Sm_t,N)*2/N;
M_d2=abs(fftshift(X_m2));
f2=(-N/2:N/2-1)*fs/N;
plot(f2,M_d2);title('2DPSK调制信号频谱')
xlabel('Frequency');
ylabel('Amplitude');
axis([-8e5,8e5,0,0.02]);

%%
%高斯信道传输
Sm_t_awgn = awgn(Sm_t, 8, 'measured');  %已调信号通过高斯信道,信噪比为8
figure(3)
subplot(313);
X_m3=fft(Sm_t_awgn,N)*2/N;
M_d3=abs(fftshift(X_m3));
f3=(-N/2:N/2-1)*fs/N;
plot(f3,M_d3);title('高斯信道传输后的调制信号频谱')
xlabel('Frequency');
ylabel('Amplitude');
axis([-8e5,8e5,0,0.02]);

figure (2)
subplot(313);
plot(Sm_t_awgn),title('通过高斯信道的信号');
axis([0,1500,-2,2]);

%%
%2DPSK解调
%通过带通滤波器
Wp = [96e3 144e3]/(fs/2);
Ws = [60e3 180e3]/(fs/2);%对Wp,Ws进行归一化
Rp = 1;
Rs = 40;
[n,Wn] = buttord(Wp,Ws,Rp,Rs);   %设计buttord巴特沃斯带通滤波器,n为滤波器阶数,Wn为截止频率

[b,a] = butter(n,Wn);
y_t = filter(b,a,Sm_t_awgn);

figure(4)
subplot(211)
plot(y_t);title('通过带通滤波器之后的信号');
axis([0,1500,-2,2]);
subplot(212)
X_m4=fft(y_t,N)*2/N;
M_d4=abs(fftshift(X_m4));
f4=(-N/2:N/2-1)*fs/N;
plot(f4,M_d4);title('通过带通滤波器后的信号频谱')
xlabel('Frequency');
ylabel('Amplitude');
axis([-8e5,8e5,0,0.02]);

%相乘器
x_t = zeros(1,N);
for j = 1:Nsym
        x_t((j-1)*Num_Unit+1:j*Num_Unit)=2*Ac*y_t((j-1)*Num_Unit+1:j*Num_Unit).*cos(2*pi*fc*t((j-1)*Num_Unit+1:j*Num_Unit)+pi/2);
end
        
%低通滤波器
Wp2 = 24e3/(fs/2);
Ws2 = 50e3/(fs/2);
Rp2 = 1;
Rs2 = 40;
[n2,Wn2] = buttord(Wp2,Ws2,Rp2,Rs2);   %设计buttord巴特沃斯带通滤波器,n为滤波器阶数,Wn为截止频率

[b2,a2] = butter(n2,Wn2);
d_t = filter(b2,a2,x_t);

figure(5)
subplot(311)
plot(x_t);title('通过相乘器之后的信号');
axis([0,1500,-2,2]);
subplot(312)
plot(d_t);title('通过低通滤波器之后的信号');
axis([0,1500,-2,2]);
subplot(313)
X_m5=fft(d_t,N)*2/N;
M_d5=abs(fftshift(X_m5));
f5=(-N/2:N/2-1)*fs/N;
plot(f5,M_d5);title('通过低通滤波器后的信号频谱')
xlabel('Frequency');
ylabel('Amplitude');
axis([-8e5,8e5,0,0.02]);

%抽样判决
e_t = zeros(1,N+2*Num_Unit);
group_delay = 30;
for k=1:Nsym-1
    if d_t((k*Num_Unit+group_delay+Num_Unit/2))>0
        e_t((k-1)*Num_Unit+1:k*Num_Unit)=1;
    else
        e_t((k-1)*Num_Unit+1:k*Num_Unit)=0;
    end
end

%码反变换

f_t = ones(1,Nsym*Num_Unit);
for v = 1:Nsym
    if v == 1
       f_t(0+1:v*Num_Unit)=mod(0+e_t(0+1:v*Num_Unit),2);
    else
       f_t((v-1)*Num_Unit+1:v*Num_Unit)=mod(e_t((v-2)*Num_Unit+1:(v-1)*Num_Unit)+e_t((v-1)*Num_Unit+1:v*Num_Unit),2);
    end
end

figure(6)
subplot(211)
plot(e_t);title('抽样判决之后的信号');
axis([0,1500,0,1.2]);
subplot(212)
plot(f_t);title('2dpsk解调信号');
axis([0,1500,0,1.2]);

%%
%误码率计算
sum = 0;
for w = 1:Nsym
    if f_t((w-1)*Num_Unit+120) == s_t((w-1)*Num_Unit+Num_Unit/2)
       sum = sum;
    else
       sum = sum+1;
    end
end
Pe = sum/Nsym;
fprintf('误码率是%f',Pe);

%眼图
t = d_t(1:200000);

% 眼图
 %取四个Bit

figure(7)
eyediagram(t, 2*Num_Unit);
title('眼图');
  • 13
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
2DPSK(双极相移键控)信号调制和解调是数字通信领域中常见的调制解调技术。基于Simulink的Matlab平台可以用于对2DPSK信号调制和解调系统进行仿真。 首先,在Simulink中搭建一个2DPSK信号调制系统的模型。这包括了二进制输入数据源、码间差分编码器、相移键控调制器、射频链路模型等组件。通过调节各个组件的参数和连接关系,可以构建出一个完整的2DPSK信号调制系统模型。 其次,在Simulink中搭建一个对应的2DPSK信号解调系统的模型。这包括了射频接收链路模型、相移解调器、码间差分解码器、二进制输出数据等组件。同样地,通过调节各个组件的参数和连接关系,可以构建出一个完整的2DPSK信号解调系统模型。 接着使用Matlab编写相应的仿真代码,包括初始化参数、运行仿真、绘制结果分析等步骤。通过运行仿真代码,可以得到2DPSK信号调制、解调系统在不同条件下的仿真结果,如星座图、误码率曲线等。 最后,根据仿真结果进行分析和评估,对2DPSK信号调制、解调系统的性能进行评估。通过对比不同参数设置下的仿真结果,可以得到系统性能随参数变化的规律,为后续系统设计和优化提供参考。 总之,基于Simulink的Matlab平台可以方便地进行2DPSK信号调制、解调系统的仿真工作,为数字通信领域的研究和工程应用提供了强大的工具和支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值