一个芯片工程师的ADC学习笔记 (二)

news2025/1/21 14:06:53

众所周知,ADC主要用于对模拟信号进行数字采集,以进行数据处理。我们周围的信号一般都是不断变化的模拟量,如光、温度、速度、压力、声音等。然而,我们大多数人都使用数字设备。如果我们想方便地使用和处理信息,就需要将模拟量转换为数字量,并传送到微控制器或微处理器。那么ADC转换是如何实现的呢?这是一个什么样的过程?阅读下面的笔记,你一定会对模数转换器有更全面、更系统的了解。

在这里插入图片描述

各位同行们,大家好啊,今天又来给大家分享ADC方面的学习笔记啦,听闻上一篇笔记大家都挺满意呢,那么这一次还是希望大家喜欢哦。

一、ADC的参数

1、分辨率

就是最小能够分辨的模拟电压值,例如12位ADC,Vref为3.3V最小分辨率即:Vref/2的12次方=0.8mv。

2、转换速度

即每秒转换的数字量,例如100kSPS,也常表示为每个数字量的转换时间如15us

3、输出接口

有串行或者并行接口

4、工作电压,基准电压(内部或者外部基准),封装。
5、DNL 微分非线性误差

在这里插入图片描述

6、INL积分非线性误差

在这里插入图片描述

这两种误差具有一定随机性,因此ADC会出现误码。

7、几种重要的交流参数

在这里插入图片描述

二、信噪失真比与有效位数 (ENOB)

采样是利用模拟开关将连续变化的模拟量变成离散的数字量,由于经采样后形成的数字量宽度较窄,经过保持电路可将窄脉冲展宽,形成梯形波。量化是将阶梯形模拟信号中各个电压值转化为某个最小单位的整数倍,便于用数字量来表示。编码是将量化的结果(即整数倍值)用二进制数码来表示。这个过程则实现了模数转换。

分辨率与动态范围

N, DR

ADC分辨率为用于表示模拟输入信号的位数。

为了更准确地复现模拟信号,须提高分辨率,使用较高分辨率的ADC也降低了量化误差。但成本就上去了。

动态范围(DR)定义为器件本底噪声至其规定最大输出电平之间的范围,通常用dB表示。ADC的动态范围是指ADC能够分辨的信号幅值范围;ADC的分辨率位数(N)决定ADC的动态范围,代表ADC可测量的输入信号等级范围,DR可定义为:

在这里插入图片描述

由于信号在给定时间视窗内的RMS幅值取决于信号幅值在该时间视窗内如何变化,因此ADC的DR变化取决于输入信号特征。对于其满量程范围(FSR)内的恒定DC输入而言,理想的N位ADC可分别测量FSR和FSR/2N的最大及最小RMS幅值。因此,ADC的DR为:

图片

对于正弦波信号输入而言,正弦波输入信号的最小可测量RMS幅值受量化误差的限制,正弦波输入信号的理想ADC的DR是:

DR=6.02N+1.76dB

假设ADC的动态范围为60dB,则其可分辨的信号幅值为x至1000x。通常动态范围非常重要,因为如果信号太大,则会造成ADC输入过量程;如果信号太小,则会被淹没在转换器的量化噪声中。

信噪比与信噪失真比

SNR, SNDR

数模转换器的信噪比(SNR)是指输入信号功率与噪声功率的比值,这里用来量化数据转换器内的噪声,SNR也能使用信号幅度和噪声幅度的RMS值来衡量,以dB为单位。

在这里插入图片描述

在满刻度正弦波输入的条件下,ADC的理论最高SNR从量化噪声推导而得,表达式为:

SNR=6.02N+1.76dB

这里N是理想ADC的位数,对于理想的N位数据转换器(不考虑谐波失真)的正弦波输入,整个奈奎斯特带宽上能达到的最佳SNR。

但对于实际的ADC,除了量化噪声,数据转换器的SNR也会受到自身热噪声和采样时钟相位噪声的限制。噪声来自主要有三个源头:

• 量化噪声

• ADC热噪声

• 抖动或采样不确定噪声

信号与噪声失真比(Signal to Noise And Distortion,SINAD)指输入正弦波时,RMS信号功率与总噪声功率和输出端(不含DC)的所有其他频率分量功率加上所有其他谐波分量功率的RMS和的比值。

SNDR是用于衡量数据转换器的动态性能的关键参数之一,它包含奈奎斯特带宽上的所有噪声和杂散。SNDR的表达式为:

在这里插入图片描述

其中,信号功率是有用信号、噪声和失真分量的平均功率。SNDR的单位是分贝(dB),SNDR将所有不良频率分量与输入频率做比较,反映的是输入信号的质量,从总体上衡量数据转换器的动态性能。SNDR越大,输入功率中的噪声和杂散比率越小。

有效位数

ENOB

有效位数 (ENOB) 是用于衡量数据转换器相对于输入信号在奈奎斯特带宽上的转换质量(以位为单位)的参数。

这里的ENOB假定转换器是拥有理论上完美性能,不发生失真,唯一产生的噪声是量化噪声,所以SNR 等于SNDR,即SNR(dBFS)= 6.02N+1.76dB。因此,ENOB也是SNDR的另一种表达方式:
在这里插入图片描述

然而,对于非理想数据转换器而言,SNDR和ENOB会发生劣化,包含噪声和其他缺陷,例如器件热噪声、输出代码缺失、谐波、AC/DC非线性、增益/偏移误差和孔径时钟相噪或抖动。外部偏置基准源和电源轨上的噪声也会降低ENOB。

总谐波失真(THD)测量信号的失真成分,用相对于基波的分贝(dB)表示。对于ADC,总谐波失真(THD)是所选输入信号谐波的RMS之和与基波之比。测量时,只有在奈奎斯特限值之内的谐波被包含在内。

类似于THD因非线性原因随输入频率增加而劣化,ENOB值也会随频率加大而劣化。ENOB来自于SNDR,而SNDR又与THD以及SNR相关联。要了解数据转换器的准确ENOB,需阅读数据手册中的详细规格和规定的条件。

实际中的ENOB

大部分模拟数据转换器IC厂商一般倾向于推广理想条件下的ENOB,尤其是数据手册标题所载的ENOB值。然而,大量系统工程师和采购经理仍然好奇的是,为什么测量出的ENOB值和数据手册所载的理想值不同?

实际使用中,由于ADC自身存在噪声和误差,其输出不仅有量化噪声,还有失真引起的高次谐波,因此从未能达到这一SNR值。计算ADC的有效N:ENOB=(SNR–1.76)/6.02 dB。

假设器件是一款12位ADC,ENOB可能仅为10bit。但需要注意的是这并不表示把ADC的后两位删掉就可以当成一个理想的10bit ADC来使用,这里ENOB的意思是12bit非理想ADC的SNDR与理想的10bit ADC的SNR相等。

有关ENOB的一些理解要点:

• 一般数据转换器数据手册标题显示的“位数”(12位或14位)指的是数字位或电压分辨率。这与ENOB无关。

• ENOB主要与噪声、非线性和输入频率存在函数关系。

• ENOB会因多种外部不确定性因素(例如时钟源、电源等)而劣化。

• ENOB是在整个奈奎斯特带宽上(DC到fs/2)计算的。

知识点理解:无杂散动态范围(SFDR)

移知是中国半导体线上讲座和技术交流平台;这里汇聚了众多优秀和资深的大咖,通过提供最接地气的实战课程,分享最实用的经验,为您职场学习和成长助力;关注移知,还可领取100元新人红包和免费半导体课程!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/151805.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【机器学习】关联规则挖掘算法 + 三大案例实战 + Apriori算法 + Python代码实现

文章目录一、关联规则概述1.1 关联规则引入1.2 关联规则相关概念介绍1.2.1 样本、事务、项集、规则1.2.2 支持度、置信度1.2.3 提升度1.2.4 所有指标的公式二、Python实战关联规则2.1 使用 mlxtend 工具包得出频繁项集与规则2.1.1 安装 mlxtend 工具包2.1.2 引入相关库2.1.3 自…

MP3解码算法原理解析

一:MP3编解码整体结构介绍 看懵逼了是吧。这里面有很多概念需要一一讲解。 比特流:比特流是一种内容分发协议。它采用高效的软件分发系统和点对点技术共享大体积文件(如一部电影或电视节目),并使每个用户像网络重新分配…

记录--微信调用jssdk--Invalid Signature, updateAppMessageShareData: denied等问题

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 最近在做安卓内嵌入H5活动页拉新活动,遇到的棘手问题记录下, 一是为了日后遇到同样问题好回顾,二是希望能帮到有同样问题的兄弟。 废话不多说,先从最棘手…

【高阶数据结构】封装Map和Set

🌈欢迎来到数据结构专栏~~封装Map和Set (꒪ꇴ꒪(꒪ꇴ꒪ )🐣,我是Scort目前状态:大三非科班啃C中🌍博客主页:张小姐的猫~江湖背景快上车🚘,握好方向盘跟我有一起打天下嘞!送给自己的一…

蓝桥杯Python组排列和组合、二进制讲解

目录 一、排列 1、Python 的排列函数 permutations() 2、permutations() 按什么顺序输出序列(重要⭐) 3、易错点 二、组合 1、Python的组合函数combinations() 2、注意内容 三、手写排列和组合代码 1、手写排列代码(暴力法&#xff…

【PWA学习】2. 使用 Manifest, 让你的 WebApp 更 Native

引言 我们知道,在 chrome(等一些现代浏览器)中,你可以将访问的网站添加到桌面,这样就会在桌面生成一个类似 “快捷方式” 的图标,当你点击该图标时,便可以快速访问该网站(Web App) 我们以 demo 为例,其添加…

无监督聚类表征学习方法之对比学习(Contrastive Learning)——simclr方法

无监督聚类表征学习方法之对比学习(Contrastive Learning)——simclr方法 1.参考论文 《A Simple Framework for Contrastive Learning of Visual Representations》 2.无监督聚类表征学习方法 主要有几种: ①自动编码器(AutoEncoder,AE); ②变分自编码器(Variatio…

两款开源.NET工作流引擎 Elsa 与ccflow使用比较

相对java开源的工作流程引擎.net开源的工作流程引擎相对较少,这里整理两款.net开源工作流引擎,做一下对比使用。elsa示例代码:Githubd地址:https://github.com/zhenl/MyElsaccflow下载地址:https://gitee.com/opencc/ccflowCCFlow…

Java笔记021-异常-Exception

异常-Exception看个实际问题和一段代码运行下面的代码,看看有什么问题->引出异常和异常处理机制package com12.exception_;/*** author 甲柒* version 1.0* title Exception01* package com12.exception_* time 2023/1/9 14:38*/ public class Exception01 {publ…

Mask RCNN网络源码解读(Ⅳ) --- Mask R-CNN论文解读

目录 1.Mask R-CNN简介 2.Mask分支 3.Mask R-CNN损失 4Mask分支预测使用 1.Mask R-CNN简介 回顾我们之前所说的图像分类、目标检测、语义分割的内容: 我们来看一下实例分割和语义分割的差别: Mask R-CNN不仅能够同时进行目标检测与分割,…

查找算法之二分查找

目录 二分查找 算法实现 “双闭区间”实现 算法实现 python C 两种表示对比 大数越界处理 优点与缺点 二分查找 二分查找,利用数据的有序性,通过每轮缩小一半搜索区间来查找目标元素。 使用二分查找有两个前置条件: 要求输入数据…

如何在GitLab上传本地项目

上传前需准备:需要安装Git,点击进入官网下载:Git 在本地上传GitLab项目的步骤目录介绍: 一、配置SSH秘钥(仅针对本机首次上传GitLab项目) 二、上传项目 1、新建一个空文件夹,并在该文件夹下右键…

Deque

Deque&#xff1a; “double ended queue&#xff08;双端队列&#xff09;”的缩写&#xff0c;通常读为“deck”&#xff1b; Deque是一个线性集合&#xff0c;支持在两端插入和移除元素。 Deque有三种用途&#xff1a; 双端队列(两端都可进出) Deque< Integer> de…

机器学习实战教程(十三):树回归基础篇

一、前言本篇文章将会讲解CART算法的实现和树的剪枝方法&#xff0c;通过测试不同的数据集&#xff0c;学习CART算法和树剪枝技术。二、将CART&#xff08;Classification And Regression Trees&#xff09;算法用于回归在之前的文章&#xff0c;我们学习了决策树的原理和代码实…

成功上岸字节全靠这份Redis技术笔记,深入浅出值得一看

前言 正如标题所说&#xff0c;我现在已经如愿以偿地进了字节&#xff01;之前自己一直待在一个不大不小的外包公司&#xff0c;每天做着重复的层删改查工作。直到22年年底&#xff0c;自己通过朋友的介绍拿到了字节的面试机会&#xff0c;自己在家复习了3个月&#xff0c;成功…

decltype类型指示符

decltype类型指示符一、什么是decltype类型指示符二、typeid运算符三、使用decltype指示符四、decltype和引用五、decltype(auto)六、本章代码汇总一、什么是decltype类型指示符 有时会遇到这种情况&#xff1a;希望从表达式的类型推断出要定义的变量的类型&#xff0c;但是不…

超实用的实用Shell脚本

一、Dos 攻击防范&#xff08;自动屏蔽攻击 IP&#xff09; 代码&#xff1a; #!/bin/bash DATE$(date %d/%b/%Y:%H:%M) LOG_FILE/usr/local/nginx/logs/demo2.access.log ABNORMAL_IP$(tail -n5000 $LOG_FILE |grep $DATE |awk {a[$1]}END{for(i in a)if(a[i]>10)print…

Spring 学习笔记2

1.spring设置JDBC链接池 classpath:jdbc.properties是有多个连接池时的写法&#xff0c;一般都用这种 还有就是配置文件里不要直接使用username&#xff0c;会被覆盖 使用${}来从文件里读取属性 <beans xmlns"http://www.springframework.org/schema/beans"xmlns…

bitmap原理+性能优化实践

目录 背景 总体结构 从RoaringBitmp说起 3.1arraycontainer 1.3.2 bitmapcontainer 1.3.3 runcontainer 上源码 Roaring64NavigableMap RoaringBitmap RoaringArray 三种Container ArrayContainer BitmapContainer RunContainer 工作应用 需求 分析 能否多线…

ArcGIS基础实验操作100例--实验75气体扩散空间分析

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验75 气体扩散空间分析 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1&…