首页 > 其他分享 >ADC相关参数定义与测试方法

ADC相关参数定义与测试方法

时间:2024-07-25 08:55:52浏览次数:6  
标签:谐波 定义 DNL INL ADC 信号 Error 测试方法

1 ADC 静态参数

1.1 Gain Error

        ADC实际传输曲线斜率偏离理想斜率的程度。即补偿失调误差之后,输出曲线最后的实际偏差。

        修正失调电压误差后,额定满量程代码与理想输入信号码值之间的差值,即Gain Error = Full-scale Error - Offset Error。

1.2 Offset Error

        ADC输入、输出曲线中第一个转换点与理想值的偏差,可以用LSB表示。 输入信号为零,ADC输出码值。即输入端对地短接,读取ADC码值。

1.3 Full_scale Error

        满度输出时对应的输入信号与理想输入信号值之差,Full_scale Error = Gain Error + Offset Error。满刻度输出时,记录输入信号值。

1.4 DNL

        任意两个相邻码值之间所测得变化值与理想的1 LSB变化值之间的差异。这个参数是用来描述ADC芯片线性度的一个参数。这个参数的公式这样计算:

        DNL表示的是微观状态下的偏差,理想ADC在输出码(如101)所对应的模拟信号的范围为1LSB,但实际的ADC对应的模拟信号范围可能或大或小,DNL就表示理想和实际的差值。其中DNL = -1.0LSB表示丢码。DNL值小并不代表SNR高,但DNL值大反映SNR下降。

直方图测试方法:

        直方图方法测试DNL,输入源为正弦波,DNL计算公式如下:

注:

PA(n):实际 ADC 第 n 个数字码出现的概率;

PI(n):理想 ADC 第 n 个数字码出现的概率。

采样点数 M 取决于 ADC 的分辨率 N,测试结果的置信度水平(1-α) 和DNL的误差精度β之间的关系如下

 实际输出的直方图

DNL曲线 

 1.5 INL

        ADC传递函数与一条通过ADC传递函数端点的直线的最大偏差。

        这个参数是用来描述ADC芯片线性度的一个参数。这个参数的公式这样计算:

        INL表示的是宏观状态下的偏差,在任意一个点,由于DNL的积累导致在那个点与理想值的差值。INL小并不代表THD低,但INL值大反映THD恶化。

直方图测试方法:

        直方图方法测试INL,输入源为正弦波。INL理论上是对DNL进行积分运算, 即对DNL 进行累加求和得到, 公式如下:

INL曲线 

2 ADC 动态参数

        动态特性描述的是ADC性能随着信号频率变化而变化的特征。

        既然是与频率有关,当然分析的函数图像就不是上面的传输特性曲线,而是与频率相关的频谱图。经FFT分析后,频谱中会包含有信号、失真、噪声这三个量。而相关指标的计算就是基于这三个量的。

2.1 SNR

        ADC输出端测得的信号对噪声比。

2.2 SINAD

        ADC输出端测得的信号对噪声及失真比

2.3 ENOB

        表示把当前ADC看做是理想ADC时所具有的分辨率位数。

2.4 SFDR

        信号RMS幅度与次最大噪声成分或谐波失真成分的RMS值之比。

        SFDR = 10 * log10 (Ph(1) / max(Ph(2:10)))

2.5 THD

        总谐波失真

        谐波一般取前10次谐波,从计算公式可知信号在分母位置,计算出来小于1或为负dB。总谐波失真计算方式如下: 

  1. Ps:信号功率;

  2. Pn:噪声功率;

  3. Pd:由二到十次谐波引起的总失调功率;

  4. Ph(1):基波功率;

  5. Ph(2:10):二到十次谐波功率;

  6. Vs:信号值;

  7. VN:噪声值。

标签:谐波,定义,DNL,INL,ADC,信号,Error,测试方法
From: https://blog.csdn.net/mogutou520/article/details/140610823

相关文章

  • ADC参数ENOB、有效分辨率、无噪声分辨率的理解及计算
    1、ENOB是有效位数:        对应于AC输入,是一项有关转换器对于AC信号的非线性性能指标,表示一个ADC在特定输入频率和采样率下的动态性能;2、有效分辨率与无噪声分辨率测量的是ADC在DC下的噪声性能;        ☆不要将有效分辨率和ENOB混淆;3、最好从直流特性入手......
  • Flask-WTF:如何在 Flask FormField 中定义自定义变量
    我正在尝试在Flask中设置一个动态表单,其中该表单具有动态填充的FormFieldsFieldList。虽然大部分都有效,但我不断遇到每个FormField的变量问题。我需要每个FormField有一个标签,它是FormField的名称(并在页面上呈现)和一个在显示/隐藏脚本中使用的自定义ID,该脚本使用动态......
  • 一文弄清楚自定义流程表单开发的多个优势特征
    随着行业竞争的激烈化,很多企业都希望实现降本、提质、增效的发展目的。什么样的软件平台可以帮助企业实现这一目标?低代码技术平台、自定义流程表单开发拥有可视化界面、易操作、更灵活等优势特点,在助力降本增效的过程中事半功倍,深得客户喜爱。要了解它的重要性,可以先学习它的定义......
  • SpringSecurity:hasAuthority与自定义权限校验
    springsecurity中有两种权限控制方法1.基于注解@PreAuthorize("hasAuthority('syst:add')")他的作用是在controller方法上进行权限校验,如果该用户具有对应的权限则放行,否则抛出AccessDeniedHandler,403(权限不足)2.基于配置//基于配置的权限控制http......
  • 二维数组的定义
    一、二维数组的定义类型名变量名[常量表达式][常量表达式] 这个方括号只是说明他的类型。二维数组类似一个表单如下图所示二、二维数组的引用数组名[下标][下标]第一个是行号,第二个是列号,超过所容纳的范围,会造成越界访问。三、二维数组的特点1、本质上有三个元素,......
  • 25 Docker网络管理_自定义网络
     欢迎来到@一夜看尽长安花博客,您的点赞和收藏是我持续发文的动力对于文章中出现的任何错误请大家批评指出,一定及时修改。有任何想要讨论的问题可联系我:[email protected]。发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。​   专栏:java全栈C&C++Python......
  • Python 无法 pickle 自定义类型
    我正在尝试在ProcessPool中运行一个函数,该函数将通过读取python文件并运行生成的类中的方法来加载一些自定义类。我遇到的错误是TypeError:cannotpickle'generator'object该方法需要返回一个生成器。我该如何解决这个问题,谢谢。我用谷歌搜索但没有运气。......
  • [十万个为什么] [lua] 自定义byte_buffer
    #include"lprefix.h"#include"lua.h"#include"lauxlib.h"#include"lualib.h"#defineBYTE_BUFFER_META_TABLE_NAME"byte_buffer*"#defineGET_BYTE_BUFFER(L)((byte_buffer_t*)luaL_checkudata(L,1,BYTE_......
  • 使用ControllerAdvice定义了全局异常处理器但返回不生效
    @Slf4j@ControllerAdvicepublicclassGlobalExceptionHandler{ @ExceptionHandler(Exception.class) publicAjaxResultexception(Exceptionexception){ log.error("exception:{}",exception.getMessage()); returnAjaxResult.error(exception.getMe......
  • 云端IDE如何重定义开发体验
    豆包MarsCode是一个集成了AI功能的编程助手和云端IDE,旨在提高开发效率和质量。它支持多种编程语言和IDE,提供智能代码补全、代码解释、单元测试生成和问题修复等功能,同时具备AI对话视图和开发工具。豆包MarsCode豆包MarsCode编程助手支持的IDE:支持VisualStudioCode1......