什么是 Sigma-Delta ADC 中的 Noise Shaping?
前言
之前在介绍 Σ-Δ 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 的概念讲的不错。
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 内部实现:
这种做法能更好的适配一些外部传感器,比如,硅麦(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 信号进行调制,呈现结果如下:
上图来自于 ST AN4990,我觉得 PDM 周期的变化看不太清,所以又找了一个图供参考,也是分别用 PWM、PDM 来调制同一个 Sine 信号:
总之,Sigma-Delta Modulator 是一种 PDM 脉冲密度调制,PDM 的调制频率是变化的,通常比 PWM 的调制频率要高。
Noise shaping(噪声整形)
Noise shaping 中的 Noise, 指的是 A/D 过程中的量化噪声,它当然与调制方式有关。
如果我们从频谱角度看 1-bit 码流,因为 PWM 调制频率是固定的,量化噪声的能量会更集中在调制频率及其谐波上。而 PDM 在整个频谱上的能量更加分散,并且因为有更高的调制频率,在高频段具有更多的能量。
AN4990 中提供了上述 PWM、 PDM 的频谱图示:
从图中可以看出:
- 蓝色为 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 的意义:
ST 在 AN4990 中用 Excel 表格模拟了 PWM、PDM、FFT,还包括后续 Digital Filter 不同 Order 对于滤波的效果,目的是说明 DFSDM 外设的使用。如果你在阅读 AN4990 时,找不到这个 Excel 的下载链接,可以留言你的邮箱,我发送给你。
最后,附上一个利用 STM32 DFSDM 处理硅麦 PDM 信号的 Github 项目,详见参考资料[4],并附上其对 10KHz 声音的处理结果:
有兴趣可以自行动手试一下,看看 Noise Shaping 的实际效果。
参考资料
- https://www.st.com/resource/en/application_note/an4990-getting-started-with-sigmadelta-digital-interface-on-applicable-stm32-microcontrollers-stmicroelectronics.pdf
- https://www.realdigital.org/doc/822e17a669a05f748c80af2274478bb5
- https://www.analog.com/en/resources/technical-articles/behind-the-sigma-delta-adc-topology.html
- https://github.com/y2kblog/NUCLEO-F411RE_PDM_SoftwareCICfilter
欢迎关注我的微信公众号“疯狂的运放”
,及时收到最新的推文。