便携式数据采集系统中ADC的选用指南
扫描二维码
随时随地手机看文章
真实世界的应用需要真实世界的物理连接,一般来说,这意味着模拟信号要在系统内的某处被数字化处理,以便于微处理器、ASIC或FPGA采集数据并做出决策。
基本选用标准
当选择一款模拟数字转换器(ADC)时,大多数设计师似乎只关注几个主要标准。在设计下一代便携式、低功耗数据采集系统时,诸如功耗等规范也许至关重要,但大多数情况下,工程师是基于下面这些因素来选择一款ADC:数字接口(SPI、I2C和并行接口等)、分辨率(需要的有效位)、要求的转换速度、ADC架构、输入结构。
其他的选择标准通常包括功耗考虑(工作和休眠模式)以及是否集成了参考电压等。此外,工程师还常常考虑系统友好特性,比如:为数据数字化处理集成的FIFO、集成的可编程增益放大器(PGA),或连接到串行总线的通用I/O等。
数字接口选择
ADC的数字部分通常是个基本标准,这是因为数字系统的实现可能会受制于可用的某些接口种类以及所需的数据传输速率。
例如,当将一个ADC连接到你喜爱的微控制器时,这个ADC也许只有一个I2C接口可用。对更高速率或更高分辨率的ADC来说,并行接口可能是迅速传送大量数据的最简单方式,如可在FPGA内运行的数字滤波就是这种需大量数据传送的应用。
精密ADC可支持3种主要接口类型——双线(或I2C)、三线(或SPI)以及并行接口,每种接口都有各自优劣势。高速ADC(大于10Msamples/s)也可提供用于连接到FPGA的高速串行连接的低电压差分信令(LVDS)。
双线或I2C接口的引脚数少,封装尺寸也小。也就是说数据传输只用两个引脚,这使得它可在极小的封装内获得最多通道数。例如,对一个8引脚封装来说,其中两个是接口引脚,两个是电源引脚,其余4个引脚可用作模拟输入。例如,美信的MAX11613四通道、12位ADC就采用micro-max 8引脚封装。
这些小型器件使它们成为消费应用和系统电源监控应用的理想选择。(I2C与电源管理SMBus协议非常相似。)此外,由于基于I2C的ADC能在每单位面积上提供更多通道数,所以通常被利用3轴加速度计和陀螺仪的游戏控制器和航位推算系统等空间受限的应用所采用。
然而,I2C接口的数据传输速率慢,且难以隔绝。I2C接口的数据引脚是个双向集电极开路脚。因此,在诸如医疗应用等系统出于噪声隔离或安全等需要,要求进行(光)隔离的场合,采用I2C就很困难。此外,基于I2C的系统速度将较慢,其最高数据传输速率通常不超过3.4Mbps。
三线接口和SPI提供一种能支持100Mbps(理论上)的全双工、高速总线。此外,如果把多个ADC(或其它SPI器件)连接在一条总线上,可以将其级联起来。例如,可在单一隔绝的SPI总线上,将8个MAX11040组合成32信道,用于电网应用。此外,SPI支持简单且有成本效益的(光)隔离。这种方法在FPGA内实现同样相对容易,但它所需的管脚比I2C多。
并行接口具有高吞吐量以及逻辑控制接口简单的特点,这很适合FPGA。遗憾的是,并行接口也需要很多管脚。
分辨率
固有的ADC误差、信号幅度、最低有效位(LSB)步长以及动态范围等要求,会使“需要多少位”这个小问题变得复杂。例如,简单的系统电压和电流测量,可能只需要8、10或12位ADC。但是,测量典型的电阻桥配置内的传感器,可能需要24位的Σ-ΔADC器件才能在很大的总体信号中检测出小的信号变化。
常用dB(分贝)代表分辨率,dB提供了ADC整体信噪比(SNR)的一个近似(也即体现出它能从传感器或系统噪声背景中解析出多么小的信号)。分辨率的每一位约为6dB。因此,理论上,12位ADC应该有大约72dB的SNR。现实中,很多因素限制了信噪比,一款SNR为70dB或更高的12位ADC就很不错了。
ENOB=(SINAD–1.76)/6.02
ADC供应商以如下两种常见形式之一引述该指标:有效位数(ENOB)或信噪比和失真(SINAD)。这两种形式是相关的。ENOB的一种定义是:
ENOB=(SINAD-1.76)/6.02
其中所有值都以dB表示。SINAD就是在剔除dc项后,所要的信号(基本)与所有失真和噪声之和的比。因此:SINAD=(rms信号/rms噪声)
在线性完美(无失真)但有嘈声的系统中,SINAD和SNR可以互换。我们以简单的12位、单通道ADCMAX1240为例。数据表给出的最坏情况下的SINAD为70dB,因此,按照上述公式,我们可得到ENOB:ENOB(MAX1240)=(70-1.76)/6.02=11.34位。
噪声源和谐波可对ADC的品质造成伤害。许多系统和ADC都面临这种情况。在本文下面,我们来考察一些常见的噪声和谐波源。
因此,在决定需要多少位时,要考虑诸如噪声和谐波等系统和ADC误差,并确保即便在把上述误差也考虑在内时,系统仍有足够的分辨率。如果分辨率不够高,在数据读取时会发生量化误差,且系统精度将下降。