4、电流舵DAC的非线性:电流源阵列架构、随机失配与系统失配、梯度误差与中心对称布局、共质心布局技术
各位好,咱们今天聊聊电流舵DAC的非线性问题。说实话,这玩意儿是模拟设计里最让人头疼的几件事之一。你想想看,一个12位的电流舵DAC,理论上精度能到1/4096,但实际做出来能到10位就不错了。为什么?就是失配在作怪。
4.1 电流源阵列架构:从二进制到温度计
先说说最基本的架构选择。电流舵DAC的核心就是一堆电流源,按权重加起来输出。常见的架构有两种:二进制加权和温度计编码。
二进制加权,说白了就是每个bit对应一个电流源,大小是2的幂次。比如8位DAC,最小电流源是I,那最大就是128I。这种架构面积小,但有个致命问题——DNL误差大。为什么?因为高位电流源稍微偏一点,整个输出就跳一大截。
温度计编码就不一样了。它把所有电流源都做成等大的单位电流源。比如8位DAC,用255个单位电流源。输入数字码越大,开启的电流源越多。这种架构的DNL好很多,因为每次只开关一个单位电流源。
我个人习惯,高位用温度计,低位用二进制。这叫分段架构。比如12位DAC,高6位用温度计(63个单位源),低6位用二进制。这样面积和性能都能兼顾。
关键点:分段架构的边界处最容易出问题。高6位从63变到64时,温度计部分要关掉所有63个源,同时二进制部分要开启。这个切换瞬间,如果匹配不好,就会出现大的毛刺。
4.2 随机失配与系统失配:两个不同的敌人
失配分两种:随机失配和系统失配。我在项目中遇到过不少次,很多人只关注随机失配,忽略了系统失配,结果流片回来性能惨不忍睹。
随机失配,是工艺制造过程中不可避免的。比如晶体管尺寸的随机波动、掺杂浓度的不均匀。它服从正态分布,方差跟面积成反比。公式很简单:
σ(ΔI/I) = A / sqrt(W*L)
其中A是工艺常数,W和L是晶体管尺寸。想减小随机失配?那就加大面积。但面积大了,成本也高了。这是个trade-off。
系统失配,是布局布线、温度梯度、电源压降等造成的。它是有规律的,不是随机的。比如芯片左边温度高、右边温度低,那左边的电流源就会偏大。再比如电源线从左边进来,左边电压高、右边电压低,电流源也会受影响。
我的经验:随机失配可以通过增大面积来改善,但系统失配必须靠布局技巧来解决。我曾经在一个项目中,随机失配算下来完全满足12位精度,但流片回来只有9位。查了半天,发现是电源线压降导致的系统失配。从那以后,我每次布局前都会先跑一下IR drop仿真。
4.3 梯度误差与中心对称布局
梯度误差,说白了就是芯片上的物理量(温度、应力、氧化层厚度等)沿着某个方向缓慢变化。比如温度梯度,芯片中间热、边缘冷。如果电流源阵列是简单的一维排列,那靠近中间的电流源偏大,边缘的偏小。这就产生了非线性。
怎么解决?中心对称布局。把电流源阵列排成二维矩阵,然后让每个电流源的位置关于中心对称。比如一个8x8的矩阵,位置(i,j)和位置(7-i,7-j)的电流源配对。这样,温度梯度的影响就能被平均掉。
我记得有一次做14位DAC,用了中心对称布局后,INL从原来的4LSB降到了0.8LSB。效果非常明显。
注意:中心对称布局只能消除线性梯度,对高阶梯度(比如抛物线型)效果有限。如果遇到高阶梯度,需要更复杂的布局策略,比如共质心布局。
4.4 共质心布局技术:最彻底的解决方案
共质心布局,是解决系统失配的终极武器。它的核心思想是:让每个电流源的质心都重合在同一个点上。这样,无论梯度怎么变化,每个电流源感受到的梯度都是一样的。
具体怎么做?举个例子,假设有4个单位电流源A、B、C、D。把它们排成2x2矩阵:
A B
C D
然后让A和D配对,B和C配对。这样,A和D的质心在矩阵中心,B和C的质心也在矩阵中心。所有电流源的质心都重合了。
对于更大的阵列,可以用四象限对称或八象限对称。比如16x16的矩阵,分成4个8x8象限,每个象限内部再中心对称。这样,一阶和二阶梯度都能被消除。
| 布局方式 | 消除的梯度阶数 | 面积开销 | 适用场景 |
|---|---|---|---|
| 一维排列 | 无 | 最小 | 低精度(<8位) |
| 中心对称 | 一阶线性 | 中等 | 中精度(8-12位) |
| 共质心(四象限) | 一阶+二阶 | 较大 | 高精度(12-16位) |
| 共质心(八象限) | 一阶+二阶+三阶 | 最大 | 超高精度(>16位) |
避坑指南:我曾经在一个项目中,用了共质心布局,但忘了考虑边缘效应。矩阵边缘的电流源和中间的电流源,周围环境不一样(比如刻蚀速率不同),导致匹配变差。后来我在矩阵外围加了一圈dummy单元,问题就解决了。记住,dummy单元一定要接成和真实电流源一样的偏置,不能悬空。
4.5 实际设计中的权衡
说了这么多,你可能会问:是不是所有DAC都要用共质心?当然不是。共质心布局面积大、布线复杂,对于低精度DAC来说没必要。
我的建议是:
- 8位以下:一维排列就够了,注意电源线宽度要足够
- 8-10位:中心对称布局,配合dummy单元
- 10-12位:四象限共质心,注意随机失配也要算清楚
- 12位以上:八象限共质心,还要考虑高阶梯度、应力效应等
另外,别忘了校准。即使布局做得再好,工艺偏差还是会有残留误差。这时候就需要后台校准了。比如用ADC测量每个电流源的实际值,然后数字补偿。我见过一个16位DAC,靠共质心布局做到了14位,再靠校准做到了16位。两者结合,效果最好。
嗯,今天就聊到这儿。电流舵DAC的非线性问题,说白了就是失配问题。随机失配靠面积,系统失配靠布局。两者都做好了,你的DAC就能达到理论精度。下次咱们聊聊动态性能——SFDR和THD,那又是另一番天地了。