SAR ADC系列3:ADC指标分析——(2023.7.11更新版)

本文简单介绍了ADC的动态指标,以及计算动态指标的Matlab代码
更新:包含了全部指标

目录:(2023.7.11更新)
        ADC常用指标分类
        静态性能:微分非线性:DNL
                          积分非线性:INL
                          仿真测试DNL:Code Density
                          等效输入噪声:NRI
        动态性能:信噪比:SNR
                          有效位数:ENOB
                          无杂散动态范围:SFDR
                          总谐波失真:THD
                          信噪失真比:SNDR
                          模拟输入带宽:AIBW
                          有效分辨带宽:ERBW
                          THD+N
                          综合品质因子:FoM


目录

New Version:

ADC常用指标分类:

静态性能

微分非线性:DNL

积分非线性:INL

仿真测试DNL:(码密度法)(code density)

等效输入噪声:(Noise referred to input,NRI)

动态性能

信噪比:SNR,signal-to-noise ratio

有效位数:ENOB,effective number of bit

无杂散动态范围:SFDR,spur free dynamic range

总谐波失真:THD,total harmonic distortion

信噪失真比:SNDR,signal-to-noise-and-distortion ratio

模拟输入带宽:Analog Input Bandwidth

有效分辨带宽:Effective Resolution Bandwidth

THD+N

综合品质因子:Figure of Merit

Old Version:

量化误差

量化噪声功率计算

信噪比SNDR 

ADC SNDR Matlab计算

动态范围DR (Dynamic Range)

无杂散动态范围SFDR(Spurious Free Dynamic Range)

SDR & THD


New Version:

(简略)详细的“静态参数”描述看前面的文章

ADC常用指标分类:

  • 功能指标:
            采样速度、数据位宽、分辨率、单端or差分、架构、功耗、输入范围、供电模式or参考电压、封装、应用场景、等
  • 静态性能指标:
            DNL、INL、Offset、Gain Error、单调性、无丢码、等效输入噪声、等
  • 动态性能指标:
            SNR、SFDR、ENOB、SNDR、THD、THD+N、等

LSB = VFS/2^N,其中VFS:voltage full scale
差分结构不是一定就比单端好。eg:有些sensor就是传来一个【0~VREF】的单端信号,如果用差分机构的话,需要另加一个单端to差分电路,并且相同位数下,差分结构的分辨率更大(单端VFS=VREF,差分VFS=2VREF),差分的输入范围是【-VREF~+VREF】,浪费了一半的范围。


静态性能

微分非线性:DNL

实际步长和理性步长(1LSB)之间的最大差值。通常用LSB为单位表征。当 DNL = -1LSB 时,丢码。

积分非线性:INL

实际量化输出与理性量化输出的最大差值。通常用LSB为单位表征。INL是DNL的累加。

对于DNL主要取决于电容的匹配,除了校准很难通过其他方法改善。校准本质还是校准电容的匹配误差。
对于INL主要是在MSB反转的时候(code翻转最多的时候),除了通过校准,也可以改变电路结构来改善。
INL在中间值的时候最大,因为同时翻转的电容多,误差源多。

仿真测试DNL:(码密度法)(code density)

        ——7.11目前还没学习到code density代码

        输入一个满量程的ramp波,ADC会对该ramp量化n次,然后ADC有2^N-1个step,那我ideal每个code出现的次数一定是 【 n/(2^N-1) 】,即数据量除以code数。用 【(real - ideal) / ideal】就得到DNL。
        INL就是DNL的累加。

        以上是仿真的方法,但是测试中,产生一个ramp并不容易,所以用sin波。但是思想差不多,不同的是每个code出现的概率不相等了,通过数学推导可以得到,当然程序是现成的。澡盆曲线。

既然如此,为什么不用sin做仿真呢,这样仿真测试共用一套代码就可以了?
        因为在sin slope大的地方,出现code的概率自然小,为了保证all code appear,需要的数据量就很大,仿真时间非常长。

一般静态性能和动态性能要分开测试:
        想要静态性能好,那就不需要满量程输入,这样就会导致一些code不会出现,从而动态性能分析的时候,不能覆盖所有的code。

关于采样点数:
        频谱上,half 谱线间隔:(Fs/2)/Numpt,点数越多,谱线间隔越密,插值出波形越好看,然后FFT出来的噪底能低一点(实际的量化噪声不变)。(总的噪声能量不变,点数越多,分散在各个点的幅值越低)。但是仿真时间越长。

等效输入噪声:(Noise referred to input,NRI)

输入一个DC值,理想情况输出就是一个code,由于有noise,可能出现其他code,测试多次,应该符合高斯分布。


动态性能

信噪比:SNR,signal-to-noise ratio

基频信号的能量与奈奎斯特频率以下除了直流和谐波以外的所有频谱分量的总能量之和(即噪声功率)的比值,单位为dB。

量化噪声能量:         信号能量:

加上over sample后,有个sample gain项:

有效位数:ENOB,effective number of bit

一般 SNR 随 fin 显著下降,THD显著上升。

无杂散动态范围:SFDR,spur free dynamic range

基频信号功率和最大杂散信号功率之比。单位为dB

 

 ADC频谱图,差分抑制偶次谐波,因此最大的谐波分量是三次谐波。至于谐波的位置,是因为频谱混叠

总谐波失真:THD,total harmonic distortion

全部谐波分量功率和基频信号功率之比。单位为dB

信噪失真比:SNDR,signal-to-noise-and-distortion ratio

输入信号功率与奈奎斯特频率以下的噪声和谐波分量(不包括直流分量)的功率和之比,其单位为dB

模拟输入带宽:Analog Input Bandwidth

在保持输入信号幅度不变的情况下,模数转换器的输出幅度会随着输入信号频率上升而下降。模拟输入带宽指的是模数转换器的输出幅度比低频输入下输出的满量程(Full Scale)下降3dB时的频率,其单位为Hz。

有效分辨带宽:Effective Resolution Bandwidth

有效分辨带宽指的是相对于低频输入时的信噪失真比(SNDR),其信噪失真比下降3dB时对应的输入信号频率。

THD+N

一定要指定带宽。当带宽为FS/2时候,THD+N等价于SNDR

综合品质因子:Figure of Merit

为了能够衡量具有不同精度、速度的模数转换器的能效水平,国际上给出了一个结合了速度、精度、功耗等多方面综合考虑的参数一品质因子(Figure of Merit)。利用品质因子可以表征模数转换器的功耗效率,其单位为pJ/cov-step。针对不同的要求,品质因子可以有多种不同的定义方式。



Old Version:

量化误差

量化步进:1LSB = VFS / 2^N 。
满量程VFS:(-0.5LSB ~ 2^N-1)LSB
量化误差 = ADC输出 - ADC模拟输入

以N=3为例:VFS = -0.5LSB ~ 7.5LSB
                     量化误差范围:[-0.5 , 0.5] LSB

b92a9d2555094132b149ddfa04ca690c.pnge4b8bdf7969545049e3c407361a819bd.png


量化噪声功率计算

假设输入信号为一个斜率足够小的斜坡信号,最大幅度为VFS
如何计算量化噪声的RMS值?

      ■  假设输入信号摆幅远大于LSB
      ■  假设输入信号不是直流信号
      ■  假设信号不限幅

量化噪声:d56df16e8bcc49a691728a211d1e2fae.png

bede6d9774944a15a3ad5db1ab6f1bd3.png


信噪比SNDR 

bb328642a93847fb889865d3bc58bb0e.png

ADC SNDR Matlab计算

        ■ SNR = 6.02*N + 1.76
                N = 8,SNR = 50 dB;
                N = 10,SNR = 61.68 dB;
                N = 12,SNR =74 dB;
                N = 14,SNR = 85.84 dB;
                N = 16,SNR = 98 dB;
                N = 20,SNR = 122 dB;

        在Demo Codel中,信号周期数M=37为质数,建议读者可以尝试M取偶数,比如M=32,看看DFT效果,并尝试去解释该种现象。 

(完整代码咸鱼同名搜我)

clear;clc;
N = 1024;
M = 37;
fin = 1e6;

fs = N*fin/M;
Ts = 1/fs;
%    Missing Code
LSB = 2/2^10;
vin = sin(2*pi*fin*t);
%    Missing Codes
figure(1);
plot(t,vin);

s = fft(vin);
s = abs(s) + 1e-6;
s_dB = 20*log10(s);
%    Missing Code
figure(2);
%    Missing Code
plot(1:N/2,s_dB);

% 计算SNR
%    Missing Code
power_sig = s(sig_bin);
power_noise = sum(s) - power_sig;
snr = 10*log10(power_sig/power_noise)

dbffad33536f4812a22a70b1d092bf4e.png


动态范围DR (Dynamic Range)

ADC能够线性处理的最大信号和最小信号之间的比值。

gif.latex?%5Cdpi%7B120%7D%20DR%3D%5Cfrac%7BMaximum%20Signal%20Power%7D%7BMinimum%20Detectable%20Signal%7D%5Cge%20SNR_%7Bpeak%7D

8bc37397d831406d91b7de19b9dfa15e.png


无杂散动态范围SFDR(Spurious Free Dynamic Range)

信号 和 最大的谐波 的功率之比 取dB 

15d062bce74b4b42938f04d8e1278c92.png


SDR & THD

THD = 所有的谐波加起来和信号的功率之比,不考虑噪声仅考虑非线性。

2b04a1541efa477da2c6bdc4d783ae2d.png


ADC学习笔记_adc量化误差-CSDN博客

  • 5
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小生就看看

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值