⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dnlandinlofad.m

📁 用MATLAB仿真AD设计中的DNL和INL计算
💻 M
字号:
%输出的数字码字采用MATLAB脚本进行分析,从Smartspice仿真软件输出
%的每个数字码字转换为相应的模拟信号。下面是MATLAB计算DNL和INL的
%脚本文件。
clc;
clear;
dataTmp=rand(1024,10);
data=round(dataTmp);
index=size(data);
%Columns for adcdata matrix:
vs=1;d10=1;d9=2;d8=3;d7=4;d6=5;d5=6;d4=7;d3=8;d2=9;d1=10;
Vout=1;VsamPle=2;Vshifted=3;
%OutPut code data retrieval
j=1;k=1;
%Dout=rand(1024,3);
for i=1:index(1,1)%每一个for循环将data中的第i行加权和赋值给Dout的第一列第j个元素;
    %将data的第k(k=i)行第1列的元素赋值给Dout的第二列第j个元素;
    Tmp1=data(i,d10)/2+data(i,d9)/4+data(i,d8)/8+data(i,d7)/16;
    Tmp2=data(i,d6)/32+data(i,d5)/64+data(i,d4)/128+data(i,d3)/256+data(i,d2)/512;
    Tmp3=data(i,d1)/1024;
       Dout(j,VsamPle)=data(k,vs);
   Dout(j,Vout)=1.25*(Tmp1+Tmp2+Tmp3);

  k=k+1;
  j=j+1;
end
totalCodes=size(Dout);%totalCodes=(index(1,1),2);
LSB=(Dout(1024,Vout)-Dout(1,Vout))/1024;
%End of outPut code data retrieval
idealLSB=1.25/1024;

for i=1:totalCodes(1,1)
idealVT(i)=(i-1)*idealLSB;
end
Offset=Dout(:,VsamPle)-idealLSB;
%for i=1:totalCodes(1,1)
Dout(:,Vshifted)=Dout(:,Vout)-Offset;
%end
 %DNL and INL calculation
for m=1:totalCodes(1,1)-1
 DNL(m)=(Dout(m+1,Vshifted)-Dout(m,Vshifted)-LSB)/LSB;
 INL(m)=(Dout(m,Vshifted)-idealVT(m))/LSB;
end
plot(DNL,'r');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -