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的基础和非线性来源。核心就三点:

  1. DAC的工作原理是按权重分配,精度取决于匹配
  2. DNL看局部,INL看整体,两者都要关注
  3. 非线性的根源是失配,包括电阻失配和电流源失配

下一章我们会讲如何测量这些非线性指标,以及怎么用校准技术来修正它们。到时候我会分享一些我在项目中用过的实用方法,保证让你少走弯路。