前言

上回我们讲到了 Sigma-Delta ADC 的前半部分,即,Sigma-Delta 调制器将模拟信号变成了高速 1-bit 码流,并且做了量化噪声的整形。

今天我们继续讲 Sigma-Delta ADC 的后半部分,即,数字滤波器,它起到两个作用:

  • 第一,将高速 1-bit 码流,输出为低速、高分辨率的数据,如 12 至 24 bit ,这个过程称为 “抽取(Decimation)”。
  • 第二,噪声整形之后,量化噪声更集中在高频区域,要去除这部分噪声,这个过程称为 “滤波(Filter)”。

本篇内容综合了 ST、TI、ADI 的公开资料,按惯例声明一下:我的解释不一定是对的,还可能存在错误,有时我自己也不知道在说什么。所以仅供参考,欢迎讨论。

简单的“抽取”

“抽取” 的意思是指:由每 N 个输入,生成 1 个输出。

这可能会让人想起一种简单的办法 —— 滑动平均(Moving Average),它的示意图如下。只是对于 Sigma-Delta ADC 来说,它的输入是 0b 或 1b 的 1-bit 码流:

滑动平均(Moving Average)

图1 滑动平均(Moving Average)

在 DSP 中,我们用冲击响应(Impulse Response)及频谱表示窗口函数。对于 Moving Average 来说是这样的:

图2 Moving Average 冲击响应及频谱

图2 Moving Average 冲击响应及频谱,来源 [1]

注意看:Moving Average 的冲击响应是一组脉冲,时域上呈现为矩形波形。而其频谱看上去起起伏伏的,这种波形是 Sinc 函数,数学上用 Sinc(x) = Sin(x)/x 表示。

我们无意深入 DSP 的理论,只需要知道这种窗口函数称为 “Sinc Filter”, 可以作为 Sigma-Delta ADC 中简单而实用的数字滤波器。

下面让我们来了解一下 Sinc Filter 在 ADC 中的工作性质。

Sinc 滤波器的时域特性

Sinc Filter 有 2 个参数可以调节:

  • Filter Length:指参与 Moving Average 的样本数量,即,窗口的长度。对于 1-bit 码流的输入,越长的窗口,能转换成更高的分辨率,同时,输出数据的速率也会降低。
  • Filter Order:指滤波器的阶数,Moving Average 可以应用于已经平均过的数据,每再次应用,就增加 1 阶,也称为“级联”(Cascading) 。

一般来说,滤波器阶数的区别,可以从其频谱中看出。不过 ST 的应用笔记 AN4990 (见参考资料[2])中举了一个时域的例子,看出更高阶的 Sinc Filter 能做到更精准的输出。我觉得讲的蛮好的,摘录如下。

ST AN4990 例子:有 3 个窗口长度为 10 的 Sinc Filter,阶数分别是 1 阶、2 阶、3 阶。分别测试两种 1-bit 码流作为输入的情况:

  • 第 1 种码流:由完全等间距的脉冲构成,脉冲正好发生在窗口长度上,也就是时间轴横坐标 10、20、30 的位置。
  • 第 2 种码流:也是由若干个脉冲组成,但脉冲发生在时间轴横坐标 10、19、29 的位置。这是为了模拟密度更高的码流。你记得吗?Sigma-Delta 调制器就是基于 PDM (脉冲密度调制)的原理。

先来看对于第 1 种码流,三种阶数滤波器的输出情况:

图3 三种阶数 Sinc 对于第 1 种码流的输出

图3 三种阶数 Sinc 对于第 1 种码流的输出,来源 [2]

ST 文中,输出数据就发生在每个窗口长度的位置。可以看到:

  • 1 阶 Sinc 在横坐标10、20、30 的位置,输出都是 1(图中绿色虚线)。
  • 2 阶 Sinc 在横坐标 20、30 的位置是 1(图中粉色虚线)
  • 3 阶 Sinc 在横坐标 30 的位置才是 1(图中粉色实线),这个合理,因为滤波算法执行了 3 次。

注意,此时这个输出的 “1” 已经是十进制数值。

再来看对于第 2 种密度更高的码流,三种阶数滤波器的输出情况:

图4 三种阶数 Sinc 对于第 2 种码流的输出

图4 三种阶数 Sinc 对于第 2 种码流的输出,来源 [2]

可以看到:

  • 1 阶 Sinc 在横坐标10、20、30 的位置仍然都是 1,这是不对的,因为第 2 种码流的密度更高,理应代表更大的模拟输入信号。
  • 2 阶 Sinc 在横坐标 20 的位置比第 1 种码流的数值更大,但在横坐标 30 的位置又恢复到了 1。
  • 3阶 Sinc 在横坐标 30 的位置输出 1.08,这才是合理的。

总之,虽然是同样的 OSR (Over-Sampling Ratio)和分辨率,3 阶 Sinc 输出更平滑、更精确,代价是 A/D 输出的延迟(Latency)更长。

Sinc 滤波器的频域特性

让我们来看一下 Sinc Filter 的频域特性。

在 TI 的应用笔记 SBAA230A (见参考资料[3])中,给出了整形后量化噪声 与 Sinc Filter 频谱(增益/衰减用绝对值和dB表示,无相位信息)的对比图示如下:

图5 量化噪声整形 与 Sinc Filter 对比

图5 量化噪声整形 与 Sinc Filter 对比,来源 [3]

看点如下:

  • 量化噪声为红线, Sinc Filter 频谱为黑线。
  • Sinc Filter 的通带:衰减很快,在非常低的频率增益就开始下降,马上就达到了 -20dB,因为通带窄,所以只适合低频信号的量测。
  • Sinc Filter 的阻带:往高频区域有下降趋势,并且有周期性陷波(Notch),出现的位置是在倍数的输出数据速率(Data Rate)上。

如果你觉得这个 Sinc Filter 勉强是个低通滤波器,可以滤除整形后的量化噪声的话,但图中其实是一个 5 阶 Sinc。

我们再来看一下 1 阶、3 阶、5 阶 Sinc,它们的频谱对比如下:

图6 不同阶数 Sinc Filter 对比

图6 不同阶数 Sinc Filter 对比,来源 [3]

可以看到:1 阶 Sinc 的阻带衰减非常差,5 阶 Sinc 好很多,代价是 5 阶 的通带也更窄,而且有很长的 Latency 。所以,为了折衷,3 阶 Sinc 用的比较多。

硬件实现 —— CIC 滤波器

既然 Sinc Filter 在频谱上与理想低通滤波器差距很大,为什么还能得到广泛使用?

原因就是它实现起来非常简单。

从 Moving Average 的算法来看,构建一个硬件框图如下:

图7 Moving Average 硬件原理

图7 Moving Average 硬件原理,来源 [4]

这是一个 4 窗口长度的 Moving Average 示例,窗口内的样本经过移位(1/4),最多 3 次 Delay,最后进行相加。

为简单起见,上图画的是一个 4 输入 的加法器,但这不太现实,因为加法器通常是 2 输入的。后来,人们发明了一种 Integrator Comb 的硬件结构,用的就是 2 输入的加减法,能够等效完成上述 Moving Average:

图8 Integrator Comb 的硬件结构

图8 Integrator Comb 的硬件结构,来源 [4]

如果把这种结构级联起来,就形成了高阶的 Sinc Filter,由其硬件特性,也称为 Cascaded Integrator Comb Filter(级联-积分器-梳状滤波器),即 CIC Filter,网上有很多它的 FPGA 代码。

整个实现过程没有用到乘法器,所以是一个非常大的成本优势,意味着它将占用更少的 Die Size 和消耗更少的电量。

这就是为什么在低速 Sigma-Delta ADC 中总能看到 Sinc Filter 或 CIC Filter 的身影:

图9 TI ADC 分类,底部是低速 ADC

图9 TI ADC 分类,底部是低速 ADC,来源 [5]

比如,图中 ADS124X 提供 3 阶 Sinc Filter,ADS126X 提供 5 阶 Sinc Filter。

希望未来看 datasheet 时,对这部分概念能驾轻就熟。

总结

本文从抽取(Decimation)讲到 Moving Average,再由 Moving Average 讲到 Sinc Filter,其硬件实现叫做 CIC Filter。

根据 Sinc Filter 频谱通带窄、硬件成本低的特点,通常用于从数十到几千 Hz 的低频输入,对应如温度、压力、人体生理等缓慢变化的传感器应用。

参考资料

  1. https://en.wikipedia.org/wiki/Sinc_filter
  2. https://www.st.com/resource/en/application_note/an4990-getting-started-with-sigmadelta-digital-interface-on-applicable-stm32-microcontrollers-stmicroelectronics.pdf
  3. https://www.ti.com/lit/an/sbaa230a/sbaa230a.pdf
  4. https://tomverbeure.github.io/2020/09/30/Moving-Average-and-CIC-Filters.html
  5. https://www.ti.com.cn/zh-cn/data-converters/adc-circuit/precision-adcs/overview.html

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