当前位置: 首页 > news >正文

Σ∆ 数字滤波

ΣΔ(Sigma-Delta,中文常译为“Σ-Δ”或“Σ-Δ调制”)数字滤波,是基于ΣΔ调制器(Sigma-Delta Modulator)原理发展出来的一种数字信号处理技术,广泛应用于高精度ADC(模数转换器)或DAC(数模转换器)中。它结合了噪声整形过采样的思想,能在较低成本下实现高分辨率的信号转换。


一、ΣΔ调制简介

基本原理:
  • Σ(积分器):累加输入信号,使其频谱中的低频部分放大;

  • Δ(差分器):取当前信号与量化后的信号差值形成负反馈;

  • 量化器:通常是1-bit或低位数ADC;

  • 噪声整形:量化误差被推移到高频部分。

特点:
  • 把量化噪声从低频“推”到高频;

  • 高频噪声在后续可以通过低通滤波器有效滤除;

  • 特别适用于音频、传感器、仪器采集等高精度信号处理。


二、ΣΔ 数字滤波常用结构

ΣΔ调制器之后,必须接数字低通滤波器,起到:

  • 把有用信号频段保留下来;

  • 滤除高频的量化噪声;

  • 实现抽取(降采样)操作。

常见的数字滤波结构:
  1. CIC滤波器(Cascaded Integrator-Comb)

    • 结构简单,仅由加法器和延迟单元组成;

    • 不需要乘法器,适合FPGA、DSP硬件实现;

    • 常用于ΣΔ调制器后的第一层滤波+降采样。

  2. FIR滤波器(有限冲击响应)

    • 精度高,可设计出理想响应;

    • 适用于进一步细化频率选择性;

    • 通常放在CIC滤波器之后作为“修正”滤波器。


三、ΣΔ数字滤波系统框图

模拟输入│
[ ΣΔ调制器 ] → 1-bit高速数据流│
[CIC滤波器] → 降采样 + 初级低通│
[FIR滤波器] → 滤除剩余高频噪声│
数字输出(低速、高分辨率)

四、应用场景

  • 音频采集与播放(如24-bit音频DAC)

  • 工业传感器(如压力、温度等)

  • 医疗设备(ECG、EEG 等信号采集)

  • 精密仪器(如示波器、数据采集卡)


🧠 示例目标:

模拟一个低频信号(如正弦波),经过一阶 ΣΔ 调制器,再经过一个简单的 CIC 滤波器和降采样,最后输出数字信号。


🧩 C 语言示例代码

#include <stdio.h>
#include <math.h>#define PI 3.14159265358979323846
#define SAMPLE_RATE  100000   // 原始过采样率(100kHz)
#define DECIMATION   100      // 抽取比
#define OUTPUT_RATE  (SAMPLE_RATE / DECIMATION)
#define INPUT_FREQ   1000     // 输入信号频率#define DURATION_SEC 1
#define TOTAL_SAMPLES (SAMPLE_RATE * DURATION_SEC)// --- ΣΔ调制器状态变量 ---
double integrator = 0.0;
double quantizer_out = 0.0;// --- CIC滤波器状态变量 ---
long cic_integrator = 0;
long cic_comb = 0;
long last_comb_input = 0;// --- 一阶Sigma-Delta调制器 ---
int sigma_delta_modulate(double input)
{integrator += input - quantizer_out;quantizer_out = (integrator >= 0) ? 1.0 : -1.0;return (quantizer_out > 0) ? 1 : 0;  // 输出1或0
}// --- 简单的CIC滤波器(积分器+微分器) ---
long cic_filter(int bit)
{// 积分器cic_integrator += (bit ? 1 : -1); // 1-bit输入转为±1// 每 DECIMATION 次,进行一次抽取 + 微分器static int count = 0;count++;if (count >= DECIMATION) {count = 0;long out = cic_integrator - last_comb_input;last_comb_input = cic_integrator;return out;}return 0x7FFFFFFF;  // 标志:不是有效输出
}int main(void)
{for (int i = 0; i < TOTAL_SAMPLES; i++) {double t = (double)i / SAMPLE_RATE;double input_signal = 0.5 * sin(2 * PI * INPUT_FREQ * t);  // 模拟输入信号,振幅 -0.5~0.5int bit_out = sigma_delta_modulate(input_signal);long filtered = cic_filter(bit_out);if (filtered != 0x7FFFFFFF) {// 打印降采样后的输出printf("%ld\n", filtered);}}return 0;
}

🚀 输出说明:

  • 输出是模拟信号经过 ΣΔ 调制器后得到的 1-bit 比特流,再通过一个 积分-微分(CIC)滤波器,完成降采样低通滤波

  • 输出打印的是低频恢复的模拟量值(整数形式);

  • 可在 Python 或 Excel 中对其进行绘图,查看恢复的波形形状。


🛠 可改进方向(进阶):

  • 多阶 ΣΔ(比如二阶)调制器;

  • 更复杂的数字滤波器(如FIR);

  • 实时输入(ADC采样),配合DMA;

  • 输出与 DAC 连接,用于声音/控制应用。

相关文章:

  • Java设计模式面试题详解
  • 内存分配基础:修改SCT文件的简单例子
  • HBM 读的那些事
  • 网络编程(TCP编程)
  • UDP与TCP通信协议技术解析
  • GD图像处理与SESSiON
  • 禅道18.2集成LDAP
  • Linux 文件系统底层原理笔记:磁盘结构、ext2 文件系统与软硬链接解析
  • C++----剖析list
  • 前沿探索:可视化助力设备运维实现跨越式发展
  • 分析 java 的 Map<String,Map<String, List<Map<String,Integer>>>>
  • 初入 python Django 框架总结
  • Reasoning over Uncertain Text by Generative Large Language Models
  • 《Spring Boot 微服务架构下的高并发活动系统设计与实践》
  • webstorm 配置Eslint
  • 量子计算导论课程设计 之 PennyLane环境搭建
  • 深入了解linux系统—— 共享内存
  • 【每天学点 Go 知识】Go 基础知识 + 基本数据类型快速入门
  • 【Hot 100】139. 单词拆分
  • arduino Nano+asrpro2.0制作桌面宠物
  • 徐州建站推广/seo顾问什么职位
  • 东营网站建设制作/竞价排名点击器
  • 企业网站群建设的原因/软文案例200字
  • html5的网站有哪些/外贸网站推广优化
  • 可以做app的网站/长沙百度快照优化排名
  • 阿三做网站/营销网络是啥意思