ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

时间交织ADC(TI-ADC)实战解析:从失配分析到校准与板级设计

时间交织ADC(TI-ADC)实战解析:从失配分析到校准与板级设计 做高速采集系统绕不开一个现实单颗ADC的采样率有天花板。前面催着要更宽的带宽后面功耗和成本死死拽着你盯着手册里的最高采样率发愁的时候会发现一批器件描述里都写着“Time-Interleaved Architecture”——时间交织模数转换器英文直接叫TI-ADC。这个东西的思路很直白一路ADC采不过来就安排多路ADC分工轮流对同一路模拟信号下口每路只负责一段极短的时间窗口最后在数字域把碎片拼成完整数据流等效采样率成倍往上翻。超高速示波器前端、宽带接收机、5G毫米波基站和雷达系统里几乎都有TI-ADC的影子。这篇文章我不准备念手册而是把这几年调TI-ADC的实战经验、失配分析、校准方法和板级坑点一起写清楚适合硬件工程师、FPGA/嵌入式工程师和准备上交织方案的团队参考。1. 时间交织架构用并行换速率的底层逻辑1.1 单通道ADC的速率天花板在哪里很多人一开始没想明白一个事ADC的采样率为什么不能无限往上提表面看是“数字时钟给多快就能采多快”但模拟前端不同意。一个采样周期内采样保持电路必须完成开关导通、电容充到目标电压、比较器或者运放建立到足够精度这一串动作加起来的时间是硬约束。拿SAR ADC举例12位精度需要逐次逼近至少12个比较周期每个周期里DAC电容阵列要建立到1/2^12的精度位权越高对建立时间要求越狠。想把采样率从1GS/s拉到2GS/s等于把所有建立时间砍半功耗跟着翻倍比较器噪声和失调要求也指数级变严。流水线ADC稍微好一点每一级只做低分辨率粗量化级间余量放大后再交给下一级它用面积和流水延迟换吞吐。但级间放大器的带宽、压摆率和建立精度一样卡死在工艺上。CMOS工艺的截止频率有限到了几十GHz的ft以后想再做高精度放大非常吃力。折叠内插型靠并行比较器阵列缩短比较时间可是比较器数量随分辨率指数增长功耗和面积先炸为敬。单通道ADC就这么被摁在“精度、速度、功耗”三个角里动弹不得。这时候时间交织就来了。它不跟单通道硬刚而是用M路ADC并行分摊速率压力每路子ADC的时钟放慢到原来的1/M量化精度还能保持在原有水平但整体吞吐率直接乘以M。用大白话说好比柜台一个人办业务慢就开M个窗口轮流接客人均速度不变总吞吐量翻倍。代价是窗口之间得严格排好班谁早谁晚一点业务就会乱套。1.2 交织系统是怎么协同工作的典型M通道TI-ADC由几块组成输入缓冲/驱动、多相时钟发生器、M路子ADC、数字组合逻辑和校准引擎。输入信号同时送给所有子ADC但每路的采样开关只在自己的时间窗口内闭合一次。设等效采样率为Fs_eq子ADC采样率为Fs_sub Fs_eq / M那么第k路子ADC的第n次采样发生在 t (nM k) × TeqTeq是等效采样周期。以4路交织、等效4GS/s为例每路子ADC只跑1GS/s它们轮流在0、250ps、500ps、750ps处抓点周而复始。时钟生成是最先要较真的地方。M相时钟必须严格等间隔相位差是360°/M任何一路偏了后面全乱。实际系统里常用多相锁相环、延迟锁定环或者高速时钟分配芯片来生成差分信号走等长线缓冲器用同型号同工艺批次尽量把通道间的传播延迟差压到最小。数据重组也有讲究数字端要按照时间顺序把各路数据交错拼接即先通道0的当前点、再通道1的当前点直到通道M-1然后回到通道0的下一个点。这个顺序如果在DMA、FIFO里被配错了频谱会直接糊掉。子ADC的结构选择也影响系统表现。SAR中速高精度、功耗低适合做子通道流水线速度快、分辨率高但延时大折叠内插速度极限高但有效位数做不高。实际产品里几GS/s以上的TI-ADC子通道以SAR和流水线居多。顺便提一句很多人玩STM32时遇到的多ADC交替采样本质上就是个入门级时间交织只不过MCU把时钟分配和拼接逻辑在内部做好了让你只配置寄存器但它同样存在通道间偏置和增益不一致的问题原理和高端芯片一模一样。1.3 交织后系统指标依然由最弱通道决定有一个误得很深的观点既然M路并行性能是不是也提升M倍不是。交织只提升采样率不提升分辨率也不能摊薄噪声。最终系统的SFDR、SNR、ENOB是由“最差的那一路”和“各路之间的差异”共同决定的。理想情况下M路特性完全一致交织效果等于单通道性能平移一旦各路偏置、增益、采样时刻有个体差异这些差异就会在频谱上产生很多本不存在的杂散直接把动态范围拉下来。这就像四个人轮流去同一个水龙头接水水压本身是稳定的但四个人手里拿的杯子大小不一样、接水时刻有偏差最后倒进大桶的水量就会忽大忽小桶里整体水位线也会有周期性的纹波。TI-ADC的设计核心从架构选型那天起就注定是“一致性工程”。你后面看到的四种失配、各种校准算法、PCB布线规则全都是在跟“一致性”这三个字较劲。2. 四种失配与它们的“犯罪现场”2.1 偏置失配固定在频谱上的钉子偏置失配指各路ADC输出零点的差异来源主要是比较器失调电压不同、采样开关的电荷注入差异、参考驱动到各路路径上的电压降不同。它表现出来的样子很固定不管输入信号是什么频率和幅度输出频谱里都会在 k×Fs_sub 的位置出现杂散也就是在0Hz直流、Fs_sub、2Fs_sub这些点上冒出来。为什么偏偏在这些位置因为每路子ADC的偏置误差是以Fs_sub为周期重复出现的你可以把它看作对理想输出序列做了一次以Fs_sub为周期的乘性扰动频域里自然就在Fs_sub的整数倍处产生冲击。值得注意的是这个误差是绝对值与信号大小无关。假设满量程正弦信号有效值是0.35Vfs某通道偏置误差是0.5%Vfs杂散相对载波大约在-37dBc如果输入信号降到-20dBFS载波有效值缩了10倍同一个杂散还是那个绝对电平相对比就变成约-17dBc。这意味着什么小信号场景下偏置失配特别伤人。你现在面对一个-30dBFS的微弱信号理论上可以用高分辨率ADC看得清清楚楚结果偏置杂散就在信号旁边杵着动态范围直接废了一半。所以任何TI-ADC系统第一步几乎都是校偏置这是最便宜也最有效的一刀。2.2 增益失配放大系数不一样增益失配就是各路ADC的“放大倍数”不一致。理想情况各路对同一电压应该输出同一码值实际中采样电容容值偏差、前端运放增益偏差、参考电压差异都会让某一路偏大或偏小几百分之一。频谱上增益失配的杂散出现在 ±Fin k×Fs_sub 的位置也就是输入信号关于Fs_sub整数倍频率的镜像位置。它和偏置失配最大的区别在于杂散大小与输入信号幅度成正比。信号大杂散大信号小杂散跟着小相对信噪比基本不变。占个经验数据单通道增益误差1%镜像杂散大概在-46dBc。如果多路随机失配叠加最差可能是好几个通道的误差在同一个镜像位置同相相加实际测试会比单通道估算再差几个dB。常见系统要求SFDR做到70dBc以上那增益误差就得控制在0.03%以内这不是裸芯片天然能保证的必须靠校准或者版图上的精心匹配才能做到。2.3 定时失配高频下最致命的幽灵定时失配是所有失配里最“阴”的一个。它指各路采样时钟的实际采样时刻偏离理想位置哪怕只偏几皮秒在高频输入下也会造成灾难性后果。机理是采样值误差等于信号变化斜率乘以时间误差。正弦信号某时刻的斜率是 2π×Fin×A×cos(...)斜率随频率线性变大所以同样的时间误差输入频率越高造成的电压误差越大。单通道定时失配Δt产生的镜像杂散相对载波大约可以用 20×log10(π×Fin×Δt) 来估算。代入一个很常见的场景Fin1GHzΔt1ps算下来约-50dBc。注意这还只是单个通道偏了1皮秒。很多高性能系统要求SFDR超过70dBc换算一下1GHz信号下定时误差就必须小于大约0.1ps。这个量级已经不是普通的PCB走线精度能控制的了必须靠片上延迟调节、后台校准和精心设计的时钟树共同完成。定时失配的另个“阴”处是它和增益失配的杂散位置完全重合都在输入信号的镜像位置。区分它们最简单的办法是扫频保持输入幅度不变改变输入频率如果镜像杂散以每十倍频20dB的速度上升那是定时失配如果杂散电平纹丝不动那是增益失配。这个特征我后面调试篇还会细说。2.4 带宽失配被低估的第四种失配很多人聊TI-ADC只谈偏置、增益、定时带宽失配是四兄弟里最晚被想起来的一个。它指的是各路采样前端等效RC带宽不一样典型来源是采样开关导通电阻Ron不一致、采样电容容值有差异、驱动源到各路引脚的阻抗不同。这些失配在低频时几乎没有感觉频率一高就出问题不同带宽的RC网络对同一输入信号产生不同的衰减和相移等效成随频率变化的增益失配加定时失配而且随频率不是线性增长是那种越到高频越失控的涨法。最麻烦的是带宽失配很难用普通的恒定量来补偿。你按某个频率算出来的增益误差拿到另一个频率就不对了你按某个频率校好的延迟拿到另一个频点又偏了。工程上最有效的办法是“釜底抽薪”尽量加宽前端采样网络带宽让它远高于信号最高频率。设计上建议前端-3dB带宽至少做到最高信号频率的3到5倍这样同样的RC元件偏差折算到工作频带内的增益和相位误差就被摊薄了。如果有条件版图布局让各路采样开关到输入焊盘的走线、过孔、ESD器件都保持对称比任何后补偿都省心。3. 校准技术从模拟补偿到数字救火3.1 前台校准上电时打好地基前台校准是最传统也最稳妥的路子。系统上电或者初始化、还没跑正式数据的时候往ADC输入端灌一个已知的校准信号比如精密直流或单音正弦然后逐路测量输出反推出各路偏置、增益、定时的差值把这些值存起来等正常工作时再用。实现上偏置校准最简单输入接地或接精密参考量各路输出的均值差减掉就行。增益校准稍微复杂一点灌一个已知幅度的正弦量各路输出的幅度或方差算比例系数在数字域归一化。定时校准要费点劲常用方法是灌一个频率已知的正弦利用各路过零点的位置或者相邻通道采到的样点差来反推时间误差再把各路时钟延迟线调准。前台校准的优点很实在精度高因为可以长时间平均噪声逻辑简单不用搞复杂的自适应算法。缺点也明显要中断数据流、占一段专门时间而且校完一次后就假设系统保持不变。实际上温度一变、电源电压一抖、板子老化一点失配就会重新冒出来。所以前台校准一般用来定“粗基准”后台再跟着修正漂移。3.2 后台校准在线监测与盲校准后台校准就是为了解决“前台校准跟不上漂移”这个痛点来的。它不打断数据流在ADC正常工作的时候持续监测并修正各路失配。基本原理是拿各路输出的统计特性做比较无失配时各路输出的均值应该一致各路输出的方差应该一致各路相邻通道间的差分值应该趋近于零。具体到偏置不断比较各路均值把差值送入环路滤波和校正加法器增益则比较各路方差或者能量。定时失配就微妙了一个常见思路是利用相邻通道差分理想情况下相邻两个交织通道采到的是连续时间上紧挨着的点对于带限信号它们之间应该平滑过渡如果有定时误差相邻通道差值就会携带与信号斜率相关的分量通过LMS算法对这个差值做最小化就能迭代出每路的延迟修正量。盲校准更进一步不依赖专用的校准信号假设输入信号是带限的或者具备某些统计特性直接在频域观察杂散能量用梯度下降法把杂散压到最低。这类算法比较考验数字资源通常要FPGA或ASIC里跑但效果也确实好。我做过的系统里后台校准跑几百毫秒收敛后SFDR从50dBc不到能回到85dBc以上对温度和长期漂移也有不错的适应能力。3.3 数字补偿实现与工程权衡数字域的补偿操作其实不复杂。偏置在校正加法器里减一个常数增益在校正乘法器里乘一个比例系数麻烦的是定时。一个常用办法是分数延迟滤波器用Farrow结构做任意小数延迟的重采样把各路数据重新对齐到理想采样格点上。这个结构的好处是系数连续可调更新延迟参数不用重新加载整个滤波器适合后台自适应实时调。工程上我建议模拟和数字分开干粗活和细活采样时钟网络里加电压/电流控制的延迟单元由校准引擎粗调几皮秒范围内的偏差数字端再补一个分数延迟滤波器做细调专门对付那零点几皮秒的残余误差。纯模拟方案难做准纯数字方案在输入频率接近奈奎斯特时会很吃力二者结合是个稳妥的工程折中。做数字补偿时还要注意数据对齐。插值和重采样会引入流水延迟尤其是Farrow滤波器多路补偿路径延迟必须一致否则刚校好定时又引入新的数据错位。我习惯把各路都统一对齐到最慢的那一路哪怕增加几个时钟周期的固定延迟也比各路延迟不一致导致毛刺强。这个细节常规文档不会写但实际系统里跑起来数据边界偶发错一拍的故障排查能让你怀疑人生。4. 板级设计时钟、电源与PCB布局的硬约束4.1 低抖动时钟树设计时钟抖动对任何ADC都是毒药对TI-ADC尤甚。抖动换算到信噪比有一个很常用的公式SNR_jitter -20×log10(2π × Fin × t_jitter_rms)。注意这个公式里Fin是输入信号频率不是采样率所以同样30飞秒的抖动采100MHz信号影响不大采3GHz信号能把SNR摁到50dB多。举个例子1GHz信号想达到70dB的信噪比抖动要控制在50飞秒以内这已经是相当苛刻的量级。TI-ADC的时钟树还有一个额外要求各路相位的等间隔性。时钟分配芯片、缓冲器的传播延迟会随温度和电源电压变化如果某一路延迟比其他路多了1ps高频下前面算过的定时失配杂散就会立刻出现在频谱里。所以时钟树设计的几个老规矩一个都不能省差分走线、阻抗连续、缓冲器同型号同批次、电源单独滤波、走线包地隔离尽量让各路看到完全相同的电气环境。另外提一个很容易被忽略的点数字总线和开关电源的噪声会通过基板耦合到时钟线上引起周期性的相位扰动。这种扰动看似不大但在TI-ADC里会和交织结构相互作用产生额外的杂散。布局时把时钟走线当成模拟信号对待离一切数字接口远远的必要时候在引脚附近加一个小电阻吸收反射实测下来比加一堆滤波电容管用。4.2 电源与参考电压的“定尺子”问题参考电压之于ADC就像尺子之于测量。尺子本身刻度在晃量什么都白搭。参考电压上的低频纹波会直接调制量化结果高频噪声则通过比较器和采样开关的耦合路径进入信号链。TI-ADC里更麻烦的是各路子ADC可能共享一个参考源某一路采样的瞬态电流冲击会在参考线上产生毛刺再串到另一路去。这个“通道间串扰”体现到频谱上就跟失配杂散长得一模一样。所以参考电压的网络要当成一个低阻抗、低噪声、高带宽的稳压系统来设计。大电容是必须的我习惯在参考引脚根部并一组0.1uF和10uF的MLCC靠近引脚放用低ESL封装再往前放一个低噪声LDO或者精密基准源带宽要足够覆盖ADC采样引起的电流脉冲频段。采样电容充放电是高频的突发放电光靠低噪声基准芯片扛不住必须用储能电容把瞬态电流就地消化。电源去耦同样不能省。模拟电源和数字电源通常用磁珠或LC分隔但地平面一定不要切开切地等于把回流路径拉远反而引入更多噪声。电容要选合适容值和封装我给每路ADC的模拟电源都放了至少0.1uF10uF的组合并且尽量靠近电源引脚。实际测试中把参考和电源噪声压干净之后底噪能改善好几个dB这个投入很划算。4.3 PCB布局避坑三个要点第一时钟通路布局。时钟源、时钟分配器到各路ADC的走线要短、直、等长差分阻抗控制在100Ω左右周围包地不要和高速数字总线平行走线。时钟缓冲器的电源脚要单独滤波最好从主电源分支处再拉一条LC路径避免数字突发电流污染时钟相位。第二模拟输入前端对称布局。各路ADC的模拟输入走线长度保持一致过孔数量保持一致参考地平面连续驱动运放到每路的串阻、匹配网络、滤波电容布局完全一致。采样保持引脚附近的去耦电容要贴芯片放置减少寄生电感。如果输入级有ESD/TVS保护串接的限流电阻也会和采样电容组成RC各路电阻容差要选小一点的精度不然又变成带宽失配。第三电源与地平面统一完整。模拟电源、数字电源可以分区供电但地平面尽量完整不要为了“隔离”把地切开。TI-ADC各路共享同一个地参考地平面阻抗不一致会造成各通道参考点电压不一样等效成偏置失配。去耦电容的地过孔要就近打保证电流环路面积最小。实测教训有一次把地平面在ADC下方切了一道口子“隔离”效果没看到SFDR反而掉了快10dB切开就是麻烦。5. 调试实录问题排查与验证方法5.1 三步定位失配类型拿到一块TI-ADC板子别急着跑后台校准先把失配类型诊断清楚。我的方法是三步走。第一步灌一个干净的单音正弦频率选在Fs_eq的1/4到1/3附近幅度留0.5到1dB的满量程余量做相干采样并进行加窗FFT。第二步看频谱上的杂散位置直流和Fs_sub整数倍处有杂散大概率是偏置失配输入信号关于Fs_sub整数倍的镜像位置有杂散优先怀疑增益或定时失配。第三步改变输入频率或幅度再观察杂散变化。判断规则整理成表就非常直观失配类型杂散位置随输入幅度变化随输入频率变化典型来源偏置失配0Hz、k×Fs_sub处杂散绝对值不变不变比较器失调、电荷注入、参考走线压降增益失配±Fin k×Fs_sub镜像处成正比基本不变电容容差、运放增益差、参考差异定时失配±Fin k×Fs_sub镜像处成正比每十倍频20dB时钟树偏差、采样开关阈值差带宽失配±Fin k×Fs_sub镜像处成正比非线性加速上升采样开关Ron、Cs、前端阻抗不一致这里面最能快速定位的就是“扫频法”增益失配杂散是一条平线定时失配杂散是每十倍频20dB的斜线带宽失配会更陡而且弯掉。看到曲线形状心里基本就有数了。5.2 实测中遇到的高频坑第一个坑是信号源和时钟源自身不干净。曾经调一块板子怎么校都有杂散后来把输入信号换成经过腔体滤波器的高纯信号杂散立刻降了十几dB。TI-ADC性能越高对测试源的要求越苛刻信号源的相位噪声和杂散会原样出现在ADC输出频谱里然后你还误以为是系统的问题。时钟源同理采样时钟不干净全频段底噪都会被抬起来。第二个坑是数据重组顺序错乱。用DMA读取交织数据时最经典的错误是把通道数据按块连续读取而不是按时间交错读取。现象是频谱乱七八糟怎么校准都没用。快速排查办法输入一个稳定的直流电平理想情况下各路输出应该读到一个相同码值如果观察到M个码值周期性跳变说明数据顺序错位了。这时候先从DMA配置里把数据组织方式捋对再谈其他性能。第三个坑是温漂导致的杂散回升。前台校准完测着挺好跑十分钟后杂散慢慢长大。这种一般是时钟延迟缓冲器的延迟随温度漂移或者参考电压随温度偏移各路漂移速度还不一样。解决思路就是上后台校准让它持续跟踪修正或者把校准周期缩短周期性重复执行。时序同步的嵌入式系统里还要当心校准引擎启动时对数据通路的影响最好在数据流空闲窗口内更新系数避免中途换系数产生毛刺。第四个坑是数据漂移问题。很多做普通单片机ADC的同学也会遇到同样输入电压采集值过几分钟就慢慢偏了。排查顺序最好也按系统级来先把时钟和输入信号冻结看输出是否漂移再用独立精密参考灌给ADC排除前端运放和参考源的嫌疑最后看板子热源方向和风吹位置。TI-ADC场景还要多查一路通道间差分漂移如果校准过的SFDR随温度变差很可能是某一路的采样保持电路对温度更敏感。5.3 仿真与动态参数验证验证TI-ADC性能先要有一个标尺。理想N位ADC的量化噪声均方根值是 LSB/√12对应理想信噪比 SNR 6.02N 1.76 dB。12位大约74dB14位大约86dB你的实测值不管多好都不会超过这个天花板所有杂散、失真、噪底都从天而降压在这个上限之下。仿真阶段可以给ADC灌一个理想斜坡信号统计输出码出现的次数。理想斜坡下每个码出现次数应该一样多出现次数偏多或偏少的地方对应DNL误差累积起来就是INL。对TI-ADC来说斜坡仿真还有一个附带好处如果各路增益不一致你会看到输出曲线分段斜率不同一眼就能定性地看出增益失配的大小。这个办法做前端芯片验证或者FPGA模型验证都实用不用先写复杂的校准算法就能摸到底数。动态参数测试时SNR、SNDR、SFDR、ENOB、THD是标配。FFT要做相干采样或者至少保证采样时长足够并且加合适的窗汉宁、布莱克曼-哈里斯之类的否则频谱泄漏会把小杂散淹没或伪造出伪峰。再提醒一句测试输入幅度一定别顶到满量程削波后的一切指标都失真而且削波产生的谐波包络会掩盖真正的失配杂散。我自己习惯先做满量程-1dB的测量再测几个低幅度点比较不同幅度下的SFDR变化这一手对区分增益失配和偏置失配特别有效。最后再分享一个调试时的体感别急着把算法链路一次全搭完。先校偏置确认杂散掉下去再校增益确认镜像杂散按预期变化最后再校定时和带宽。每一步都设一个中间检查点用频谱仪和FFT看着效果往前走。我踩过最大的坑就是同时把四种校准全部打开结果某个环节出了问题满屏杂散根本分不清是谁的锅。按部就班来每一步都吃到可见的收益系统跑通了以后再谈优化收敛速度这条路走得最稳。
返回列表