JOVANA
Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

数据转换器:ADC 与 DAC

真实世界是一道平滑、带噪声、从不真正静止的模拟信号;而计算机只会说干脆利落的数字。数据转换器就是这条边界上的翻译官——ADC 把电压变成比特,DAC 再把比特变回电压。本指南从直觉出发一砖一瓦地搭起这座桥:时间是怎么被切成一个个采样点的(以及采样太慢为何会骗你),幅度是怎么被四舍五入到一级级台阶上的(以及那点舍入误差为何不过是一份你能预先估算的噪声),多少比特能换来多少保真度,再带你快速逛一遍实践中会遇到的三种 ADC 架构——flash、SAR 和 sigma-delta。

两个世界之间的桥

到目前为止,你在模拟这一阶搭起的一切——op-amp差分对带隙基准——都活在一个 电压 是平滑、连续量的世界里。它可以停在 0.5 V,或 0.5001 V,或介于其间的无穷多个值中的任何一个,它会随温度漂移,会因 噪声 而颤抖。而 RTL 那一阶的数字世界恰恰相反:它只认得干脆、可数的数字——一条总线就是 `1010_1101`,没有比这更含糊的东西。麦克风、温度传感器、无线电天线产出的都是平滑那种;处理器却只能嚼得动干脆那种。总得有个东西在两者之间翻译,这个翻译官就是数据转换器。

翻译是双向跑的。ADC(模数转换器)读取一个连续电压,报出最接近的数字——它是芯片的*感官*,是它感知外部世界的方式。DAC(数模转换器)则反过来——拿一个数字,产出与之匹配的电压——它是芯片的*嗓音*,是它反过来作用于世界、去驱动扬声器、天线或电机的方式。几乎每一颗有意思的芯片两者都有:它用 ADC 来感知,在数字域里运算,再通过 DAC 把话说回去。

采样:时间变离散

一道真实信号在*每一个*瞬间都有定义——1.0000 秒有一个电压,1.0001 秒也有,介于其间的每一丝瞬间都有。计算机存不下无穷多个瞬间,所以 ADC 做的第一件事就是 [[sampling|采样]]:在规律的 时钟 节拍上瞥一眼输入,把那一个值冻住,节拍之间的一切则一概不理。想象暗房里的一盏频闪灯——你看不到连续的运动,每闪一下你看到的是一张快照。闪光的频率就是采样率 `fs`,两次闪光之间的间隔就是采样周期 `Ts = 1/fs`。

下面这一点谁都会吃一惊:如果你闪得太慢,那些快照不只是丢了细节——它们会主动*撒谎*。一个快速转动的轮子用低帧率拍下来,看上去会倒着转或干脆停住;这是同一种效应,叫混叠(aliasing)。一个对你的采样率而言太高的信号频率,会乔装成一个根本不曾存在的*更低*频率,而一旦那个假的低音混进了你的采样里,再聪明的手段也除不掉它。让你保持诚实的规矩叫 Nyquist(奈奎斯特):你的采样速度必须快于信号中最高频率的两倍。

fs > 2 * f_max     ; Nyquist criterion — else high tones alias
; CD audio: hearing tops out ~20 kHz  ->  fs = 44.1 kHz (> 2*20 kHz)
采样要高于你在乎的最快那个音的两倍。CD 音频选 44.1 kHz,就是为了让整个 20 kHz 的可听频段都落在 fs/2 这条「奈奎斯特频率」之下——还多留一点余量给抗混叠滤波器去滚降。

量化:幅度变离散

采样把*时间*切成了一个个离散瞬间,可每一张冻住的快照仍然是一道平滑的模拟电压——而我们答应过数字那一侧只给干脆的数字。于是第二步就是 [[quantization|量化]]:把每个采样电压四舍五入到一把固定的、只允许若干级取值的「梯子」上最接近的那一级。想象你用一把只刻到整厘米的尺子量身高——你明明是 173 点几,却只能写下 `173`。你丢掉的那点零头,就是用有限刻度的尺子要付的代价。

有 `N` 个比特,这把梯子就有 `2^N` 级,均匀地铺满整个满量程输入范围。相邻两级之间的间距就是一个 LSB(最低有效位),也就是转换器能分辨的最小差异:`LSB = FS / 2^N`。每一个真实输入都落在两级*之间*的某处,所以转换器要做舍入——而无论往哪个方向,舍入误差最多就是半个 LSB。这个误差躲不掉;它是把一个连续值硬塞到离散梯子上所要付的根本代价。

V_LSB = FS / 2^N          ; one step of the ladder
; e.g. FS = 1.0 V, N = 12  ->  V_LSB = 1.0 / 4096 ≈ 244 uV
error_max = ± V_LSB / 2    ; worst-case rounding, ≈ ±122 uV
比特越多 = 梯级越细 = 舍入误差越小。一个 12 比特的转换器在 1 V 范围内,能细分到每级大约 244 微伏。

分辨率、比特与 SNR

把量化舍入当作噪声来看,一条干净的关系就掉了出来。信号能在整个满量程范围里摆动,而噪声却被钉在大约半个 LSB 上——所以你每加一个比特,噪声台阶就减半,信噪比就翻倍,也就是多一个比特 ≈ 6 dB 的 SNR。把这件事针对一个满量程正弦波写明白,你就得到了数据转换器设计里被引用得最多的那一条公式。

SNR ≈ 6.02 * N + 1.76   (dB)   ; ideal full-scale sine, N-bit quantizer
; N = 8   ->  ~50 dB
; N = 12  ->  ~74 dB
; N = 16  ->  ~98 dB
「每比特 6.02」法则:每多一个比特换来大约 6 dB。那 +1.76 dB 来自一个正弦波相对于均匀舍入噪声的统计特性;这是理想的天花板,实际器件总会差那么一点点。

那条公式是*理想*。真实转换器永远够不着它,因为你一路爬上模拟这把梯子时打过的那些老对头,在这儿照样冒头——电阻和开关上的 热噪声1/f 噪声、比较器失调,还有时序的晃动。时钟 抖动 对快速输入尤其讨厌:要是你的采样时刻在哆嗦,你就会在一个高频波形最陡的那段上、错那么一丁点时机去采样,读出错误的值——而且这种误差会随输入频率一同变大。所以工程师爱用 ENOB(有效比特数):拿*实测*的 SNR,把公式倒着算一遍,看看你实际拿到了多少个「真」比特。一个标称 16 比特、却只做到 90 dB 的器件,其 ENOB 接近 14.6——那些缺掉的比特,都被噪声吃了。

DAC:把数字变回电压

DAC 把整个故事倒着跑:递给它一个数字,它就产出与之匹配的 电压。从概念上讲它是一个加权求和——每个比特掌管输出的一「份」,而这些份是按 2 的幂来定大小的,好让它们加起来正好凑到对的那一级。最高有效位贡献满量程的一半,下一个比特四分之一,再下一个八分之一,如此一路下到 LSB。

  1. 收到数字码,比如那个 4 比特的字 1011。
  2. 每个比特把自己那份加权贡献开或关:bit3 = 1/2 FS,bit2 = 1/4 FS,bit1 = 1/8 FS,bit0 = 1/16 FS。
  3. 把被开启的权重加起来:1011 = 1/2 + 0 + 1/8 + 1/16 = 满量程的 11/16。
  4. 一个缓冲器把这个加总后的电压驱动输出——后面通常再跟一个重建低通滤波器,把那一级级离散输出台阶组成的阶梯,平滑回一道连续的波形。

那些「权重」是由精确匹配的模拟元件搭出来的——一个二进制加权电容 阵列或电流阵列,又或是那个只需要两种电阻值的优雅的 R-2R 梯形网络。而到了这儿,前几阶学到的每一条版图功课都连本带利兑现了:要是这些权重对不上它们理想的比例,台阶出来就会高低不齐,转换器就非线性了。这恰恰是为什么精密转换器要倚仗 电流镜 这类把戏来配出匹配的电流,倚仗 共质心版图 来抵消整片裸晶上的工艺梯度。匹配就是这盘棋的全部——一个 12 比特的 DAC,要求它的各个元件匹配到优于四千零九十六分之一。

ADC 架构一览

不存在唯一最好的 ADC——只有在速度、分辨率和功耗这三者之间作出对的取舍,这是转换器设计的铁三角。三种架构就覆盖了这张地图的大半,而知道每一种各自坐落在哪儿,你需要懂的就懂了大半。

  1. Flash(闪速)——最快,也最能吃。 砌一整面墙的 2^N−1 个比较器,每个梯级配一个,让输入同时跟它们全部比一遍。答案在一个时钟周期内就蹦出来——干吉赫兹速率那种活(无线电、高速链路)漂亮极了。但比较器数量*每加一个比特就翻一倍*,所以 flash 既吃功耗又吃面积;只有在低分辨率下才实用,大致 6–8 比特。
  2. SAR——均衡的主力马。 逐次逼近做的是二分搜索:用一个内部 DAC 猜最高有效位,问一个比较器「猜高了还是猜低了?」,把那一位锁定,再猜下一位——N 个比特就比 N 次,就像反复把范围对半砍来猜一个数。一个比较器、一个小 DAC、功耗不大;中等速度,8–18 比特。这是你第一个会伸手去拿的默认选项。
  3. Sigma-delta(ΣΔ,西格玛-德尔塔)——最高分辨率,窄频带。 用*远*快于 Nyquist 的速度采样(过采样),再加一条反馈环去给量化噪声整形,把它顶到你的频段之外、再由一个数字滤波器一扫而空——拿原始速度去换惊人的分辨率。16–24 比特,用于音频、传感器和仪器仪表,那里信号慢,可你想要每一个比特的保真度。

留意它们和你早已认识的那些模拟电路之间的那股家族相似。SAR 的心脏是一个比较器(一个被推到要作判决的 差分对)外加一个 DAC。sigma-delta 骨子里就是一条 反馈环——而且就跟 GBW相位裕度 那两阶讲过的 op-amp 一样,这条环必须稳定才能工作。数据转换器并不是一门另起炉灶的学科;它们就是你那些模拟积木,被有目的地拼装了起来。