ADC 这东西,搞过几年数据采集或者信号链设计的人都不陌生。但 Pipeline ADC 和其他类型的结构比,确实存在一些理解门槛,很多初学者拿着数据手册看半天,知道它能跑到几百 MSPS、分辨率做到 12 到 16 位,但一碰上“余差传递”“数字校正”这些词就容易懵。这篇文章我就用尽可能平实的语言,把 Pipeline ADC 的地基从头捋一遍,包括它为什么能兼顾速度和精度、每一级电路到底在忙什么、哪些参数是选型时候真正要盯住的。无论你是刚入门的学生,还是需要评估芯片的硬件工程师,只要能看懂电压、放大、比较这些基本概念,这篇文章就能帮你把 Pipeline ADC 的框架立起来。
1. Pipeline ADC 到底在解决什么难题
1.1 高速高分辨率为什么这么难同时做到
先想一个很实际的问题:如果我们要把一个 100 MHz 带宽的模拟信号,转成 14 位数字量,采样率至少要跑到 200 MSPS 以上。这时候你拿逐次逼近型(SAR)ADC 来算一笔账,它一次转换需要一个一个 bit 去逼近,14 位就要至少 14 个比较周期,200 MSPS 的采样率意味着每个周期只有 5 ns,那每个 bit 的判决时间连 0.4 ns 都不到,对比较器建立速度和 DAC 精度都是极大的压力。
再看 Flash ADC,它确实快,一个时钟周期就能出结果,但想做到 14 位,需要 2 的 14 次方减一个比较器,也就是 16383 个比较器,这个数量带来的面积、功耗、输入电容基本不可接受,所以纯 Flash 架构一般也就做到 6 到 8 位。这个时候 Pipeline ADC 的价值就体现出来了,它用“空间换时间”和“逐级细化”的思路,把一次高分辨率转换拆成多级小分辨率转换,每一级只负责很少的位数,但整体合起来能做到又高速又有高分辨率。
打个比方,你用一把尺子量一个很长的距离,一次性要精确到毫米很难;但如果你把距离分成很多段,每段用精度适中的尺子量,再把所有结果拼起来,难度就大大降低了。Pipeline ADC 就是这个思路,只不过它的“分段”不是物理上的空间分段,而是对信号幅度逐级细化。
1.2 Pipeline 结构的核心思想:把“难事”拆给多级去干
Pipeline ADC 的导通结构是一条链,每一级都会完成一个共同任务:先对当前输入信号做一次低分辨率采样判决,再把这一级已经“确定”的信息从信号里减掉,把剩下的残余误差放大后送给下一级。下一级以同样的方式继续处理,如此一级一级下去,最终把整个模拟量数字化。
这里最有意思的一点是,每一级都不需要做得非常完美。因为 Pipeline 结构天生带“冗余校正”能力,后级会帮忙修正前级的判决误差。这个我们后面专门讲,但你先记住一个结论:Pipeline ADC 之所以能在高速下保持高精度,不完全是因为每一级做得多精确,而是因为整个链条自己会纠错。这个思想非常像工程上常用的“容差设计”,不追求每个零件零误差,而是通过系统层面的算法把局部误差吸收掉。
从时钟角度看,Pipeline ADC 处于一种“流水线”工作状态:当第一级在处理第 N 个采样点时,第二级已经在处理第 N-1 个采样点,第三级在处理第 N-2 个,以此类推。所以它的数据吞吐率只取决于每一级的处理速度,而不是整条链路的延迟。这就是为什么 Pipeline ADC 能做到很高采样率的底层逻辑。
2. Pipeline ADC 工作原理:每一级到底在折腾什么
2.1 一级的完整任务拆解:采样、比较、重建、残差放大
把 Pipeline ADC 的一级单独拿出来看,通常由这么几块组成:采样保持电路(SHA,或者现在更常见的无前端 SHA 结构)、一个低分辨率子 ADC(Sub-ADC,通常是 Flash 结构)、一个 DAC、一个减法器和一个增益放大器。这几块组合在一起,有一个专门的名字叫 MDAC,也就是乘法数模转换器。
这一级的工作流程可以拆成四步:
- 采样保持:把当前时刻的模拟信号电压锁定住,保证后续电路处理的是同一个时间点的信号。
- 子 ADC 判决:用低分辨率 Flash ADC 快速把当前电压判断成一个粗码,比如判断它落在哪个电压区间内。
- DAC 重建并做差:把刚才的粗码重新变回一个模拟电压,然后用原始输入减去这个重建电压,得到一个“残余误差”。
- 残差放大:把残余误差乘以固定增益(通常是 2 的幂次),送到下一级继续处理。
举个例子,假设输入信号范围是 0 到 1 V,第一级的子 ADC 是 1.5 位,它能把输入分成‘低’‘中’‘高’三个区间。如果当前电压是 0.7 V,它落在‘高’区间,粗码记为 1,然后 DAC 重建出 0.5 V 的电压,0.7 减 0.5 得到 0.2 V 的残差,放大 2 倍变成 0.4 V,送到下一级。下一级拿到 0.4 V,再重复同样的过程。这样每一级都在把前一级剩下的“细节”放大,后级看信号就越看越清楚。
2.2 余差信号(Residue)是怎样产生和传递的
余差信号是 Pipeline ADC 里最核心的概念。你可以把它理解成“上一级还没来得及处理的信息量”。这个信息量经过放大后,就变成后一级能够精细分辨的信号范围。
这里要注意一个关键点:MDAC 的输出端没有设计成刚好把整个输入范围映射到下一级满量程,而是留了一部分余量,这就是我们后面要说的冗余。因为实际电路不可能完美,比较器会有失调,DAC 会有误差,放大器会有增益误差,如果残差刚好卡在下一级的边界上,稍微偏一点点就会判错并且无法纠正。留余量以后,常见的非理想因素都被“吸收”掉了。
残差信号的传递像什么?像一个团队在接力做一件事,前一个人把完成的部分拿走,把剩下不清楚的部分整理好交给后面的人,后面的人有更大的“放大镜”去观察这部分细节。一级一级往后,信号的细节越来越清晰,整条链路合起来也就实现了高分辨率转换。
2.3 整条流水线是怎么拼出完整数字码的
既然每一级都会输出一个粗码,最后要怎么拼成一个完整的数字输出?这里不是简单的拼接,而是要做带权重的相加,而且还涉及到时序对齐。
每一级的输出码权重不一样:第一级决定的是最高有效位(MSB),权重最高;后面每一级决定的是越来越低的有效位(LSB),权重逐级减半。在数字域里,需要一个延迟对齐电路,让每一级的输出码在时间上对齐,再做加权求和,才能得到最终数字结果。
这里我还想提醒一个容易误解的地方,Pipeline ADC 是有“流水线延迟”的,也就是从采样到数字输出,会有好几拍时钟的延迟。这个延迟在普通连续采样场景里没问题,但在某些需要精确同步的应用里会带来麻烦,比如多片 ADC 交错或者做反馈控制时,要额外考虑这个延迟的影响。
3. 数字校正与冗余位:Pipeline 结构最精妙的一环
3.1 如果各级都追求“绝对精确”,现实会怎样
前面提到 Pipeline ADC 不需要每一级都做得很精确,因为整个结构有自纠错能力。要理解这一点,先反过来想,如果每一级都必须做到“绝对精确”会是什么场景。
假设一个 10 位 Pipeline ADC,第一级要直接判决出最高位,那它的比较器阈值必须非常准,DAC 的建立值也必须非常准,哪怕只偏差一点点,后面不管怎么补救都错。而且随着 ADC 分辨率提高,第一级的精度要求几乎接近模拟电路设计能力的上限。更要命的是,比较器的失调电压在 CMOS 工艺下很难做得很小,要做得小就得加大面积、加大功耗,这就又回到了前面的矛盾。
所以实际的 Pipeline ADC 绝不会让任何一级承担“一次性判准”的重任。它会让每一级多产生冗余位,给后面的级留纠错空间,这就是数字校正的核心思路。
3.2 1.5 bit/级:为什么每级只出 1.5 位
Pipeline ADC 里最有名的就是 1.5 bit/级结构,这个数字看起来很怪,实际包含两层意思:子 ADC 使用 2 位编码(所以叫 1.5 bit),但实际有效信息只有 1 bit,剩下的 0.5 bit 是冗余。
用电压区间来解释。设输入范围为 [-Vref, +Vref],1.5 bit 的子 ADC 用两个比较器,阈值分别设在 -Vref/4 和 +Vref/4。根据输入电压落在哪个区间,输出三态码:
- 电压 < -Vref/4,输出 00
- -Vref/4 ≤ 电压 ≤ +Vref/4,输出 01
- 电压 > +Vref/4,输出 10
MDAC 的传递函数设计成:Vout = 2 × Vin - D × Vref,其中 D 根据输出码取 -1、0、+1。这样算下来,输出范围被压缩到 ±Vref/2 附近,而不是覆盖整个 ±Vref。压缩出来的这一半范围就是冗余空间,用来容纳比较器失调、放大器建立误差等非理想因素。
这个设计的妙处在于:只要比较器的失调误差不超过 ±Vref/4,即使这一级判错了,后级也能根据残差把这个错误纠正回来。所以 1.5 bit/级结构对比较器失调的容忍度非常宽松,相比纯 Flash 结构动辄要求比较器精度做到 1/2 LSB,这个要求低了一个数量级都不止。
3.3 数字校正算法到底做了什么
数字校正逻辑在 Pipeline ADC 的数字部分实现,它做的事情可以理解为“迟来的投票纠错”。假设第一级比较器误判了:信号实际略低于某个阈值,但因为失调它判成了高区间。这样 MDAC 就会减去一个偏大的 DAC 电压,导致残差向负方向偏移。如果这个偏移还在后级可处理范围内,后级会输出一个负向的修正量,这个修正量体现在数字上就是减掉一部分权重。
校正的方法是每级输出码做一个错位相加再对齐,具体的数字电路实现往往是一棵加法树。每一级的输出码(比如 2 位)先经过延迟对齐,然后按位权重累加。对于 1.5 bit/级结构,累加方式相当于每一级码乘上 2 的负 n 次方再求和,最终得到一个完整的二进制数。硬件上这只是一组移位寄存器和加法器,代价非常小,却在模拟域换来了巨大的误差容忍红利。
注意:数字校正能修正的是“系统性的比较器失调误差”,但如果 DAC 本身出现非单调性错误,或者放大器增益误差超过冗余范围,数字校正是无能为力的。所以设计 MDAC 时,DAC 的匹配精度和运放的增益才是真正要死磕的地方。
4. 性能指标怎么读:别只盯着分辨率
4.1 静态指标:DNL、INL、失调和增益误差
拿到一片 Pipeline ADC 的数据手册,先看静态指标,DNL(微分非线性)和 INL(积分非线性)是基础。DNL 反映的是每个码宽与理想码宽的偏差,如果某个码的宽度为 0,就说明这个码缺失了,这种缺失在 Pipeline ADC 里往往和比较器亚稳态或者冗余设计不足有关。INL 反映的是整条转换曲线偏离理想直线的程度,会影响谐波和杂散水平。
失调误差和增益误差相对好理解,失调就是输入为零时输出不为零,增益误差就是实际斜率与理想斜率的偏差。这两个误差在很多系统里可以通过校准消除,但 DNL 和 INL 是硬指标,很难靠软件完全补回来,选型时要重点关注。
很多人容易踩的坑是直接拿分辨率当精度,其实一个 16 位的 ADC,如果 INL 很差,有效位数可能只有 12 位,那些“低位数”只是一个宣传数字,实际性能要看 ENOB 才靠谱。
4.2 动态指标:SNR、SFDR、SNDR 与 ENOB
动态指标更能反映 ADC 在实际工作状态下的表现。SNR 是信号与噪声之比,但这里只考虑噪声不考虑失真;SNDR 是信号与噪声加失真之比,更接近实际感受;SFDR 是信号与最大杂散分量之比,主要反映非线性产生的假信号有多严重。这三个指标都跟输入信号频率相关,数据手册上通常会给几个典型频率下的值,选型时要看你要用的信号频段在哪。
ENOB(有效位数)是从 SNDR 反推出来的,公式是 (SNDR - 1.76) / 6.02。这个数比标称分辨率更真实地反映了转换质量。比如一款标称 14 位的 Pipeline ADC,在中频 100 MHz 输入下 SNDR 只有 70 dB,那 ENOB 也就 11.3 位出头。很多通信系统其实更关心 SFDR,因为杂散会直接干擾邻近信道,而噪声可以通过滤波和扩频来处理。
频谱分析是评估 Pipeline ADC 动态性能最直观的手段。测试时要特别注意输入信号的纯净度,如果输入信号源本身的相位噪声和杂散比 ADC 还差,那测出来的其实是信号源的问题,不是 ADC 的问题,这个典型误区我在后面调试部分再展开说。
4.3 功耗效率:FoM 怎么看
不同厂家、不同架构的 ADC 直接比功耗很不公平,因为采样率、分辨率都不一样。业内常用 FoM(品质因数)来做横向对比,最简单的计算方式为:
FoM = 功耗 / (2^ENOB × 采样率)
这个 FoM 的单位是 pJ/conv-step,数值越小说明转换一次需要消耗的能量越低,芯片越好。比如一个 12 位、100 MSPS、功耗 50 mW 的 ADC,如果 ENOB 是 11 位,那 FoM 大约是 50mW / (2048 × 100M) ≈ 0.244 pJ/conv-step,属于比较合理的水平。
有意思的是,FoM 并不是恒定不变的。Pipeline ADC 在较低采样率下 FoM 可能变差,因为静态功耗占比上去了;在极高采样率下也可能变差,因为动态功耗和建立功耗增长更快。所以选型时应该在目标采样率附近看 FoM,而不是只看数据手册封面上的峰值参数。
4.4 时钟抖动对性能的影响:最容易忽略的魔鬼
Pipeline ADC 的采样时刻是由外部时钟决定的,如果时钟本身存在随机抖动,采样点的实际时刻就会晃动。对于高频输入信号,信号变化速率很快,时间上的抖动会直接转化为电压上的误差。这个影响的程度可以用公式估算:SNR 的时钟抖动限制为 20 × log10(1 / (2π × fin × tj)),其中 fin 是输入频率,tj 是时钟抖动。
举个例子,输入信号频率是 500 MHz,时钟抖动是 0.5 ps,算下来这个限制大约是 56 dB,这已经明显低于很多 14 位 ADC 的标称 SNR 了。也就是说,即使 ADC 芯片本身做得再好,外围时钟不给力,性能天花板就会被时钟拖死。这也是为什么在高速 Pipeline ADC 的应用笔记里,几乎每份文档都会花大篇幅讲时钟芯片选型和时钟分配电路设计。
5. 关键电路模块设计与实操要点
5.1 MDAC 设计:开环还是闭环,增益怎么定
MDAC 是 Pipeline ADC 的模拟核心,也就是那个既能做减法又能做放大的模块。在 CMOS 工艺里,MDAC 几乎都是开关电容电路实现的,核心是一个带反馈电容的运算放大器。增益通常为 2,对应每级 1 bit 信息加上冗余。
MDAC 的设计难点主要有三个方向:一是运放的增益带宽积,要保证在一个时钟周期内残差建立到足够精度;二是电容匹配精度,因为 DAC 的权重是由电容比例决定的,失配直接影响 INL;三是开关的电荷注入与时钟馈通,这些会在残差上叠加误差,进而影响整条链路的线性度。
我自己的经验是,MDAC 的运放建立时间是第一个要算清楚的参数,尤其在高速设计里,留给建立的时间可能不到半个时钟周期。如果运放是两级结构,还要考虑摆率限制。建立误差如果超过冗余范围,后面数字校正就救不回来了,这几乎是 Pipeline ADC 设计的头号杀手。
5.2 子 ADC 比较器:为什么 1.5 bit 级这么好做
子 ADC 在这个结构里其实是“最轻松”的部分,因为它不需要非常高的精度。以 1.5 bit/级为例,只需要两个比较器,而且阈值设在 ±Vref/4,失调容忍范围很大。这大大降低了比较器设计难度,不需要用大尺寸输入对管来追求极低失调,功耗和面积都能省下来。
比较器唯一要小心的是亚稳态问题。当输入电压恰好落在比较器阈值附近时,比较器可能要花很长时间才能做出决定,如果这个时间超过了本级时钟周期,输出会出现不确定状态,传给 MDAC 和数字校正逻辑就会产生错误的码。为了降低亚稳态概率,通常会在比较器后面加锁存器,并保证前级有足够的过驱电压。好在 1.5 bit 结构的冗余设计本身就给了比较器更多缓冲时间,这也是它称为经典结构的原因。
5.3 采样保持前端:孔径误差与输入带宽
Pipeline ADC 的第一级前端采样电路,决定了整个系统的孔径误差、输入带宽和信噪比上限。芯片内部如果有 SHA 或者 S/H 电路,外部只需要关注驱动能力和带宽匹配;如果是无前端 SHA 的 Pipeline ADC,那么第一级 MDAC 本身就兼任采样保持功能,很多高速 ADC 现在都这么干。
前端采样电路最常见的问题是输入带宽不足。数据手册给出的输入带宽参数常指 -3 dB 带宽,但实际应用时最好保留足够余量,否则高频信号的幅度会被压低,等效精度下降。另一个问题是输入端口的非线性电容,会随着输入电压变化而产生谐波失真,这对高阻抗输入源尤其明显。
实操提示:驱动 Pipeline ADC 时,务必在 ADC 输入端放一个 RC 低通滤波器,电阻和电容的选择要参考数据手册的推荐值。电容太大会拖慢信号建立,电阻太大会引入额外噪声和失真。这个 RC 网络不是摆设,它承担着吸收采样瞬间电荷冲击的任务。
5.4 参考电压与电源:稳定压倒一切
Pipeline ADC 的转换精度完全建立在参考电压的稳定度上,如果参考电压有纹波或者跌落,整条链路的转换曲线都会跟着偏移。很多高速 Pipeline ADC 都有内部参考缓冲器,但即便如此,外部参考引脚旁边的去耦电容也绝对不能省。一个常用的经验是参考引脚使用 1 μF 和 100 nF 两级去耦,并且尽量靠近芯片引脚放置。
电源领域同样不能掉以轻心。Pipeline ADC 的数字部分和模拟部分虽然有内部隔离,但高速翻转的数字信号会通过电源网络串到模拟端。实际 PCB 布局时,模拟电源和数字电源通常在芯片处单点连接,再用磁珠或者 LC 滤波分开。开关电源的开关频率如果落入 ADC 关注频带内,会给输出频谱带来类似“尖峰”的杂散。
6. 实际调试中踩过的坑
6.1 测试板上看到的“丢码”和“码宽异常”
调试 Pipeline ADC 时,最常看到的两个现象是固定输入电压下输出码跳动范围过大,或者扫正弦波时出现明显丢码。丢码的本质是部分数字码永远不会出现,通常对应 ADC 传输特性存在“台阶缺失”。这类问题如果出现在较冷门的样品上,第一反应应该去查 MDAC 的电压建立是否足够,运放是否进入了摆率限制,以及电容开关时序是否出现了交叠。
另外,当我用正弦波输入去观察 DNL 时,如果发现特定码宽的偏差周期性重复,而且周期正好是 2 的幂次,那大概率是某一级 MDAC 的增益配置有问题。这时候可以试着把测试输入频率降低再测一遍,如果现象消失了,说明问题跟建立时间有关;如果现象还在,说明问题出在直流静态精度上,两者排查方向完全不同。
6.2 比较器亚稳态导致“毛刺码”
有时候你在输出码流里能看到一个幅度很大的短时跳变,像一个尖刺,这在频谱上会表现为一种宽带杂散。出现这种情况,很多工程师习惯性先怀疑前端采样,但实际上比较器亚稳态才是主要原因。尤其是输入信号正好处于比较器翻转阈值附近时,比较器判决时间变长,输出码随机化,进而导致整体输出在一两个周期内剧烈偏移。
排查方法建议先用统计方式观察毛刺出现的概率,再结合输入信号的分布来判断。如果毛刺集中在某些特定输入电平附近,那几乎可以锁定是哪一级比较器的问题。如果是随机出现的,那要考虑亚稳态消除电路的后级逻辑是否设计得足够稳健,有些 ADC 的数字输出已经内部做过错误码修正,但仍有概率漏掉极窄的亚稳态事件。
6.3 驱动电路不给力:输入回踹与带宽塌陷
高速 Pipeline ADC 的输入端口不是纯电容,在采样时钟到来那一刻,它会向输入端“踹”回一个电流脉冲。如果前级驱动放大器输出阻抗太高,或者 RC 滤波电容太小,这个电流脉冲就会引起输入电压波动,进而造成采样值错误。这种现象在高阻探头、运放直连驱动时尤其明显。
我在实际测过的一款 250 MSPS 的 ADC 上,起初输出频谱总有两个奇怪的杂散峰,排查到最后发现是驱动运放没有足够驱动能力,在采样瞬间发生了短暂的振铃。后来换用低输出阻抗的运放并调整反馈网络后,杂散直接下降了 10 多个 dB。这个教训说明,Pipeline ADC 的性能不是芯片单独决定的,前端驱动链路同样决定了系统能发挥到几成。
6.4 时钟链路才是隐藏的“噪声源”
前面说过时钟抖动对 SNP 的影响,但时钟噪声不止体现在随机抖动上,时钟信号本身的谐波、串扰、电源耦合也会给 ADC 输出带来杂散。调试中如果发现输出频谱上有与输入频率不相关的固定频率杂散,先去检查时钟信号在 PCB 上的布线是否与数字信号线并行,再查时钟芯片的电源滤波。
特别要注意的是,时钟信号过缓的边沿转换速率会让噪声调制到 ADC 上。理想做法是让时钟信号具有足够陡的边沿,比如使用 PECL 或 LVPECL 电平标准,并在靠近 ADC 时钟引脚处端接匹配电阻。如果板上只有 CMOS 时钟源,尽量加一个时钟缓冲器来整形,这也是很多高速 ADC 评估板的标准做法。
7. 给刚开始接触 Pipeline ADC 的人几条实在建议
别一上来就死磕内部电路细节,先把整个信号链路画出来:从输入信号、驱动放大器、RC 滤波到 ADC、参考电压、时钟、电源、数字输出,每一个环节标注出它对性能的影响路径。这个全局图一旦建立起来,很多概念就会自然串起来。
然后就是动手。买一块现成的评估板,自己搭一套输入驱动和时钟,跑起 FFT 看频谱。不要只测数据手册上那些最优条件下的曲线,要故意给它加一些“麻烦”,比如调高输入频率、增加时钟抖动、换一个带噪电源,你会对 ADC 性能边界有更直观的理解。
最后,强烈建议花时间把“数字校正”和“冗余位”这两个概念彻底吃透。它们是 Pipeline ADC 与其他架构区分最明显的标识,也是理解为什么这种架构能在高速和高精度之间取得平衡的关键。你看完我上面那部分内容,脑子里应该已经有这样一张图:每一级都在把信号细节放大给下一级,每一级都允许犯一点小错,但整体的误差却在不断被吸收、被修正。这种架构设计背后的工程智慧,比记住一堆参数要有价值得多。