微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微波和射频技术 > RFIC设计学习交流 > SOS——求救关于DAC的INL与DNL的仿真

SOS——求救关于DAC的INL与DNL的仿真

时间:10-02 整理:3721RD 点击:
各位高手,紧急求救,我现在做一个十位的电流舵DAC,我想对其dnl与INL进行仿真以确定性能,我以前没有做过这方面的,周围人也没有做过的,希望高手提供切实可行的方案,谢谢!
令,我看到有帖子说,先用HSPICE进行TRAN仿真,然后将结果导入至MATLAB,进行运算,输出DAC CODE与INL/DNL的扫描图像,如果这个办法确实可行的话,还热切盼望各位高手提供实现的细节,谢谢!
十万火急啊!在线等~

自己顶一下,以免被沉下去了!请小编及各位高手帮忙了!

再顶,要不又要沉下去了!高手啊!你在哪儿呢?救星啊!你又在哪儿呢?

不用叫了,牛人呢一般不来这些论坛的,来了也很可能懒得回答你.这个论坛呢最大的优点是资源共享,至于大家的交流,说实在,失望得很.

方法沒錯阿
tran全跑完後  抓出每個code的輸出丟進matlab
matlab裡頭算的就是書本上那些公式

同问!

yes, i also want to know.

同样的问题

不知小编解决了没?也想知道怎么解决啊

整个过程的时序可由单片机或FPGA控制
1.用Matlab产生一个斜信号,
2.经过一个高位DAC
3.输入到待测ADC
4.写Matlab程序(根据DNL,iNL的定义)

若还有不清楚,可参考台湾CIC的一篇教程,讲得很清楚,若还有不清楚,可向我索取(资料在家里的本本上,公司没有)最近刚做玩这个,欢迎牛人们共同讨论

问一下,你的DAC使用温度码吗?用的话用了几位?

我用了一个24/16位两用的

It is impossible to verify the true DNL/INL in that way because there is no mismatch data in your simulations. Weverify DNL/INL only on system level which modeling all mismatch data(Monte Carlo). However, your simulation can tell the TF, in which you can see it functions well or not.

fengchengyao@yahoo.com.cn
麻烦传下台湾cic的资料

呃,没有一个跟我一样的问题啊

Prof3 所言甚是
因為 SPICE simulates transistor-level design 一般不含 transistor mismatches
造成 INL / DNL 貌似很小
實際 silicon measurement 完全沒有這種好的表現
一般對 Nyquist-rate DAC (or ADC) 的 INL/DNL 分析
(before circuit design is conducted)
多半先進行 high-level behavioral modeling and analysis
去決定 LSB unit-component 的 dimension
同時決定 thermometer decode (MSB) & binary-weighted decode (LSB) 的 No. of bits
在 layout 前再作 SPICE Monte Carlo (transient) simulations ...

附上一個 behavioral analysis of (INL and DNL) MATLAB script

clear
clf
format long e
MSB = 6;
LSB = 4;
N = MSB + LSB;
iFull = 1;
iUnit = iFull / (2 ^ N);
iMSB= iFull / (2 ^ MSB);
Stdev = 0.03; % Standard deviation of the unit current source
% \Delta(I_%) = sqrt(2) * Stdev;
for sample = 1: 100
% The standard deviation of the normal distribution
% (pseudo) random numbers should be very close to 1.
errLSB = randn(1, (2 ^ LSB) - 1);
iArrayLSB = 1 + Stdev * errLSB;

errMSB = randn(1, (2^MSB) - 1) / sqrt(2^LSB);
StdMSB = std(errMSB);
iArrayMSB = 1 + Stdev * errMSB;

% Real voltage output
v(1) = 0;
for i = 1: 2^MSB
for j = 1: 2^LSB - 1
v((i-1) * 2^LSB + j + 1) = v((i-1)*(2^LSB) + j) + iUnit * iArrayLSB(j);
end
if i < 2^MSB
v(i * 2^LSB + 1) = v((i-1) * 2^LSB + 1) + iMSB * iArrayMSB(i);
end
end
% ideal voltage output
i = 1: 2^N;
p = polyfit(i, v, 1);
v_ideal(i) = p(1) * i + p(2);
vlsb = (v_ideal(2^N) - v_ideal(1)) / (2^N-1);
INL(i) = (v_ideal(i) - v(i)) / vlsb;
INL_max(sample) = max(abs(INL));

i = 1: 2^N -1;
DNL(i) = (v(i+1) - v(i)) / vlsb - 1;
DNL_max(sample) = max(DNL);
end
% hist(INL_max,0:0.05:1), xlabel('INL'), ylabel('Sample count'), title('INL Histogram (\sigma = 0.3%), 10-bit DAC'), grid
% axis([0 1 0 15]);
hist(DNL_max, 0: 0.05: 1), xlabel('DNL'), ylabel('Sample count'), title('DNL Histogram (\sigma = 0.3%), 10-bit DAC'), grid

希望代码能有帮助

楼上的好人啊,这个我也需要

请问这个程序主要是做什么用的啊,输入实际的测试数据做输入吗?谢谢!

markmark

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top