全差分放大器FDA驱动18位SAR ADC:从原理到实战调试全解析

全差分放大器FDA驱动18位SAR ADC:从原理到实战调试全解析 1. 项目背景ADC前面为什么要放一个全差分放大器写这篇的起因是我前阵子做的一块18位数据采集板卡在“单端转差分”这个环节折腾了很久。采集端用了一颗TI的18位SAR ADCADS8881输入是真正意义上的差分输入它有两个引脚IN和IN-最终转换结果是这两个引脚的电压差。而前端传感器出来的是很普通的单端信号参考地是系统地。如果直接把单端信号送去ADC会有一堆麻烦事单端信号的参考点和ADC的采样参考点之间存在地弹直接影响信噪比单端信号只能用到ADC一半的动态范围白白浪费分辨率SAR ADC采样保持电容的充放电毛刺会直接打回信号源造成串扰和恢复时间问题。当时我找了一圈最适合的解决方案就是一个芯片同时搞定“放大、转差分、电平搬移”这就是全差分放大器圈内常叫FDAFully Differential Amplifier。它的基本结构是一个输入端或差分输入对外加一个互补输出对OUT和OUT-围绕一个共模电压对称摆动。TI的THS4551是我认为这个位置非常合适的一颗输入电压噪声低到3.3nV/√Hz带宽150MHz2.7V到5.4V单电源供电轨到轨输出还有专门的VOCM共模控制引脚。最终做出来的完整信号链是传感器 → 前级增益 → THS4551单端转差分 增益 电平搬移 → 一阶RC滤波 → ADS8881。这篇东西适合谁看如果你在搞高精度数据采集、电化学检测、振动分析、医疗信号处理或者单纯想把一款精密SAR ADC驱动好这篇给出了从原理、计算到焊接、调试的完整过程。我会重点写清楚每一步的关键决策为什么这样取值、为什么要加这个电容、为什么FFT里出现了谐波、怎么排查。把这套思路搞明白换任何一颗FDA和ADC你都能自己把电路设计出来。1.1 全差分放大器到底比普通运放“全”在哪里一个普通运放大家都很熟两个输入、一个输出、一个反馈网络输入差和输出电压之间的关系由外围电阻决定。FDA表面上看只是多了个反相输出但内部结构其实多了一层环路。普通运放只有一个“差分环路”控制的是输出电压。FDA内部有两个环路一个是差分误差环路控制的是“OUT减OUT-”的差分电压另一个是共模环路控制的是“OUT加OUT-的平均值”让这个平均值精确等于VOCM引脚给的电压。这个区别带来的好处是巨大的。你不需要额外设计一个把输出偏置到VREF/2的电路也不需要再接一级反相器去生成反相信号。FDA自己就把输出对撑开了VOCM引脚设置的是两个输出的中轴差分输出围着这个中轴对称摆动。举个例子VOCM接2.5V链路增益为2的情况下输入1V时OUT3.5VOUT-1.5V差分电压正好是2V输入-1V时两个输出互换。这个特性对ADC特别友好因为大部分精密SAR ADC都要求输入共模电压在VREF/2附近而FDA天生就擅长干这个。1.2 为什么最终选THS4551备选方案当时看过不少THS4509这类高速FDA流量也很大。但真正把规格书翻完之后我发现对1MSPS这一档的精密SAR ADC来说真的不需要几百MHz带宽的放大器。带宽越高带进来的噪声带宽也越大简单的输出RC滤波都压不住反而得不偿失。THS4551更关键的是各项指标很均衡参数典型值我的理解供电范围2.7V ~ 5.4V5V单电源正好配5V基准小信号带宽150MHz对1MSPS采样绰绰有余压摆率220V/μs左右大信号满摆幅恢复没压力输入电压噪声3.3nV/√Hz在精密SAR链路里算很低输出类型轨到轨输出头尾不容易削波静态电流1.35mA左右低功耗便携设备也扛得住它的同门产品THS4561在噪声和部分精度指标上更强如果追求极限性能可以换那颗。我这次用THS4551看中的是它在“低功耗、中等带宽、低噪声”之间的平衡加上官方手册和评估板方案很多照着抄不容易翻车。开头先声明一点下面所有参数我都按当时手册里的典型值来写的现在如果要画板请务必去官网下载最新版数据手册核对芯片版本偶尔会更新。2. 全差分放大电路的核心设计增益电阻与共模电压2.1 单端转差分的基本电路拓扑标准的THS4551单端转差分电路长这样输入信号VIN经过RG_top接到放大器的同相输入端放大器的反相输入端经过RG_bottom接到GNDOUT-通过一个反馈电阻RF回到同相输入端OUT通过另一个RF回到反相输入端VOCM引脚接VREF/2。第一次画原理图的人看到这个结构容易懵为什么OUT-的反馈要接回同相输入端这不是正反馈吗其实仔细看OUT接到反相输入端是负反馈OUT-接到同相输入端同样是负反馈。两个环路都是负反馈FDA才能正常闭环工作。如果你在原理图里把两个反馈电阻接错位置电路直接就变成比较器了输出不会稳定在一个工作点上。还有一点很多人容易忽略单端转差分时两个输入端的“地”并不是真正的交流地。当RF2kΩ、RG1kΩ、VOCM2.5V时FDA两个输入节点的静态电压大约在0.83V附近不是0V。这个电压是由RG和RF的分压关系决定的意味着前级信号源必须能扛住一定的直流偏置电流。实际使用中前级最好是一个低输出阻抗的运放不要直接挂高阻传感器进去否则这个直流偏置会明显拉偏信号源工作点。2.2 增益公式推导与取值理想FDA在单端输入条件下差分输出电压的公式是VOUT,diff VOUT - VOUT- (RF / RG) × VIN注意这里不是2倍。很多人第一次接触FDA的时候会误算成增益2倍然后怎么对仿真都对不上。实际每个输出端的摆幅只有差分输出的一半OUT VOCM (RF / (2 × RG)) × VINOUT- VOCM - (RF / (2 × RG)) × VIN推导逻辑其实很简单假设两个输入端通过负反馈“虚拟短路”令VIN VIN- Vx分别对上支路和下支路列电流方程最后消掉Vx就能得到上面的结果。想验证的话把输入接一个直流电压用万用表量两个输出的对地电压再算一下差值10秒就能对上公式。我这次项目里传感器满幅输出是±1VADC基准VREF5V全差分输入范围是±VREF也就是±5V。为了让信号在ADC量程内留出余量我选择把满幅输入对应的差分输出设定为±2V这样RF/RG2。实际电阻取值是RG 1kΩRF 2kΩ为什么不用更小的电阻电阻越小热噪声越小是没错但反馈网络给FDA输入端带来的负载也更重功耗会上升。为什么不用更大的因为电阻热噪声按根号R增长2kΩ在常温下就有大约5.8nV/√Hz的热噪声密度已经和THS4551自身的电压噪声同一量级再往上加电阻明显吃亏。在ADC驱动这个场景里1kΩ到4kΩ是日常最常见的取值区间这个区间兼顾了噪声、功耗和稳定性。还有个大坑是电阻精度。两个RF之间、两个RG之间的失配会直接导致二次谐波失真因为差分输出对不对称以后偶次谐波没法在差分端对冲掉。对18位分辨率这个级别我强烈建议用0.1%精度、低温漂的薄膜电阻省下的调试时间远远超过多花的几毛钱。2.3 输入共模电压怎么验算前面公式里的Vx就是FDA输入端子的共模电压。完整表达式是Vx [RG / (RF RG)] × [VOCM (RF / (2 × RG)) × VIN]代入RF2kΩ、RG1kΩ、VOCM2.5V之后Vx (1/3) × (2.5 VIN)当VIN1V时Vx≈1.17V当VIN-1V时Vx≈0.5V。THS4551在5V单电源下的输入共模范围大约是从地以下一点到比正电源低1.2V左右0.5V到1.17V完全落在安全区内。这一步大家一定要自己算一遍。很多FDA的输入级并不是轨到轨输入输入共模超出范围后不会像削波那样立刻被看出来而是表现为ADC输出的FFT里出现谐波毛刺。你排查了半天以为运放带宽不够实际上只是输入共模超限了。把公式摆出来算一遍5分钟就能排除这个因素。2.4 VOCM引脚的接法VOCM是共模电压的控制口最佳做法是低阻抗驱动。我系统里本来就有2.5V基准于是用一个精密基准源REF5025直接输出加0.1μF旁路电容后接到VOCM引脚。如果你的系统里已经有一个准确的VREF/2电压可以直接用但必须保证源阻抗足够低。千万不要图省事直接用两颗10kΩ电阻从VREF分压出2.5V接VOCM哪怕你再并联一个1μF电容也不行。我在实测中遇到过VOCM引脚自身会吸走不小的电流如果驱动源阻抗高这个电流会在分压电阻上产生压降把共模电压拉偏最终表现是OUT和OUT-不再关于中点对称ADC输出出现直流失调。我第一版就是这么干的后来改成基准缓冲输出才恢复正常。这个坑很多人都会踩一次写出来希望大家直接绕开。3. ADC驱动实战输出滤波与接口设计3.1 输出端为什么要加RC滤波THS4551输出到ADC输入之间我加了一组串联电阻加并联电容的RC网络。这个网络承担三个作用抗混叠把带外噪声和干扰先压掉一部分减少折回到基带的杂散成分隔离采样毛刺SAR ADC在采样瞬间内部采样电容会瞬间从输入端抽取电荷没有这个电阻的话电荷会直接打在FDA输出级上造成很长的恢复时间提供一个本地储能电容采样瞬间的电压跌落被大幅度减小让ADC前端看起来更像一个稳定的电压源。电阻Rfilt我第一版用了20Ω电容Cfilt用了1nF这样一阶截止频率是fc 1 / (2 × π × Rfilt × Cfilt) 1 / (2 × π × 20 × 1nF) ≈ 7.96MHz这个频率对1MSPS采样率来说足够用同时也能把放大器的高频噪声削掉一些不影响20kHz以内的目标信号。这里有两个必须注意的点。第一Cfilt不能直接并在FDA输出脚上必须先串电阻。FDA这类宽带运放直接驱动大容性负载环路相位裕度会掉得很厉害容易振铃。串一个10到20Ω的电阻后放大器看到的负载被隔离了。第二Cfilt的材质很重要高精度场合尽量选C0G/NP0别用X7R。X7R的电容值会随直流偏置电压变化在18位分辨率面前这个电压系数带来的误差完全不可忽略。3.2 采样建立时间的定量估算针对ADS8881来说1MSPS采样率下的采集时间大约是296ns。信号必须在这个时间内稳定到1/2 LSB以内否则采样结果会出现误差。一阶系统建立到1/2 LSB所需的时间常数数量是t_settle ln(2^19) × τ ≈ 13.2τ如果Rfilt20Ω、Cfilt1nF那么τ20ns13.2τ算下来是264ns和296ns离得非常近。实际板子上还有布局寄生、芯片参数偏差余量就很不充裕。所以我后来把Rfilt降到了10Ωτ变成10ns建立时间只需要132ns一下就稳了。但Rfilt太小会削弱抗混叠作用所以要权衡。如果你做的是100kSPS级别的低速采集RC可以取得大很多把噪声压得更狠如果采样率上到2MSPS甚至更高Rfilt可能还要再往下压甚至要换成更复杂的二阶滤波结构。每个采样率都有对应的最优RC区间建议每次改参数都重新按这个公式算一遍不要无脑照抄参考设计。3.3 SAR ADC参考电压与输入范围的配合驱动ADC不只是把信号怼到引脚上就行参考电压同样是整个链路的一部分。ADS8881的VREF决定满幅范围VREF和驱动级的VOCM必须匹配。最常见的是VREF5V、VOCM2.5V如果VREF用3.0VVOCM就要改成1.5V否则信号共模位置和ADC的模拟输入范围对不上同样会出现失真或削波。还有一个容易忽视的细节VREF引脚在转换过程中会周期性地抽取电流属于动态负载。给VREF的旁路电容要足够大我实际用的是10μF电容紧贴VREF引脚再并联一个0.1μF陶瓷电容。如果用的是REF5050这类精密基准输出端同样要并上这一大一小两个电容基准拾取到噪声会直接反映到ADC转换结果上。3.4 电源和布局的几条硬规矩电源设计上我的顺序是“LDO → 大电容 → 小电容 → 芯片电源引脚”。模拟电源用了一颗低压差LDO输出5VTHS4551的电源引脚旁边先放10μF大电容再放0.1μF陶瓷电容两个都要尽量贴近芯片。FDA和ADC的电源建议分开走不要在一整块板子里共享一条细长走线否则数字部分的地弹很容易灌进模拟供电。PCB布局我给自己定了几条硬规矩反馈电阻RF和RG要贴着THS4551输入引脚放走线越短越好输出到RC到ADC的路径按“从源到漏”顺序一字排开不要来回绕VOCM引脚旁边放0.1μF电容并接地模拟区域下方铺完整地平面不在信号路径下走数字线ADC的数字输出线包括SDO、SCLK这些不要和模拟输入并行或贴太近。这些都是几十块板子调下来总结的笨办法看着朴素但每一条都在实战里救过我。4. 完整实操从BOM到上电测试4.1 元器件清单先给一份可以直接照着买的第一版BOM。所有电阻电容都是0603封装方便手工焊接也方便后续微调。序号元件推荐型号/规格数量备注1全差分放大器THS4551IDGKR1也可用RGTR封装2反馈电阻2kΩ 0.1% 06032低温漂薄膜电阻3增益电阻1kΩ 0.1% 06032同上4输出串阻10Ω 1% 06032可换成20Ω对比测试5输出滤波电容1nF C0G 06032不要用X7R6电源旁路电容0.1μF X7R 04024每个电源脚一个7电源大电容10μF X7R 08051近电源入口8VOCM旁路电容0.1μF X7R 04021紧贴VOCM脚92.5V基准REF50251用于VOCM10ADCADS8881118bit/1MSPS如果你手里没有ADS8881换成ADS8885400kSPS或者ADS91102MSPS也完全可以驱动思路一样。4.2 焊接与装配顺序焊接顺序我强烈建议按模块分步走先电源部分和基准再放大器再反馈网络最后是RC滤波和ADC。每焊完一个模块就上电测一次不要一次性全焊完再通电。一次性焊完再上电的痛经历过的人都懂出了问题根本不知道是电源问题、焊接问题还是原理错误排查效率极低。比如焊完电源和基准之后先不焊FDA直接上电测量各点电压5V、2.5V都在再焊下一级。这个方法看起来慢实际上帮你省掉大量定位问题的时间。焊完反馈网络后不接信号先量两个输出是不是都在2.5V附件。发现不对马上停下检查比全部焊完发现输出歪了再倒查要快得多。4.3 上电实测步骤上电后我的测试顺序是这样的输入端悬空或接地用万用表量OUT和OUT-理想情况下都是2.5V左右差分0V。如果两个输出差得明显先查VOCM引脚电压和两个反馈电阻有没有虚焊。信号发生器输出1kHz、峰峰值约1.6V的正弦波接入输入端。示波器两个探头分别看OUT和OUT-两者应该互为反相、围绕2.5V对称。示波器用A-B差分模式看ADC输入端的差分信号检查有没有振铃、台阶或者不对称。这时候看到明显交越失真多半是输入共模超限或者增益电阻不匹配。把差分输出接到ADS8881用SPI读取转换码数据导出到PC做FFT分析。在1kHz、满幅约80%的输入条件下我实际测到的信号链无杂散动态范围SFDR大约在90到100dB之间有效位数折合15.5到16.5bit。这个结果和THS4551手册展示的性能基本吻合说明链路里没有额外引入严重失真。想逼近18位的极限需要更窄的滤波带宽、更低噪声的基准甚至换THS4561这类更新器件那是另一个优化方向了。4.4 从“能跑”到“跑好”的几处微调第一版能正常出数之后我又做了几处小改动每一处都对应一个实际问题输出串阻从20Ω改成10Ω建立时间余量更足低频FFT没有明显恶化ADC的VREF引脚外加10μF大电容转换结果的码跳动明显减小VOCM引脚和地之间补0.1μF电容两个输出的对称性更好了输出滤波电容从X7R换成C0G高次谐波有一点改善频谱更干净。这些都是很小的改动不涉及原理变化但对最终效果的影响非常直接。5. 常见问题与排查实录5.1 问题速查表整理了一张排查表遇到问题先按表过一遍大部分能定位。现象可能原因排查/解决方法两个输出直流都不在VOCM附近VOCM引脚悬空或驱动阻抗高RF/RG虚焊先量VOCM引脚电压确认在2.5V补焊反馈电阻输出正弦波削波输出摆幅超过轨到轨范围VOCM设置不对减小增益或输入幅度确认VOCM等于VREF/2二次谐波明显反馈电阻失配源阻抗不平衡输入共模超限换0.1%电阻平衡源阻抗按公式验算输入共模输出有振铃或自激容性负载过大探头电容加载布局不紧凑加10Ω串联电阻换低电容探头缩短反馈走线ADC输出噪声偏大RC带宽太宽电源去耦不足VREF动态电阻太高降低RC截止频率加强电源去耦加大VREF电容直流失调随温度漂移电阻温漂、放大器失调温漂换低温漂电阻检查供电是否过热必要时软件校准5.2 我踩过的两个典型坑第一个坑是VOCM分压电阻压降前面提过。我最早图省事用两个10kΩ电阻从5V基准分压出2.5V直接接VOCM结果OUT和OUT-一个偏2.35V、一个偏2.65V。原因就是VOCM引脚的吸收电流在10kΩ阻抗上产生了不小的压降。换成基准缓冲器驱动后对称性立刻恢复。这个案例很典型看起来“电路没问题”但器件的非理想特性直接毁掉了共模精度。第二个坑是示波器探头造成的假振铃。有一次我在100mV/div档位看到输出高频振铃怀疑RC参数不对排查了一下午。后来偶然把探头换成10x再在探头尖端串了一个1kΩ电阻去测振铃消失了。示波器探头本身有十几pF的电容直接加载到高速输出脚上会造成严重的振铃误判。这也是为什么我不建议用面包板搭这类高频精密电路面包板的寄生电容和接触电阻太随意测出来的波形你根本不知道它来源于电路还是来源于面包板本身。5.3 判断链路是否健康的小技巧分享一个判断“问题出在模拟驱动级还是ADC”的技巧把ADC输入短接也就是让差分信号为0采集足够多的点然后算这些码值的标准差。这个值就是零输入噪声它代表整个链路的底噪水平。如果零输入噪声已经超过几个LSB说明链路噪声过大后面再怎么调增益也没用因为有效位数已经被底噪卡死了。反过来如果零输入噪声很低但加入信号后谐波很大那问题基本就在驱动级的线性度或者共模设置上。这个办法简单粗暴但定位效率极高。6. 一些调试心得这套THS4551全差分ADC驱动电路我前前后后做了三轮迭代。最大的体会是芯片本身的性能确实重要但整个链路最后能跑出多少有效位数更多取决于外围细节——电阻精度、VOCM驱动方式、RC取值、布局寄生每一个环节都在“吃掉”LSB。芯片选对了只是起点把反馈网络和界面电路做实才是关键。如果你想复刻建议第一版严格按文中的参数搭先把链路跑通再根据自己信号链的需求去调整增益和RC。换不同的ADC只需要重新计算RC截止频率和VOCM电压整体设计思路完全通用。这个板子后续也能扩展成精密数据采集前端或者加一级多通道选通做成小型采集模块。每次改版记得把测试数据和修改记录留下来这些数据在你下一次设计时比什么参考设计都有用。