m基于信道差错概率模型仿真对比RS,汉明码以及卷积编译码性能,仿真输出信道差错概率与误码率和仿真速度三维关系图

206 阅读5分钟

1.算法仿真效果

matlab2022a仿真结果如下:

 

       在数字通信系统中, 数字通信系统及其相关部分必须满足误码率的最低规 范要求。误码率是一个非常重要的指标,它衡量着系统性能的好坏,因此在数 字通信领域中经常会遇到误码率的测试问题。误码率[是二进制比特流经过系 统传输后发生差错的概率,其测量方法[ 68]从系统的输入端输入某种预定形式的 比特流,检测其输出,并与输入码流比较即可检测出发生差错的位e,位数e和 已传输的总位数n之比为误码率.

 

1.仿照实际实验建立仿真模型,仿真模块主要包括信号发 生器模块,信道编码模块,理想二进制突发信道,译码模块,误码分析模块。

2.设置模块参数:仿真中主要用到的主要参数变量有:采样率,每帧采样 数,编码格式,采样点数,译码格式,接收延迟。

3.在上述参数下,.采用不同的编码方式:线形编码,循环编码,卷积编码 算法仿真在一定的信道差错概率下,编码算法对信道性能,即误码率的改善情 况。

4.在信道误码率逐渐增大的情况下,仿真编码算法对信道性能的改善情 况。

1.png

2.png

3.png

4.png

 

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

       大气激光通信是采用频率极高的光波[ 3]作为信息的传输载体的一种通信方 式,由于光载波的频率高、能量集中、方向性强、可用频谱宽等特点,与其他 通信方式相比,大气光通信具有以下优点:

(1)通信容量大,可以用于宽带接入解决最后一英里的瓶颈问题。目前 卫星微波通信使用的频段在300MHz到300GHz之间,而卫星光通信的频段为 300THz,两者相差103到10 6倍。  (2)保密性好,可用于需要严格保密的场合,尤其用于军事领域;因为 它的发散角小,波束很窄,又非常定向,截接很难做到。因此,大气光通信比 通常的无线系统安全得多。

(3)抗电磁干扰,由于光波频率比电磁波频率高几个数量级,电磁波很 难对光波传输形成干扰。

(4)协议的透明性,以光为传输机制,任何传输协议均可容易的迭加上 去,电路和数据业务都可透明传输。

 

       在卫星光通信系统中,信息经过大气进行传输,受到大气湍流,散射等作 用的影响,使光信号受到严重干扰,造成在接收端的较大误码率和短时间的通 信中断,严重影响无线光通信系统的稳定性和可靠性。因此,要保证在随机信 道条件下系统的正常工作,提出有效的手段克服大气的干扰,对激光大气通信 来说十分必要和紧迫。信道编码技术可以降低误码率,提高通信质量,因而信 信道编码技术是卫星光通信系统的关键技术之一。

 

       卷积码是1955年由爱里斯(Elias)提出的。它与分组码不同,分组码编码 时,本组的n-k个检验元仅与k个信息元有关,而与其它各组码元无关。分组 码译码时,也仅从本码组中的码元内提取有关译码信息,而与其它各组无关。 卷积码则不同,它在编码时,本组的n-k个检验元不仅与本组的k个信息元有 关,而且还与以前各时刻输入至编码器的信息元有关;译码时也须利用以前和 以后各时刻收到的码组中提取有关信息。此外,卷积码中每组的信息位和码 长,通常要比分组码的要小。正由于在卷积码的编码过程中,充分利用了各组 之间的相关性,且n和k都比较小,因此,在与分组码同样的码率R和设备复 杂性条件下,无论是理论上还是实际上均已证明卷积码的性能至少不比分组码 差,且实现最佳和准最佳也较分组码容易,但是,在工程应用中,由于卷积码 各组之间相关,一致性能分析比较困难,从分析上得到的成果也不像分组码那 么多,而往往要借助计算机的搜索来寻找好码。

 

       Reed-Solomon码首先是由Reed和Solomon两人于1960年提出来的,简 称为RS码。这是一类具有很强纠错能力的二进制循环码,既能纠正随机错误 也能纠正突发错误,也是一类典型的代数几何码。RS码一直以来都是国际通 信领域研究的热点之一。

 

 

 

3.MATLAB核心程序 `k         = 5;       

n         = 7;       

Step         = 20;%仿真时间间隔

Simu_Len     = 1000*k;  %仿真的时间长度

Simu_time    = 2000;

Pf           = 1e-3  :  (10e-3-1e-3)/Step  :  10e-3-(10e-3-1e-3)/Step;         %信道差错概率

Simu_speed   = 310^10/Step : 310^10/Step : 3*10^10;

msg          = (double(rand(1,Simu_Len)>0.5))';

Rs_Encoder   = fec.rsenc(n,k);

Rs_Decoder   = fec.rsdec(Rs_Encoder);

%% 主体代码

for i = 1:length(Pf)

    Err   = zeros(1,Simu_time);

    

    for j = 1:Simu_time

        i

        j

        %编码

        Msg_Enc  = encode(Rs_Encoder,msg);

        Msg_Enc2 = Msg_Enc;

        %将数据通过信道

        idx                     = round(length(Msg_Enc)*Pf(i));

        idx2                    = round(length(Msg_Enc)*rand(1,idx));

        idx2(find(idx2 == 0))   = 1;

        Msg_Enc2(idx2)          = floor(rand(1,1)*Msg_Enc(idx2));%设置出错值

        

        %译码

        [Msg_Dec,cnumerr,ccode] = decode(Rs_Decoder,Msg_Enc2);

        

        %计算误码率

        Err(j)                  = biterr(Msg_Dec,msg);   

    end

    

    Err2(i) = sum(Err)/(Simu_time*Simu_Len);

    

end

%% 曲线仿真

figure;

semilogy(Pf,Err2,'b-*');

xlabel('channel error rate');

ylabel('BER');

%% 3D图

figure;

[X,Y]  = meshgrid(Simu_speed,Pf);

Error  = [Err2' Err2' Err2' Err2' Err2' Err2' Err2' Err2' Err2' Err2' Err2' Err2' Err2' Err2' Err2' Err2' Err2' Err2' Err2' Err2' ];

mesh(X,Y,Error);

xlabel('信道差错概率');

ylabel('仿真速度');

zlabel('误码率');`