📄 dnlandinlofad.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 + -