第 17 讲:DAC 与 ADC 接口

数字系统处理离散代码,传感器和执行机构面对的却常是连续电压、电流。ADC 和 DAC 就是两种世界之间的接口:

  • ADC:模拟量 →\rightarrow 数字码;
  • DAC:数字码 →\rightarrow 模拟量。

本课程课件对 ADC 讲到定义和性能目标,详细电路分析集中在 DAC;下面也按这个范围组织,不额外虚构课件没有展开的 ADC 结构。

倒 T 型电阻网络 DAC 的位权来源

理想 DAC 在做什么

一个 nn 位无符号输入

DN=dn−12n−1+⋯+d12+d0,D_N=d_{n-1}2^{n-1}+\cdots+d_12+d_0,

其中每个 di∈{0,1}d_i\in\{0,1\}。DAC 让各位产生按二进制权重缩放的电流或电压,再求和,因此理想输出满足

vo=KDN.v_o=K D_N.

若采用反相运放和参考电压 VREFV_{REF},常见形式为

vo=−VREF2nDN.v_o=-\frac{V_{REF}}{2^n}D_N.

负号来自反相求和结构,不代表数字码是负数。

一个 DAC 的信号链

  1. 锁存器保存输入数字码;
  2. 每一位控制一个模拟开关;
  3. 电阻网络把各位变成正确权重;
  4. 运放把支路电流求和并转换成电压。

器件可按电阻网络分为权电阻、T 型、倒 T 型、权电流等;也可按模拟开关分为 CMOS 和双极型。

倒 T 型电阻网络

倒 T 型网络只需要 RR、2R2R 两种阻值。由于从各分节点向网络看进去的等效电阻保持一致,总电流沿梯形网络逐级二分,于是各位自然得到

I2,I4,I8,…\frac I2,\frac I4,\frac I8,\ldots

的二进制权重。

模拟开关把对应支路导向运放虚地或地。无论该位是 1 还是 0,支路看到的电位近似相同,因此网络电流分配不被开关位置破坏;区别只是这股电流是否流入求和节点。

对四位输入,若反馈电阻按课件配置,可写成

iΣ=VREF24R(23d3+22d2+2d1+d0),i_\Sigma=\frac{V_{REF}}{2^4R} (2^3d_3+2^2d_2+2d_1+d_0),

再由 vo=−iΣRFv_o=-i_\Sigma R_F 得到输出。

权电流型 DAC

权电流型先产生严格成比例的电流源,再由数字开关决定哪些电流进入求和节点。它减少模拟开关导通电阻对位权的影响,尤其适合较高速度或精度要求。

无论哪种拓扑,解题都抓两件事:

  1. 每一位为 1 时向求和点贡献多少;
  2. 求和电流怎样经反馈电阻变成输出电压。

双极性输出

若输入采用二进制补码,希望输出也覆盖正负区间。课程给出的方法是:

  1. 把符号位反相后送入普通无符号 DAC;
  2. 加一个固定偏置,使补码 100…0 对应负满量程、000…0 对应 0。

这本质上是把普通 DAC 的单极性传输曲线平移。做题时最好先列几个关键码:最小负数、−1-1、0、最大正数,逐个检查输出方向和间隔。

分辨率不是精度

分辨率

分辨率描述最小码变化能引起多小的输出变化。可以用位数 nn 表示,也可以用 1 LSB 与满刻度输出之比表示。若满码是 2n−12^n-1,课件采用

resolution=12n−1.\text{resolution}=\frac{1}{2^n-1}.

不同数据手册可能按满量程范围使用 1/2n1/2^n,必须看定义,不能机械混用。

转换误差

实际传输曲线与理想曲线的偏差来自参考源波动、运放零漂、开关内阻、器件失配等。位数高只表示台阶细,不保证每一级都落在正确位置。

误差常写成:

  • 若干 LSB;
  • 满量程范围 FSR 的百分比;
  • 偏移、增益和非线性误差。

转换速度

输入码突变后,输出进入最终值 ±12LSB\pm\tfrac12\text{LSB} 范围所需的时间叫建立时间 tsett_{set}。测量时必须说明容许误差带,否则“已经稳定”的判据不完整。

ADC 在系统中的位置

课件用温度控制说明完整链路:传感器把温度变成模拟电信号,放大器调理量程,ADC 送入计算机,计算机算出控制量,再经 DAC 和执行机构作用于电炉。

因此 ADC 与 DAC 都要同时考虑:

  • 精度是否足以分辨有意义的变化;
  • 速度是否赶得上被测或被控对象;
  • 输入输出量程是否匹配;
  • 参考电压和模拟前端是否稳定。

典型计算步骤

  1. 把输入码写成十进制值 DND_N;
  2. 明确最高位、最低位和参考电压极性;
  3. 按位权求和,或直接代理想转换式;
  4. 分清“满码输出”“满量程范围”和“1 LSB”;
  5. 若有偏置或补码,先画出传输曲线的 0 点;
  6. 最后检查码增大一位时,输出是否按预期方向变化。

最常见的错误不是不会算,而是把 2n2^n、2n−12^n-1、参考电压的正负号和反相运放的负号混在了一起。

评论