模数转换器(ADC)
模数转换器是一道门,把杂乱无章的连续世界引进数字芯片真正能拿来运算的那个干净的数字世界。麦克风、温度传感器、收音机天线——它们说的都是平滑变化的电压,在高与低之间有着无穷无尽的灰度。ADC 倾听这个电压,再递给处理器一个数。它分两步完成。第一步是采样:像相机一帧帧抓拍那样,它不去无休止地盯着电压,而是在等间隔的一个个瞬间把电压定格下来。第二步是量化:它把每个定格下来的值四舍五入到一架固定阶梯上最近的那一档,因为一个数终归只能有那么多位。采样切碎了时间,量化切碎了幅度。
这份便利带着两笔实打实的代价。你必须采得够快——至少是你所关心的最高频率的两倍(奈奎斯特准则,fs 大于 2*fmax)——否则快速的抖动就会乔装成缓慢的抖动,这种误差叫混叠,事后再怎么算也无法挽回。而四舍五入到最近的那一档,会丢掉那点微小的零头,它表现得就像一阵轻微的嘶嘶声,称为量化噪声。位数越多,阶梯越细,嘶声越轻:对一个理想转换器来说,信噪比约为 6.02*N + 1.76 dB,所以每多一位大约能买来 6 dB 的余量。正是这一行式子,道出了为什么 16 位音频 ADC 听起来比 8 位的干净得多。
该选哪种架构,是在速度、分辨率和功耗之间的一场权衡。flash(闪速)ADC 是短跑健将:它用一整排比较器,一次就把输入和阶梯上的每一档同时比一遍,因此一拍之内就完成转换——快得惊人,但比较器的数目随位数爆炸式增长,所以它分辨率上不去、又耗电(想想几吉赫兹的射频前端和示波器前端)。SAR(逐次逼近)ADC 玩的是二分查找的猜数游戏,每一步钉住一位;它落在舒服的中段——速度适中、8 到 18 位、功耗节省——这让它成了传感器和单片机里挑大梁的主力。sigma-delta(Σ-Δ)ADC 拿速度换精度:它以远超所需的频率采样,再巧妙地把自己的量化噪声推到感兴趣的频带之外(噪声整形),然后把噪声滤掉,从而达到最高的分辨率(可达约 24 位),用于音频和精密仪器。
每多一位分辨率,大约能多换来 6 dB 的信噪比,所以 SNR 的上限几乎与位数成线性关系。
数据手册上的位数是最容易看的部分——设计师真正追求的是有效位数(ENOB),也就是现实世界里的噪声、抖动和失真啃掉了理想之后剩下的分辨率,而它几乎总是低于标称的 N。