【通信原理】实验五 基于Matlab的2ASK和2FSK调制解调

一、实验目的

1.掌握2ASK和2FSK的调制原理和解调原理。
2.学会Matlab仿真软件在振幅键控和频移键控调制中的应用。
3.掌握参数设置方法和性能分析方法。
4.通过实验中波形的变换,学会分析实验现象。

二、实验器材

计算机,MATLAB软件

三、实验原理

1、二进制振幅键控(2ASK)

频移键控是利用载波的幅度变化来传递数字信息,而其频率和初始相位保持不变。在2ASK中,载波的幅度只有两种变化状态,分别对应二进制信息“0”或“1”。二进制振幅键控的表达式为:

s(t) = A(t)cos(w0+θ)  0<t≤T

式中,w0=2πf0为载波的角频率;A(t)是随基带调制信号变化的时变振幅,即
在这里插入图片描述

典型波形如图1所示:
在这里插入图片描述

                  图1   2ASK的调制波形  

2ASK信号的产生方法通常有两种:相乘法和开关法,相应的调制器如图2。图2(a)就是一般的模拟幅度调制的方法,用乘法器实现;图2(b)是一种数字键控法,其中的开关电路受s(t)控制。
在这里插入图片描述
在这里插入图片描述

在接收端,2ASK有两种基本的解调方法:非相干解调(包络检波法)和相干解调(同步检测法),相应的接收系统方框图如图:
在这里插入图片描述
在这里插入图片描述

2、二进制频移键控(2FSK)

二进制频移键控信号码元的“1”和“0”分别用两个不同频率的正弦波形来传送,而其振幅和初始相位不变。故其表达式为:
在这里插入图片描述

                       图4 2FSK信号时间波形

由图可见,2FSK信号的波形(a)可以分解为波形(b)和波形(c),也就是说,一个2FSK信号可以看成是两个不同载频的2ASK信号的叠加。
2FSK信号的调制方法主要有两种。第一种是用二进制基带矩形脉冲信号去调制一个调频器,使其能够输出两个不同频率的码元。第二种方法是用一个受基带脉冲控制的开关电路去选择两个独立频率源的振荡作为输出。
2FSK信号的接收也分为相关和非相关接收两类。相关接收根据已调信号由两个载波f1、f2调制而成,则先用两个分别对f1、f2带通的滤波器对已调信号进行滤波,然后再分别将滤波后的信号与相应的载波f1、f2相乘进行相干解调,再分别低通滤波、用抽样信号进行抽样判决器即可。原理图如下:
在这里插入图片描述

非相关接收经过调制后的2FSK数字信号通过两个频率不同的带通滤波器f1、f2滤出不需要的信号,然后再将这两种经过滤波的信号分别通过包络检波器检波,最后将两种信号同时输入到抽样判决器同时外加抽样脉冲,最后解调出来的信号就是调制前的输入信号。其原理图如下图所示:
在这里插入图片描述

					图5(b)非相干方式

四、示例演示

1.(1)产生二进制随机信号源,绘制信号源波形图;实现2ASK调制,绘制相应的信号波形图。
(2)利用awgn函数实现2ASK信号通过加性高斯白噪声信道,其中SNR = 15dB;并解调。
程序代码:

1、2ASK的模拟调制程序如下:

clear all; 
close all;
clc;
M=10;                      	%产生码元数    
L=100;                           %每码元复制L次
Ts=1;           %每个码元的宽度,即码元的持续时间
Rb=1/Ts;           %码元速率
dt=Ts/L;                        %采样间隔
TotalT=M*Ts;                     %总时间
t=0:dt:TotalT-dt;                     %时间
%产生单极性波形
wave=randint(1,M);          %产生二进制随机码,M为码元个数
fz=ones(1,L);               %定义复制的次数L,L为每码元的采样点数
x1=wave(fz,:);   %复制的第1行复制L次
dnrz=reshape(x1,1,L*M);   %产生单极性不归零矩形脉冲波形
fc=2*Rb;            %载波频率是码元速率的2倍,即载波的周期是码元周期的1/2;        
zb=sin(2*pi*fc*t);
ask2=dnrz.*zb;   %2ASK的模拟调制
subplot(4,1,1)
plot(t,dnrz)
xlabel('(a)单极性不归零矩形脉冲')
axis([0,TotalT,-0.1,1.1])
subplot(4,1,2)
plot(t,ask2);
xlabel('(b)2ASK已调信号波形')
axis([0,TotalT,-1.1,1.1]);
%已调信号通过含有高斯白噪声的信道
tz=awgn(ask2,15);  %信号ask2中加入白噪声,信噪比为SNR=15dB
subplot(4,1,3);
plot(t,tz);
axis([0,TotalT,-1.5,1.5]);
xlabel('通过高斯白噪声信道后的信号');

2、2ASK的开关键控法,调制程序如下:

clear all; 
M=10;                      	%产生码元数    
L=100;                           %每码元复制L次
Ts=1;           %每个码元的宽度,即码元的持续时间
Rb=1/Ts;           %码元速率
dt=Ts/L;                        %采样间隔
TotalT=M*Ts;                     %总时间
t=0:dt:TotalT-dt;                     %时间
wave=randint(1,M);  %长度为M的随机二进制序列
fc=2*Rb;     %载波频率是码元速率的2倍,即载波的周期是码元周期1/2;     
s=[]; 
ask2=[];
dnrz=[];
for i=1:M
  t1=(i-1)*Ts:dt:i*Ts-dt;     
    if (wave(i)==1)  
        s=sin(2*pi*fc*t1);  
        b=ones(1,L);
    end
    if (wave(i)==0)
        s=0*sin(2*pi*fc*t1);    
        b=zeros(1,L);
    end
   ask2=[ask2,s];  %2ASK的键控调制
   dnrz=[dnrz,b];%产生单极性不归零波形
end
subplot(4,1,1)
plot(t,dnrz)
xlabel('(a)单极性不归零矩形脉冲')
axis([0,TotalT,-0.3,1.3])
subplot(4,1,2)
plot(t,ask2);
xlabel('(b)2ASK已调信号波形')
axis([0,TotalT,-1.3,1.3]);
tz=awgn(ask2,15);  %信号ask2中加入白噪声,信噪比为SNR=15dB
subplot(4,1,3);
plot(t,tz);
axis([0,TotalT,-1.3,1.3]);
xlabel('(c)通过高斯白噪声信道后的信号');

3.2ASK的解调,程序如下:

%解调程序
dpsk=abs(hilbert(tz));
depsk = zeros(1,L*M);
for m = L/2:L:L*M;
    if dpsk(m) < 0.5; 
        for i = 1:L
            depsk((m-50)+i) = 0;   
        end
    else dpsk(m) >= 0.5;
        for i = 1:L
            depsk((m-50)+i) = 1;   
        end          
    end
end
subplot(4,1,4);
plot(t,depsk);
axis([0,TotalT,-0.3,1.3])
xlabel('(d)抽样判决后的信号波形')

在这里插入图片描述

             图6  2ASK的调制解调波形

五、实验内容及要求

利用MATLAB仿真平台,完成下列任务:
(1)产生二进制随机信号源,绘制信号源波形图;实现2FSK调制,绘制相应的信号波形图;

clear all; 
close all;
clc;
M=10;                          
L=100;                          
Ts=1;         
Rb=1/Ts;
dt=Ts/L;
fs=1/dt;                      
TotalT=M*Ts;                   
t=0:dt:TotalT-dt;                  
wave=randint(1,M);         
fz=ones(1,L);              
x1=wave(fz,:);  
dnrz=reshape(x1,1,L*M);  
fc=2*Rb;                 
kf=0.3;
sfm=modulate(dnrz,fc,fs,'fm',kf);
subplot(121);
plot(t,dnrz);
axis([0 TotalT -0.1 1.1]);
subplot(122);
plot(t,sfm);

(2)实现2FSK信号通过加性高斯白噪声信道,实现2FSK信号解调,并绘制各阶段信号波形图。

clear all; 
clc;
M=10;                       %产生码元数    
L=100;                           %每码元复制L次
Ts=1;           %每个码元的宽度,即码元的持续时间
Rb=1/Ts;           %码元速率
dt=Ts/L;                        %采样间隔
TotalT=M*Ts;                     %总时间
t=0:dt:TotalT-dt;                     %时间
wave=randint(1,M);  %长度为M的随机二进制序列
f1=2*Rb;%载波频率是码元速率的2倍,即载波的周期是码元周期1/2;     
f2=5*Rb; 
zb=[]; 
cp1=[];cp2=[];
for i=1:M
  t1=(i-1)*Ts:dt:i*Ts-dt;     
    if (s(i)==0)  ;
        b=zeros(1,L);
        m=ones(1,L);
        c=sin(2*pi*f1*t1);
    else
         (s(i)==1)  ;
        b=zeros(1,L);
        m=ones(1,L);
        c=sin(2*pi*f2*t1);
        
    end
    if (wave(i)==0)
        s=0*sin(2*pi*fc*t1);    
        b=zeros(1,L);
    end
   fsk2=[fsk2,s];  %2fSK的键控调制
   dnrz=[dnrz,b];%产生单极性不归零波形
end
cp1=[cp1 b];
cp2=[cp2 m];
zb=[zb c];
end
t1=cp1.*zb;
t2=cp2.*zb;
tiaoz=zb;%调制2fsk
t=linespace(0,M,M*L);
subplot(3,1,1);
plot(t,cp1);
grid on;
axis([0 M -0.1 1.1]);
title('二进制信号序列');

     cp=awgn(fsk2,15);  %信号fsk2中加入白噪声,信噪比为SNR=15dB
subplot(3,1,2);
plot(t,tiaoz);
grid on;
axis([0,M -1.1 1.1]);
title('2fsk调制信号');
y1=abs(hilbert(t1));
y2=abs(hilbert(t2));
figure
subplot(4,1,1);
plot(t,cp1);
axis([0,M -0.1 1.1]);
subplot(4,1,2);
plot(t,y1);
subplot(4,1,3);
plot(t,y2);
jt=zero(1,L*M);
for m =L/2:L:L*M;
    if y1(m)< y2(m);
       for i=1:L;
           jt=((m-50)+i)=0;
       end
    else y1(m)<y2(m);
       for i=1:L;
           jt=((m-50)+i)=1;
       end
    end
end

        
subplot(4,1,4)
plot(t,jt);
grid on
axis([0,M,-0.1,1.1]);

title('抽样判决后的信号波形')

更多文章点如下

【全套完结】通信原理----全套Matlab仿真实验报告
https://blog.csdn.net/qq_45696377/article/details/121384301

【Java全栈】Java全栈学习路线及项目全资料总结【JavaSE+Web基础+大前端进阶+SSM+微服务+Linux+JavaEE】
https://blog.csdn.net/qq_45696377/article/details/110575362

上一篇:
【通信原理】实验四 数字基带信号的眼图实验
https://blog.csdn.net/qq_45696377/article/details/121383195

下一篇:

猜你喜欢

转载自blog.csdn.net/qq_45696377/article/details/121527803