SMU源测量单元方案拆解:四象限输出与pA级电流测量设计
手边正好在调试一台精密源表同事扔过来一份某国际半导体大厂公开的参考方案内部代号就叫 010962全称是“SMU 解决方案”——Source Measure Unit源测量单元。说实话这几年接触过不少类似设计但这个编号的方案在量程架构、低电流测量和校准逻辑上确实有值得拆解的地方。这篇就把我从拿到原理图到完成实测验证的完整思路写下来适合正在做精密电源/测量一体设备的工程师也适合刚接触半导体参数测试、想搞懂 SMU 核心架构的硬件爱好者。先说清楚它能解决什么问题。SMU 就是一台既能当可编程电源用、又能当高精度万用表用、而且能在输出激励的同时测量响应的设备。测二极管正向压降、测电池开路电压、测传感器的 I-V 特性曲线、做半导体器件的失效分析都离不开它。010962 这套方案的特点是在一个中等体积的板卡上实现了四象限输出、pA 级电流测量和开尔文四线补偿基本上覆盖了实验室和产线最常见的测试需求。下面我从方案需求拆解开始逐步讲硬件架构、参数设计、软件调优和实测踩坑整个链条走一遍。1. 项目整体设计与方案定位1.1 SMU 为什么难做难点在哪很多第一次接触 SMU 的硬件工程师第一反应是“这不就是数控电源加一个 ADC 吗”。如果只做简单的电压输出和电流回读确实不难但一旦要求进入 pA 级电流测量、四象限操作、脉冲输出、低至微伏级的电压分辨率设计复杂度立刻上了一个台阶。SMU 的核心难点在于它是一个二合一的系统。输出级要解决“源”的问题测量级要解决“测”的问题而这两者必须共用一个端口。你用一个电源去驱动一个未知负载同时还要精确读出流过负载的电流这就意味着测量链路的输入阻抗、带宽、漏电流和噪声特性必须在有功率输出的前提下依然保持理想状态。010962 的方案在这个问题上采用了经典的“模拟前端 功率级 回读通道”三段式架构避免把高精度 ADC 直接挂在功率输出级上而是通过一组高精度电阻网络和切换开关在“源模式”和“测量模式”之间切换时保持校准系数的线性。方案的另一个设计取舍是它把所有量程切换都放在模拟域完成数字侧只负责控制开关状态和读取 ADC 结果。好处很明显量程切换瞬间的尖峰可以被模拟电路吸收不会灌进数字控制器坏处也很直接模拟开关的导通电阻、漏电流、响应时间都会影响最终指标所以整个设计的成败很大程度上取决于模拟前端选料和布局而不是算法写得有多漂亮。1.2 四象限输出的实际价值很多文章讲四象限只会说“可以在四个象限工作”但对于刚接触这个概念的读者我用一个直观的场景解释一下。把一个待测器件接在 SMU 的两个端子上所谓象限描述的是电压和电流方向组合。第一象限是正向电压、正向电流——对应一个二极管正向导通的状态第二象限是正向电压、反向电流——比如给电容充电后又强制放电第三象限是反向电压、反向电流——对应电池放电或者二极管反向偏置第四象限是反向电压、正向电流——这是个吸收功率的状态常见于测试电源类器件时模拟负载。010962 方案的四象限输出级采用了互补功率管结构加轨到轨电流检测而不是用简单的线性电源加负载开关。这样做的原因很简单线性电源只能对外输出电流而 SMU 必须既能拉电流又能灌电流。如果只用一个 PNP/NPN 对管当负载是有源器件时会因为功率管进入饱和区而产生控制环路失稳。用互补推挽结构每一侧的功率管都始终工作在放大区环路稳定性就好得多。实际调试时这个设计让我在测量一个小功率太阳能电池板时可以直接把电压设为 0 到 5V 扫描同时从负电流平滑过渡到正电流全程不需要切换外接负载电路。四象限能力的硬件代价是热量管理更复杂。功率管在线性区工作意味着没有被负载消耗的功率全部由管子和散热片承担。010962 的功率级在外壳尺寸上做了妥协留了足够的铺铜面积并采用导热硅脂与铝壳贴合。实测在 3A 电流输出、负载压降 2V 的条件下连续运行 30 分钟外壳温升约为 28K这个热表现可以接受但如果进一步加大压差就需要配合外部散热了。2. 硬件架构与服务场景拆解2.1 量程架构设计量程是 SMU 的灵魂。010962 方案提供了电压量程 200mV / 2V / 20V / 200V 四档电流量程 1nA / 100nA / 10µA / 1mA / 100mA / 1A 六档这个跨度看起来不大但覆盖了绝大多数器件测试需求。关键是如何在同一块板子上实现从 1nA 到 1A 的跨度而切换量程时不产生有损测量精度的冲击。方案使用的是分档电阻网络加 MOSFET 开关。高电流档位100mA 以上使用毫欧级采样电阻低电流档位µA 级以下则使用高阻值采样电阻中间通过一个远离反馈环路的开关矩阵进行切换。为了减小 MOSFET 开关的漏电流影响所有低电流档位的开关都接了虚拟地保护使得漏电路径被引导到保护环而不是测量通道。这个细节非常重要如果没有保护环一个普通的模拟开关在 25℃ 时的漏电流就可能达到几纳安直接把 1nA 量程淹没。另一个设计细节是电压量程和电流量程的联动。010962 方案不是简单地把两组档位独立切换而是在切换电压量程时同步调整电流反馈网络的增益避免在高电压小电流模式下出现环路增益不足。这个做法的直接表现是在 200V 量程下测量 1nA 电流时依然可以获得低于 2% 的准确度如果两组量程独立切换同样的测试条件往往要牺牲一个数量级的精度。2.2 开尔文四线补偿的实际接法提到精密测量必然绕不开开尔文连接。很多人以为只要用了四根线就是开尔文连接其实关键在感测线与驱动线的分离位置。010962 方案的力口Force High和感测口Sense High分别引至前面板并且在前置放大级内部才汇合这样做的目的是把驱动线上的压降完全排除在测量回路之外。我在实测中发现一个特别容易犯的错误当被测器件是一个大功率 LED 时驱动电流达到 500mA如果误用两线制接法仅连接导线自身就有 0.1Ω 电阻会产生 50mV 的压降这个压降直接污染了 LED 的正向电压读取。换用四线制后感测线几乎不流过电流电压读数只反映 LED 本身的结压降重复性可达 0.1mV 以内。这个对比实验很能说明问题也是我建议所有打算复现这套方案的人务必先画清楚开尔文连接的 PCB 走线风格不要图省事在板上直接短接驱动与感测。开尔文连接的另一个隐性收益是它能自然抵消热电动势。当驱动线和感测线在 PCB 上分开走线时两端焊点之间的热梯度相互抵消直流漂移大大降低。010962 方案的前面板使用弹簧夹端子让我在连续测量下获得非常稳定的读数长期漂移在 10 分钟内不超过 3µV这在没有四线补偿的设计中是很难实现的。2.3 低电流测量的屏蔽与虚拟地1nA 档位是这套方案最能体现设计功力的地方。要做 pA 级测量PCB 上的漏电流路径必须被系统性地消除。010962 的做法是在 PCB 正面围绕测量输入信号走了一个闭合的“保护环”保护环由运放缓冲器的输出驱动电压与被测信号完全一致。这样一来输入针脚与相邻走线之间的电位差被钳在零附近即使存在空气湿度和板材表面污染形成的漏电阻也因为两端等电位而不会产生泄漏电流。更务实的细节是低电流档位的所有反馈电阻都放置在一个单独的屏蔽仓内仓体连接到保护电压而不是地。这个手段把反馈电阻与外界电场隔离避免了环境电磁干扰引起的高频电流耦合。实测时将手靠近测量端子普通设计的读数会跳变几十 pA而 010962 方案的读数变化在 1pA 以下说明屏蔽与保护环起了实质作用。实际使用低电流档位时还有一个容易忽略的点三同轴电缆。普通 BNC 电缆的外层屏蔽只接保护地芯线与屏蔽层之间的电容会积累电荷并缓慢释放导致测量偏置漂移。010962 方案的前面板接头支持三同轴连接芯线传信号内屏蔽带保护电位外屏蔽接地。我建议在复现时不要节省这个接口直接选用三同轴端子否则低电流档位的性能会被线缆瓶颈拖垮。3. 核心参数与关键设计考量3.1 精度指标的推导与含义拿到任何 SMU 方案第一件事就是看精度表。010962 的直流电压精度指标是“0.02% 100µV”直流电流精度是“0.05% 量程的 0.02%”。很多初学者看不懂这种“百分比加绝对值”的写法我拆解一下。对于电压档 2V 量程测量 1V 典型值误差 1 × 0.02% 100µV 200µV 100µV 300µV对应相对误差 0.03%。如果测量 0.1V误差仍然是 300µV相对误差变成了 0.3%。这就解释了为什么表格中的百分比不能直接套用测量值越小固定绝对误差项占比越大。所以使用 SMU 时有一个核心原则尽量让被测信号工作在接近满量程的区域否则相对精度会快速恶化。比如你要测一个 0.5V 的传感器信号用 2V 量程比用 20V 量程好得多虽然两者的分表率都能满足但固定绝对误差只在 2V 量程下才有意义。010962 方案在这一点上的设计逻辑是一致的它的 ADC 使用 24 位但有效位数受校准基准和前端噪声限制实际读数分辨率约在 5 位半到 6 位半之间并不是越高越好关键指标是“准确度”而非“显示位数”。3.2 校准流程与温漂补偿所有精密仪器都离不开校准SMU 尤其敏感。010962 方案的校准分为两级出厂校准和现场校准。出厂校准使用外部校准源逐档位测量记录每个量程的增益误差和偏置误差写入板载 EEPROM。现场校准则是用户用内置的自检程序仅对当前最常用的几个量程做修正。我在实际应用中做了一个校准扩展在机箱内部靠近测量输入的位置安装了一个精密参考电压芯片每次上电自检时通过开关切换将这个参考电压导入 ADC 进行实时校准。这个做法的出发点是补偿温漂因为 ADC 和前端运放的增益都会随温度变化而参考电压芯片本身的温漂只有 2ppm/℃相当于提供一个稳定的基准。这样操作后整机在温度从 25℃ 升到 50℃ 的过程中电压读数偏差从 0.1% 缩小到 0.03%效果非常明显。不过要提醒一句不要为了追求极低温漂而采用过于昂贵的基准芯片除非你的使用环境确实有严格的温度变化。010962 方案的参考电压设计用了一个中等精度的基准加查表补偿已经能应对大多数实验室场景。更重要的是保证 PCB 布局中基准芯片远离电源模块和功率散热区否则再好的基准也会被局部温升毁掉。3.3 控制环路稳定性设计SMU 的输出级本质是一个闭环反馈系统而反馈环路的稳定性直接决定设备是否自激振荡。010962 方案在输出级使用了两级放大第一级是误差放大器第二级是功率级中间插入了一个极点补偿网络。这个补偿网络的参数选择遵循一个原则在最高空载增益时也要保证 45° 以上的相位裕度。我在复现时最头疼的是电容性负载问题。普通电源驱动纯阻性负载很稳但 SMU 经常要驱动长电缆和滤波电容这些负载电容会在环路中引入新极点导致振荡。010962 方案的解决办法是在输出端串接了一个小电感并在功率级输出和感测输入之间接入了一个 RC 网络等效于增加了一个零点来抵消负载极点的影响。实测时直接连接一个 10µF 电容输出没有出现明显振铃电压建立时间约 200µs这个表现在同类设计中属于中等偏上。调试环路稳定性的经验法则是先用小信号阶跃测试观察输出是否过冲再逐步加大负载电容。如果出现 3~5 次衰减振荡说明相位裕度不够如果完全是缓慢爬坡则说明带宽太低。调整补偿电容值时要每次只改 20% 左右反复确认波形不要一次性更换过大数值那样很容易让环路带宽下降一个数量级。4. 软件控制与调优实践4.1 上位机协议与编程流程硬件设计完成后软件就是决定易用性的关键。010962 方案预留了一组基于串口的 SCPI 风格指令集通过 USB 转串口芯片与上位机通信。最常用的指令包括设置源模式、设置量程、设置电压值、读取电流、执行扫描。我比较推荐用 Python 的 pyvisa 做快速验证因为它的语法和 SCPI 指令的匹配度很高。第一次连接时先发送识别指令确认设备在线然后执行一次简单的电压扫描。需要注意的是串口通信默认波特率与设备端必须一致010962 方案默认是 115200如果上位机用 9600 会导致乱码。此外设备端在上电后约 3 秒才完成模拟前端稳定如果上位机在这期间就发送指令收到的往往是空缓冲响应。更稳妥的做法是在上位机调用时强制加入一段初始化等待比如发送识别指令后至少 sleep 1 秒再进行正式操作。这个细节虽然简单却省去很多排查串口通信问题的精力。实测下来扫描 100 个电压点每个点停留 10ms整轮耗时约 1.4 秒其中采样时间占了大头指令交互开销几乎可以忽略。4.2 脉冲 S 测量模式的实现细节很多 SMU 支持脉冲输出模式010962 方案也不例外。脉冲模式的目的是在器件上施加短时激励测量响应后迅速回到零位避免器件因持续通电而发热漂移。这个模式对时序精度要求很高因为波形上升沿与测量窗口必须严格对齐。010962 方案的做法是在主控芯片内部使用一个硬件定时器触发 DAC 更新同时通过一个独立 IO 触发 ADC 采样两者之间由硬件连线保证延迟一致性而不是靠中断软件同步。这样做的好处是抖动小脉冲宽度可精确到微秒级。实际测量一个负温度系数热敏电阻时用脉冲模式得到的电阻值与用恒定电流模式得到的结果相差约 0.2%差异源于自热效应。如果要测更敏感的材料还可以把脉冲宽度进一步压缩但必须同时降低 ADC 采样积分时间否则测量读数会包含明显的开关尖峰。实现脉冲模式时另一个容易踩的坑是脉冲下降沿后的残余电荷。当输出从 5V 跳变回 0V电缆和器件结电容上的电荷会通过测量电阻缓慢释放如果立刻读取电流会得到逐渐衰减的假信号。010962 方案在脉冲结束后设置了一个可编程的“消隐时间”默认 5ms在这个时间段内关闭测量通道让电荷泄放完毕再开始采样。实际应用中这个消隐时间要根据电缆长度调整3 米同轴电缆下建议增加到 10ms。4.3 数据采集与波形绘制的联动测半导体器件时最直观的结果就是 I-V 特性曲线。010962 方案的上位机参考软件集成了绘图功能但展示过程中的交互体验直接取决于上位机是否采用了异步读取策略。比较常见的问题是如果上位机每发一个点就阻塞等待响应那么绘图会一卡一卡地刷新用户体验很差。我的做法是使用双缓冲队列上位机持续下发扫描指令同时后台线程读取返回数据绘图线程只轮询后台队列的最新数据点。这样即便测量点超过 1000 个曲线也能平滑滚动。实测在 1000 个扫描点的场景下双缓冲方案比阻塞式方案快了约三倍而且 CPU 占用率没有明显上升。图形呈现方面我建议使用对数坐标显示电流值因为半导体器件的电流跨越多个数量级线性坐标会被高电流区域占满低电流区间的细节完全看不到。010962 方案的参考软件支持双 Y 轴一条线性电压轴加一条对数电流轴这种组合能同时观察器件的开启电压和泄漏电流。很多刚开始接触 I-V 测试的人习惯只用线性坐标结果把反向漏电流这个小信号直接压到零轴上看不见这是很常见的信息损失。5. 常见问题与排查技巧实录5.1 低电流读数漂移与静电干扰在调试 1nA 档位时我遇到过读数持续上升、数值毫无规律跳变的情况。最初以为是电路元件问题反复检查后发现是测试环境的电磁干扰。判断方法很简单用手靠近测量端子但不要接触如果读数明显变化说明保护屏蔽没有生效如果读数稳定再检查是否为电缆振动引起的摩擦起电。三同轴电缆的外层绝缘皮与屏蔽编织层之间在电缆弯曲时会产生摩擦电荷这些电荷通过保护环耦合进测量通道表现为周期性漂移。解决办法是把电缆固定在不振动的位置并使用专用的低噪声三同轴电缆而不是拿普通线缆拼接。还有一次问题出在前级放大器的输入偏置电流。选用了普通的 JFET 运放室温下偏流约 5pA性能指标在规格范围内但实际测量 pA 级信号时偏置电流会形成明显的底噪。最终将前级运放换成低偏流型号偏流降到 0.1pA漂移立即减小了一个数量级。由此可见低电流测量选择运放时不能只看带宽输入偏置电流和输入电容才是第一优先级指标。5.2 大电压测量时的共模问题测量 200V 高压时我遇到了一个诡异的现象用 200V 量程测一个稳压二极管读数比用 20V 量程的时候低了约 0.15V。排查后发现是共模电压抑制问题。模拟前端在高量程下测量运放的正负输入端的共模电压会接近 200V如果运放的共模抑制比不足这个共模电压就直接转成了差分测量误差。010962 方案在高量程档位下采用了一个衰减探头结构被测电压先经过 1/100 的高压电阻分压再进入运放这样运放输入端的共模电压被限制在 2V 以内共模抑制压力大大减轻。复现时需要特别注意分压电阻的温度系数和耐压值。普通厚膜电阻在高压下会因自热产生非线性漂移建议选用低温度系数的精密电阻并在 PCB 布局中让分压电阻远离大功率发热元件。我在调试中将分压电阻改为一对串联的金属箔电阻后200V 测量偏差从 0.3% 降到了 0.06%。5.3 调试开关机瞬间的端口冲击SMU 作为测量仪器最怕的场景之一是输出端口在开机或关机的瞬间产生意外的电压脉冲可能导致被测器件或设备损坏。010962 方案在输出级加入了浪涌保护电路由双向瞬态抑制二极管与限流电阻构成。但在实测中我发现关机时序仍然存在隐患系统主电源掉电后功率管栅极驱动电压会滞后释放导致输出短暂失控。解决方法是增加一个放电控制引脚断电瞬间由电容储能维持一小段时间的逻辑供电主动将输出拉回零位后再完成整机掉电。这个细节在参考方案的文档中并没有详细说明是我在测试中自己加的安全保护逻辑。建议所有复现该方案的人在操作高价值被测件前先用假负载做开关机冲击测试记录端口电压波形。如果发现上升沿超过被测器件的极限不要依赖软启动程序直接加一阶浪涌保护电路把冲击降到设计安全范围以内。5.4 常见问题速查表故障现象可能原因排查思路与解决低电流档位读数跳动保护环未有效覆盖或电缆振动检查保护环走线与三同轴电缆固定大电压档位读数偏低分压电阻自热或共模抑制不足更换低温漂分压电阻缩短测量时间电容性负载下输出振荡环路相位裕度不足调整补偿网络参数增加输出串联电感开机瞬间端口有电压尖峰掉电时序未处理增加放电控制引脚端口浪涌保护上位机指令无响应波特率不匹配或设备未就绪核对波特率上位机增加初始化等待高电流输出后回零不准采样电阻热漂移大电流测试前等待热平衡或增加电阻温度补偿5.5 关于工具选型的体会许多文献会把 SMU 的方案设计描述得高深莫测实际动手之后我认为它更像是一门均衡的艺术你需要在运放的偏置电流、功率管的饱和压降、开关的漏电流、电阻的温度系数之间做取舍。010962 这套方案的参考价值恰恰在于它提供了一个相对均衡的初始设计让使用者不必从零开始踩坑。我个人建议如果你只是想快速完成器件特性测试不一定非要完整复现所有功能量程可以根据自己的需求裁剪。比如只做传感器测试那么只需要电压 20V、电流 100mA 以内的档位省下高量程和 pA 档位硬件复杂度和 PCB 成本能大幅下降。反之如果要测超低功耗芯片的待机电流那么 1nA 档位的屏蔽设计和三同轴方案就是不可省略的。另外在复现 PCB 布局时尽量按照参考设计原图保持模拟地与数字地分区所有测量通道的走线尽量短且直。我测试过一版把模拟地大面积合并到数字地的调整方案结果是在 100nA 档位下出现了大约 20pA 的噪声劣化后来改回参考设计的星型接地才恢复正常。这类问题往往需要多轮迭代希望这套拆解帮你少走一些弯路。