2026a

# 使用 SyslabObject 搭建模拟调制解调模型


此示例将通过一个简单的模拟调制解调系统讲解 SyslabObject 的使用方法,模型路径为 SyslabWorkspace.Examples.Demo_SyslabObject_AnalogModulationDemodulation

# 简介

调制是通信系统中不可或缺的一环,那么什么是调制?

调制的定义为:把输入信号变换为适合于通过信道传输的波形,这一变换过程称为调制。通常把原始信号称为调制信号,也称基带信号;被调制的高频用于运载原始信号,因此称载波。

调制实现了信源的频谱与信道的频带匹配。

在此示例中,您将创建并使用 SyslabObject ,封装具有不同功能的 Julia 代码文件,正确编写代码,合理设置端口信息,从而达到既定的功能。

在仿真过程中,每个 SyslabObject 将随预设参数和时间变化独立执行运算。

本示例的调制解调模型分为 5 个过程:信号源采样、调制、添加白噪声、解调、数据处理。

# 信号源采样

使用 Sine 模块(模型路径为 Modelica.Blocks.Sources.Sine ,freqHz = 10)输出原始信号。

使用Quantizer 模块(采样周期 period = 0.01,量化间隔 QuantizationInterval = 0.1)进行采样量化。

下图中为两个信号的对比图,蓝色为 Sine 原始信号,红色为经过Quantizer 模块采样量化后信号。

# 调制

调制与解调的意义在于可以将信号的频谱搬移到任意位置,从而有利于信号的传送,并且使频谱资源得到充分利用。

为了演示的多样性,此处采用了 DSB Amplitude Modulator(period = 0.0001,SampleFrequency = 10000),SSB Amplitude Modulator(period = 0.0001,SampleFrequency = 10000),FM Modulator(period = 0.0001,SampleFrequency = 10000,CarrierFrequency = 300,FrequencyDeviation = 100)三种调制方式分两路进行,SSB 调制解调链路构造和设置与 DSB 路一致,因此后续仅以 DSB 路为例,您可以酌情选择。

模块fMModulatorPassband_1的输入和输出如下图所示。

# 添加白噪声

将调制后的信号通过 AWGN Channel(period = 10000),引入噪声。

下图中蓝色为原始信号,黄色为加噪后信号。

# 解调

接下来对输入的信号进行解调,对应之前的调制方法,此处仍然采用了 DSB Amplitude Demodulator(period = 0.0001,SampleFrequency = 10000,CutoffFrequency = 20),SSB Amplitude Demodulator(period = 0.0001,SampleFrequency = 10000),FM Demodulator(period = 0.0001,SampleFrequency = 10000,CarrierFrequency = 300,FrequencyDeviation = 100)三种解调方式分两路进行,您可以酌情选择。

解调后的信号如下图所示。

# 数据处理

想要获得该调制解调系统的误差,解调后的数据仍需要进行一定的处理,首先使用 FixedDelay 模块(模型路径为 Modelica.Blocks.Nonlinear.FixedDelay ,延时分别为 0.0316 和 0.0366)处理由于调制解调引入的延迟,使得原始信号与输出信号同步。最后使用 Add (模型路径为 Modelica.Blocks.Math.Add ,系数请见图片)和 Abs(模型路径为 Modelica.Blocks.Math.Abs)对输出信号进行整型并计算误差。

为了方便观察,您可以在相应组件上添加适当的输出端口。

# 查看仿真结果

打开 DSB_FM_Delayed_OriginalDSB_FM_Output,对比源信号与输出信号

打开 abs1.y,观察误差的变化

打开 SSB_FM_Delayed_OriginalSSB_FM_Output,对比源信号与输出信号

打开 abs2.y,观察误差的变化

您可以观察到,无论是 DSB,还是 SSB,最后的全阶段误差范围都在 0.2 以内。