Engee 文档
Notebook

调制分析

在这个例子中,我们将分析构建各种调制星座的可能性。

实现的演示模型如下所示。

image_2.png

正如我们所看到的,在这个例子中使用了3种类型的调制。

  1. 正交相位键控(qpsk-正交相移键控,或4-PSK)使用一个由四个点组成的星座图,这些点在一个圆上以相等的距离放置。
  2. 二进制相位键控(BPSK)。 通过这种调制,使用两个相移(一个用于逻辑单元,另一个用于逻辑零)。
  3. 正交幅度调制(qam)是信号的一种幅度调制,它是两个相同频率的载波振荡的总和,但相位相对于彼此偏移90°(π/2弧度)。

首先,我们将声明每个符号的信息位的能量与噪声的频谱功率密度的比率。

In [ ]:
Eb_No = 10;

现在让我们声明模型启动函数并运行仿真。

In [ ]:
function run_model(name_model)
    Path = string(@__DIR__) * "/" * name_model * ".engee"
    
    if name_model in [m.name for m in engee.get_all_models()] # Проверка условия загрузки модели в ядро
        model = engee.open( name_model ) # Открыть модель
        model_output = engee.run( model, verbose=true ); # Запустить модель
    else
        model = engee.load( Path, force=true ) # Загрузить модель
        model_output = engee.run( model, verbose=true ); # Запустить модель
        engee.close( name_model, force=true ); # Закрыть модель
    end
    return model_output
end
Out[0]:
run_model (generic function with 1 method)
In [ ]:
run_model("demo_model")
Building...
Progress 0%
Progress 14%
Progress 44%
Progress 71%
Progress 99%
Progress 100%
Out[0]:
SimulationResult(
    "Selector-1.1" => WorkspaceArray{Vector{Float64}}("demo_model/Selector-1.1")
,
    "Selector.1" => WorkspaceArray{Vector{Float64}}("demo_model/Selector.1")
,
    "Selector-2.1" => WorkspaceArray{Vector{Float64}}("demo_model/Selector-2.1")

)

让我们为每个调制执行指南的构建。 让我们从QPSK开始,然后构建BPSK和8-PSK。

In [ ]:
qpsk = collect(qpsk);
qpsk_new = [(i...)+0 for i in qpsk.value];
In [ ]:
plot(title="QPSK")
plot!(ComplexF64.(qpsk_new), seriestype=:scatter)
plot!([0.75+0.75im, 0.75-0.75im, -0.75+0.75im, -0.75-0.75im], seriestype=:scatter)
Out[0]:
In [ ]:
bpsk = collect(bpsk);
bpsk_new = [(i...)+0 for i in bpsk.value];
In [ ]:
plot(title="BPSK")
plot!(ComplexF64.(bpsk_new), seriestype=:scatter)
plot!([-1+0im, 1+0im], seriestype=:scatter)
Out[0]:
In [ ]:
qam = collect(qam);
qam_new = [(i...)+0 for i in qam.value];
In [ ]:
plot(title="8-PSK")
plot!(ComplexF64.(qam_new), seriestype=:scatter)
plot!(cis.(2pi*[0:7...]/8), seriestype=:scatter)
Out[0]:

从上面的星座中我们可以看到,前两个调制具有更明显的点间距。 在前两种变体中,点相交的区域明显较少,这就是为什么我们在QPSK和BPSK中获得的误码值比使用8-PSK时少四倍。

结论

在这个例子中,我们考虑了使用QPSK、BPSK和QAM调制的例子来构造和分析调制信号的方法。