2、静态性能指标:INL、DNL、失调误差、增益误差的物理意义与测试方法

各位同学,咱们今天聊聊DAC的静态性能。说实话,很多刚入行的工程师一上来就盯着SFDR、ENOB这些动态指标猛看,觉得静态指标不够“高级”。但我得说句实在话——静态指标没搞定,动态性能就是空中楼阁。我在项目里见过太多次了,明明仿真时动态指标漂亮得很,流片回来一测,全废了。查到最后,往往是INL或者DNL出了幺蛾子。

好,咱们一个一个来拆解。

2.1 失调误差(Offset Error)

先讲最简单的。失调误差,说白了就是整个传输曲线平移了

理想情况下,你输入数字码0,输出应该是0V(或者0A)。但实际芯片嘛,总有点偏差。这个偏差就是失调误差。它是个常数,对所有码字都一样。

物理意义:全码字范围内,实际输出与理想输出的固定偏差。

单位:通常用LSB表示,或者直接用mV/μA。

我记得有一次,一个刚毕业的同事拿着测试数据来找我,说“老大,这芯片INL好大啊!”我一看,所有码字都偏了同一个值。我说你先把失调减掉再算INL。他一脸懵——嗯,这就是没理解失调误差和INL的区别。

测试方法

  • 输入数字码0(或全0),测量实际输出V_out(0)
  • 理想输出V_ideal(0) = 0
  • 失调误差 = V_out(0) - V_ideal(0)

就这么简单。但要注意,有些DAC在零码时可能有特殊电路(比如归零开关),这时候要小心测量条件。

2.2 增益误差(Gain Error)

增益误差,就是传输曲线的斜率不对了

理想情况下,满量程输出应该是V_ref。但实际做出来,可能是V_ref + ΔV,或者V_ref - ΔV。这个ΔV就是增益误差的体现。注意,增益误差是在已经校准了失调误差之后才定义的。

物理意义:实际传输曲线的斜率与理想斜率的偏差。

单位:通常用%FSR(满量程百分比)或LSB表示。

我个人的习惯是,先测零码输出,再测满码输出,然后做两点校准。这样失调和增益误差就分开了。你想想看,如果不先去掉失调,增益误差的测量值其实是混着失调的,那就不准了。

避坑指南:我曾经在一个16位DAC项目里,发现增益误差的测试结果总是跳来跳去。查了两天才发现,是测试时参考电压V_ref的噪声太大。记住,测增益误差之前,先确认参考电压稳不稳

2.3 差分非线性(DNL)

DNL,全称Differential Nonlinearity。这是我最看重的指标之一。

它的定义很简单:相邻两个数字码对应的模拟输出之差,与理想LSB的偏差

公式长这样:

DNL(k) = [V_out(k+1) - V_out(k)] / V_LSB_ideal - 1

其中V_LSB_ideal = V_FSR / 2^N。

如果DNL = 0,说明这一步跳得刚刚好,不多不少。如果DNL > 0,说明这一步跳得太大了。如果DNL < 0,说明跳得太小了。

关键点

  • DNL < -1 LSB 意味着什么?意味着非单调性!输出会随着输入码增加反而减小。这在很多闭环系统里是致命的。
  • DNL 的绝对值通常要求 < 0.5 LSB,这样才能保证单调性。

我在做电流舵DAC时,遇到过最头疼的问题就是DNL的“跳变点”。某个码字附近,DNL突然变得很大。查到最后,是电流源阵列的匹配出了问题。嗯,这个后面讲版图时会细说。

测试方法

  1. 遍历所有数字码,从0到2^N - 1
  2. 记录每个码对应的模拟输出V_out(k)
  3. 计算相邻码的差值ΔV(k) = V_out(k+1) - V_out(k)
  4. DNL(k) = ΔV(k) / V_LSB_ideal - 1

注意:测试时要用高精度万用表,分辨率至少要比被测DAC高4位以上。我一般用8位半的万用表测16位DAC。

2.4 积分非线性(INL)

INL,全称Integral Nonlinearity。它描述的是实际传输曲线偏离理想直线的程度

有两种定义方式:

  • 端点法:以实际曲线的两个端点(零码和满码)连线作为参考直线
  • 最佳拟合法:用最小二乘法拟合一条直线作为参考

我个人更倾向于端点法,因为它更直观,而且和实际应用场景更接近——你想想看,用户用DAC时,通常就是校准了零点和满点,中间的非线性就靠INL来描述了。

物理意义:INL(k) = [V_out(k) - V_ideal(k)] / V_LSB_ideal

其中V_ideal(k)是参考直线上的理想值。

单位:LSB。

INL和DNL的关系,说白了就是积分和微分的关系。DNL是局部跳变的偏差,INL是这些偏差累积起来的结果。所以,如果DNL一直为正,INL就会越来越大;如果DNL正负交替,INL可能反而不大。

避坑指南:我曾经在一个项目中,看到INL曲线呈现明显的“S”形。一开始以为是匹配问题,折腾了好久。后来发现,是测试时温度没稳住——DAC的温度系数导致输出缓慢漂移,测出来的INL其实是温度漂移的曲线。所以,测静态指标时,一定要等温度稳定了再测

2.5 四个指标的关系与测试流程

好,咱们把这四个指标串起来看看。

指标 描述对象 典型值要求 测试顺序
失调误差 整体平移 < 1 LSB 第1步
增益误差 斜率偏差 < 0.5% FSR 第2步
DNL 相邻码跳变 |DNL| < 0.5 LSB 第3步
INL 整体线性度 |INL| < 1 LSB 第4步

测试流程我建议这样:

  1. 先测零码和满码,算出失调和增益误差
  2. 从数据中扣除失调和增益的影响
  3. 再计算DNL和INL

为什么要这个顺序?因为失调和增益误差是系统性的,可以校准掉。而DNL和INL是电路固有的非线性,校准不掉。你想想看,如果先把能校准的去掉,剩下的才是真正需要关注的硬伤。

个人经验:我一般会在测试报告中同时给出“校准前”和“校准后”的INL。这样客户能清楚知道,哪些性能是芯片本身的,哪些可以通过系统校准来改善。有一次,一个客户看到校准后的INL只有0.3 LSB,当场就拍板下单了。

2.6 小结

静态指标这东西,说起来简单,但真正吃透的人不多。我见过太多人把INL和DNL搞混,或者测增益误差时忘了先扣失调。记住一句话:失调是平移,增益是斜率,DNL是局部跳变,INL是整体累积

下一章咱们讲动态指标——SFDR、THD、SNR这些。到时候你会发现,静态指标没做好,动态指标想做好?门儿都没有。

好,今天就到这儿。有问题随时找我。