ADC 精度 第一部分:精度与分辨率是否不同?

在与使用模数转换器(ADC)的系统设计师交谈时,我经常听到的一个最常见问题是:

"你们的16位ADC也是16位准确的吗?"

这个问题的答案在于对分辨率和精度这两个概念的基本理解存在差异。尽管这是两个完全不同的概念,但这两个术语经常被混淆并互换使用。

今天这篇文章将详细阐述这两个概念之间的差异。我们将在一系列文章中深入探讨影响ADC精度的主要因素。

ADC的分辨率定义为输入信号值的最小变化量,该变化量能够使数字输出的值改变一个计数。对于理想的ADC,其传输函数是一个阶梯状函数,每个台阶的宽度等于分辨率。然而,在更高分辨率的系统(≥16位)中,传输函数的响应与理想响应之间的偏差会更大。这是因为ADC以及驱动电路所产生的噪声可能会掩盖ADC的分辨率。

此外,如果向理想ADC的输入端施加一个直流电压并进行多次转换,数字输出应该始终是相同的代码(在图1中用黑点表示)。然而,在实际情况中,输出代码会分布在多个代码上(如下方看到的红色点群),这取决于整个系统的噪声(即包括电压参考和驱动电路)。系统中的噪声越多,数据点的集群就越宽,反之亦然。图1展示了中量程直流输入的一个示例。在ADC数据手册中,ADC传输函数上的这群输出点通常用直流直方图来表示。

图1:ADC传输曲线上ADC分辨率和有效分辨率的示意图

图1中的示意图提出了一个有趣的问题。如果相同的模拟输入能够导致多个数字输出,那么ADC分辨率的定义是否仍然成立呢?如果我们仅考虑ADC的量化噪声,那么答案是肯定的,ADC分辨率的定义仍然有效。然而,当我们考虑信号链中的所有噪声和失真时,ADC的有效无噪声分辨率则由输出代码分布(NPP)决定,如公式(1)所示。

在典型的ADC数据手册中,有效位数(ENOB)通常是通过交流(AC)参数和信噪比及失真比(SINAD)来间接指定的,这些参数可以通过公式2来计算:

接下来,考虑图1中输出代码集群(红色点)没有以理想输出代码为中心,而是位于ADC传输曲线上远离黑点(如图2所示)的某个位置的情况。这个距离是数据采集系统准确性的一个指标。不仅ADC本身,前端驱动电路、参考电压源和参考缓冲器也都对系统整体准确性有所贡献。

图2:ADC传输曲线上的准确性示意图

需要注意的重要一点是,ADC的准确性和分辨率是两个不同的参数,它们可能并不相等。从系统设计的角度来看,准确性决定了系统的整体误差预算,而系统软件的算法完整性、控制和监控能力则依赖于分辨率。

相关推荐
老师可可1 天前
Excel学生成绩表,如何生成成绩分析报告?
经验分享·学习·小程序·excel·学习方法
艾莉丝努力练剑1 天前
【C++STL :string类 (二) 】从接口应用到内存模型的全面探索
linux·开发语言·c++·经验分享
熊猫不是猫QAQ1 天前
老字号传承,达尔优AE6电竞鼠标!熟悉的味道,时代的配方
经验分享
空影学Java1 天前
Day71 基本情报技术者 单词表06 计算理论与性能
经验分享
源代码•宸1 天前
GAMES101:现代计算机图形学入门(Chapter2 向量与线性代数)迅猛式学线性代数学习笔记
经验分享·笔记·学习·线性代数·计算机图形学
mr_LuoWei20091 天前
用批处理文件实现Excel和word文件的重造
经验分享·word·excel
weixin_537217062 天前
React资源合集
经验分享
焱焱枫2 天前
麒麟 Linux|深入解析 Linux 文件系统架构:理念、结构与工作机制
经验分享
艾莉丝努力练剑2 天前
【测试开发/测试】详解测试用例(下):详解设计测试用例的方法
linux·经验分享·测试用例·bug·测试
TeleostNaCl2 天前
SMBJ 简单使用指南 实现在 Java/Android 程序中访问 SMB 服务器
android·java·运维·服务器·经验分享·kotlin