ADC 采样、过采样与数字滤波:抽取、平均如何提高有效位数
更新时间:2026-09-19。前置:ADC/DAC 数字接口与选型、混合信号边界。本文聚焦数字工程师能控制的「多采样、再处理」。
本文要回答的问题
- 采样率为什么至少要 2 倍信号带宽,混叠是什么?
- 过采样为什么能用「多采点 + 平均」换有效位数?4 倍换 1 位怎么来的?
- 抽取和数字滤波(sinc/均值/IIR)各做什么?
- MCU ADC 的规则/注入通道、采样时间和触发怎么配?
一、采样、量化与奈奎斯特
ADC 以 f_s 对连续信号采样并量化成 N 位码。奈奎斯特定理:f_s 必须 > 2×信号最高频率,否则高于 f_s/2 的分量会折叠(alias)进基带且无法事后区分。因此 ADC 前通常有抗混叠模拟低通;提高 f_s 能把该滤波器要求放松(过渡带更宽、更易实现)。
量化噪声近似均匀分布在 0~f_s 之间,总量化噪声功率 ≈ Δ²/12(Δ=1LSB),与采样率无关——这是过采样增益的来源。
二、过采样:把噪声摊到更宽频带
以 OSR = f_os / f_n(过采样率,f_n 为最终奈奎斯特率)采样后做低通只保留 0~f_n/2:
量化噪声谱密度 ∝ 1/√OSR
带内噪声功率 ∝ 1/OSR
SNR 提升:每 4×OSR → 噪声减半(功率/4)→ +1 位
ENOB ≈ N + (1/2) log2(OSR)
例:12 位 ADC,OSR=256(2^8) → 理想 +4 位 → 16 位有效(受噪声/INL 限制)代价:要采 256 倍样本再抽取,吞吐下降、功耗上升;且增益只对近似白噪声的量化噪声成立,若瓶颈是基准漂移/INL/1/f 噪声,过采样救不了。
三、抽取与数字滤波
抽取(decimation):过采样后降回目标率,不能简单扔点(会混叠),必须先抗混叠数字低通再降采样。常用:
| 滤波器 | 特点 | 场景 |
|---|---|---|
| 累加平均 boxcar/sinc1 | 取 OSR 个样本均值,实现最简(累加+移位) | 通用过采样提位 |
| sinc3 / sinc^3 | 多级积分梳状(CIC),对频率分量有零点、抑制线频 | ΣΔ ADC、电流/功率采样 |
| 移动平均 | 滑窗,平滑但有相位延迟 | 显示/慢控 |
| IIR(一阶低通 y+=α(x-y)) | 省资源、可调截止频率 | 嵌入式温控/直流 |
sinc^3 是 ΣΔ/隔离采样(如电机相电流)标配:在「抽取率整数倍频率」处有陷波零点,能精确压掉 PWM 开关频率纹波。
四、MCU/SoC ADC 的数字侧
- 规则组/注入组(regular/injected):规则组按队列轮询多通道存 DMA;注入组高优先级可插入(如故障时刻抢采)。
- 采样时间 SMP:采样开关接通时间,要 ≥ 外部源阻抗给采样保持电容充满的要求;高阻源用长采样窗口,否则读数偏小/串扰。
- 触发:定时器(与 PWM 同步,在中心点采相电流)、外部引脚、软件;采样点对齐见 定时器/PWM。
- 结果经 DMA 搬内存,注意 DMA 对齐与 cache。
// 极简可综合过采样平均(2^M 个样本,自然加权为 1 位增益)
module oversample_avg #(parameter W=12, M=4)(
input clk, rst_n, input [W-1:0] sample, input valid,
output reg [W-1:0] out, output reg ovalid);
reg [W+M-1:0] acc; reg [M-1:0] n;
always @(posedge clk or negedge rst_n) if(!rst_n) begin acc<=0;n<=0;ovalid<=0; end
else if(valid) begin
if(n==2**M-1) begin out<=acc[W+M-1:M]; ovalid<=1; acc<=sample; n<=0; end // 简化:含本次
else begin acc<=acc+sample; n<=n+1; ovalid<=0; end
end else ovalid<=0;
endmodule五、常见的坑
- 不防混叠:信号/噪声超过 f_s/2 折叠进基带,数字滤波再强也分不开。
- 以为过采样万能:基准误差、INL、失调、1/f 噪声不随 OSR 改善,ENOB 上不去。
- 先降采样后滤波/直接抽点:重新引入混叠,顺序必须先滤波后抽取。
- 采样时间太短:高阻源未充满 S/H 电容,读数偏低、通道间串味。
- 参考电压不稳/噪声:VREF 纹波直接调制输出,过采样平均不掉同步噪声。
- 位数累加溢出:累加器宽度要 W+log2(OSR),窄了回绕。
- 触发点没对齐 PWM:电机电流在开关点采到尖峰,应中心对齐/配合 sinc 陷波。
- 注入组误用:抢占规则组导致 DMA 序列错位。
- 只看分辨率不看 ENOB/吞吐:标 16 位但 OSR 拉高后数据率大降,控制环带宽不够。
- 输入超量程/钳位:接近轨电压时 INL 恶化;模拟脚复用未断开数字缓冲漏电(见 PinMux)。
- 数字噪声耦合:数字地开关噪声经基准/电源进入 ADC,布局去耦不当时过采样结果抖动。
相关与延伸
接口与奈奎斯特基础见 ADC/DAC 接口选型;同步采样时基见 定时器/PWM;数据搬运见 DMA 对齐与 cache。
总结
过采样利用「量化噪声功率固定、谱密度随采样率下降」:以 OSR 倍采样再做抗混叠低通,带内噪声按 1/OSR 下降,理想每 4 倍 OSR 多 1 位 ENOB(ENOB≈N+½log₂OSR),但必须先滤波后抽取、用 boxcar/sinc³ 等抑制噪声,且对基准漂移和 INL 无效;工程上还要选够长的采样窗口、把触发与 PWM 对齐、留宽累加器并保证 VREF 干净——混叠、先抽取后滤波、采样电容没充满和把过采样当万能是四大坑。