过采样技术基本原理

本文介绍过采样技术基本原理。

过采样技术在ADC信号采集过程中使用还是比较多的。某些使用场景下,对采样速度要求并不是那么高(或ADC采样速度过剩),但是想要获取较高的分辨率,就会用到这种技术,如针对温度,压力等缓慢变化的传感器信号采集。过采样技术是典型的以牺牲采样速度换取有效分辨率的方法。

1.基本概念

1)适用范围:

采用过采样技术提高ADC分辨率,需满足以下条件:

a)输入信号有白噪声,且其功率均匀分布在我们感兴趣的频段

b)噪声需随输入信号变化的幅度超过1个LSB(也即测量输入信号抖动大于1个LSB),如果不超过1LSB,过采样提升有效位数没有意义

2)信噪比(SNR)

对于ADC而言,当输入信号是一个满量程的正弦信号,其信噪比(SNR)最大,有:

其中,N为ADC的分辨率。我们对N求导,可得:d(SNRdB)/d(N)=6.02,也就是说,1个bit的分辨率对应6.02dB的信噪比(SNR),提高了信噪比(SNR)就可以增加ADC的分辨率。这也是过采样技术的核心。

3)采样定理

采样定理从理论上指明了要想重建输入的模拟信号,采样频率fs必须大于等于输入模拟信号最高频率fm的2倍。即:

fs\geqfm*2

其中,fs为采样频率,fm为输入模拟信号最高频率

否则,信号会发生混叠,这也是为什么在ADC前端加抗混叠滤波器的原因。

4)过采样

假设量化噪声为白噪声,且其功率密度均匀的分布在直流和采样频率之间,白噪声与采样频率不相关。当提高采样率后,量化噪声被平均到整个采样频率段内,如下图所示。

从图中可知,量化噪声功率分布的频率被扩展到采样频率fs(大于fm),超过fm的这段可以通过数字低通滤波器极大的削弱。整个过程造成的结果是噪声减少了,进而信噪比(SNR)提高了,再进而有效位数增加了。经过公式推导(这里不详述,可参考其它资料),可得,

N为ADC的分辨率,OSR为过采样率,比较2)中的公式,其信噪比(SNR)增加了10log(OSR),假设OSR=2,则10log(OSR)=3,即信噪比(SNR)增加了3dB(前面讲过,信噪比(SNR)每增加6dB,有效位数增加1bit),有效位数增加1/2bit。这里,我们可以得出OSR每增加4倍,有效位数加1bit,即:

其中,FS为当前ADC的采样频率

5)抽取

由于增加了采样频率,我们采样的数据量也增加了,而我们实际上使用的采样率还是FS,而非FOVS(提高采样率并非我们的本义,我们是想要提高有效位数)。因此,需要对数据进行抽取,以获得我们增加了有效位数的ADC值。简单来讲,抽取就干2件事:

a)降采样,FOVS变为FS

b)对数据进行处理,获得增加了有效位数的ADC值

针对a),我们可以连续采样4^{p}个采样值(按FOVS采样),数据处理后,输出一个值,即可将采样率变为FS。

针对b),由于我们采用过采样,采样频率是原来的4^{p}倍,采样值数量也为原来的4^{p}倍,假设原采样频率,Ts后得到一个样本值s,过采样频率得到的样本值求和4^{p}*s,增加的有效位数为log2(4^{p}*s)-log2(s)=2p,若原来的有效位数为N,则过采样频率得到的样本值求和后的样本值有效位数为N+2p,为了获得p位有效位数,需要右移p位(N+p+p-p),即可得到N+p的有效位数。

2.实施

1)若想增加p bit的有效位数,需将原来采样频率FS提升为:4^{p}*FS,当然ADC的采样频率是有最大值的,注意不要超过最大频率。

2)连续采样4^{p}个值,对其进行求和,右移p位,此值即为过采样后的值。这一步可以配合定时器(固定FS触发ADC采样),中断,DMA进行处理以提高CPU使用效率。

总结,本文介绍了过采样技术基本原理。

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

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

相关文章

【爬虫软件】孔夫子二手书采集

项目演示 孔网爬取图书信息 目录结构 [ |-- api-ms-win-core-synch-l1-2-0.dll, |-- api-ms-win-core-sysinfo-l1-1-0.dll, |-- api-ms-win-core-timezone-l1-1-0.dll, |-- api-ms-win-core-util-l1-1-0.dll, |-- api-ms-win-crt-conio-l1-1-0.dll, |-- api…

表格实现合并单元格

实现的效果 一、列合并 此需求的列合并比较简单, 直接使用el-table-column包括即可 <el-table-column align"center" sortable label"目标"><el-table-column prop"target1" sortable label"预设目标" /><el-table-c…

如何在Linux下搭建接口自动化测试平台

我们今天来学习一下在Linux下如何搭建基于HttpRunner开发的接口自动化测试平台吧&#xff01; 需要在Linux上提前准备的环境&#xff08;下面是本人搭建时的环境&#xff09;&#xff1a; 1&#xff0c;Python 3.6.8 2&#xff0c;MySQL 5.7 一&#xff1a;下载HttpRunner…

JMeter---JSON提取器

JMeter的JSON提取器是一个用于从JSON响应中提取数据的元件。它可以从JSON响应中提取特定字段的值&#xff0c;并将这些值用于后续的测试步骤。 使用JSON提取器的步骤如下&#xff1a; 添加一个HTTP请求&#xff0c;用于获取包含JSON响应的数据。 在HTTP请求之后添加一个JSON提…

JavaScript高级 构造函数与原型篇

构造函数与原型 1、构造函数 构造函数是一种特殊的函数&#xff0c;主要用来初始化对象&#xff0c;即为对象成员变量赋初始值&#xff0c;它总与new一起使用。我们可以把对象中一些公共的属性和方法抽取出来&#xff0c;然后封装到这个函数里面。 // 定义学生构造函数func…

面试遇到了接口分析和测试用例分析题,该如何下手?

只要有软件产品的公司百分之九十以上都会做接口测试&#xff0c;要做接口测试的公司那是少不了接口测试工程师的&#xff0c;接口测试工程师相对于其他的职位又比较轻松并且容易胜任。如果你想从事接口测试的工作那就少不了对接口进行分析&#xff0c;同时也会对测试用例进行研…

软件测试十大必问面试题(附答案和解析)

01 介绍之前负责的项目 参考答案&#xff1a;先大概描述一下这个项目是做什么的&#xff08;主要功能&#xff09;&#xff0c;包括哪些模块&#xff0c;是什么架构的&#xff08;B/S、C/S、移动端&#xff1f;&#xff09;&#xff0c;你在其中负责哪些模块的测试。期间经历了…

【排序算法】C语言实现选择排序与冒泡排序

文章目录 &#x1f680;前言&#x1f680;冒泡排序✈️冒泡排序的逻辑✈️冒泡排序coding &#x1f680;选择排序✈️选择排序的逻辑✈️选择排序coding &#x1f680;前言 这里是阿辉算法与数据结构专栏的第一篇文章&#xff0c;咱们就从排序算法开始讲起&#xff0c;排序算法…

金蝶Apusic应用服务器 loadTree JNDI注入漏洞复现(QVD-2023-48297)

0x01 产品简介 金蝶Apusic应用服务器是一款企业级应用服务器,支持Java EE技术,适用于各种商业环境。 0x02 漏洞概述 由于金蝶Apusic应用服务器权限验证不当,导致攻击者可以向loadTree接口执行JNDI注入,造成远程代码执行漏洞。利用该漏洞需低版本JDK。(漏洞比较旧,8月份…

测试框架|Burp Suite几个基本工具的使用

前阵子项目上想通过测试工具在网页上模拟返回错误代码 500 来查看页面的错误处理&#xff0c;然后去调查了下 burp suite&#xff0c;看了些基本工具的使用文档。虽然最后证实 burp suite 只能用来处理页面测试应用程序的实际行为和响应&#xff0c;而不是尝试模拟不存在的问题…

springboot学习笔记(五)

MybatisPlus进阶 1.MybatisPlus一对多查询 2.分页查询 1.MybatisPlus一对多查询 场景&#xff1a;我有一个表&#xff0c;里面填写的是用户的个人信息&#xff08;姓名&#xff0c;生日&#xff0c;密码&#xff0c;用户ID&#xff09;。我还有一个表填写的订单信息&#x…

4 postman响应数据解析

上一篇:3 使用postman批量创建测试数据-CSDN博客 在接口测试中,从接口的响应结果中获取数据是很常用的。比如说做断言的时候,需要确保接口返回数据是符合预期的。又比如有些接口的输入参数值,需要用到前面接口运行返回的数据。下面先介绍如何解析响应数据(以json数…

持续集成交付CICD:GitLabCI 封装Python类 并结合 ArgoCD 完成前端项目应用发布

目录 一、实验 1. 环境 2. Python代码实现获取文件 3.Python代码实现创建文件 4.Python代码实现更新文件 5.GitLab更新库文件与运行流水线 6.ArgoCD 完成前端项目应用发布 二、问题 1.Python获取GitLab指定仓库文件报错 2. K8S master节点运行Python代码报错 一、实验…

Java日志框架Logback

logback.xml文件配置(放在src下微服务建议放在resources下) <?xml version"1.0" encoding"UTF-8"?> <configuration><!--定义日志文件的存储地址,使用绝对路径--><property name"LOG_HOME" value"d:/logs"/>…

文件上传——后端

文件上传流程&#xff1a; 创建阿里云OSS&#xff08;对象存储服务&#xff09;的bucket 登录阿里云&#xff0c;并完成实名认证&#xff0c;地址&#xff1a;https://www.aliyun.com/. 可以通过搜索&#xff0c;进入以下页面&#xff1a; 点击立即使用后&#xff1a; 点击…

Goby 漏洞发布| 金蝶 EAS createDataSource 路径 jndiName 参数远程代码执行漏洞

漏洞名称&#xff1a;Apusic 应用服务器 createDataSource 远程代码执行漏洞 English Name&#xff1a;Kingdee EAS createDataSource path jndiName parameter remote code execution vulnerability CVSS core: 9.8 影响资产数&#xff1a; 26513 漏洞描述&#xff1a; 金…

[Linux] MySQL数据表(数据结构)管理

一、数据库 1.1 数据库的基本概念 数据库&#xff08;database&#xff09;是用来组织、存储和管理数据的仓库 数据库管理系统&#xff08;DBMS&#xff09;&#xff1a;是实现对数据有效组织&#xff0c;管理和存取的系统软件。 数据的建立和维护功能&#xff0c;数据定义…

重温经典struts1之自定义类型转换器及注册的两种方式(Servlet,PlugIn)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 Struts的ActionServlet接收用户在浏览器发送的请求&#xff0c;并将用户输入的数据&#xff0c;按照FormBean中定义的数据类型&#xff0c;赋值给FormBean中每个变量&a…

java多线程创建的三种方式

第一种 第二种 第三种&#xff08;想获得线程的执行结果&#xff0c;建议使用这种&#xff09;

STM32的以太网外设+PHY(LAN8720)使用详解(3):PHY寄存器详解

0 工具准备 1.野火 stm32f407霸天虎开发板 2.LAN8720数据手册 3.STM32F4xx中文参考手册1 PHY寄存器 前面介绍到&#xff0c;站管理接口&#xff08;SMI&#xff09;允许应用程序通过2线时钟和数据线访问任意PHY寄存器&#xff0c;同时该接口支持访问最多32个PHY&#xff0c;也…