EETOP 创芯网论坛 (原名:电子顶级开发网)

标题: 质疑美信代码正弦波输入+码密度法计算ADC INL的准确性 [打印本页]

作者: nanke    时间: 2018-2-27 18:19
标题: 质疑美信代码正弦波输入+码密度法计算ADC INL的准确性


如题,我在建模比较斜坡信号+码密度法,还是正弦信号+码密度法计算ADC INL两种方法时,发现它们之间有误差。
(采样点数足够多,首尾拟合和二次回归拟合也都考虑了,正弦信号也满足不相干,甚至还加了白噪声)。


一个例子是,当ADC传输函数为DIGOUT=(VIN+k*VIN^7),k足够小时,美信代码maxINL/minINL只有斜坡信号码密度法的一半,二者分别是±0.5 LSB和±1 LSB左右,曲线形状也有略微差异。图没法贴,有时间再补。


从原理上看,正弦信号+码密度计算ADC INL就存在误差,它是通过正弦输入码密度倒推出码宽度再计算DNL的,但我们知道x能得到f(x),但f(x)不一定能反推出x,所以有误差。本以为这个误差在INL远小于FS时可以忽略不计,没想到在上面这个例子误差这么大。


(其实美信DFT代码也有点问题,比如计算THD和HD时,再就是计算输入如信号功率时旁瓣取多少个点有待商榷,有些时候误差会比较大,不过都是小问题,所以一直在用)




问题来了,有人碰到过类似问题吗?其它方法仿真或测试(据说有些仪器有INL功能,但我没接触过)得到的INL和正弦波码密度法是一致的吗?




作者: zcg0697    时间: 2018-3-5 15:29
斜坡信号和正弦信号的概率分布都不一样,不能用同一个算法!
作者: quantus    时间: 2018-3-20 00:36
前几天就看到这个帖子,今天有空上来试答一下。
首先贴一下我对同一个SAR ADC分别用code density of斜坡信号仿真得到的dnl和inl。code density代码是基于美信代码修改过的,其正确性经过了实测检验。

仿真设置为0.1LSB的分辨率, 90%的置信度, code density的仿真点数为174072。ramp signal的分辨率为0.1LSB。 结果如下图所示。
( , 下载次数: 86 )
从上图可以明显看到,两种测试方法得到的结果一致。
楼主得到不一致的结果可能是因为输入正弦波的幅值范围没有覆盖到每个code。比如,输入信号是一组长度为sineWave = vCM+0.5*vRef*sin(2*pi*toneBin/fftLen*(0 : nSamples-1))的正弦波时,若toneBin=415, fftLen=1024, nSamples=174072, 用code density测试一个理想的ADC得到的结果如下图。
( , 下载次数: 85 )

理想ADC的DNL和INL应该接近0,但是图上反应的DNL和INL都远远超过了0了,显然这种结果是不对。其原因在于,虽然输入信号满足了相关采样点条件,但是输入正弦波并对随机性不够,不满足nonharmonic的条件,这点可以从输出码的histogram看出来:
( , 下载次数: 82 )
如果不符合Full-Speed Testing of A/D Converters在其文章里提出测试信号要求,那么必然会得到错的结果。所以,建议楼主从以下方式产生测试正弦波sineWave = vCM+0.5*vRef*sin(2*pi*toneBin/nSamples*(0 : nSamples-1))。

最后评论一下二楼: ramp是找直接找transition level, code density是通过概率来找,两种方法都是IEEE Data Converter测试标准推荐的方法。方法不同但是对同样的adc应该得到同样的结果。

以上为个人一己之见,如有谬误,希望各位高手赐教!

主要参考文献:Full-Speed Testing of A/D Converters, JSSC 1984
作者: lichen867    时间: 2018-10-15 14:39
回复 3# quantus


    专门登录给你点赞!!
作者: nanke    时间: 2018-10-16 17:52
回复 3# quantus


   谢谢你的回复。
(1)斜坡信号求INL和DNL是根据定义来的,不会有错;而码密度法的推导游前提,怀疑会有误差。


(2)我建模仿真过一些例子,当ADC理想的时候两种方法求得的INL都接近0,但ADC引入误差时,两种方法求得的INL就会出现偏差,误差大有大有小没什么规律。实测由于没有高精度的斜坡信号源没试过。

(3)我建模的时候,输入正弦信号是相关的,和采样频率之比也是质数/nsample。误差不是这个原因。


  现在想想,两种方法INL曲线形状相似,只是幅度有差别还是能接受的。
作者: quantus    时间: 2018-10-16 19:57
回复 5# nanke


   

1. 仿真用ramp肯定是可以的,实测有好的信号源ramp也是可以的,我并没有说ramp不能用。码密度也是好方法,推导正确合理,但是使用的时候有小细节要注意

2. 如果是建模,在设置相同的条件,误差应该是可以复现,如果每次都不同,可以先检查下每次建模仿真的设置是否相同

3. 我给出的例子正是当输入正弦是相干信号,而测试inl仍有误的情况。建议楼主看看测试输出码的histogram是否同理想正弦信号的histogram分布是否近似,如果输出码的historgram同理想正弦信号的histogram分布相同,但仍然出现误差,我们可以一起看看出问题的地方

4. 误差是客观存在的,使用任何一种正确的方法都应该得到误差容许范围内的结果。 一个粗略的规则是动态测试和静态测试的结果应该大致吻合:比如一个12-bitADC 动态测试测出的ENOB是9, 那么不管用哪种方法测出来的INL都应该在3左右
作者: fuyibin    时间: 2018-10-17 08:19


   
回复  quantus


   谢谢你的回复。
(1)斜坡信号求INL和DNL是根据定义来的,不会有错;而码密度法的 ...
nanke 发表于 2018-10-16 17:52




目前普遍都是用码密度来测试,是一直基于统计分布的方法
ramp是一种简单直观的方法,大家都很清楚
随着时间的推移,adc的精度都在提高,大家发现ramp并不能满足测试的要求
ramp的产生无非就是用一个DAC,那DAC本身的INL, DNL, noise都是会有限制
可以这么说,高品质的ramp是很难得到的,但是高品质的sin是很容易得到的。
通过带通滤波,一个较差的信号源都可产生一个很好的单频点sin信号,而且噪声也被大幅度抑制
即使是ramp信号测试,也是要用统计平均的的方法来排除noise的影响
作者: dongdongdongs    时间: 2019-2-25 11:27
楼主,不好意思打扰了。不知道可不可以问您要一下测试ADC INL /DNL的matlab代码,本人学生在网上搜了很久也没有找到matlab代码,非常心痛,感谢楼主啦!
作者: 纵横    时间: 2020-5-22 23:44


   
dongdongdongs 发表于 2019-2-25 11:27
楼主,不好意思打扰了。不知道可不可以问您要一下测试ADC INL /DNL的matlab代码,本人学生在网上搜了很久也 ...


同求ADC INL DNL测试代码

作者: 纵横    时间: 2020-5-23 00:00


   
quantus 发表于 2018-3-20 00:36
前几天就看到这个帖子,今天有空上来试答一下。
首先贴一下我对同一个SAR ADC分别用code density of斜坡信 ...


请问一下大佬有ADC DNL、INL测试的代码吗,最近在做相关项目,对美信的代码看得不是很懂
作者: peterlin2010    时间: 2020-5-23 08:04


   
纵横 发表于 2020-5-23 00:00
请问一下大佬有ADC DNL、INL测试的代码吗,最近在做相关项目,对美信的代码看得不是很懂 ...


GOOGLE

https://www.mathworks.com/help/msblks/ref/inldnl.html

正弦波信号的码密度测试法
http://bbs.eetop.cn/thread-481310-1-1.html

关于Matlab仿真DAC的INL和DNL的问题http://www.edatop.com/mwrf/268430.html

veriloga
http://bbs.eetop.cn/thread-121663-1-1.html





作者: ericking0    时间: 2020-6-19 09:51


   
quantus 发表于 2018-3-20 00:36
前几天就看到这个帖子,今天有空上来试答一下。
首先贴一下我对同一个SAR ADC分别用code density of斜坡信 ...


之前一直有点这种感觉,但是没有你理解的这么透彻;
只要相关采样,就会有周期性,就会出现类似你最后一张图那样的直方图,
虽然看起来不是浴盆曲线,但是如果把相邻多个BIN能量合并,减少bin的数量,肯定概率还是会符合浴盆的;
增大总长度,让采样与输入频率更加互质一点,就可以把一些东西打的更散;
但是我的疑问是,比如我12b的resolution,我最少需要多少个点呢?请问有啥参考的推导没有啊?



作者: quantus    时间: 2020-6-21 17:13


   
ericking0 发表于 2020-6-19 09:51
之前一直有点这种感觉,但是没有你理解的这么透彻;
只要相关采样,就会有周期性,就会出现类似你最后一 ...


看码密度法84年的论文,里面有公式

作者: April1999    时间: 2021-11-12 11:38


   
quantus 发表于 2018-3-20 00:36
前几天就看到这个帖子,今天有空上来试答一下。
首先贴一下我对同一个SAR ADC分别用code density of斜坡信 ...


这个toneaBin是什么意思呀?

作者: testins    时间: 2023-4-4 09:49
也可以通过仪器来测试INL,DNL,
用高品质的源信号来测
参考链接:www.adchiptest.com
作者: userszhang    时间: 2023-5-29 11:49
留个坐标
作者: xiangsiersheng    时间: 2023-12-14 22:35


   
quantus 发表于 2018-3-20 00:36
前几天就看到这个帖子,今天有空上来试答一下。
首先贴一下我对同一个SAR ADC分别用code density of斜坡信 ...


你用两种方法仿真得到的dnl纵坐标不一样吧,好像数量级差别很大,另外两种方式得到的dnl inl形状完全相同,感觉不太合理,应为码密度法本来就是概率统计值,所以会有置信区间,以及LSB的误差β,既然是统计值就会存在误差,所以要用很多的采样点去减小误差。
再就是你说的想干采样的问题,我也试过用两种方法去衡量一个veriloga实现的7bit ideal adc,两种方法得到的dnl和inl不一样的。ramp得到的dnl inl都是0,但是码密度法的dnl在0.1以内变化,而且我尝试过采样七百万个点还是会有0.1lsb的误差,但是adc输出码的分布和计算值很契合,差别很小(所以dnl不为0),当然也可能是我用的美信的代码没改对,因为A 和mide_code都是输出码分布的函数


作者: feidaye    时间: 2024-11-20 17:17
回个贴,后面慢慢拜读
作者: LLTTH    时间: 2025-5-7 23:45
有同样的疑惑!尝试理解一下




欢迎光临 EETOP 创芯网论坛 (原名:电子顶级开发网) (https://bbs.eetop.cn/) Powered by Discuz! X3.5