【原】读者问题回答:过采样算法的分辨率 vs. 可检测变化,为什么 OSR ≠ 增加 LSB?
通过过采样提升 STM32F1/F3/Lx 系列 ADC 分辨率
δΣ(Sigma-Delta, ΣΔ)ADC 是否能通过“过采样”提高分辨率?
一个Σ-Δ ADC中不会写出来的参数:OSR(最小过采样率)
使用 10G采样率 ADC 用过采样算法可以获得的信号上限是多少?
来看这个问题,是前天的评论区问题,解读一下,因为可以挖掘不少好玩意儿:
写作思路也简单,直接回答!
分辨率 vs. 可检测变化:为什么 OSR ≠ 增加 LSB假设一颗 ADC 的量程 ±2.5 V、8 bit,则:
即便过采样 100 MHz、采工频 50 Hz,单次采样的量化步长仍是 19.5 mV;换言之,25 µV 的信号变化完全落在同一个量化区间内,不会让码值变化。
过采样的本质:平均量化噪声过采样带来的“有效分辨率提升”只在量化噪声随机分布、信号跨越量化阈值的情况下才成立。
理论上:
例如:
OSR = 4 → +1 bit
OSR = 16 → +2 bit
OSR = 256 → +4 bit
但这有个关键前提:
量化噪声必须在时间上“抖动”——即样本点间的量化误差是独立随机的;如果输入信号完全静止在量化台阶中间,量化误差固定不变,则平均毫无意义。
所以:
条件OSR 有效吗?原因信号动态变化、量化噪声随机有效平均后量化噪声被 √N 降低信号恒定、无噪声无效所有样本码值完全相同信号非常小、被量化锁死无效无法跨过 LSB 阈值,不产生可统计的误差分布假设 8 bit ADC(10 mV/LSB)采集 25 µV 微信号:
若输入无任何噪声 → 码值恒定 = 128,不变;平均 10⁶ 次也不会变;但是如果输入有 ±5 mV 的噪声(> LSB/4)→ 量化码在 127~129 来回跳动,平均值可逼近真实电压;这就是所谓的 “dither-assisted oversampling”(抖动辅助分辨率提升)。
换言之,没有噪声,过采样不会提升分辨率;有噪声,过采样能统计出更精确均值。
用公式量化限制目标:从 10 mV/LSB 解析到 25 µV。 需要等效提升:
→ 需要提升 ≈ 8.64 bit。 由上式:
也就是要28 万倍过采样率,且量化噪声完全随机分布,显然在 100 MHz → 50 Hz 场景下勉强够(OSR≈2×10⁶),但你必须保证量化噪声随机、或人为加抖动。
结论过采样不能突破 ADC 的物理量化步长,它只是通过时间平均“统计”出更精确的平均电压。若输入信号静止在某个量化台阶,过采样毫无作用; 若存在自然噪声或添加 dithering,则可以靠平均挖掘出更细的变化。
仿真演示在同样 8-bit ADC(1 LSB ≈ 10 mV)条件下:
场景输入信号有无噪声预期效果A25 µV 微小直流变化无噪声码值完全不变(锁死)B同样信号 + 少量白噪声(≈ 0.5 LSB rms)有噪声平均后能逐渐逼近真实值C同样信号 + 人为加 dither(随机抖动)有噪声收敛更平滑、误差最小[A 无噪声(锁死)] 关键点收敛: N= 11: 估计Δ= 0.000 µV, 误差= -25.000 µV N= 101: 估计Δ= 0.000 µV, 误差= -25.000 µV N= 1001: 估计Δ= 0.000 µV, 误差= -25.000 µV N= 10001: 估计Δ= 0.000 µV, 误差= -25.000 µV N=100001: 估计Δ= 0.000 µV, 误差= -25.000 µV N=200000: 估计Δ= 0.000 µV, 误差= -25.000 µV[B 白噪声] 关键点收敛: N= 11: 估计Δ=2663.352 µV, 误差=2638.352 µV N= 101: 估计Δ= 386.757 µV, 误差= 361.757 µV N= 1001: 估计Δ=-175.606 µV, 误差=-200.606 µV N= 10001: 估计Δ= -64.447 µV, 误差= -89.447 µV N=100001: 估计Δ= 35.254 µV, 误差= 10.254 µV N=200000: 估计Δ= 37.891 µV, 误差= 12.891 µV[C dither+白噪声] 关键点收敛: N= 11: 估计Δ= 0.000 µV, 误差= -25.000 µV N= 101: 估计Δ= 193.379 µV, 误差= 168.379 µV N= 1001: 估计Δ= 48.779 µV, 误差= 23.779 µV N= 10001: 估计Δ= -7.812 µV, 误差= -32.812 µV N=100001: 估计Δ= 14.551 µV, 误差= -10.449 µV N=200000: 估计Δ= 16.748 µV, 误差= -8.252 µVA 曲线是“一条直线”——完全锁死;B/C 会在相邻码之间跳动(量化抖动被噪声/dither“激活”)。
A 的平均值永远不收敛到真实值(误差≈常数);B/C 的误差随 N 近似按 1/√N 下降(统计平均有效)。
A 的“估计微小变化”始终≈0;B/C 会逐步逼近 25 µV,其中 C(dither)收敛更平滑稳定。
后记没有噪声(或人为 dither),过采样不可能“打破”LSB——码值不会变化;有足够随机噪声/抖动,过采样平均可以把量化误差当作白噪声来压低,从而估出小于 LSB 的变化;想从 10 mV/LSB → 25 µV,理论上需要 ~8.6 bit 的等效提升(OSR≈2.8×10⁵),且要确保噪声随机、系统极低漂移;工程上更务实的路径是:先加模拟增益(PGA)或换更高 ENOB 的 ADC,再配合适量 dither + 数字平均。