2、线性度度量方法:DNL与INL的数学定义、码密度直方图测试法、正弦波FFT测试法、有效位数(ENOB)计算

好,咱们进入正题。DAC的非线性,说白了就是它不听话——你给它一个数字码,它吐出来的模拟电压跟理想值有偏差。那怎么量化这个偏差?业界最常用的两个指标就是DNL和INL。

2.1 DNL与INL的数学定义

DNL(微分非线性),衡量的是相邻两个码之间的步长偏差。理想情况下,每增加一个LSB,输出电压应该正好跳一个LSB的幅度。但实际芯片做不到这么完美。

DNL的数学定义:

DNL(k) = [V(k+1) - V(k)] / VLSB-ideal - 1

其中VLSB-ideal = VFSR / 2N

我习惯这么理解:DNL = 0 表示完美;DNL = +0.5 LSB 表示这一步比理想步长大了一半;DNL = -0.5 LSB 表示小了。如果DNL小于-1 LSB,那就出大事了——会出现非单调性,输出反而往回走。我在一个12位R-2R结构的项目中遇到过这个问题,当时查了三天,最后发现是电阻匹配出了问题。

INL(积分非线性),是所有DNL的累积效果。它描述的是实际传输曲线偏离理想直线的程度。

INL的数学定义:

INL(k) = Σi=0k-1 DNL(i)

或者直接用电压表示:INL(k) = [V(k) - Videal(k)] / VLSB-ideal

你想想看,INL就像是你走路时偏离了直线,每一步的偏差累积起来就是总偏移。INL的符号也很重要——正INL表示输出偏大,负INL表示偏小。

指标 理想值 典型要求 严重后果
DNL 0 LSB ±0.5 LSB以内 非单调性(DNL < -1 LSB)
INL 0 LSB ±1 LSB以内(高精度) 谐波失真、SFDR下降

注意:DNL和INL的测试必须在整个温度范围内进行。我吃过这个亏——室温下DNL只有±0.3 LSB,结果到85°C直接飙到±0.9 LSB,差点没通过客户验收。

2.2 码密度直方图测试法

这个方法,说白了就是给DAC输入一个已知的测试信号,然后统计每个输出码出现的次数。最常用的测试信号是三角波或正弦波。

基本原理:

  • 输入一个线性斜坡信号(或低频正弦波)
  • 采集大量输出样本(通常需要2N × 10个以上)
  • 统计每个码出现的次数
  • 理想情况下,每个码出现的次数应该相等
  • 实际出现的偏差就反映了DNL

我的经验:码密度测试法对采样率有要求。我一般会让采样频率是信号频率的100倍以上,这样能保证每个码都有足够的样本数。另外,记得去掉头尾的样本——斜坡信号的起始和结束阶段往往不稳定。

DNL的计算公式(基于码密度):

DNL(k) = [H(k) / H_avg] - 1

其中:
H(k) = 码k出现的次数
H_avg = 所有码的平均出现次数

嗯,这里要注意:如果某个码的H(k)为0,说明这个码从来没出现过——那DNL就是-1 LSB,意味着这个码被跳过了。这在高速DAC中偶尔会发生,尤其是电流舵结构。

2.3 正弦波FFT测试法

这是我最常用的方法,也是业界标准。为什么?因为它能同时测出动态性能和静态非线性。

测试步骤:

  1. 给DAC输入一个纯净的正弦波数字信号
  2. 用高精度ADC采集DAC的输出
  3. 对采集到的数据进行FFT变换
  4. 分析频谱,提取谐波和噪声信息

关键参数:

  • SFDR(无杂散动态范围):基波与最大杂散之间的比值
  • THD(总谐波失真):所有谐波能量与基波能量的比值
  • SINAD(信纳比):信号与噪声+失真的比值

FFT测试的注意事项:

  • 必须使用相干采样(Coherent Sampling),避免频谱泄漏
  • 加窗函数(如Hanning窗)可以减少泄漏,但会降低频率分辨率
  • 采样点数建议用2的幂次,比如4096或8192

我曾经在一个项目中,FFT测试结果总是有奇怪的杂散。折腾了两周,最后发现是测试板的电源纹波太大。从那以后,我每次做FFT测试前都会先检查电源的PSRR。

2.4 有效位数(ENOB)计算

ENOB,说白了就是你的DAC实际能达到的精度。一个16位的DAC,如果噪声和失真太大,可能实际只有12位的性能。

ENOB的计算公式:

ENOB = (SINAD - 1.76) / 6.02

其中SINAD的单位是dB

这个公式的推导基于理想量化噪声模型。1.76 dB是理想量化噪声的功率,6.02 dB对应每增加1位分辨率带来的信噪比提升。

SINAD (dB) ENOB (bits) 实际有效位数
98 16.0 接近理想16位
86 14.0 14位性能
74 12.0 12位性能
62 10.0 10位性能

重要提醒:ENOB是频率相关的。同一个DAC,在1 kHz时可能有14位ENOB,但到了100 kHz可能就掉到10位。所以数据手册上一定要看测试条件——频率、幅度、温度。

我建议大家在评估DAC时,不要只看位数。一个16位的DAC如果ENOB只有12位,那还不如直接买个12位的——价格还便宜。我见过不少工程师被「16位」这个数字迷惑,结果系统性能上不去。

个人习惯:我一般会同时测三个频率点的ENOB:低频(1 kHz)、中频(FS/10)、高频(FS/2)。这样能全面了解DAC在不同工作条件下的表现。如果三个点的ENOB差异很大,那说明这个DAC的带宽或建立时间有问题。

好了,这一章的内容就这些。DNL和INL是静态指标,ENOB是动态指标,码密度和FFT是测试方法。搞清楚了这些,你就能准确评估一个DAC的线性度了。下一章我们聊聊具体的校准方法——怎么把这些非线性给修正回来。