ADC和DAC是联系连续和离散的重要桥梁,是信号采集和处理的重要环节。
这里我们先认识下ADC,聊一聊ADC的工作原理。
信号为何要相互转换?
模拟信号和数字信号的特点
自然界中大多数都是连续的模拟信号,模拟信号容易受到干扰,难以存储和处理,保密性差,比如用一跟导线将电话线分接出来就能窃取信息了。另一方面,现代计算机只能处理离散信号,而且离散信号便于存储,所以就需要将连续的信号进行离散化数字化,方便计算机处理和存储。
于是科学家们就发明了ADC这种器件,将连续信号经过采样转换成离散信号。
模数转换,即Analog-to-Digital Converter,常称ADC,是指将连续变量的模拟信号转换为离散的数字信号的器件,比如将模温度感器产生的电信号转为控制芯片能处理的数字信号0101,这样ADC就建立了模拟世界的传感器和数字世界的信号处理与数据转换的联系。
当然,数字信号通过处理器处理后,也可以通过DAC还原回去,但是还原也不可能是百分百的,必然是有损的。
从模拟到数字的转换步骤
注意,信号进来之前一般都要先滤波。
ADC的转换过程中有四个关键步骤:采样、保持、量化、编码。
注:采样保持有些地方会统称为采样,有些地方会分开说,量化编码有些地方统称为量化,有些地方分开说,不必过分纠结,知道有这么回事儿就行。
采样是将时间上连续变化的信号,转换为时间上离散的信号,即将时间上连续变化的模拟量转换为一系列等间隔的脉冲,脉冲的幅度取决于输入模拟量。这里采样需遵循奈奎斯特采样定理,即当采样频率大于模拟信号中最高频率成分的两倍时,采样值才能不失真的反映原来的模拟信号。
模拟信号经采样后,得到一系列样值脉冲。采样脉冲宽度一般是很短暂的,在下一个采样脉冲到来之前,应暂时保持所取得的样值脉冲幅度,以便进行转换。因此,在采样电路之后须加保持电路。
输入的模拟信号电压经过采样保持后,得到的是阶梯波。而该阶梯波仍然是一个可以连续取值的模拟量。因此,用数字量来表示连续变化的模拟量时就有一个类似于四舍五入的近似问题。将采样后的样值脉冲电平归化到与之接近的离散电平之上,这个过程称为量化。
具体参考这篇文章:
一篇易懂的模数转换器(ADC)学习笔记1
此处不赘述
量化是存在误差的
编码就是将经过量化的值转换成二进制数字的过程,也就是我们最终从ADC中读出来的数据。
ADC技术参数
转换精度
分辨率resolution
ADC的分辨率表示ADC对输入信号的分辨能力,其根据满程电压和ADC输出二进制数的位数决定,如下所示:不同的满程电压下,分辨率不同;不同的ADC输出二进制数的位数,分辨率也不同。
同等满程电压的情况下,位数越多,量化误差越小,分辨率越高,常用的位数有8位、10位、12位、14位、16位等等。
转换速率
转速速率是指ADC从转换控制信号到来开始,到输出端得到稳定的数字信号所经过的时间的倒数。ADC的转换速率与转换电路的类型有关,不同类型的转换器转换速度相差甚远。
总体来说不同的分辨率和转换速率的对比情况,如下所示:
如何换算一个电压值
因为离散化和量化误差的存在,所以最终换算出来的电压值并不会就是实实在在的原始值,而是一个在分辨率范围内最接近于真实值的一个值。
分辨率越高,这个值越精确。
那么,如何换算电压值呢?
首先,我们了解下参考电压Vref,一般就是满量程电压值。
通常ADC会有专门的参考电压引脚可以让我们提供一个稳定的参考电压值,如果没有,也可以直接接VCC,参考电压越稳定,得到的值误差也会越小。
因为ADC内部要有个DAC提供比较电压值,根据参考电压和位数的等比例关系来从小到大依次输出编码数对应的模拟电压,通过比较器和原电压依次比较,直到得到最接近原电压的值。
要注意的是,待测量的电压不能超过参考电压,因为参考电压已经是ADC的满量程了,如果被测电压超过了参考电压,就需要通过前级电路将电压限制在ADC的参考电压范围之内。
有了参考电压,就可以计算最终的结果值了。
分别以10位和12位ADC为例,可有如下换算关系
其实ADC就是将满量程电压均匀分成2的n次方份,然后看得到的值占其中的多少份,然后进行等比例计算即可得到结果值。
位数越高,参考电压越稳定,则得到的结果越能接近原始值。
再举例说明下。
如果是个3位的AD,参考电压范围为0—1V,则分辨率为1/8V,也就是说,AD最终只能得到0V、1/8V、2/8V、3/8V、4/8V、5/8V、6/8V、7/8V,在1/8V以下的电压都会视为0,2/8以下的都会视为1/8……8/8以下的都会视为7/8。
从而也能知道,位数越高,分辨率越高,得到的数据精度越高。
各种ADC的工作原理
ADC的实现方式有多种,我们来了解下几种常见的类型。
计数器型ADC
最基本的一种ADC,通过它能够直观理解ADC的工作原理。
组成部分:比较器、计数器、DAC、控制器、锁存器
工作原理:计数器不断计数驱动DA生成不断增加的模拟量,这个模拟量再不断和输入电压做比较,一旦大于输入电压,则锁存和清零计数器,此时计数器的值就是输入电压的数字量,计数器清零后准备下一次转换。
特点:
计数器从零开始增加,被测电压越高,计数器花费时间越长;
DA的位数决定了ADC的位数,位数越多,一次采样时间越长;
每次采样后计数器清零。
跟踪型ADC
由于计数型ADC被测电压越高花费的时间越长,而且每次采样后计数器都要清零,导致测量速度不够快,所以科学家们就想办法让每次采样完不用清零,以此来提高采样速率。
组成部分:比较器、计数器、DAC、控制器、锁存器
工作原理:和计数器型ADC原理相似,减少了清零步骤,在计数器增加了向上和向下计数,这样就可以跟随输入电压的变化而改变计数器的值。
特点:
和计数器型ADC相比,提高了采样速度。
逐次逼近型ADC
组成部分:采样保持电路、比较器、控制逻辑电路、 SAR寄存器、DAC
工作原理:模拟输入电压(VIN)由采样/保持电路保持。为实现二进制搜索算法,N位寄存器首先设置在中间刻度(即:100... .00,MSB设置为1)。这样,DAC输出(VDAC)被设为VREF/2,VREF是提供给ADC的基准电压。然后,比较判断VIN是小于还是大于VDAC。如果VIN大于VDAC,则比较器输出逻辑高电平或1,N位寄存器的MSB保持为1。相反,如果VIN小于VDAC,则比较器输出逻辑低电平,N位寄存器的MSB清0。随后,SAR控制逻辑移至下一位,并将该位设置为高电平,进行下一次比较。这个过程一直持续到LSB。上述操作结束后,也就完成了转换,N位转换结果储存在寄存器内。
原理类似与二分查找法,依次逼近。
特点:
采样速率低于5Msps,一般为8位至16位;
具有低功耗、小尺寸等特点,通过二进制搜索算法实现。
Flash型/并行ADC
组成部分:分压电阻、比较器、优先级编码器
工作原理:2^N个电阻串联,节点之间接入比较器的反相输入端,输入电压接入比较器的同相输入端,如果电阻节点的电压比输入电压大,比较器输出1,小则输出0,优先级编码器采集到2^N输入电平,输出N位数。
特点:
功耗大;
比较器和分压电阻的精度要求高;
采样速度非常快;
因为需要 2^N-1 个比较器,分辨率每提高一位,电路规模增大一倍,所以位数不能做多。
更多类型参考这篇文章AD模数转换 - 知乎
以及郭天祥课程里讲的ADC相关知识。