基于扩频解扩+turbo译码的64QAM图传通信系统matlab误码率仿真,扩频参数可设置

1.算法仿真效果

matlab2022a仿真结果如下(完整代码运行后无水印):

 

 

仿真操作步骤可参考程序配套的操作视频。

 

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

       该通信系统主要用于图像传输,适用于对图像质量和传输可靠性要求较高的场景,如无人机图像传输、视频监控、无线电视广播等。

 

       在复杂的电磁环境中,需要保证图像传输的稳定性和清晰度,因此采用了扩频解扩和 Turbo 译码等技术来提高系统的抗干扰能力。

 

发射端:包括图像源、64QAM调制器、扩频器、发射天线等。

接收端:包括接收天线、解扩器、64QAM解调器、Turbo 译码器、图像显示设备等。

 

2.1 64QAM调制解调

      64QAM 是用两路独立的正交 4ASK 信号叠加而成,4ASK 是用多电平信号去键控载波而得到的信号。它是 2ASK 调制的推广,和 2ASK 相比,这种调制的优点在于信息传输速率高。正交幅度调制是利用多进制振幅键控(MASK)和正交载波调制相结合产生的。64进制的正交振幅调制是一种振幅相位联合键控信号。64QAM 的产生有 2 种方法:

1)正交调幅法,它是有 2 路正交的四电平振幅键控信号叠加而成;

2)复合相移法:它是用 2 路独立的四相位移相键控信号叠加而成。

 

2.2 扩频技术

      扩频技术是将信号的带宽扩展到比原始信号带宽宽得多的范围内,从而降低信号的功率谱密度,提高抗干扰能力。

 

在发射端,将原始信号与一个高速的扩频码进行乘法运算,使信号的带宽被扩展。

 

在接收端,使用与发射端相同的扩频码进行解扩,将信号恢复到原始带宽。

 

常用的扩频码有伪随机码(如 m 序列、Gold 序列等),具有良好的自相关性和互相关性。

 

选择合适的扩频码可以提高系统的抗干扰性能和多址能力。

 

2.3 Turbo 译码

      Turbo 码是一种接近香农极限的纠错编码技术,由两个并行的卷积码编码器和一个交织器组成。通过迭代译码的方式,不断更新译码结果,提高译码的准确性。

 

     常用的 Turbo 译码算法有最大后验概率(MAP)算法和软输出维特比算法(SOVA)等。这些算法通过计算接收信号的似然比,对发送的信息进行估计和纠错。Turbo 译码具有较高的纠错能力,能够在低信噪比条件下实现可靠的通信。但是,Turbo 译码的计算复杂度较高,需要较大的计算资源和时间。

 

3.MATLAB核心程序

for i=1:length(SNR)
    Rimages = [];
    for iii=1:length(datbin)/Iimage_len
        [SNR(i),iii,floor(length(datbin)/Iimage_len)]
        %产生需要发送的随机数
        Trans_data = [datbin(Iimage_len*(iii-1)+1:Iimage_len*iii)];
        turbo_code = turbo_encode(Trans_data); 
        %DSSS   
        pseudoNumber          = round(rand(1,fp)');
        [dsss,converted,PN2]  = func_dsss(turbo_code,pseudoNumber,fp);
        Trans_BPSK            = QAM64_modulation(dsss);
        %通过高斯信道
        Rec_BPSK   = awgn(Trans_BPSK,SNR(i),'measured');   
        ReData     = QAM64_demodulation(Rec_BPSK);
        %DSSS
        dsss2      = func_dsss2(ReData,pseudoNumber,fp);
        %turbo译码 
        x_hat      = round(turbo_decode(dsss2));
        Rimages    = [Rimages,x_hat];   
    end 
    Rimages_snr{i} = Rimages;
end
....................................................
%RGB合并
figure;
imshow(uint8(Images_snr3));
if fp==1
save R_64qam_1_iamge.mat Images_snr_3 Images_snr0 Images_snr3
end
if fp==4
save R_64qam_4_iamge.mat Images_snr_3 Images_snr0 Images_snr3
end
if fp==8
save R_64qam_8_iamge.mat Images_snr_3 Images_snr0 Images_snr3
end
0sj_025m
 

  

posted @ 2024-12-24 19:47  我爱C编程  阅读(50)  评论(0)    收藏  举报