很多人看到“AFD芯片设计”这个标题,第一反应是问“AFD到底是个什么东西”。说实话,AFD并不是某个通用芯片类型的标准缩写,更像是一个项目内部的代号。在我这边,AFD全称是 Advanced Front-end Driver,也就是“高级前端驱动芯片”。这是一颗数模混合信号芯片,把模拟信号调理、ADC 采样、数字滤波、驱动输出集成在同一个裸片上。干这行的朋友都知道,这种项目最磨人的地方不是某一个模块有多难,而是模拟、数字、版图、测试几个团队要在同一颗芯片上互相妥协。这篇文章就把这个过程的完整思路和实操记录分享出来,希望能给正在做类似混合信号项目的同学一些参考。
AFD芯片的典型应用场景是传感器信号采集和工业现场驱动,比如压力变送器、电机驱动前端、多路数据采集系统。它的难点在于:输入端要处理几十毫伏级别的小信号,输出端却要驱动几伏到几十伏的负载,中间还得保证信号链路的噪声和失真足够低。这就决定了它的架构必须精心设计,不能像纯数字芯片那样堆逻辑,也不能像纯模拟芯片那样靠人工调优,而是要走一条混合信号设计的中间路线。
1. 项目全貌与设计目标拆解
1.1 为什么叫 AFD:代号背后的需求边界
先解释一下命名。我通常不喜欢用“某某芯片整体解决方案”这种模糊的说法,所以在项目启动时,就给这颗芯片定义了一个非常具体的能力边界:输入端兼容差分和单端信号,内置可编程增益放大器,后面跟一个16位逐次逼近型ADC,再做数字滤波和线性化补偿,最后通过一个可配置的电流/电压输出级驱动外部负载。
这颗芯片为什么叫“前端驱动”?因为它的应用链路很典型:传感器产生微弱信号,经过调理放大,转换为数字量,处理后再变回模拟量去驱动执行器。AFD 就是这条链路的“前端控制和驱动核心”。
项目立项时的关键规格如下表所示。这些参数不是随手填的,是跟系统组讨论了一周才定下来的,每一条都对应实际现场需求。
| 参数项 | 目标值 | 说明 |
|---|---|---|
| 模拟输入通道 | 2路差分/4路单端 | 兼容多种传感器输出 |
| 可编程增益范围 | 1 ~ 128倍 | 覆盖±10mV到±10V量级输入 |
| ADC分辨率 | 16位,无失码 | 主要指标,不许妥协 |
| 采样率 | 最高250kSPS | 对应输入信号带宽约20kHz |
| 输出驱动方式 | 电压0~5V / 电流4~20mA | 工业变送器标准输出 |
| 工作电压 | 模拟3.3V,数字1.8V | 低功耗应用 |
| 工作温度 | -40℃ ~ 125℃ | 工业级 |
| ESD等级 | HBM 4kV | 现场插拔可靠性 |
这些规格放在一起,就意味着芯片内部必须包含低噪声模拟前端、高精度ADC、数字信号处理逻辑、DAC输出级、电源管理、时钟管理、通信接口等模块。更关键的是,这是一颗数模混合SoC,所以不能只做数字设计,也不能只做模拟设计,而是从系统层面统一规划。
1.2 从系统预算反推模块指标
芯片设计的第一步不是画框图,而是做预算。很多新手上来就急着写RTL,或者画电路图,结果后面做集成时发现某个模块指标不达标,整个设计推倒重来。正确的做法是先把整体链路的噪声、增益、线性度、时钟误差等指标分账到每个模块。
拿噪声来举例。假设系统要求的输入端等效噪声在250kSPS采样率下不超过10μVrms(对应增益为1时)。信号链把噪声拆成三份:PGA贡献40%,ADC量化噪声贡献30%,电源和基准贡献30%。
PGA部分如果用128倍增益档位,那么折算到输入端的等效噪声预算大约4μVrms。此时就需要选择合适噪声密度的运放和电阻网络。比如运放输入电压噪声密度如果做到10nV/√Hz,带宽按1MHz算,等效输入噪声大约是10nV/√Hz × √1MHz = 10μVrms,这显然超了。必须把带宽限制在100kHz左右,或者换用更低噪声的运放结构。
ADC部分,16位、5V参考电压的LSB大小为76μV。想要量化噪声不拖后腿,有效位数至少要做到15位以上,也就是量化噪声功率比信号低90dB以上。这个目标靠逐次逼近型ADC的标准电容阵列是可以实现的,但是对比较器的失调电压、电容失配、开关时钟馈通都有很高要求。
电源和基准部分,LDO输出噪声要控制在10μVrms以下,基准源低频噪声要低于20μVpp。为了达到这一点,我们给基准源单独做了片内滤波电容,同时把LDO的带宽压得很低,避免高频噪声耦合进信号通路。
这种预算分析不会出现在最终规格书里,但它决定了每一个子电路的设计方向。没有这个步骤,后面做出来的芯片很可能“每个模块单独看都没问题,级联后指标全崩”。
2. 架构设计与核心技术选型
2.1 模拟前端:可编程增益放大器与抗混叠滤波
AFD芯片输入级最核心的模块是PGA。我们选了仪表放大器结构的PGA,因为输入端要支持差分信号,而且要抑制共模干扰。这个结构由三个运放组成,第一级提供差分增益,第二级把双端信号转成单端,增益通过片内电阻网络切换。
不过仪表放大器有个常见坑,就是电阻失配会直接转化为共模抑制比下降。按照需求,共模抑制比在60Hz工频干扰下要大于100dB。我们通过对电阻网络做中心对称布局,并把关键电阻用单位电阻串联/并联组合实现,失配控制在0.1%以内。实测下来,单位电阻的匹配度比直接画不同尺寸的电阻好很多,这也是模拟版图里最基础但也最容易被忽略的一点。
PGA后面必须加抗混叠滤波。很多人觉得16位ADC配一个简单的一阶RC滤波就够了,但如果采样率是250kSPS,目标信号带宽是20kHz,那么混叠频带内的噪声必须被滤除到低于量化噪声,否则动态范围直接掉。
我们用的是二阶有源RC滤波器,截止频率25kHz,带外滚降40dB/十倍频。这里有个设计细节:滤波器的运放带宽不能太高,太高会把高频噪声引入后续电路;也不能太低,太低会影响通带平坦度。最后把运放的单位增益带宽控制在10MHz左右,静态电流在几十微安级别,实测通带纹波小于0.1dB。
2.2 数字信号处理与接口
数字部分看起来没有模拟部分那么“玄学”,但在混合信号芯片里,数字模块的任务往往是跟时序和功耗作斗争。AFD的数字部分主要包含四块:数字抽取滤波器、自校准逻辑、通信接口、配置寄存器。
ADC出来的是16位、250kSPS的原始数据,先经过一个可编程抽取滤波器,降低数据率、提高有效位数。这里我们用的是级联积分梳状滤波器加FIR补偿滤波器的经典组合。CIC滤波器结构简单,不需要乘法器,适合高速降采样,但通带会有跌落。FIR补偿滤波器用来拉平通带。两级滤波器加起来的面积很小,功耗也低,非常适合这类对成本敏感的芯片。
通信接口是标准SPI从机接口。这里有一个实际经验:混合信号芯片的SPI时序一定要考虑模拟前端正在采样时产生数字噪声干扰的情况。所以我们在SPI模块里加了时钟同步逻辑,确保数字IO翻转尽量避开ADC采样瞬间。这个毛病一开始没注意,后来在系统联调时发现采样值偶发跳动,查了很久才定位到是SPI时钟边沿和ADC采样点重合。
自校准逻辑算是AFD芯片的一个亮点。芯片上电后自动做PGA失调校准和ADC增益校准。校准原理不复杂:输入端短接,采集若干次取平均得到失调;输入一个内部基准电压测增益误差,然后修正结果。真正复杂的是校准状态机和模拟开关的配合,不能让校准电压串到外部信号通路。我们的做法是将校准过程放到专门的采样阶段,并用独立的控制信号驱动开关,保证外部通路高阻隔离。
2.3 工艺选型与封装考虑
选工艺这件事,项目组讨论了很久。模拟和数字混合设计,最怕的就是工艺选项顾此失彼。我们最终选了一条成熟的双栅氧CMOS工艺,核心器件1.8V,IO器件3.3V,部分输出驱动管用了5V的LDMOS选项。之所以不选更先进的工艺,是因为这颗芯片并不需要极高的数字逻辑密度,而模拟性能、漏电控制和成本才是关键。
工艺选型直接决定了版图的画法。比如PGA里面的运放输入对管,必须用面积较大的器件来降低1/f噪声和失配;而数字逻辑部分,标准单元库直接生成,功耗和时序由后端工具优化。混合芯片的设计流程必须从一开始就统一管理电源域,模拟用3.3V,数字核心用1.8V,IO和输出驱动用5V。三个电源域之间的电平转换电路要专门做隔离,不能直接让数字信号跳进模拟区。
封装选择了LQFP48。有人问为什么不用QFN,体积更小。原因是芯片引脚不多,但模拟信号脚和电源脚占了大部分,LQFP的引脚间距更大,焊接更可靠。而且后续做PCB调试时,LQFP方便手动飞线。封装选项消耗了一些面积,但换来的是板级调试的便利,这一点在项目进度紧的时候尤其值得。
3. 关键实现细节与实操要点
3.1 RTL编码与验证环境搭建
数字部分从规格到RTL,我用的是标准的设计流程,但有几个特殊点:第一,RTL模型里必须包含模拟模块的行为级模型,比如ADC的传输特性、PGA的增益档位切换延迟、DAC的建立时间;第二,验证环境必须同时支持纯数字仿真和混合仿真。
纯数字仿真跑功能覆盖率,速度很快。我们主要验证SPI寄存器读写、抽取滤波器时序、校准状态机跳转。混合仿真则把模拟模块的SPICE模型或者行为模型挂进来,跑整个信号链的仿真。这一步虽然慢,但能提前发现数字控制信号和模拟响应的时序问题。
验证平台用SystemVerilog加UVM。说实话,UVM对于这种规模的数字逻辑有点“杀鸡用牛刀”,但它的好处是测试用例组织清晰,回归方便。我在UVM环境里搭了一个简单的寄存器模型,用ralgen生成寄存器RAL模型,这样配置类的测试可以不重复写前门访问代码。
有一个细节值得说一下:模拟模块的行为模型不要做得太理想,否则混合仿真发现不了问题。比如ADC模型一定要包含DNL、INL误差和失调;PGA模型要包含增益误差、带宽限制和噪声。我在建模时给ADC加了约两个LSB的INL误差,给PGA加了约1%的增益误差,结果校准逻辑就是在这些非理想条件下调通的,省了后面不少事。
3.2 模拟版图设计与信号隔离
版图设计是混合信号芯片的重头戏,也是外行看起来最“玄”的部分。我们的版图分了几个区域:模拟前端区和基准源放在芯片一角,远离数字逻辑和IO缓冲区;ADC放在模拟区和数字区之间,作为隔离缓冲带;数字逻辑集中在另一侧。
这样做有实实在在的物理考量。数字逻辑翻转时,电源线上会产生很大的瞬态电流,这个电流通过衬底或电源网络耦合到模拟区,就会表现为采样噪声。为了避免这种耦合,首先在电源网络上做了物理隔离,模拟电源和数字电源从不同引脚接入,各自走独立的金属层。其次在版图上做了双保护环,模拟区外侧加加p+接地环和n+电源环,数字区同样处理。
我还要特别提一个“Antenna Rule”的问题。在芯片制造过程中,金属刻蚀会积累电荷,如果某个栅极连接了大面积的金属走线,栅氧化层可能被击穿,导致器件失效。后端的工具会自动修天线违例,但模拟模块内部的人工版图往往容易漏。我们的做法是写完版图后,把模拟模块也统一跑一遍天线检查,发现问题就在靠近栅极的位置加跳线或二极管。
版图完成后,寄生参数提取是个不能省步骤。提取出来的寄生RC参数比原理图仿真结果悲观得多,尤其是反馈电阻网络的寄生电容,会让PGA带宽下降。我们根据寄生提取结果把补偿电容调小了一些,才让电路重新满足带宽指标。
3.3 DFT策略:扫描链、MBIST和模拟测试
DFT(可测试性设计)往往是在项目后期被压缩的环节,但我个人强烈建议把它提前到架构设计阶段。AFD芯片的DFT分了三条线:数字逻辑的扫描链测试、SRAM的MBIST测试、以及模拟模块的直流参数测试。
扫描链是数字部分的标准做法,每个触发器都要能串成移位寄存器链,通过ATE灌入测试向量,抓取输出响应。这个流程依赖综合脚本里正确设置扫描端口和扫描时钟,错过这一步,后面想补扫描链就得动RTL,很痛苦。
MBIST针对芯片内部的小容量SRAM配置存储。我们这块SRAM大概64KB,用来存校准系数和用户配置。MBIST逻辑会自动产生测试模式,写入再读出比较,定位错误地址。虽然增加了约2%的面积,但比起流片后才发现存储器坏点,这点面积完全值得。
模拟测试是这芯片里最有意思的部分。因为我们既没有大面积的模拟开关矩阵,也没有复杂的内建自测电路,所以选择回归到“直流参数+功能路径”的方式。也就是说,通过配置PGA的增益档位,接入内部基准电压,测量ADC输出码值,反推信号链路的增益和失调。这样的测试不需要高端ATE模拟信号源,只需要DC电压源和数字IO,极大降低了测试成本。
说实话,DFT的投入产出比在芯片设计里是最被低估的。很多团队觉得测试是流片之后的事,结果芯片回来一测,良率低,连问题出在模拟还是数字都分不清。AFD芯片之所以能快速定位问题,提前布好的这些测试点起了关键作用。
4. 流片、测试与问题排查实录
4.1 测试板设计与上电调试顺序
芯片回片之后,第一件事不是上电猛测,而是做最基本的开短路测试。用数字万用表量每个电源引脚对地阻抗,防止芯片内部存在焊桥或者管脚接反。确认没有问题后,才按顺序上电:先数字电源,再模拟电源,最后IO电源。上电过程中用电流表监测每个电源的电流,如果电流异常偏大,立刻断电查原因。
测试板设计上,模拟输入走线要跟数字走线彻底分开。AFD芯片的信号输入只有差分对和单端通道,测试板把这些线走在顶层,用底层大面积地平面做回流参考。SPI和GPIO的数字线走在另一层,并串了100欧姆的电阻做缓冲隔离。
我习惯把测试板做成模块化的,也就是芯片测试区和供电/接口区分开。芯片测试区贴一片芯片,接口区用排针引出所有信号。这样芯片坏了直接换一片测试区小板,不需要重新焊接整块大板。这个习惯在项目调试期不知道省了多少时间。
4.2 实测踩坑:PGA增益档切换毛刺
调试过程中遇到最典型的一个问题,是PGA从低增益切到高增益时,输出会出现一个明显的毛刺,持续时间大约十几微秒,幅度甚至能达到满量程的30%。这个毛刺对传感器采集来说非常致命,因为切换增益后如果立马采样,数据完全是错的。
排查思路是先确认毛刺是来自模拟开关还是数字控制信号。我们用示波器同时观察控制信号和模拟输出,发现毛刺发生时刻正好对应增益控制位的建立时间。问题定位到模拟开关对电容的电荷注入效应:开关切换瞬间,沟道电荷会注入到采样电容上,产生一个短暂电压跳变。
解决方法分了两步:第一步在增益切换后插入一个释放窗口,让输出稳定一段时间再进入采样阶段;第二步改进数字控制信号的电平转换速度,避免慢边沿让开关长时间处于中间导通状态。这种问题在架构阶段不太容易预料,板级调试时遇到很正常,重要的是记录成因和解决过程,方便下一个项目复用。
4.3 常见问题速查表
调试期遇到过的问题不止一个,整理成速查表分享给大家:
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| 输出码值整体偏大/偏小 | 基准电压偏移 | 先测片内基准,再查外部基准引脚 |
| 输入短接时输出噪声过大 | 地回路干扰 | 检查模拟地是否与数字地单点连接 |
| SPI读写偶发失败 | 时序违例或IO驱动能力不足 | 降低SPI时钟频率,检查IO上拉电阻 |
| 采样值周期性跳动 | 数字噪声耦合进模拟区 | 示波器测量数字电源纹波,查保护环完整性 |
| 高温下增益漂移明显 | 内部电阻温度系数不匹配 | 检查电阻类型选择,必要时做温度校准 |
| 上电后校准不通过 | 外部基准未稳定 | 检查基准上电时序,增加校准等待时间 |
这六类问题占了我们整个调试周期的八成时间。其中最隐蔽的是地回路干扰,测试板和芯片评估板之间如果形成了多个地环路,噪声就会直接从地线灌进来,怎么调电路参数都没用,最后靠把测试板改成星型接地解决。
4.4 量产测试中的低成本方案
量产测试的挑战和实验室调试完全不同。实验室可以用昂贵的精密仪表,产线则讲究“一次测试不耗时、不耗钱”。AFD芯片的量产测试方案确定得比较晚,这其实是个教训,下一颗芯片一定要在版图阶段就找测试厂评估。
最终量产方案用了“DC参数+算法结果校验”的组合。芯片上电后自动完成内部校准,然后测试系统发指令让PGA切换到特定增益,用内部基准电压作为输入源,读取ADC转换结果,和目标码值比较,偏差在允许范围内就判良品。整套测试只用了数字IO和电压源,不需要专门的模拟信号发生器,测试时间压缩到平均一颗芯片两秒以内。
这个方案的坏处是没法覆盖所有模拟性能参数,比如真正的外部输入信号线性度。但我们的解决办法是抽测,也就是每批抽几十颗芯片专门做全参数测试,产线全测则用上面的快速方案。对良率监控和成本控制来说,这个平衡是可以接受的。
5. 这个项目跑完后的几点体会
AFD芯片从立项到量产,前前后后花了将近一年半。回头捡几个印象最深的经验说说。
第一点,混合信号芯片的设计顺序一定是整体预算先行。不管你是负责模拟还是数字,先把链路级的噪声、增益、时序预算拉通,再干具体模块,否则后面各种返工是必然的。第二点,验证环境要尽早把模拟模块的非理想特性建模进去,越是接近真实器件,越能早发现数字和模拟之间的交互问题。这点我们前期做得不够,导致后面多次修改验证用例。第三点,DFT不能等到流片前才定方案。一颗芯片能不能快速定位问题、能不能低成本量产,其实在架构阶段就已经注定了。
最后再分享一个非常实际的小技巧:每颗芯片回片后,建议第一时间把芯片顶面标记、封装型号、流片批次用标签贴在测试记录表上。项目做久了会同时有好几批芯片在手边,没有标记的话,你很可能把旧的失效批次当成新批次来测,白白浪费好几天。芯片调试是耐心活,一个整洁的实验记录习惯比聪明的大脑还管用。