马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
最近刚开始学习SAR ADC,老师说可以用下MATLAB仿真个简单的,在网上找到了源代码,可是没有说明,根本看不到,有哪位大佬能帮下忙,或者推荐下如何初步入手SAR ADC吗。
function [Dout, Y] = SAR_ADC (N, Vref, Vcm, Vi)
D = zeros (1,N);
Vip = Vcm + Vi/2;
Vim = Vcm - Vi/2;
CP = zeros (1,N+1);
CN = zeros (1,N+1);
dev = 0.005;
Cp0 = 0; %% The parasitic cap to gnd. Not used here but maybe needed one day.
CP(1) = 1;
CN(1) = 1;
for i=2:1:N+1
CP(i) = 2^(i-2)*(1 + dev*randn/2^((i-2)/2));
CN(i) = 2^(i-2)*(1 + dev*randn/2^((i-2)/2));
end
CP_tot = sum(CP);
CN_tot = sum(CN);
Vxp = Vcm - Vip + Vref*CP(N+1)/CP_tot;
Vxn = Vcm - Vim + Vref*(CN_tot-CN(N+1))/CN_tot;
D(N) = (Vxp<Vxn);
for i=N:-1:2
Vxp = Vxp + Vref*CP(i)/CP_tot + (D(i) - 1)*Vref*CP(i+1)/CP_tot;
Vxn = Vxn - Vref*CN(i)/CN_tot + (1 - D(i))*Vref*CN(i+1)/CN_tot;
D(i-1) = (Vxp<Vxn);
end
Dout=0;
for i=1:1:N
Dout = Dout + D(N+1-i)*2^(N-i);
end
% for i=1:1:N
% Dout(i)=D(N+1-i);
% end
Y = 0;
for i=N:-1:1
Y = Y + (D(i) - 0.5)*Vref/(2^(N-i));
end
end
|