在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 11652|回复: 16

[讨论] 质疑美信代码正弦波输入+码密度法计算ADC INL的准确性

[复制链接]
发表于 2018-2-27 18:19:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x


如题,我在建模比较斜坡信号+码密度法,还是正弦信号+码密度法计算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和正弦波码密度法是一致的吗?



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

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

理想ADC的DNL和INL应该接近0,但是图上反应的DNL和INL都远远超过了0了,显然这种结果是不对。其原因在于,虽然输入信号满足了相关采样点条件,但是输入正弦波并对随机性不够,不满足nonharmonic的条件,这点可以从输出码的histogram看出来:

325

325

如果不符合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
发表于 2018-10-15 14:39:33 | 显示全部楼层
回复 3# quantus


    专门登录给你点赞!!
 楼主| 发表于 2018-10-16 17:52:58 | 显示全部楼层
回复 3# quantus


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


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

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


  现在想想,两种方法INL曲线形状相似,只是幅度有差别还是能接受的。
发表于 2018-10-16 19:57:58 | 显示全部楼层
回复 5# nanke


   

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

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

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

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




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


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


同求ADC INL DNL测试代码
发表于 2020-5-23 00:00:40 | 显示全部楼层


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


请问一下大佬有ADC DNL、INL测试的代码吗,最近在做相关项目,对美信的代码看得不是很懂
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-28 01:59 , Processed in 0.028777 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表