|
想测试下一个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[1:] - T[:-1]
- hlin_trunc = hlin[1:-1]
- 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/
可惜这个代码里用的计算方法和文章里介绍的计算方法差别很大。。
另外文章里也给出了计算代码,,可是文章里给出的计算代码和文章的讲解本身也有较大差异(猜测可能是文章没讲全,,只讲解了一部分),,而且文章里的代码对上面相同的数据执行计算,,计算结果似乎也不太对
哪位大神有上面代码的计算DNL/INL的原理讲解的文章或帖子,,麻烦分享学习下,,谢谢。。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。
|