求教,直方图法计算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:}
找到一篇文章,,把直方图“拟合”成一个均匀分布
直方图统计法计算ADC DNL和INL的方法
页:
[1]