SAR ADC 码密度测试结果的疑问
最近在测试一个10bit的SAR结构ADC(电源电压3.3V),采用14bit精度的信号发生器产生模拟输出,采用线性和SIN波两种方式测试,DNL均在+/-0.5LSB,INL的结果有如下两种情况;
采用线性的波形,测试结果有偶然性,有时INL很好(+/-0.5LSB),有时很差(+/-3LSB),INL很差时,就是在9mV左右地方Dout开始从0变为1,在3.291V左右的地方Dout已经为1023,中间没有失码,即有一定的gain error。
采用SIN的波形,INL很差(+/-3LSB),主要是在0和1023附近,中间的地方INL相对较小。采用码密度结果如下:
请牛人帮我看看,这种情况是信号发生器产生模拟输出有斜率偏差的问题还是ADC 的问题?目前,我没有想到方法验证是哪个的问题?
若是信号发生器的问题,有什么解决的方法吗?
若是ADC的问题,INL产生偏差的来源可能是哪些?谢谢!
这次有图有真相了,帮顶
我也很想知道,坐等高人回答
从现象来看,多半是信号发生器产生的波形的头尾的非线性引起的。所以做测试时,建议将sine波的幅度取得稍微比ADC满幅大一些,然后去掉最大和最小的码。
只要你测到的数据会出现连续的最小和最大的code就可以了,比如1.05倍,取得太大,会出现很多的最大和最小的code,也没必要
首先,我们在测试ADC的DNL,INL时,对于10-bit 来说,0和1023是不计入DNL/INL的。默认DNL(0)=0,DNL(1023)=0.
其次,INL计算没有归一化。建议你先找找DNL/INL的标准测试方法及定义以及业界的标准算法。
测试时,目前主要有两种方法:
1.输入超出满摆幅三角波,注意不是单个的ramp信号。因为这个时候code是均一分布,所以再通过码密度的方式可以很方便地来处理数据
2.输入正弦信号,这个时候要注意的就是,虽然正弦信号很干净,但是它的码密度不是均一分布(也就是每个code出现的概率不一样),所以处理头尾的code时,就和你的输入信号幅值有直接的关系。你要是比满摆幅大一点,正弦波就被削顶了,计算概率的时候就会有偏差;你要是比满摆幅小一点,就有一些code出不来。所以要不停地试,最好是能刚刚夹住所有code。
就说这么多,剩下的事要靠你自己了:)
very good !
你好小编 请问你有计算 INL DNL的MATLAB 代码吗?码密度方式
SAR ADC 码密度测试结果的疑问