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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 316|回复: 1

[求助] DNL和INL代码哪里有问题(附代码)

[复制链接]
发表于 2024-3-28 22:40:44 | 显示全部楼层 |阅读模式

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

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

x
【求助】:用matlab行为级建了一个12位ADC的模型,输入正弦信号,加了随机的噪声,除此之外的非理想因素都没有加。现在写了一段计算DNL和INL的代码,但是输出的结果感觉不对,感觉DNL和INL都有问题(如下图),求助各位能不能帮忙看看代码哪里出了问题?(也可以加微信交流:smj13564680659)




  1. %输入重建好的码值code
  2. dPnts=length(code);
  3. code=floor(code)+1-min(code); % floor向下取整。使其在最小值为1,即将数据重新定位到从1开始。
  4. numLSB=2^numbit;
  5. count=zeros(1,max(code)); +10.count=zeros(1,numLSB);
  6. for i=1:dPnts
  7. count(code(i))=count(code(i))+1; %遍历输入数据 code,统计每个代码出现的频率
  8. end
  9. figure
  10. bar(count)
  11. a=count(1:(numLSB/2));
  12. b=count((numLSB/2+1):end);
  13. [count_max1,point_start]=max(a);
  14. [count_max2,point_end]=max(b);
  15. point_end=point_end+numLSB/2;
  16. count_del=count(point_start:point_end);
  17. dPnts_del=sum(count_del(1:end));
  18. for i=1:length(count_del)-1
  19. H(i)=-cos(pi*sum(count_del(1:(i+1)))/dPnts_del)-(-cos(pi*sum(count_del(1:i))/dPnts_del));
  20. DNL(i)= H(i)/mean(H)-1;
  21. end
  22. INL= cumsum(DNL);

  23. DNL_DEL=DNL(1:length(count_del)-1);
  24. INL_DEL=INL(1:length(count_del)-1);
  25. [DNL_max,DNL_max_point]=max(DNL_DEL);
  26. [DNL_min,DNL_min_point]=min(DNL_DEL);
  27. fprintf('    Minimum DNL : DNL(%6d) = %5.2f LSB\n',DNL_min_point,DNL_min);
  28. fprintf('    Maximum DNL : DNL(%6d) = %5.2f LSB\n',DNL_max_point,DNL_max);
  29. k_DNL = 1:length(count_del)-1;


复制代码


1.png
2.png
发表于 2024-3-29 06:36:48 | 显示全部楼层
dnl 是不是最后多算了一位2^12-1 就足够了,最后一个偏差就消失了   inl 表示系统出现了偏差,需要调整一下adc,没有找到最优曲线。   纯属自己想的,不知道对不对。  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-28 13:07 , Processed in 0.019102 second(s), 8 queries , Gzip On, Redis On.

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