1. DAC基础与非线性来源
各位同学,今天我们来聊聊DAC的非线性问题。说实话,这玩意儿我当年刚入行时也踩过不少坑。DAC看起来简单,不就是把数字码转成模拟量吗?但真正做起来,你会发现里面的门道多着呢。
1.1 DAC工作原理
DAC的核心思想,说白了就是「按权重分配」。你把一个数字信号,比如8位的二进制数,拆成8个bit,每个bit对应一个权重。然后把这些权重对应的电流或电压加起来,就得到了模拟输出。
我习惯把DAC分成两大类:
- 电压型DAC:用电阻分压网络,比如R-2R梯形网络
- 电流型DAC:用电流源阵列,每个bit控制一个电流源
举个例子,一个3位的二进制DAC,输入是101,那就等于1×4 + 0×2 + 1×1 = 5个单位。输出就是5倍的LSB(最低有效位)电压或电流。嗯,这里要注意,LSB的定义是满量程除以2的N次方。
关键点:DAC的精度取决于每个权重单元的匹配程度。匹配越好,线性度越高。
1.2 静态指标:DNL和INL
这两个指标,我估计大家面试时没少被问到。DNL是微分非线性,INL是积分非线性。它们衡量的是DAC的「准不准」。
DNL(微分非线性):
- 定义:实际输出步长与理想LSB之间的偏差
- 公式:DNL = (Vout[i+1] - Vout[i]) / LSB - 1
- 理想值:0 LSB
- 如果DNL > 1 LSB,那就可能出现「丢码」——有些数字码对应的输出反而比前一个还小
INL(积分非线性):
- 定义:实际输出曲线与理想直线之间的最大偏差
- 公式:INL = (Vout[i] - Videal[i]) / LSB
- 理想值:0 LSB
- INL反映了整体的线性度,直接影响SFDR(无杂散动态范围)
我的经验:我在做一款12位电流舵DAC时,发现DNL只有0.3 LSB,但INL却到了2 LSB。后来查出来是高位电流源的匹配出了问题。所以大家记住,DNL好不代表INL好,两者要同时看。
1.3 非线性产生的物理机制
为什么会非线性?说白了就是「不匹配」。你想想看,芯片上每个晶体管、每个电阻,理论上应该一模一样,但实际制造时总有偏差。
1.3.1 电阻失配
对于电阻型DAC,比如R-2R网络,电阻的失配是主要来源。电阻失配的原因有:
- 工艺波动:掺杂浓度、氧化层厚度不均匀
- 温度梯度:芯片上不同位置温度不同,电阻值跟着变
- 应力效应:封装时产生的机械应力
我记得有一次,一个同事设计的R-2R DAC,仿真时INL只有0.5 LSB,流片回来测出来却是3 LSB。后来发现是版图布局时,电阻排布方向没注意,导致梯度效应放大了失配。
避坑指南:我曾经因为电阻宽度选得太小,导致失配严重。后来我习惯把电阻宽度做到10μm以上,匹配性会好很多。当然,面积会大一些,但值得。
1.3.2 电流源失配
电流舵DAC里,每个电流源由MOS管构成。失配主要来自:
- 阈值电压Vth失配:与1/√(WL)成正比
- 跨导参数β失配:与1/√(WL)成正比
- 沟道长度调制效应:输出阻抗不够大时,电流随输出电压变化
这里有个经验公式:
σ(ΔI/I) = sqrt( (Aβ²)/(WL) + (AVth²)/(WL) * (gm/I)² )
其中Aβ和AVth是工艺参数,W和L是管子尺寸。你想想看,管子面积越大,失配越小。但面积大了,寄生电容也大,速度就慢了。这就是个trade-off。
1.3.3 其他非线性来源
除了失配,还有几个常见的坑:
- 输出阻抗非线性:电流源的输出阻抗随输出电压变化,导致增益误差
- 开关馈通:开关管的时钟馈通会引入毛刺
- 电源噪声:电源上的纹波会调制电流源
- 温度漂移:温度变化导致电流源值变化
我的建议:做DAC设计时,先把静态指标算清楚。我一般会用蒙特卡洛仿真跑200个点,看看DNL和INL的分布。如果3σ的INL超过0.5 LSB,那就要考虑校准了。
1.4 小结
这一章我们讲了DAC的基础和非线性来源。核心就三点:
- DAC的工作原理是按权重分配,精度取决于匹配
- DNL看局部,INL看整体,两者都要关注
- 非线性的根源是失配,包括电阻失配和电流源失配
下一章我们会讲如何测量这些非线性指标,以及怎么用校准技术来修正它们。到时候我会分享一些我在项目中用过的实用方法,保证让你少走弯路。