DAC的功能是将输入的数字量转换成与之唯一对应的模拟量。实际上,输出的电信号并不是真正连续的,而是以所用DAC的绝对分辨率为单位来增减,是准模拟量输出。
DAC基本结构包括模拟开关、转换网络、基准电压源(或基准电源、参考电压)及接口电路,即数字量经过接口电路后控制多路模拟开关各位的通断,从而改变转换网络的连接关系,使其输出的电流大小和输入数字信号的大小成正比,比例系数与基准电压有关。通常使输出电流正比于输入数字量和基准电压,此时构成的是线性数模转换器。如果希望输出电压模拟信号,可在电流输出端加一个由运算放大器构成的电流/电压变换器。
DAC输出模拟电压Vo可以表达成为输入数字量D(数字代码)和模拟参考电压VR的乘积。
Vo=DVR
二进制代码D可以表示为:
(=0,1)
式中,a1为最高有效位(MSB),an为最低有效位(LSB)。
目前大多数D/A输出的模拟量均为电流量,这个电流量要通过一个反相输入的运算放大器才能转换成模拟电压输出。
(1)模拟开关。
DAC中的模拟开关按构成器件来分有晶体管型、结型场效应管型、绝缘栅型场效应管型、CMOS管型等;按控制信号类型分有电压型、电流型和电压电流组合型。
模拟开关的主要特性参数包括导通电阻、漏电流、寄生电容、开启时间和关断时间。
(2)转换网络。
转换网络是DAC的核心,直接影响转换器的精度。转换网络的基本类型有加权网络和梯形网络,前者有权电阻网络、权电容网络,后者有R-2R梯形电阻网络、倒梯形电阻网络等。在此基础上,还有各种改进型网络,如权电阻和梯形电阻网络并用结构、分段梯形电阻网络等。
(3)基准电压源。
双极性器件结构的基准电压源主要有齐纳二极管型和带隙型两种,CMOS型器件的基准电源也有多种形式。
由于DAC的输出与基准电压有直接的比例关系,因此基准电压源最重要的特性是稳定性。一般基准电源的温度漂移可做到10 ppm/℃以下。
有的DAC有内置基准电源,如果没有,则需要按照DAC的要求来配置外接基准电压源器件。
DAC的技术指标或特性参数可分为静态特性参数、动态特性参数和温度特性参数。
(1)分辨率(Resolution)。
分辨率通常用输入二进制字的位数来表示。分辨率越高,转换时与数字输入信号最低位相对应的模拟信号电压数值越小,也就越灵敏。
N位二进制输入的DAC最多可提供个不同的模拟输出值,其分辨率为1/2N。对于一个10位二进制输入、满量程输出为10 V的转换器,可分辨的电压为10V/210=9.75 mV。
(2)线性度(Linearity)。
通常用非线性误差的数值来表示DAC的线性度。非线性误差是指DAC实际转换特性曲线和最佳拟合直线的最大偏差。
(3)转换精度(Conversion Accuracy)。
转换精度是指对给定的数字输入,其模拟量输出的实际值与理论值之间的最大偏差。它以最大的静态转换误差的形式给出,包含非线性误差、比例系数误差及漂移误差等综合误差。一般有两种表示方法:一种用满量程范围的百分数表示(%FSR),另一种以最低位(LSB)对应的模拟输出值为单位表示。
转换精度与分辨率是两个不同的概念,前者是指转换后所得的实际值相对于理想值的精度,而后者是指能够对转换结果产生影响的最小输入量。
(4)建立时间(Settling Time)。
建立时间是指数模转换器中的输入代码有一个阶跃变化时,其输出模拟信号电压达到规定误差范围时所需要的时间。通常用满量程建立时间和LSB建立时间来度量。
建立时间是由DAC电路中电容、电感和开关电路的时间延迟引起的。DAC的速度是按照建立时间进行分类的,一般来说满量程建立时间大于100ms的称为低速转换器,50ns~1ms的为高速转换器。
(5)其他参数。
除上述特性参数外,DAC的其他特性还包括温度特性系数、输出极性及范围、输入代码类型、工作温度范围等。按工作温度范围,民用(商用)产品在0℃~70℃之间,工业级转换器为-25℃或-40℃~85℃,军品为-55℃~125℃。
DAC芯片的性能主要用分辨率(位数)、转换时间和转换精度等参数反映。DAC芯片有多种类型,按DAC的性能分,有通用、高速和高精度等;按内部结构分,有不包含数据寄存器的,也有含数据寄存器的;按位数分有8、12、16位等;按其输出模拟信号分,又有电流输出型和电压输出型;按其数据输入总线分,又有串行输入型和并行输入型。本节主要介绍简单的8位D/A转换器DAC0832。
DAC0832是一种典型的8位、电流输出型、通用DAC芯片。图8-23是它的内部结构和引脚图,其中D/A转换器采用梯形电阻网络。
图8-23 DAC0832原理框图
(1)DAC0832的数字接口。
DAC0832内部具有输入寄存器和DAC寄存器两级数字量缓冲寄存器,可以方便地与微处理机接口。其中DI0~DI7是8位数字量输入引脚,ILE、和控制输入寄存器的锁存信号,和控制DAC寄存器的锁存信号。数字量进入DAC寄存器的同时,D/A转换器就开始数字量到模拟量的转换工作。数字量不变,模拟输出量也不变。
当ILE为高、和为低时,为高,输入寄存器处于直通状态,数字输出随数字输入变化;否则为低,输入数据被锁存在输入寄存器中。当和为低时,为高,DAC寄存器处于直通状态,输出随输入变化;否则,将输入数据锁存在DAC寄存器中。
DAC0832形成以下3种工作方式。
① 直通方式:和一直为高,数据可以直接进入D/A转换器。
② 单缓冲方式:或一直为高,只控制其中一级寄存器。
③ 双缓冲方式:不让和一直为高,控制两级寄存器。从高变低,将从DI0~DI7进入的数据存入输入寄存器;从高变低,将输入寄存器的数据存入DAC寄存器,同时开始D/A转换。双缓冲工作方式能做到对某个数据进入D/A转换的同时,输入下一个数据,还适用于要求多个模拟量同时输出的场合。
根据图8-24所示的时序图,可知DAC0832的工作过程如下。
图8-24 DAC0832时序图
①ILE为高电平时,通过和将数据写入到8位输入寄存器。
②和将数据写入到8位DAC寄存器,同时进行D/A转换。
(2)DAC0832的模拟输出。
DAC0832的模拟输出有Iout1、Iout2、Rfb,此外,还有电源和地信号引脚。
· Iout1:模拟电流输出1,它是逻辑电平为1的各位输出电流之和。当输入数字为全“1”时,其值最大为255/256(VREF/Rfb);当输入数字为全“0”时,其值最小,为0。
· Iout2:模拟电流输出2,它是逻辑电平为0的各位输出电流之和。Iout1+Iout2=常量。
· Rfb:反馈电阻引出端。反馈电阻被集成在芯片内,用作外接运算放大器的反馈电阻,为D/A转换器提供电压输出,该电阻与内部R-2R电阻网络相匹配。
· Vref:参考电压输入端。范围为-10V~+10V。
· Vcc:电源电压,范围为+5V~+15V。
· AGND:模拟地,芯片模拟电路接地点。
· DGND:数字地,芯片数字电路接地点。
由梯形电阻网络组成的D/A转换电路,其转换结果是与输入数字量成比例的电流,这称为电流输出型DAC。许多DAC芯片属于这种形式。在实际应用中,为了增强驱动能力,还需经运算放大器放大并变换为电压输出。电流输出型DAC外加运算放大器就可实现电压输出。有些DAC芯片中已集成有运算放大器,它们属于电压输出型DAC。通常D/A转换器输出电压范围有0V~±5V或0V~±10V、-5V~+5V或-10V~+10V等几种。
图8-25是DAC0832实现单极性电压输出的连接示意图。因为内部反馈电阻Rfb的阻值等于梯形电阻网络的阻值,故电压输出为:
图8-25 DAC0832实现单极性电压输出的连接示意图
图8-26用DAC0832实现双极性电压输出,可以得到:
图8-26 DAC0832实现双极性电压输出的连接示意图
注意:上述两个计算公式中,D代入的值都是其对应的十进制值。
下面就DAC0832的3种工作方式做介绍。
(1)直通工作方式。
将、、和引脚都直接接数字地,ILE引脚接高电平,芯片处于直通状态。此时,8位数字量只要输入到DI7~DI0端,就立即进行D/A转换。但在此种方式下,DAC0832不能直接与单片机的数据总线相连接,故很少采用。
(2)单缓冲工作方式。
此方式是使两个寄存器中一个处于直通状态,另一个工作于受控锁存状态。一般是使DAC寄存器处于直通状态,即把和端接数字地。此时,数据只要写入DAC芯片,就立刻进行转换。此种工作方式接线简单,并可减少一条输出指令。此种方式一般用于系统中只有一个DAC0832或有多片DAC0832但不需要输出同步的场合。
图8-27是单级缓冲工作方式下的DAC0832与51系列单片机的接口电路图。如下指令即可以实现一次D/A转换。
MOV R0,#0FEH
MOV A,#DATA ;DATA:要转换的数据
MOVX @R0,A
图8-27 DAC0832单级缓冲工作方式示意图
(3)双缓冲工作方式。
在双缓冲工作方式下,单片机要对两个寄存器进行两步写操作,即将数据写入输入寄存器,将输入寄存器的内容写入DAC寄存器并启动转换。
双缓冲工作方式可以使数据接收和启动转换异步进行,在D/A转换的同时接收下一个转换数据,因而提高了通道的转换速率。在要求多个D/A通道同步进行D/A转换时,需要使用双缓冲工作方式。
图8-28是双缓冲工作方式下的DAC0832与51系列单片机的接口电路图,两片DAC0832可同步输出模拟电压信号。过程如下所述。
图8-28 两片DAC0832与8031连接示意图
① 向端口FDH进行一次写操作,将要转换的数据写入第1#号DAC的输入寄存器。
② 向端口FEH进行一次写操作,将要转换的数据写入第2#号DAC的输入寄存器。
③ 向端口FFH进行一次写操作,同时将两片DAC的数据从输入寄存器送入DAC寄存器,并且进行转换。
单片机运行以下程序,DAC0832完成一次D/A转换。
MOV R0,#0FDH ;0832-1的CS
MOV A,#DATA1 ;DATA1:要转换的数据
MOVX @R0,A ;数据送0832-1的输入寄存器
MOV R0,#0FEH ;0832-2的CS
MOV A,#DATA2 ;DATA2:要转换的数据
MOVX @R0,A ;数据送0832-1的输入寄存器
MOV R0,#0FFH ;0832-1和0832-2的XFER
MOVX @R0,A ;数据送两片的DAC寄存器,并启动同步转换