数字通信调制方式的误码率matlab仿真,包括OOK,PRK,FSK以及QAM

213 阅读5分钟

1.算法仿真效果

matlab2022a仿真结果如下:

e6fb361a06cea4e5ed012c310ab7be27_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png  

2.算法涉及理论知识概要

      传输模拟信号时一样,传输数字信号时也有三种基本的调制方式:幅移键控(ASK)、频移键控(FSK)和相移键控(PSK)。它们分别对应于用载波(正弦波)的幅度、频率和相位来传递数字基带信号,可以看成是模拟线性调制和角度调制的特殊情况。

 

       理论上,数字调制与模拟调制在本质上没有什么不同,它们都是属正弦波调制。但是,数字调制是调制信号为数字型的正弦波调制,而模拟调制则是调制信号为连续型的正弦波调制。

 

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

 

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

 

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

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

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

OOK(On-Off Keying),通断键控。

 

      如上图所示,Vm(t) 是需要发送的数字信号,Acos(2πfct) 是未经过调制的载波,VAM(t)是经过OOK调制的载波信号。

 

      OOK的调制原理就是用来控制把一个幅度取为0,另一个幅度为非0,就是OOK。又名二进制振幅键控(2ASK),它是以单极性不归零码序列来控制正弦载波的开启与关闭。

       正交振幅键控是一种将两种调幅信号(2ASK和2PSK)汇合到一个信道的方法,因此会双倍扩展有效带宽,正交调幅被用于脉冲调幅。正交调幅信号有两个相同频率的载波,但是相位相差90度(四分之一周期,来自积分术语)。一个信号叫I信号,另一个信号叫Q信号。从数学角度将一个信号表示成正弦,另一个表示成余弦。两种被调制的载波在发射时已被混和。到达目的地后,载波被分离,数据被分别提取然后和原始调制信息相混和。

       QAM是用两路独立的基带信号对两个相互正交的同频载波进行抑制载波双边带调幅,利用这种已调信号的频谱在同一带宽内的正交性,实现两路并行的数字信息的传输。该调制方式通常有二进制QAM(4QAM)、四进制QAM(l6QAM)、八进制QAM(64QAM)…,对应的空间信号矢量端点分布图称为星座图,分别有4、16、64…个矢量端点。电平数m和信号状态M之间的关系是对于4QAM,当两路信号幅度相等时,其产生、解调、性能及相位矢量均与4PSK相同。

 

 

 

3.MATLAB核心程序 `for i=1:length(SNR)  

    i

    OOK_sequence=awgn(signal_OOK,SNR(i),'measured');

  

    PRK_sequence=awgn(signal_PRK,SNR(i),'measured');

    

    FSK_sequence=awgn(signal_FSK,SNR(i),'measured');

    

    OOK_sequence_mat=awgn(OOK_mat_mod,SNR(i),'measured');

    

    PRK_sequence_mat=awgn(PRK_mat_mod,SNR(i),'measured');

    

    FSK_sequence_mat=awgn(FSK_mat_mod,SNR(i),'measured');

 

    QAM_sequence_mat=awgn(QAM_mat_mod,SNR(i),'measured');

    

 

    OOK_demod      =(real(OOK_sequence) >=0.5);

    PRK_demod      =(real(PRK_sequence) >=0);

    FSK_demod      =(real(FSK_sequence)<imag(FSK_sequence));

 

    OOK_mat_demod  = genqamdemod(OOK_sequence_mat,[0  1]);

    PRK_mat_demod  = pskdemod(PRK_sequence_mat,2);

    FSK_mat_demod  = genqamdemod(FSK_sequence_mat,[1  1i]);

    rbdv_mat_demod = qamdemod(QAM_sequence_mat,16);

end

 

 

figure

semilogy(SNR,OOK,'-bs',...

    'LineWidth',1,...

    'MarkerSize',6,...

    'MarkerEdgeColor','k',...

    'MarkerFaceColor',[0.9,0.0,0.0]);

hold on;

semilogy(SNR,OOK_mat,'-mo',...

    'LineWidth',1,...

    'MarkerSize',6,...

    'MarkerEdgeColor','k',...

    'MarkerFaceColor',[0.5,0.9,0.0]);

hold on;

semilogy(SNR,PRK,'-b^',...

    'LineWidth',1,...

    'MarkerSize',6,...

    'MarkerEdgeColor','k',...

    'MarkerFaceColor',[0.2,0.9,0.5]);

hold on;

semilogy(SNR,PRK_mat,'-r>',...

    'LineWidth',1,...

    'MarkerSize',6,...

    'MarkerEdgeColor','k',...

    'MarkerFaceColor',[0.9,0.9,0.0]);

hold on;

semilogy(SNR,FSK,'-k<',...

    'LineWidth',1,...

    'MarkerSize',6,...

    'MarkerEdgeColor','k',...

    'MarkerFaceColor',[0.9,0.3,0.3]);

hold on;

semilogy(SNR,FSK_mat,'-b>',...

    'LineWidth',1,...

    'MarkerSize',6,...

    'MarkerEdgeColor','k',...

    'MarkerFaceColor',[0.9,0.3,0.9]);

hold on;

semilogy(SNR,QAM_mat,'-ko',...

    'LineWidth',1,...

    'MarkerSize',6,...

    'MarkerEdgeColor','k',...

    'MarkerFaceColor',[0.9,0.9,0.3]);

 

ylabel('BER')

xlabel('SNR')

legend('OOK','OOK toolbox','PSK','PSK toolbox','FSK','FSK toolbox','QAM toolbox')

grid on;`