13 AD/DA转换
13.1 数据采集和过程控制
AD/DA: Analog Digital Converter

模拟量输入通路
- 传感器:换能
- 放大器:高输入阻抗
- 滤波器
- 多路模拟开关:切换输入信号通路
- 采样保持器:信号比较平缓的可以直接加到ADC;变化快的需要使用保持器
13.2 采样、量化和编码
采样:不赘述
量化:采集下来的电压瞬时值用数字表示,只能达到一定的精度,用分辨率表示
量化单位q就是电压的分辨率,而分辨率n用编码的比特数n表示
即一个电压5V使用8bit编码,那么\(q = 5/2^8 = 19\)mV,分辨率为8
由于q在数值上等于仅LSB的值,即000...001 = q,故q也称1LSB
编码:用二进制代码的形式表示数字量,有很多方式,常用自然二进制码
自然二进制码:输入量是满量程(FSR,full-scale range)的百分数,用二进制表示这个小数
故从MSB开始,分别是\(2^{-1}, 2^{-2},...,2^{-n}\),无法表示小数点
13.3 D/A转换器
将输入的数字量转换为与其成比例的模拟信号的器件,大多数变成模拟电流,当然用运放就能转换成电压
权电阻网络D/A转换器

使用加权的电阻并联,每一个开关表示这个位置编码的0/1(当然实际上是半导体元件,不需要真的开关)
最终用输出电流\(I_o\)作为模拟电流,接上运放后\(V_o = -\frac{R_f}{R}V_{in}\),其中\(V_{R}\)是最大值,\(R_f\)等于所有权电阻并联的阻值
这个网络输出的模拟信号会存在很多台阶,当D/A的位数变多,台阶的高度差变小,输出与真实信号更接近
主要性能指标
- 分辨率:输入数据发生1LSB变化时输出模拟量的变化,显然\(\Delta = \frac{FSR}{2^{n}}\),所以用n表示分辨率也行
- 精度:\(Accuracy = \frac{Error}{FSR}\),一般不能大于0.5LSB
- 建立时间:从数字量输入到建立稳定输入的时间差
例:假定一个0.5V-2.5V的三角波被FSR=5V的8bitDA输出,写一个输出代码
解:首先需要看输出范围,0.5/0.019=26=1Ah,2.5 /0.019=128=80h,那么代码如下
Begin: mov al, 1Ah ;下限值
Up: out 80h, al ;假设输出口为80h
inc al
cmp al, 80h ;al<80h?
jnz Up ;没到上限就接着上
dec al ;超了就-1,开始下降
Down: out 80h, al
dec al
cmp al, 1Ah
jnz Down
Jmp Begin
13.4 A/D转换器
原理有很多,这里只需要考虑逐次逼近式A/D转换器,因为它速度快,分辨率高,成本低
逐次逼近的原理就是从MSB到LSB的二分法,低于输入就要,超了就不要
逐次逼近A/D转换器
- 由逐次逼近寄存器SAR,D/A转换器,比较器,缓冲器等组成
- SAR含有位移寄存器,数据寄存器和去/留码的逻辑电路
需要在CLK下使用

其中\(V_i\)是模拟信号输入,D/A每次将编码后的数字信号转换为模拟电压,在放大器上比较
放大器输出1,那么这个码就留下,即这位的数字码编码为1
每一位码的去留,需要8个时钟周期
ADC的指标同DAC,不赘述