频带传输数字频带传输系统之不同调制方式的误码率与频谱特性总结

Posted fpga和matlab

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了频带传输数字频带传输系统之不同调制方式的误码率与频谱特性总结相关的知识,希望对你有一定的参考价值。

1.软件版本

MATLAB2017b

2.算法结论分析

       数字频带传输系统的设计与仿真,使用matlab编写了一个数字频带传输系统,分别实现2ASK、2FSK、2PSK、2DPSK、4ASK、4FSK、4PSK、4DPSK、QPSK,以及4QAM、16QAM和MSK、GMSK这些调制和解调过程。

2ASK,2FSK,2PSK,2DPSK四个二进制的仿真结论如下所示:

 

 

 4ASK,4FSK,4PSK,4DPSK四个四进制的仿真结论如下所示:

 

 

 

 QPSK,4QAM,16QAM三个仿真结果如下所示:

 

 

 

 MSK,GMSK两个个仿真结果如下所示:

 

3.部分源码

clc;
clear all;
close all;
warning off;

Fd=1;  %信号数据率
Fc=4;  %载波频率
Fs=16; %调制信号的采样频率
N=Fs/Fd; 
M=4;   %二进制
k=log2(M); %比特数
SNRpBit=0:2:16; %设置仿真信噪比的范围(dB/bit)
SNR=SNRpBit+10*log10(k);  %dB/符号
r=10.^(SNRpBit(:).*0.1); %信噪比(线性的)
symPerIter=2048; %每次迭代符号的次数
iters=50;          %迭代次数
numSymbTot=symPerIter*iters; 
grayencod=bitxor([0:M-1],floor([0:M-1]/2));
[dummy graydecod]=sort(grayencod);
graydecod=graydecod-1;
for(idx2=[1:length(SNR)])
    idx=1;
    idx2
    while((idx<=iters))
        %创建信号及Gray编码
        msg_orig=randsrc(symPerIter,1,[0:M-1]);
        %Gray编码
        msg_gr_orig=grayencod(msg_orig+1)';   
        %2ASK
        msg_tx1=dmod(msg_gr_orig,Fc,Fd,Fs,'ask',M);   %数字带通调制
        msg_rx1=awgn(msg_tx1,SNR(idx2)-10*log10(0.5*N),'measured',[],'dB'); %对调制信号添加高斯白噪声,由于是带通信号,所以噪声功率只有一半
        msg_gr_demod1=ddemod(msg_rx1,Fc,Fd,Fs,'ask',M); %解调带通调制信号
        msg_demod1=graydecod(msg_gr_demod1+1)';       %Gray码解码  
        [errBit1(idx) ratBit1(idx)]=biterr(msg_orig,msg_demod1,k); %计算本次迭代的BER
        %2FSK
        msg_tx2=dmod(msg_gr_orig,Fc,Fd,Fs,'fsk',M);
        msg_rx2=awgn(msg_tx2,SNR(idx2)-10*log10(0.5*N),'measured',[],'dB');
        msg_gr_demod2=ddemod(msg_rx2,Fc,Fd,Fs,'fsk',M);
        msg_demod2=graydecod(msg_gr_demod2+1)';        
        [errBit2(idx) ratBit2(idx)]=biterr(msg_orig,msg_demod2,k);
        %2PSK
        msg_tx3=dmod(msg_gr_orig,Fc,Fd,Fs,'psk',M);
        msg_rx3=awgn(msg_tx3,SNR(idx2)-10*log10(0.5*N),'measured',[],'dB');
        msg_gr_demod3=ddemod(msg_rx3,Fc,Fd,Fs,'psk',M);
        msg_demod3=graydecod(msg_gr_demod3+1)';        
        [errBit3(idx) ratBit3(idx)]=biterr(msg_orig,msg_demod3,k);
        %2DPSK
        msg_tx4=dpskmod(msg_gr_orig,M);
        msg_rx4=awgn(msg_tx4,SNR(idx2)-10*log10(0.5*N),'measured',[],'dB');
        msg_gr_demod4=dpskdemod(msg_rx4,M);
        msg_demod4=graydecod(msg_gr_demod4+1)';        
        [errBit4(idx) ratBit4(idx)]=biterr(msg_orig,msg_demod4,k);
        idx=idx+1; 
    end
    %计算各次迭代后的平均BER
    ratio1(idx2,1)=[mean(ratBit1)];
    ratio2(idx2,1)=[mean(ratBit2)];
    ratio3(idx2,1)=[mean(ratBit3)];
    ratio4(idx2,1)=[mean(ratBit4)];
end

figure;
subplot(121);
semilogy(SNRpBit([1:size(ratio1(:,1),1)]),ratio1(:,1),'b-o');
grid on;
xlabel('SNR(db)');
ylabel('误码率');
legend('仿真的4ASK');
subplot(122);
y0 = abs(fftshift(fft(msg_tx1)));
y1 = abs(fftshift(fft(msg_rx1)));
plot(y1./y0);
legend('频响图');

figure;
subplot(121);
semilogy(SNRpBit([1:size(ratio2(:,1),1)]),ratio2(:,1),'b-o');
grid on;
xlabel('SNR(db)');
ylabel('误码率');
legend('仿真的4FSK');
subplot(122);
subplot(122);
y0 = abs(fftshift(fft(msg_tx2)));
y1 = abs(fftshift(fft(msg_rx2)));
plot(y1./y0);
legend('频响图');
figure;
subplot(121);
semilogy(SNRpBit([1:size(ratio3(:,1),1)]),ratio3(:,1),'b-o');
grid on;
xlabel('SNR(db)');
ylabel('误码率');
legend('仿真的4PSK');
subplot(122);
subplot(122);
y0 = abs(fftshift(fft(msg_tx3)));
y1 = abs(fftshift(fft(msg_rx3)));
plot(y1./y0);
legend('频响图');
figure;
subplot(121);
semilogy(SNRpBit([1:size(ratio4(:,1),1)]),ratio4(:,1),'b-o');
grid on;
xlabel('SNR(db)');
ylabel('误码率');
legend('仿真的4DPSK');
subplot(122);        
subplot(122);
y0 = abs(fftshift(fft(msg_tx4)));
y1 = abs(fftshift(fft(msg_rx4)));
plot(y1./y0);
legend('频响图');

A01-86

 

以上是关于频带传输数字频带传输系统之不同调制方式的误码率与频谱特性总结的主要内容,如果未能解决你的问题,请参考以下文章

第三章—编码和调制

GUET 通原 B

物联网通信技术复习要点

计算机网络物理层

计算机网络带宽理解

基于FPGA的QPSK调制系统verilog开发