模型信号数字化 — 教学案例库

本案例库通过 Syslab JuliaSysplorer(Modelica 物理建模 + Sysblock 框图建模)演示信号数字化的完整流程——连续信号、理想采样、量化、量化噪声与信号重建,覆盖从物理模型到数字系统的全过程,是信号与系统、数字信号处理与嵌入式系统建模的完整教学案例集合。

适用课程、行业与场景

本案例库适用于信号与系统、数字信号处理(DSP)、通信原理、嵌入式系统建模、系统建模与仿真、自动控制原理、机电系统与多学科仿真等课程教学;面向电子信息、通信、仪器仪表、嵌入式与工业控制、汽车电子等行业的研发与教学人员;可用于采样定理与混叠现象的直观演示,量化与量化噪声(SQNR)的教学讲解,连续/离散系统转换与 ADC/DAC 链路的实验教学,以及从物理模型到数字系统的完整数字化流程演练等场景。

案例库结构

signal_digitization_case_library/
├── README.md                             # 本文件 — 总索引
├── docs/                                 # 教学理论文档
│   ├── teaching_guide.md                 # 教学使用指南
│   ├── theory_sampling.md                # 采样定理与混叠理论
│   └── theory_quantization.md            # 量化理论
│
├── 01_pure_julia_principles/             # 场景1:纯 Julia 信号数字化原理演示
│   ├── 01_continuous_signals.jl          #   连续信号生成
│   ├── 02_ideal_sampling.jl              #   理想采样与 Nyquist 定理
│   ├── 03_aliasing_demo.jl               #   混叠现象演示
│   ├── 04_quantization.jl                #   均匀量化与量化误差
│   ├── 05_quantization_noise.jl          #   量化噪声统计特性
│   ├── 06_reconstruction.jl              #   信号重建(ZOH/FOH/sinc)
│   └── 07_full_pipeline.jl               #   完整 ADC→DAC 流水线
│
├── 02_modelica_to_digital/               # 场景2:Modelica 物理模型 → 数字化
│   ├── models/                           #   Modelica 源文件
│   │   ├── MassSpringDamper.mo            #     弹簧振子模型
│   │   └── RCCircuit.mo                   #     RC 电路模型
│   └── julia_scripts/                    #   Julia 处理脚本
│       ├── 01_simulate_msd.jl             #     仿真并导出连续信号
│       ├── 02_digitize_msd.jl             #     采样 + 量化处理
│       └── 03_compare_reconstruction.jl   #     参数对比重建
│
└── 03_sysblock_digital_system/           # 场景3:Sysblock 框图数字化系统
    └── models/
        └── SignalDigitizationChain.mo     #   ADC 链路框图模型

三场景概述

场景 核心知识点 所需工具
场景1 纯 Julia 原理 采样定理、量化、重建、频谱分析 Syslab Julia
场景2 Modelica → 数字化 物理建模、连续/离散转换、参数对比 Sysplorer + Syslab
场景3 Sysblock 框图 框图建模、ADC/DAC 链路、混叠演示 Sysplorer Sysblock

核心技术知识点

采样与 Nyquist 定理

连续信号 xc(t)x_c(t) 经理想采样后,频谱以采样频率 fsf_s 为周期延拓:

Xs(f)=fsk=Xc(fkfs)X_s(f) = f_s \sum_{k=-\infty}^{\infty} X_c(f - k f_s)

Nyquist–Shannon 采样定理:若带限信号最高频率为 fmaxf_{\max},当采样频率满足 fs>2fmaxf_s > 2f_{\max} 时,可由采样值唯一重建原始信号;fs/2f_s/2 称为 Nyquist 频率。

混叠(Aliasing)

fs2fmaxf_s \le 2f_{\max} 时频谱延拓发生重叠,高频分量"折叠"到低频:

falias=fkfsf_{\text{alias}} = |f - k f_s|

例如采样率 100 Hz、输入 80 Hz(不满足 Nyquist)会混叠成 80100=20|80-100|=20 Hz。实际 ADC 前须放置截止频率 ≤ fs/2f_s/2 的抗混叠低通滤波器。

量化与量化噪声

量化把连续幅值映射到 M=2BM=2^B 个离散电平(BB 为位数),量化步长 Δ=VFS/2B\Delta = V_{\text{FS}} / 2^B。在加性白噪声模型下,量化误差均匀分布于 [Δ/2,Δ/2][-\Delta/2, \Delta/2],噪声功率为:

σeq2=Δ212\sigma_{e_q}^2 = \frac{\Delta^2}{12}

满幅正弦输入下信号量化噪声比为经典经验公式:

SQNRdB=6.02B+1.76 dB\text{SQNR}_{\text{dB}} = 6.02B + 1.76\ \text{dB}

即每增加 1 bit,SQNR 提升约 6 dB。

信号重建

采样值经理想低通滤波可重建连续信号,等价于 sinc 插值:

xc(t)=n=xc(nTs)sinc(tnTsTs)x_c(t) = \sum_{n=-\infty}^{\infty} x_c(nT_s) \cdot \text{sinc}\left(\frac{t - nT_s}{T_s}\right)

实际常用零阶保持(ZOH)、一阶保持(FOH)近似,场景 1 的 06_reconstruction.jl 对三种方式做了对比。

场景详情

场景1:纯 Julia 原理(01_pure_julia_principles)

7 个 .jl 脚本依次覆盖连续信号生成、理想采样、混叠演示、均匀量化、量化噪声统计、信号重建与完整 ADC→DAC 流水线,使用 TyPlotTyMathFFTTyFixedPoint 完成信号生成、FFT 频谱分析与定点量化,全程在 Syslab 中运行。

场景2:Modelica → 数字化(02_modelica_to_digital)

用 Modelica 标准库组件搭建连续物理模型,仿真导出连续信号后再用 Julia 脚本做采样、量化与重建对比:

模型 系统 运动/微分方程 关键参数
MassSpringDamper.mo 二阶机械系统 m·ẍ + d·ẋ + c·x = F_ext m=1 kg, c=100 N/m, d=2 N·s/m(ω_n=10 rad/s,ζ=0.1 欠阻尼)
RCCircuit.mo 一阶电气系统 R·C·dv_C/dt + v_C = v_s R=1000 Ω, C=100 μF(τ=RC=0.1 s)

配套脚本 01_simulate_msd.jl(仿真导出)、02_digitize_msd.jl(采样+量化)、03_compare_reconstruction.jl(采样率 × 位数的 MSE 网格对比)。

场景3:Sysblock 框图数字化系统(03_sysblock_digital_system)

SignalDigitizationChain.mo 是一个完整的 ADC 链路框图模型,含 4 条信号路径:

  • 主 ADC 链路:5 Hz 正弦 → ZOH(100 Hz 采样) → 量化(16 级,步长 0.125) → DAC 重建 → 示波器,展示正确数字化结果。
  • 低速率对比链路:同源 → ZOH(8 Hz,低于 Nyquist 2×5 Hz) → 量化(8 级) → 示波器,演示欠采样混叠。
  • 量化误差观测:ZOH 输出与量化输出之差送入示波器,量化误差应在 ±步长/2 内。
  • 原始参考:正弦源直连示波器,作为全部对比的基准。

运行要求

  • Syslab 2026a 及以上
  • Sysplorer 2026a(场景 2、3 需要)
  • 已安装 Ty 工具箱:TySignalProcessingTyDSPSystemTyFixedPointTyPlotTyMathTyMathFFT

依赖包

包名 用途
TySignalProcessing 采样率转换、滤波、信号生成
TyDSPSystem DSP 系统对象(信号源、滤波器)
TyFixedPoint 定点量化器(quantizer)
TyPlot 绘图可视化
TyMath / TyMathFFT 基础数学运算与 FFT 频谱分析

使用许可

本模型库版权由MoHub版权所有,未经许可,不得用于商业用途。