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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6987|回复: 18

[求助] 请教用maxim提供的程序测试DNL和INL

[复制链接]
发表于 2012-3-23 13:35:28 | 显示全部楼层 |阅读模式

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

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

x
输入的数据是十进制还是二进制阿?为什么我无论提供什么样的数据格式,总是提示我ADC not clipping啊,有知道的吗?谢谢
 楼主| 发表于 2012-3-23 15:35:21 | 显示全部楼层
有没有高手告知,我把输入电平加到1.8v了,还是说ADC not clipping,我想是我输入的数据有问题,我是直接从逻辑分析仪采样的数据,二进制,十进制,无符号的十进制都试过了,还是同样的提示。本人最近刚开始做这个事情,公司内部也无人告知,愁煞人啊
发表于 2012-3-23 17:21:17 | 显示全部楼层



我记得maxim 的 那个程序好像是10进制输入的
他说你没有clipping,很正常啊,
那个程序需要你输入sine wave,而且要有一点clipping,也就是输入信号超过full scale
产生一点点clip,
你可能需要修改一下那个matlab程序,应该就可以用了
 楼主| 发表于 2012-3-26 10:24:30 | 显示全部楼层
回复 3# fuyibin


    非常不好意思,我现在才回复,我的adc的full scale是1v,可是我试过1.05v,1.15v,1.25v,1.6v,1.8v的正弦波输入都不行,另外我的adc是12位的,您看我的设置可以吗?fid=fopen(filename,'r');
numpt=32768;  %input('Enter Number of Data Points:  ');
numbit=12;  %input ('Enter ADC Resolution:  ');
mid_code=2048;  %input('Enter Mid-Code (Mean Code):  ');
 楼主| 发表于 2012-3-26 10:25:43 | 显示全部楼层
整个程序如下:
filename=input('Enter File Name: ');
if isempty(filename)
   filename = 'listing';
end
fid=fopen(filename,'r');
numpt=32768;  %input('Enter Number of Data Points:  ');
numbit=12;  %input ('Enter ADC Resolution:  ');
mid_code=2048;  %input('Enter Mid-Code (Mean Code):  ');

%for i=1:13,       
% fgetl(fid);
%end
[v1,count]=fscanf(fid,'%f',[2,numpt]);
fclose(fid);

v1=v1';
code=v1(:,1,;
code_count=zeros(1,2^numbit);

for i=1:size(code),
   code_count(code(i)+1)=code_count(code(i)+1) + 1;
end

if code_count(1) == 0 | code_count(2^numbit) == 0 | ...
  (code_count(1) < code_count(2)) | (code_count(2^numbit-1) > code_count(2^numbit))
   disp('ADC not clipping ... Increase sinewave amplitude!');
   break;
end

A=max(mid_code,2^numbit-1-mid_code)+0.1;
vin=(0:2^numbit-1)-mid_code;       
sin2ramp=1./(pi*sqrt(A^2*ones(size(vin))-vin.*vin));

while sum(code_count(2:2^numbit-1)) < numpt*sum(sin2ramp(2:2^numbit-1))
  A=A+0.1;
  sin2ramp=1./(pi*sqrt(A^2*ones(size(vin))-vin.*vin));
end

disp('You Have Applied a Sine Wave of (dBFS): ');
Amplitude=A/(2^numbit/2)
figure;
plot([0:2^numbit-1],code_count,[0:2^numbit-1],sin2ramp*numpt);
title('CODE HISTOGRAM - SINE WAVE');
xlabel('DIGITAL OUTPUT CODE');
ylabel('COUNTS');
axis([0 2^numbit-1 0 max(code_count(2),code_count(2^numbit-1))]);
code_countn=code_count(2:2^numbit-1)./(numpt*sin2ramp(2:2^numbit-1));
figure;
plot([1:2^numbit-2],code_countn);
title('CODE HISTOGRAM - NORMALIZED')
xlabel('DIGITAL OUTPUT CODE');
ylabel('NORMALIZED COUNTS');

dnl=code_countn-1;
inl=zeros(size(dnl));
for j=1:size(inl')
   inl(j)=sum(dnl(1:j));
end

%End-Point fit INL
%[p,S]=polyfit([1,2^numbit-2],[inl(1),inl(2^numbit-2)],1);

%Best-straight-line fit INL
[p,S]=polyfit([1:2^numbit-2],inl,1);
inl=inl-p(1)*[1:2^numbit-2]-p(2);

disp('End Points Eliminated for DNL and INL Calculations');
figure;
plot([1:2^numbit-2],dnl);
grid on;
title('DIFFERENTIAL NONLINEARITY vs. DIGITAL OUTPUT CODE');
xlabel('DIGITAL OUTPUT CODE');
ylabel('DNL (LSB)');
figure;
plot([1:2^numbit-2],inl);
grid on;
title('INTEGRAL NONLINEARITY vs. DIGITAL OUTPUT CODE');
xlabel('DIGITAL OUTPUT CODE');
ylabel('INL(LSB)');
 楼主| 发表于 2012-3-26 10:28:27 | 显示全部楼层
晕,笑脸是:)
发表于 2012-3-27 22:20:16 | 显示全部楼层
tHANK YOU LANDLORD ....
发表于 2012-9-29 17:24:27 | 显示全部楼层
XIEXIE
发表于 2013-6-6 21:28:10 | 显示全部楼层
代码很有帮助
发表于 2014-4-24 21:59:31 | 显示全部楼层
XIEX IE
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-6-1 19:41 , Processed in 0.028217 second(s), 7 queries , Gzip On, Redis On.

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