前言

之前在介绍 Σ-Δ ADC(称为 Sigma-Delta 或 Delta-Sigma ADC,顺序混用) 的时候,提到过 Noise Shaping(噪声整形)的概念,有网友表示希望展开讲讲。

我检索了一番,在 TI《How Delta-Sigma ADCs Work》 与 ADI 《Sigma-Delta ADCs Tutorial》经典系列中确实有提及,讲的很专业,但也许过于“专业”,以至于让一些朋友望而生畏。

最后倒是发现在 ST 的一篇应用笔记 《AN4990: Getting started with sigma-delta digital interface on applicable STM32 microcontrollers》中,对 Noise shaping 的概念讲的不错。

图1 ST AN4990 应用笔记

图1 ST AN4990 应用笔记,来源 [1]

ST 就是擅长将一些难懂的概念翻译成大白话,其原文出处见参考资料[1],本文选取其中部分内容进行解释和说明。

按惯例声明一下:我的解释不一定是对的,还可能存在错误,有时我自己也不知道在说什么。所以仅供参考,欢迎讨论。

ST AN4990 应用笔记概述

ST AN4990 介绍的是 STM32 MCU 中的一种称为 DFSDM (Digital Filter for Sigma-Delta Modulators)的外设。

这种外设将 Σ-Δ ADC 分割成两部分,一部分是 Sigma-Delta Modulator,一部分是 Digital Filter。当然,典型的 Σ-Δ ADC 都是由这两部分构成,只是 DFSDM 将其“物理上”分割了,即,Sigma-Delta Modulator 由外部传感器实现,Digital Filter 由 STM32 MCU 内部实现:

图2 STM32 MCU 中的 DFSDM 与外部传感器

图2 STM32 MCU 中的 DFSDM 与外部传感器,来源 [1]

这种做法能更好的适配一些外部传感器,比如,硅麦(MEMS Microphone),其内部已经包含了 Sigma-Delta Modulator,硅麦与 MCU 之间通过串行总线连接,MCU 只需要对其进行 Digital Filter 即可。

我们再回顾一下 Σ-Δ ADC 中这两部分的工作原理:

  • Sigma-Delta Modulator:即 Sigma-Delta 调制器,将外部模拟信号变成数字化的 1-bit 码流,速率很高。模拟与数字的关联是在一定时间内,两者的平均值一样。
  • Digital Filter:即 数字滤波器,将上述 1-bit 码流变成低速、多 bit 的数据,有点像串转并,分辨率变高了,还伴随着去噪。这个过程也称为 Decimation(抽取),典型是 CIC(Cascaded integrator–comb)滤波器。

今天所说的 Noise shaping(噪声整形),发生在 Sigma-Delta Modulator 之中,又需要后续的 Digital Filter 来滤除。

1-bit 码流的调制:PWM vs PDM

模拟信号经过调制后,便是数字化的 1-bit 码流。

常见的调制方式是 PWM(Pulse Width Modulation)脉冲宽度调制,但 Sigma-Delta Modulator 用的是 PDM (Pulse Density Modulation) 脉冲密度调制。

PDM 与 PWM 的区别在于:PDM 的周期和占空比都会被调制,而 PWM 周期是固定的,只有占空比被调制。

如果我们用 PWM、PDM 对同一个 Sine 信号进行调制,呈现结果如下:

图3 AN4990 中 PWM、PDM 调制 Sine 信号的区别

图3 AN4990 中 PWM、PDM 调制 Sine 信号的区别,来源 [1]

上图来自于 ST AN4990,我觉得 PDM 周期的变化看不太清,所以又找了一个图供参考,也是分别用 PWM、PDM 来调制同一个 Sine 信号:

图4 另一个表示 PWM、PDM 调制的区别

图4 另一个表示 PWM、PDM 调制的区别,来源 [2]

总之,Sigma-Delta Modulator 是一种 PDM 脉冲密度调制,PDM 的调制频率是变化的,通常比 PWM 的调制频率要高。

Noise shaping(噪声整形)

Noise shaping 中的 Noise, 指的是 A/D 过程中的量化噪声,它当然与调制方式有关。

如果我们从频谱角度看 1-bit 码流,因为 PWM 调制频率是固定的,量化噪声的能量会更集中在调制频率及其谐波上。而 PDM 在整个频谱上的能量更加分散,并且因为有更高的调制频率,在高频段具有更多的能量。

AN4990 中提供了上述 PWM、 PDM 的频谱图示:

图5 PWM PDM 频谱图示

图5 PWM PDM 频谱图示,来源 [1]

从图中可以看出:

  • 蓝色为 PWM 频谱,红色为 PDM 表示的 Sigma-Delta 频谱。
  • 模拟输入是单纯的 Sine 信号,频率为 Index 1,此处蓝色、红色重叠。
  • PWM 调制频率是 64 倍 Sine 频率。PWM 能量集中在调制频率及其倍数谐波上,如 Index 64、128、196、256……并且幅度逐渐减小。
  • PDM 能量更加分散,在较低频率上较低,然后随频率增大。这是因为 PDM 比 PWM 具有更多高频成分。

以上,就是 PDM 噪声能量在频谱上的分布情况,称为 Noise Shaping(噪声整形)。

利用这种 PDM 的特性,Sigma-Delta ADC 在后续只需要用简单的滤波器就可以将噪声滤除。在很多介绍 Sigma-Delta ADC 的教程中都有如下图示,体现出了 Noise Shaping 的意义:

图6 Noise Shaping 与后续 Filter

图6 Noise Shaping 与后续 Filter,来源 [3]

ST 在 AN4990 中用 Excel 表格模拟了 PWM、PDM、FFT,还包括后续 Digital Filter 不同 Order 对于滤波的效果,目的是说明 DFSDM 外设的使用。如果你在阅读 AN4990 时,找不到这个 Excel 的下载链接,可以留言你的邮箱,我发送给你。

最后,附上一个利用 STM32 DFSDM 处理硅麦 PDM 信号的 Github 项目,详见参考资料[4],并附上其对 10KHz 声音的处理结果:

图7 STM32 DFSDM 处理硅麦 PDM 信号

图7 STM32 DFSDM 处理硅麦 PDM 信号,来源 [4]

有兴趣可以自行动手试一下,看看 Noise Shaping 的实际效果。

参考资料

  1. https://www.st.com/resource/en/application_note/an4990-getting-started-with-sigmadelta-digital-interface-on-applicable-stm32-microcontrollers-stmicroelectronics.pdf
  2. https://www.realdigital.org/doc/822e17a669a05f748c80af2274478bb5
  3. https://www.analog.com/en/resources/technical-articles/behind-the-sigma-delta-adc-topology.html
  4. https://github.com/y2kblog/NUCLEO-F411RE_PDM_SoftwareCICfilter

欢迎关注我的微信公众号“疯狂的运放”,及时收到最新的推文。