AnyMath 文档
Notebook

DSB-SC系统

作为该示例的一部分,开发了一个AnyMath仿真模型,该模型实现了双频带抑制载波调制(DSB-SC,Double-Sideband Suppressed Carrier)。 仿真的主要目的是直观地演示DSB-SC信号生成过程。 特别注意解调器路径中的低通滤波器(low-pass filter)的参数对信号再现精度的影响。

双频带抑制载波调制是一种模拟幅度调制,其中载波振荡被完全抑制,并且仅传输两个边带,相对于载波频率对称。 在数学上,DSB-SC信号被描述为调制信号的乘积 谐波载波上:

这种设计使得与经典AM相比,可以显着提高发射机的能量效率:所有功率都花在传输有用信息上,而不是发射不包含数据的载波振荡上。 DSB-SC广泛应用于立体声广播系统、卫星和无线电中继通信以及测量技术中。

DSB-SC信号的解调只能通过同步检测方法实现,该方法涉及将接收信号与频率和相位与载波相同的参考振荡相乘。 作为乘法的结果,形成两个分量:

image.png

该模型在AnyMath环境中构建,包括以下功能块:

-正弦信号发生器-模拟传输的消息。
-零阶保持-提供信号的时间量化。
-DSBSC AM调制器通带-通过将输入信号乘以频率为300Hz且初始相位为0rad的载波振荡来执行调制。
-加法器和噪声源-将白高斯噪声添加到调制信号中,以模拟真实传输介质的效果。
-DSBSC AM解调器通带-执行同步检测(与300Hz载波相乘)和后续滤波。 内置低通滤波器的参数:巴特沃斯设计方法,阶数8,截止频率40Hz。
-误差计算单元(加法器)-计算初始离散信号(来自零阶保持输出)与解调器输出之间的差。

In [ ]:
function run_model( name_model)
    Path = (@__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
    sleep(0.1)
    return model_output
end
run_model("DSB-SC")
Building...
Progress 0%
Progress 5%
Progress 10%
Progress 15%
Progress 21%
Progress 26%
Progress 31%
Progress 37%
Progress 42%
Progress 47%
Progress 52%
Progress 57%
Progress 63%
Progress 68%
Progress 73%
Progress 78%
Progress 84%
Progress 89%
Progress 94%
Progress 100%
Progress 100%
Out[0]:
SimulationResult(
    run_id => 2,
    "DSBSC AM Modulator Passband-1.1" => WorkspaceArray{Float64}("DSB-SC/DSBSC AM Modulator Passband-1.1")
,
    "Zero-Order Hold.1" => WorkspaceArray{Float64}("DSB-SC/Zero-Order Hold.1")
,
    "DSBSC AM Demodulator Passband.1" => WorkspaceArray{Float64}("DSB-SC/DSBSC AM Demodulator Passband.1")
,
    "Add-1.1" => WorkspaceArray{Float64}("DSB-SC/Add-1.1")

)
In [ ]:
Input = collect(simout["DSB-SC/Zero-Order Hold.1"]).value
Modulator = collect(simout["DSB-SC/DSBSC AM Modulator Passband-1.1"]).value
Demodulator = collect(simout["DSB-SC/DSBSC AM Demodulator Passband.1"]).value
Error = collect(simout["DSB-SC/Add-1.1"]).value
t = collect(simout["DSB-SC/Add-1.1"]).time
Out[0]:
150001-element Vector{Float64}:
  0.0
  0.0001
  0.0002
  0.0003
  0.0004
  0.0005
  0.0006
  0.0007
  0.0008
  0.0009
  0.001
  0.0011
  0.0012
  ⋮
 14.9989
 14.999
 14.9991
 14.9992
 14.9993
 14.9994
 14.9995
 14.9996
 14.9997
 14.9998
 14.9999
 15.0
In [ ]:
gr(fmt=:png, size=(800, 400), titlefont=font(12), guidefont=font(10), legendfont=font(9))

p1 = plot(t, Input, 
          label="原始信号", 
          linewidth=1.5, 
          color=:blue)
plot!(t, Demodulator, 
      label="解调信号", 
      linewidth=1.5, 
      color=:red, 
      linestyle=:dash)
plot!(p1, title="原始信号和解调信号的比较",
          xlabel="时间,从", 
          ylabel="的振幅", 
          legend=:topright)

p2 = plot(t, Error, 
          label="解码错误", 
          linewidth=1.0, 
          color=:black)
plot!(p2, title="解码误差(信号差)",
          xlabel="时间,从", 
          ylabel="误差幅度", 
          legend=:topright)

p3 = plot(t, Modulator, 
          label="调制信号(DSB-SC)", 
          linewidth=0.8, 
          color=:green)

plot!(p3, title="DSB-SC调制器的输出信号",
          xlabel="时间,从", 
          ylabel="的振幅", 
          legend=:topright)

final_plot = plot(p1, p2, p3, layout=(3, 1), size=(800, 1000))
Out[0]:
No description has been provided for this image

对绘图图的分析揭示了以下效果:

  1. 第一张图表("原始信号和解调信号的比较")显示原始信号是频率为1Hz的纯正弦波。 解调信号作为一个整体完全重复原始消息的形状,但是,有高频脉动(约600赫兹)叠加在主正弦曲线上。
  2. 在第二个曲线图("解码错误")中清楚地看到,信号差还包含高频波纹并且不趋向于绝对零度,这表明残留失真的存在。

因此,保留了信号的整体包络,但杂散振荡的存在阻止了零误差的实现。 这是由于以下因素的组合:

*滤波器的相位失真和群延迟。
*过滤瞬变。

结论

开发的仿真模型成功地演示了DSB-SC调制和同步检测的物理原理。 已经通过实验证实,信号恢复的质量关键地取决于解调器中的低通滤波器的参数。 结果清楚地说明了实际通信系统设计中的一个工程折衷方案:在滤波器的复杂性、相位失真和所需的解调质量之间取得平衡。