Engee 文档
Notebook

具有和不具有卷积编码的通信系统的有效性的比较。

本文分析了采用卷积编码和维特比解码算法提高数字通信系统数据传输可靠性的特点。 该研究方法基于两个系统的比较建模:基本未编码的QPSK系统和卷积编码的QPSK系统。 仿真结果表示为误码概率曲线(ber),清楚地表明通过使用耐噪声编码实现了显着的能效增益。

通信系统设计中的关键任务之一是在噪声、干扰和衰落的影响下确保信息传输的高可靠性。 系统可靠性的定量度量是误码率(误码率)的概率,定义为错误接收比特数与传输比特总数的比率。 BER对信噪比(SNR或Eb/N0)的依赖性是一个基本特性,使得能够估计所需的发射机功率以实现所需的通信质量。

对大量数据的传输进行直接建模是构建此类依赖关系的标准方法。 为了获得统计学上显着的结果,特别是在低BER值(在10-6的数量级上),需要数十或数亿比特的建模。 这允许您获得具有可接受置信区间的估计。

Достоверность.png

本文研究了一种提高抗噪能力的方法—信道卷积编码与维特比解码相结合。 该研究的目的是量化在具有加性白高斯噪声(AWGN)的Qpsk(正交相移键控)调制信道中使用这种类型的编码所实现的能量增益。

awgn.png
In [ ]:
model = engee.load("qpsk_ber.engee");
EbNo_vec = 0:10;
EbNo = 0;
BER_vec = zeros(length(EbNo_vec))
for (i,EbNo1) in enumerate(EbNo_vec)
    EbNo = EbNo1;
    engee.run(model);
    BER_vec[i] = [x[1] for x in collect(BER).value][end];
end
plot(EbNo_vec, BER_vec, 
    yaxis=:log10,  # Y轴上的对数标度
    label="QPSK",
    xlabel="EbNo (dB)",
    ylabel="BER",
    title="BER曲线",
    grid=true,
    legend=:topright,
    yticks=10.0.^(-5:1:0),  # 将蜱从1e-5添加到1
    ylims=(1e-5, 1))  # 设置Y轴的限制
Out[0]:

下面是一种改进的方案,它包括抗噪声的编码和解码单元。 信息比特在被调制之前经过卷积编码器,这增加了传输流的冗余度。 在接收侧,卷积解码器(Viterbi)使用码的网格结构来校正信道中已经发生的错误。 该模型使用硬解码,并且使用格雷码映射来匹配调制器符号的位和相位,以最小化与相邻符号的误差。

卷积编码器是使用函数设置的 poly2trellis,在代码约束的长度方面定义其结构并生成多项式。 需要注意的是,编码器和维特比解码器都设置了相同的晶格结构。

coded.png

根据能量比Eb/n0(以dB为单位),为每个系统构建了BER曲线。 未编码系统的Eb/N0范围为1至8dB,编码系统的Eb/N0范围为1至6dB。 结果显示在一个组合图上.

In [ ]:
model_uncoded = engee.load("qpsk_ber.engee");
model_coded = engee.load("qpsk_coded_ber.engee");
EbNo_vec = 1:8;
BER_vec = zeros(length(EbNo_vec))
for (i,EbNo1) in enumerate(EbNo_vec)
    EbNo = EbNo1;
    engee.run(model_uncoded);
    BER_vec[i] = [x[1] for x in collect(BER).value][end];
end
plot(EbNo_vec, BER_vec, 
    yaxis=:log10,  # Y轴上的对数标度
    label="QPSK未编码",
    xlabel="EbNo (dB)",
    ylabel="BER",
    title="BER曲线",
    grid=true,
    legend=:topright,
    yticks=10.0.^(-5:1:0),  # 将蜱从1e-5添加到1
    ylims=(1e-5, 1))  # 设置Y轴的限制
EbNo_vec = 1:6;
BER_vec = zeros(length(EbNo_vec))
for (i,EbNo1) in enumerate(EbNo_vec)
    EbNo = EbNo1;
    engee.run(model_coded);
    BER_vec[i] = [x[1] for x in collect(BER).value][end];
end
plot!(EbNo_vec, BER_vec, 
    label="QPSK编码") 
Out[0]:

图形分析使我们能够得出以下结论:

***未编码系统:**经典QPSK的BER曲线演示了预期的指数依赖性。 需要大约6.5db的Eb/N0来实现10^-4的BER。

***编码系统:**卷积编码和维特比解码系统的BER曲线明显较低。 这意味着要实现相同的BER值(例如,10^-4),一个编码系统需要显着更低的Eb/N0比—约3-4dB。

*编码增益:在图形上观察到的曲线之间的差距是编码增益的视觉表示。 在实践中,这意味着卷积编码系统可以在较低的发射机功率下以相同的BER操作(节能),或者在与未编码系统相同的功率下提供高得多的通信可靠性(较

结论

仿真清楚地证实了将卷积编码与Viterbi算法结合使用以提高数字通信系统的抗噪性的高效率。

因此,卷积码和维特比解码器的使用是现代通信系统设计中功能强大且具有实际意义的工具,其中对数据传输的能效和可靠性的要求不断增加。 在计算通信线路预算和选择传输参数时,产生的BER曲线是系统工程师的重要工具。