XIVN1987 发表于 2023-5-8 11:59:21

求教,直方图法计算ADC的DNL/INL,哪位大神给讲解下,谢谢。


想测试下一个ADC的DNL和INL,,网上找到一段儿代码如下:
#!python3
from pylab import *

y = np.load(r'./cumhist_method/37khz/data_001.npz')['vals']

h, b = np.histogram(y, bins=range(min(y), max(y)+1))
T = -np.cos(np.pi*np.cumsum(h)/np.sum(h))
hlin = T - T[:-1]
hlin_trunc = hlin
lsb = np.sum(hlin_trunc) / len(hlin_trunc)
dnl = np.append(0, hlin_trunc/lsb - 1)
inl = np.cumsum(dnl)

subplot(411)
plot(y[:1000], label="1000 of Recorded Data")
legend(loc="upper right")
subplot(412)
plot(h, label='Histogram')
legend(loc="upper right")
subplot(413)
plot(dnl)
grid()
subplot(414)
plot(inl)
grid()
show()

对测试数据执行上述计算,执行结果如下:


看起来计算出的DNL/INL是对的,,

但能力有限,,看不懂代码的计算原理

网上找到一篇对直方图法计算DNL/INL讲解比较简单易懂的文章:https://pico-adc.markomo.me/INL-DNL/

可惜这个代码里用的计算方法和文章里介绍的计算方法差别很大。。

另外文章里也给出了计算代码,,可是文章里给出的计算代码和文章的讲解本身也有较大差异(猜测可能是文章没讲全,,只讲解了一部分),,而且文章里的代码对上面相同的数据执行计算,,计算结果似乎也不太对{:sweat:}

哪位大神有上面代码的计算DNL/INL的原理讲解的文章或帖子,,麻烦分享学习下,,谢谢。。{:handshake:}

XIVN1987 发表于 2023-5-8 17:42:13


找到一篇文章,,把直方图“拟合”成一个均匀分布

直方图统计法计算ADC DNL和INL的方法
页: [1]
查看完整版本: 求教,直方图法计算ADC的DNL/INL,哪位大神给讲解下,谢谢。