第二讲:静态失真的根源

各位同学,今天我们聊聊静态失真。说白了,就是那些不随信号频率变化、一直存在的误差。我做了这么多年DAC设计,发现很多新手容易忽略这部分,结果流片回来性能惨不忍睹。

静态失真,本质上就是你的DAC在「静止」状态下就不够准。你给它一个直流输入,它输出的电压却不在理想位置上。为什么会这样?嗯,我们一个个来看。

2.1 电阻失配:最基础的误差源

先讲电阻。无论是R-2R梯形网络还是电流舵结构,电阻的精度直接决定了DAC的线性度。我在项目中遇到过一批晶圆,电阻失配达到了0.5%,结果12位DAC的有效位数只有9位。

电阻失配的来源主要有三个:

  • 工艺偏差:光刻、刻蚀过程中的随机波动
  • 温度梯度:芯片不同区域温度不同,电阻温度系数不一致
  • 应力效应:封装时产生的机械应力改变了电阻值

你想想看,一个12位的DAC,LSB对应的精度是1/4096 ≈ 0.024%。如果电阻失配超过这个值,那INL肯定超标。我个人的习惯是,在设计阶段就把电阻失配的蒙特卡洛仿真跑够1000次,看看3σ分布能不能覆盖目标。

关键公式: 对于二进制加权电阻网络,第k位的权重误差会导致输出误差为 ΔV = Vref × (ΔR/R) × 2^(k-1)。高位电阻的失配影响是指数级的!

2.2 电流源失配:电流舵DAC的命门

电流舵结构是高速DAC的主流。每个电流源单元理论上应该输出完全相同的电流,但现实很骨感。我记得有一次调试一个14位、1GSPS的DAC,测出来的SFDR只有55dB,查了半天发现是电流源阵列的匹配出了问题。

电流源失配的典型表现:

  • 随机失配:晶体管尺寸、掺杂浓度的随机波动
  • 梯度失配:芯片上的工艺梯度导致不同位置的电流源偏差
  • 输出阻抗有限:电流源的输出阻抗不是无穷大,导致输出电压变化时电流变化

这里有个避坑指南:我曾经在设计一个16位DAC时,只关注了电流源的匹配,忽略了输出阻抗。结果在输出摆幅较大时,电流源的实际电流随输出电压变化,产生了严重的INL。后来我加了一级共源共栅结构,才把问题解决。

我的经验: 电流源阵列的布局一定要采用「共心对称」结构。把最小的电流源放在中心,大的放在外围。这样能有效抑制工艺梯度的影响。我习惯用「十」字形布局,四个象限对称放置。

2.3 开关非理想性:被忽视的失真源

开关非理想性,说白了就是开关不是完美的。导通时有电阻,关断时有漏电流,切换时有电荷注入。这些都会造成静态误差。

常见的开关非理想性包括:

  • 导通电阻:不同开关的导通电阻不一致,导致分压比变化
  • 电荷注入:开关管栅极的电荷在切换时注入到信号路径
  • 时钟馈通:时钟信号通过寄生电容耦合到输出
  • 有限开关速度:开关切换不够快,导致建立时间不足

我见过一个案例,某团队设计的DAC在低频时性能很好,但到了高频段SFDR急剧下降。查到最后,发现是开关的电荷注入效应在高速切换时产生了非线性。他们用了互补开关结构,把NMOS和PMOS的电荷注入相互抵消,效果立竿见影。

注意: 开关的尺寸不是越大越好。大尺寸开关虽然导通电阻小,但寄生电容大,电荷注入也更严重。这是一个典型的trade-off。我建议用仿真工具扫描开关尺寸,找到最优值。

2.4 静态参数INL/DNL与失真的关系

INL(积分非线性)和DNL(差分非线性)是衡量静态失真的核心指标。它们和失真之间是什么关系?

简单来说:

  • DNL 反映的是相邻码之间的跳变是否均匀。如果某个码的DNL超过1LSB,那就可能出现「丢码」——有些输出值永远达不到。
  • INL 反映的是整体传输曲线偏离理想直线的程度。INL直接决定了无杂散动态范围(SFDR)的底限。

我给大家一个经验公式:对于正弦波输入,INL引起的谐波失真大致为:

HD2 ≈ 20 * log10(π * INL / 2^N)  [dBc]
HD3 ≈ 20 * log10(π² * INL / 4 * 2^N)  [dBc]

其中N是位数,INL以LSB为单位。你算算看,一个12位DAC,INL为2LSB时,二次谐波大约在-55dBc左右。这个值在很多应用中是不够的。

核心结论: INL和DNL是静态失真的「症状」,电阻失配、电流源失配、开关非理想性是「病因」。治标要治本,光靠数字校准是不够的,必须在电路层面做好匹配设计。

好了,这一讲的内容就到这里。下一讲我们会深入讨论动态失真——那些和信号频率相关的误差源。到时候我会分享一个我踩过的坑,关于时钟抖动如何毁掉一个高速DAC的性能。敬请期待。