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测试法
这是我最常用的方法,也是业界标准。为什么?因为它能同时测出动态性能和静态非线性。
测试步骤:
- 给DAC输入一个纯净的正弦波数字信号
- 用高精度ADC采集DAC的输出
- 对采集到的数据进行FFT变换
- 分析频谱,提取谐波和噪声信息
关键参数:
- 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的线性度了。下一章我们聊聊具体的校准方法——怎么把这些非线性给修正回来。