考研数电·零基础讲义 · 第 24 讲(上)|D/A 转换器的结构与原理
学完这一讲,你能说清 D/A 转换器"把数字变成电压"的基本做法,会用vO=−2nVREFD计算输出电压,能读懂权电阻网络和倒 T 形电阻网络。预计用时 90–110 分钟。
本讲地图#
- D/A 转换器是干什么的:输入n位二进制数D,输出一个与D成正比的模拟电压(或电流)。
- 核心公式:vO=−2nVREF⋅D,其中D=dn−12n−1+⋯+d0。
- 两种电阻网络:权电阻网络(电阻值按R,2R,4R,…,阻值差距大)和倒 T 形电阻网络(只用R、2R两种阻值,集成电路最常用)。
- 其他:权电流型、双极性输出(带符号数)。
- 华师怎么考:2026 回忆题第 9 题就是 D/A(分辨率、输出电压、位数选择)。本讲给出公式和电路,精度与速度参数放在下一讲(下)。教材对应第 8 章 8.1、8.2 节。
前置知识#
- 二进制数的"位权":di的权是2i(见第 01 讲上)。
- 运算放大器的"虚短、虚断"(输入电流为零,反相输入端电位 ≈ 同相输入端电位):本讲会用到,下面会补讲。
- 二进制补码(见第 01 讲下,仅双极性输出部分用到)。
一、为什么需要 D/A?#
大白话#
数字电路里只有 0 和 1,可现实世界的量——声音、温度、电机转速——是连续变化的"模拟量"。手机播放音乐时,存储器里是一串数字,扬声器却需要连续变化的电压推动。D/A 转换器(Digital-to-Analog Converter,简称 DAC)就是翻译官:数字进,电压出。
反过来,A/D 转换器把电压变成数字,将在第 25 讲介绍。
基本要求#
D/A 转换的原则很朴素:输出电压应该正比于输入的数字量。8 位输入D=0∼255,输出就是0∼255个"单位电压"。这个单位电压对应最低位 1(LSB,Least Significant Bit)所代表的大小,叫最小输出电压。最高位(MSB,Most Significant Bit)的权最大。
怎么实现"正比"?思路是:每一位 1 都送出一份"大小与该位权成比例"的电流,再把所有电流加起来,变成电压。 下面用电阻来做出这些电流。
二、预备知识:求和放大器与"虚地"#
D/A 里几乎都有一个运算放大器接成反相求和的形式。把它当成理想的:
- 虚断:输入端不吸电流(输入电阻无穷大);
- 虚地:同相端V+接地,所以反相端V−≈0,即反相端电位约等于地电位,却并没有真的接地,所以叫"虚地"。
所有支路电流从虚地点流入后,因为放大器不吸电流,只能全部流过反馈电阻RF,产生输出电压:
vO=−RF⋅iΣ
这里iΣ是所有进入求和点的电流之和,负号表示输出与电流方向相反。
⚠️ 易错:负号来自反相放大器。教材里VREF为正时输出为负,要得到正的输出电压,就把VREF取为负值。
三、权电阻网络 D/A 转换器#
大白话#
给每一位配一只电阻,让权大的位电阻小(电流大),权小的位电阻大(电流小)。第i位的权是2i,要让电流与权成正比,电阻就与权成反比:4 位时,d3接R,d2接2R,d1接4R,d0接8R。每个电阻前有一个模拟开关,由对应位控制:di=1就接到参考电压VREF,di=0就接地。
公式推导(4 位)#
虚地时V−≈0,每条支路电阻两端电压就是VREF(开关接参考电压时),因此
I3=RVREFd3, I2=2RVREFd2, I1=4RVREFd1, I0=8RVREFd0
求和后乘以RF得vO=−RF(I3+I2+I1+I0)。取RF=R/2:
vO=−24VREF(d323+d222+d121+d020)=−16VREFD
n位时一般式:
vO=−2nVREFDn
Dn=0时vO=0;Dn=11⋯1时vO=−2n2n−1VREF。所以输出范围是0∼−2n2n−1VREF,永远达不到 VREF,差一个 LSB。
例题 1:4 位,VREF=5 V,求D=1011的输出#
第一步:D=10112=8+2+1=11。
第二步:vO=−165×11=−3.4375 V。
第三步:最小输出电压(LSB)=165=0.3125 V,所以D=0000时 0 V,D=1111时−15×0.3125=−4.6875 V。
Python 把 16 个输入全部算了一遍:0,−0.3125,−0.625,…,−4.6875,每次加一个 0.3125 V 的台阶,还用电阻值(R=10 kΩ,RF=5 kΩ)按电流公式逐个核对,与上式完全一致。
图 1:输入 D 从 0 加到 15,输出电压(取绝对值)呈阶梯上升,每一级就是 1 个 LSB(动画循环播放)
权电阻网络的缺点#
电阻阻值差距太大。以 8 位为例,若最小电阻R=10 kΩ,最大电阻为27R=1.28 MΩ,相差 128 倍。要在这么宽的范围内让每只电阻都有很高精度很难,位数越多问题越严重,对集成电路尤其不利。
教材给了一个折中办法:双级权电阻网络,把 8 位拆成高 4 位、低 4 位两组,每组电阻比仍是1:2:4:8,两组之间串一只RS=8R,同样可得vO=−28VREFD,而电阻最大最小之比只有 8 倍。
⚠️ 易错:
- 权电阻网络里,反馈电阻取R/2 才得到2nVREF这个系数,改了RF输出幅度就变。
- 分母是2n,不是2n−1。
四、倒 T 形电阻网络 D/A 转换器#
大白话#
我们希望只用两种阻值。办法是搭一个"梯子":每一节都由一只串联电阻R和一只对地(虚地)电阻2R组成,因为从每个节点向右看进去的等效电阻刚好都是R,电流每经过一个节点就一分为二:一半往下进支路,一半继续往右走。于是各支路电流依次是总电流的21,41,81,161。
图 2:倒 T 形电阻网络。每个 2R 支路下端的开关,接"1"侧(接求和放大器反相端,虚地)或接"0"侧(接地),两个位置电位都约等于 0,所以支路电流恒定不变
为什么"开关切换时电流不变"?#
关键就是虚地:放大器反相端电位 ≈ 0,和地电位一样。所以无论开关接哪边,2R电阻下端电位都是 0,流过它的电流只由电阻网络和VREF决定,不会因开关动作而变化。这样的好处是:
- 开关动作不会引起电压大幅摆动,转换速度快;
- 电阻只有R、2R两种,容易做成集成电路,精度高。
公式推导#
从VREF流进网络的总电流为I=RVREF。(从任何节点向左看进去的等效电阻都是R。)各支路电流(从高位到低位):2I,4I,8I,16I。第i位开关接求和端时该支路电流进入求和点,因此
iΣ=2Id3+4Id2+8Id1+16Id0=24RVREF(8d3+4d2+2d1+d0)
取反馈电阻RF=R:
vO=−RiΣ=−24VREF(d323+d222+d121+d020)
n位推广:
vO=−2nVREFDn
与权电阻网络形式完全相同。
我们用 Python 对R=10 kΩ、VREF=5 V的 4 位电路列节点电压方程求解:四条支路电流依次是总电流I=0.5 mA的0.5,0.25,0.125,0.0625倍;16 种输入的输出电压与公式完全一致。
例题 2:10 位倒 T 形 D/A,VREF=−10.24 V#
求: (1) 最小输出电压;(2) D=1000000000的输出;(3) 最大输出。
解:
(1) LSB =21010.24=102410.24=0.01 V=10 mV。
(2) D=29=512,vO=512×0.01=5.12 V,恰好是满量程的一半。(因为VREF取负,输出为正。)
(3) D=1023,vO=1023×0.01=10.23 V。
Python 核对:10.24/1024=0.01,512×0.01=5.12,1023×0.01=10.23。
例题 3:已知输出,反求输入#
4 位 D/A,VREF=5 V,要求vO=−3.125 V,输入代码是多少?
D=53.125×16=10=10102(Python 算得 10.0)。
⚠️ 易错:
- 倒 T 网络里总电流是VREF/R,不是VREF/2R;每一支路电流是它的1/2,1/4,…。
- 终端那只"多出来的2R"接地,是为了让最右边一节的等效电阻也是R,不能省。
- 总电流和输出无关,输出只由接到求和端的支路决定。
集成实例:AD7520#
AD7520 是 10 位 CMOS 倒 T 形 D/A 芯片,用 CMOS 模拟开关,不含运算放大器和参考源,使用时需外接运放;运放反馈电阻可用芯片内部的R,也可另选反馈电阻接在Iout1与vO之间。外部VREF必须足够稳定,否则精度得不到保证。后来的许多产品把运放和参考电压源都集成进了芯片。
五、权电流型 D/A 转换器(了解)#
上面两种电路里,开关有导通内阻,而且各开关的内阻和压降不一样,会影响各支路电流,带来误差。权电流型D/A 用恒流源代替电阻产生各位电流:每位的恒流源电流按2I,4I,⋯取值,开关只是把这个电流"导向"求和端或地,电流大小与开关内阻无关,所以精度更高、速度也更快。
六、具有双极性输出的 D/A 转换器#
前面的 D/A 输出只有一种极性。但带符号数通常用补码表示,我们希望补码正数输出正电压,负数输出负电压。以 3 位补码(−4∼+3)为例,做法分两步:
- 符号位取反后送入普通 D/A 的输入。
- 在求和点加一个偏移电流,使输入100(即取反后的0对应处)输出为 0。偏移条件RB∣VB∣=2I=2R∣VREF∣。
对应关系(Python 逐行核对):
| 补码d2d1d0 |
十进制 |
符号位取反后 |
无偏移输出 |
偏移−4 V后 |
| 011 |
+3 |
111 |
+7 |
+3 V |
| 010 |
+2 |
110 |
+6 |
+2 V |
| 001 |
+1 |
101 |
+5 |
+1 V |
| 000 |
0 |
100 |
+4 |
0 V |
| 111 |
−1 |
011 |
+3 |
−1 V |
| 110 |
−2 |
010 |
+2 |
−2 V |
| 101 |
−3 |
001 |
+1 |
−3 V |
| 100 |
−4 |
000 |
0 |
−4 V |
(表中取VREF=−8 V,LSB =1 V。)一般方法:求和输入端加一个偏移电流,使"最高位为 1、其余为 0"时输出为 0,并把符号位反相后接普通 D/A。
七、D/A 转换器的整体组成与几道补充例题#
整体框图#
一个完整的 D/A 转换器通常由四块组成:数码寄存器(存放待转换的数字量,保证转换期间输入不变)、模拟开关(每一位一只,由该位数码控制)、电阻解码网络(权电阻或倒 T 形,把每位的权变成对应大小的电流)、求和放大器(把电流加起来变成电压),外加一个稳定的参考电压VREF。记住这条链:数码 → 开关 → 电阻网络 → 运放求和 → 电压。输出精度首先取决于参考电压是否稳定、电阻是否精确、开关是否理想。
补充例题 4:看清电流的大小#
倒 T 形 4 位 D/A,R=10 kΩ,VREF=5 V。
(1) 总电流:I=RVREF=10 k5=0.5 mA。
(2) 各支路电流(高位到低位):2I=0.25 mA,4I=0.125 mA,8I=0.0625 mA,16I=0.03125 mA。
(3) 输入D=1000:只有d3的支路电流进入求和点,iΣ=0.25 mA,取RF=R=10 kΩ得∣vO∣=0.25 mA×10 kΩ=2.5 V,与公式165×8=2.5 V一致(Python 核对)。
这道题的意义在于:以后看到"支路电流"类问题,就用 "总电流逐级减半" 这一句话来算。
补充例题 5:已知 LSB,求某输入的输出#
8 位 D/A,VREF=−5.12 V,求 LSB 和D=100(十进制)的输出。
LSB =285.12=2565.12=0.02 V=20 mV;vO=100×0.02=2.00 V。
经验: 想让 LSB 是整数毫伏,常把VREF选成2n的"整倍数"(如 8 位选 5.12 V、10 位选 10.24 V),这样输出电压读起来就是"输入数值 × 0.02 V"之类的整齐数。
补充例题 6:电阻网络电阻的取值#
用权电阻网络做 4 位 D/A,要求d3支路电阻为R=8 kΩ,则其余各位电阻是多少?反馈电阻是多少?
电阻与权成反比:d2为2R=16 kΩ,d1为4R=32 kΩ,d0为8R=64 kΩ;反馈电阻RF=R/2=4 kΩ。
⚠️ 总结几个最常见的错误:
- 把2n写成2n−1(输出公式的分母是2n)。
- 忘记负号,或者忘记"VREF为负时输出为正"。
- 倒 T 网络里,把支路电流当成VREF/2R的几倍。
补充:为什么"每个节点向右看都是R"?(逐步证明)#
这是倒 T 网络最漂亮的地方,不妨亲手算一遍。从最右端开始(所有2R下端电位都是 0,所以都等价于接地):
- 最右端有两只2R并联(终端电阻和d0支路的2R):2R∥2R=R。
- 这个R再和左边那只串联电阻R串联:R+R=2R。
- 这个2R与d1支路的2R并联:2R∥2R=R。
- 重复同样的步骤:再串R得2R,再与d2支路2R并联得R,依此类推,一直到最左边的节点,从VREF看进去仍是R。
(Python 逐级计算等效电阻,每一级并联结果都等于R,整个网络等效电阻R+R=2R再并联最左支路2R得R。)
既然每个节点处"向下的2R"和"向右的等效2R"阻值相等且两端电压相同,流入该节点的电流自然一分为二,各一半。从左到右:总电流I先一分为二,一半2I进入d3支路,另一半2I往右;再一分为二,4I进入d2支路……这就是支路电流2I,4I,8I,16I的来历,最后剩下的16I流进终端的2R接地(它不进入求和点,也不受输入控制)。
小结:D/A 转换器的"思路地图"#
- 先把每位二进制数变成与权成比例的电流(电阻网络或恒流源);
- 由开关决定这份电流是否参加求和(di=1参加,di=0不参加);
- 运放把总电流变成电压,放大系数由RF决定;
- 总公式vO=−2nVREFDn说明:输出正比于输入数字量,比例系数由VREF和位数决定。
另外,教材还提到开关树型 D/A(用 MOS 开关按位逐级选择电阻分压)和权电容网络 D/A(用电容分压代替电阻),都是"把数字量变成电压"的另外两种结构,标了星号,属于选学,考研一般不要求。
考试常见问法与答题模板#
- "简述倒 T 形电阻网络 D/A 的工作原理":先说电路组成(R-2R电阻网络、模拟开关、求和运放、参考电压),再说虚地使支路电流恒定,总电流I=VREF/R逐级减半,开关控制各支路电流是否进入求和点,最后写出vO=−2nVREFDn。
- "给定位数和VREF,求某个输入的输出":先把二进制转成十进制D,再乘2nVREF,别忘负号。
- "为什么倒 T 形比权电阻网络更适合集成":只有两种阻值,易保证精度;开关切换时支路电流不变,速度快。
- "位数增加一位,LSB 怎样变化":n增加 1,2n翻倍,LSB 变为原来的一半,分辨能力提高一倍。
做题时养成习惯:先写公式,再代数,最后检查单位(V、mV)和符号。
速记卡#
| 类型 |
电阻/电流 |
优点 |
缺点 |
| 权电阻网络 |
R,2R,4R,…(RF=R/2) |
电阻少,结构简单 |
阻值差大(8 位差 128 倍) |
| 倒 T 形电阻网络 |
只有R、2R(RF=R) |
电阻种类少,开关切换电流不变,速度快 |
开关内阻有影响 |
| 权电流型 |
恒流源 |
不受开关内阻影响,精度高 |
电路复杂 |
核心公式:vO=−2nVREFDn;LSB =2n∣VREF∣;输出范围0∼−2n2n−1VREF。
倒 T 网络:总电流I=VREF/R,支路电流2I,4I,…。
自测练习#
1. 4 位 D/A(权电阻或倒 T 形),VREF=−8 V,求输入D=0110时的输出电压。
答案与提示
D=6,vO=−16−8×6=+3 V。LSB =0.5 V。
2. 8 位倒 T 形 D/A,VREF=−10 V,求D=101001012(十进制 165)的输出。
答案与提示
vO=25610×165=6.4453125≈6.45 V。
3. 8 位权电阻网络,最小电阻R=10 kΩ,最大电阻是多少?为什么说这是缺点?
答案与提示
最大电阻27R=1.28 MΩ,相差 128 倍。要使每只电阻都有高精度很困难,位数越多越严重,不利于集成。
4. 4 位 D/A,VREF=5 V,想要vO=−3.125 V,输入应是什么?
答案与提示
D=3.125/5×16=10=1010。
5. 倒 T 形 D/A 中,为什么开关接地和接虚地都不影响支路电流?
答案与提示
放大器反相端电位 ≈ 0(虚地),与地电位相同,所以两种位置时2R电阻两端电压一样,电流不变。
6. 10 位倒 T 形 D/A,VREF=−10.24 V,求最小输出电压和D=3FFH时的输出。
答案与提示
LSB =10.24/1024=10 mV;D=1023,vO=10.23 V。
7.(华师风格) 某 10 位 D/A 转换器,满量程输出约 10 V。(1) 求分辨率;(2) 求最小输出电压(取VFS=10 V时约多少)。
答案与提示
(1) 分辨率=210−11=10231≈0.098%;(2) 最小输出电压≈102310≈9.8 mV。(分辨率与最小输出电压的定义详见下一讲。)
8. 用补码输入 3 位的双极性 D/A,输入101(即−3),符号位取反后是多少?偏移后输出是多少?
答案与提示
符号位取反:101→001,无偏移输出+1 V,偏移−4 V后得−3 V,与补码−3对应。
下一讲预告#
第 24 讲(下)讲 D/A 的转换精度(分辨率、转换误差、线性度等)和转换速度(建立时间),并用它们回答"10 位够不够用"这类华师真题。
评论
还没有评论。 来写第一条。