基于MATLAB的ASK,FSK,PSK误码率对比仿真,输出调制后波形以及误码率曲线

发布时间 2023-03-30 20:06:51作者: 我爱C编程

1.算法描述

       在数字通信的三种调制方式(ASKFSKPSK)中, 就频带利用率和抗噪声性能(或功率利用率)两个方面来看,一般而言,都是PSK系统最佳。所以PSK在 中、高速数据传输中得到了广泛的应用。

 

ASK: 幅度键控可以通过乘法器和开关电路来实现。载波在数字信号10的控制下通或断,在信号为1的状态载波接通,此时传输信道上有载波出现;在信号为0的状态下,载波被关断,此时传输信道上无载波传送。那么在接收端我们就可以根据载波的有无还原出数字信号的10

 

2-ASK信号功率谱密度的特点如下:

1)由连续谱和离散谱两部分构成;连续谱由传号的波形g(t)经线性调制后决定,离散谱由载波分量决定;

2)已调信号的带宽是基带脉冲波形带宽的二倍。

 

 

 

 

FSK:频移键控是利用两个不同频率f1f2的振荡源来代表信号10,用数字信号的10去控制两个独立的振荡源交替输出。对二进制的频移键控调制方式,其有效带宽为B=2xF+2Fb,xF是二进制基带信号的带宽也是FSK信号的最大频偏,由于数字信号的带宽即Fb值大,所以二进制频移键控的信号带宽B较大,频带利用率小。

 

2-FSK功率谱密度的特点如下:

 

(1) 2FSK信号的功率谱由连续谱和离散谱两部分构成,离散谱出现在f1f2位置;

 

(2) 功率谱密度中的连续谱部分一般出现双峰。若两个载频之差|f1 -f2|fs,则出现单峰。

 

 

 

 

 PSK:在相移键控中,载波相位受数字基带信号的控制,如在二进制基带信号中为0时,载波相位为0或π,为1时载波相位为π或0。载波相位和基带信号有一一对应的关系,从而达到调制的目的。

 

2-PSK信号的功率密度有如下特点:

 

(1) 由连续谱与离散谱两部分组成;

 

(2) 带宽是绝对脉冲序列的二倍;

 

(3) 2ASK功率谱的区别是当P1/2时,2PSK无离散谱,而2ASK存在离散谱。

 

 

 

 

2.仿真效果预览

matlab2022a仿真结果如下:

 

 

 

 

 

 

3.MATLAB核心程序

 

%ASK
sa1=sin(2*pi*f1*t);
E1=sum(sa1.^2);
sa1=sa1/sqrt(E1); %unit energy 
sa0=0*sin(2*pi*f1*t);
%FSK
sf0=sin(2*pi*f1*t);
E=sum(sf0.^2);
sf0=sf0/sqrt(E);
sf1=sin(2*pi*f2*t);
E=sum(sf1.^2);
sf1=sf1/sqrt(E);
%PSK
sp0=-sin(2*pi*f1*t)/sqrt(E1);
sp1=sin(2*pi*f1*t)/sqrt(E1);
 
..........................................................
figure(1)
subplot(411)
stairs(0:10,[b(1:10) b(10)],'linewidth',1.5)
axis([0 10 -0.5 1.5])
title('Message Bits');grid on
subplot(412)
tb=0:1/30:10-1/30;
plot(tb, ask(1:10*30),'b','linewidth',1.5)
title('ASK Modulation');grid on
subplot(413)
plot(tb, fsk(1:10*30),'r','linewidth',1.5)
title('FSK Modulation');grid on
subplot(414)
plot(tb, psk(1:10*30),'k','linewidth',1.5)
title('PSK Modulation');grid on
xlabel('Time');ylabel('Amplitude')
%AWGN
for snr=0:20
    askn=awgn(ask,snr);
    pskn=awgn(psk,snr);
    fskn=awgn(fsk,snr);
.........................................................
 
    %BER
    errA=0;errF=0; errP=0;
    for i=1:n
        if A(i)==b(i)
            errA=errA;
        else
            errA=errA+1;
        end
        if F(i)==b(i)
            errF=errF;
        else
            errF=errF+1;
        end
        if P(i)==b(i)
            errP=errP;
        else
            errP=errP+1;
        end
    end
    BER_A(snr+1)=errA/n;
    BER_F(snr+1)=errF/n;
    BER_P(snr+1)=errP/n;
end
 
figure(2)
subplot(411)
stairs(0:10,[b(1:10) b(10)],'linewidth',1.5)
axis([0 10 -0.5 1.5]);grid on
title('Received signal after AWGN Channel')
subplot(412)
tb=0:1/30:10-1/30;
plot(tb, askn(1:10*30),'b','linewidth',1.5)
title('Received ASK signal');grid on
subplot(413)
plot(tb, fskn(1:10*30),'r','linewidth',1.5)
title('Received FSK signal');grid on
subplot(414)
plot(tb, pskn(1:10*30),'k','linewidth',1.5)
title('Received PSK signal');grid on
figure(3)
semilogy(0:20,BER_A, 'b','linewidth',2)
title('BER Vs SNR')
grid on;
hold on
semilogy(0:20,BER_F,'r','linewidth',2)
semilogy(0:20,BER_P, 'k','linewidth',2)
xlabel('Eo/No(dB)')
ylabel('BER')
hold off
legend('ASK','FSK','PSK');