Chip123 科技應用創新平台

標題: 請問要怎麼去跑出DAC的動態模擬?拜託各位,極需要動態模擬的結果。 [打印本頁]

作者: bancroft    時間: 2010-6-2 02:25 AM
標題: 請問要怎麼去跑出DAC的動態模擬?拜託各位,極需要動態模擬的結果。
由於我現在設計完DAC電路,可是我只會跑DNL和INL的靜態模擬,
' J: F- K- L: d: _非常需要動態模擬的結果,可是不知道怎麼用。  L/ Z! m6 B) v, E$ I- t0 u
: I  E9 A9 O- j5 q% @+ z: y+ v
ADC要模擬應該是輸入一個SIN波,可是DAC輸入是數位值,要輸入什麼值才對?
4 o/ X5 A3 q, P+ e, D
7 I' N: x; Y9 o- V$ f另外好像就是跑完模擬以後,需經由Matlab跑出動態模擬波形,
' A: q, K  d) I可是我完全不知道動態模擬的Matlab Code應該怎麼寫?0 r  V* N1 ~6 T. S: o' }
2 g) v6 w% f4 m3 V% b# o. I
麻煩板上各位幫忙小弟我,我真得很急需要跑出動態模擬波形,
, [$ ?- ]0 V! e9 U3 g* d感激不盡,謝謝。
作者: finster    時間: 2010-6-12 09:01 AM
論壇有相關的文章討論,你找一下應該有
# J) \, k& ^" C" N至於DAC的動態模擬,你要先在matlab上把一個sin波轉成你DAC的數位碼,然後再把這些數位碼餵到你DAC的電路作模擬,然後再將輸出的analog output voltage記錄起來,將這些值再丟到matlab去跑出相關的值出來,這是目前量測DAC的流程
作者: hitxiaojun    時間: 2010-6-15 09:26 AM
我也特别想知道,finster大大能不能给一个示例啊???
作者: finster    時間: 2010-6-16 01:16 AM
這個程式是我當初作DAC時我老板給我的範本9 {. k$ ~% L- l" ~% u
當然,這只是一個產生DAC的數位碼的sin波產生器的MATLAB程式; _+ D" h) ?- m$ q
測試DAC的程式則是另外一個程式,但因為原始程式並不是我撰寫的,故而無法貼在這裡分享2 |/ O% v" K# N+ W
如果,你想走類比且DAC or ADC這條路,熟悉MATLAB是一定要會的工具程式
) v* j$ z) d6 n+ z5 y5 D8 F若無法熟悉操作MATLAB這套軟體,對於日後設計DAC or ADC將會是一條很艱辛的路程+ O& E: K  \- X* d; p

+ m* {+ h. i; [3 G. r%clear all' @! A$ S& R4 i1 ~
%fid=fopen('test.txt','w')
2 F( J0 B9 X1 a6 D: m# x; \; e8 T: g, q# d# J8 A
%% 10MHz data-input speed" E0 F. X) t( T4 \2 ~( S( T: L- `
%for M=1:1:1024
, ]4 T& Y% n1 {. {/ A; G% a3 D! P9 G%       T=M-1;
. u* G7 E+ A% b) i: A. J%       from=(50*T)+45; %DUAL DAC measure time
. W# T" @5 e9 p8 [5 E! g6 x%       to=50+(50*T);8 D2 X0 f0 n1 u  p
%       fprintf(fid,'.MEASURE TRAN A%g RMS v(daci_outp) from=%gn to=%gn\n',M,from,to);( y. N! V$ r- Y% a4 o8 ?
%end
/ Z' H+ E2 e* N& J5 W/ X, T; Y7 h6 }7 V3 X' ]
%fid=fopen('test2_2.txt','w');. l& M3 s3 N9 E: i# ~7 Z! y
%for i=1:12^20)
5 Z7 m! n7 g8 T4 w7 A3 W$ D' ~%    value=rand(1);$ _7 R% ?! u( i/ l# l2 y& F' f
%    fprintf(fid,'%g\n',value);% M9 K, I7 z, b/ C
%end, s4 I. A& [* |+ h& G
%fclose(fid);
  d1 d' E" S0 v7 ~3 w7 K* |( `5 u# U7 \# u, x" c7 q8 l9 v! d0 x

, j5 r8 y- S# e% j6 Kclock_1000=1000/4000;
( |5 \$ t8 E5 y) g+ R%%fid=fopen('test1.txt','w')# R0 e+ ~) ?( {+ d. x8 F2 U
fid=fopen('Measure_4G.txt','w');
; j$ q+ G9 w; V( \2 S( gfor N=1:12^20)
% Z$ ?. z0 c! C0 ]    value3=clock_1000*N;
8 A3 y& T4 I' I7 Y" e- _5 d%%    fprintf(fid,'%g  Measure_Point=%gn\n',N,value3);! r0 U( o! y/ n4 h; {
    fprintf(fid,'%g  %g\n',N,value3);( ^; [4 h4 b6 W; P2 v  N2 W
end( H* H) N* ~' r) g. G, t! l
fclose(fid);' n1 V) d8 m2 z2 b8 l0 x0 W

( ^* d# L/ d8 B7 {. t' s  M! G# J8 e7 `
clock_88=1000/88;  ' f2 _0 {, h# M: c; U; \( T0 F$ A
%%fid=fopen('Measure_88MHz.txt','w')
$ k& r$ j  |+ o; r% {, u1 x# nfid=fopen('Measure_88MHz_round.txt','w')3 J/ ~5 a2 F  w6 J2 @/ V5 S0 N
for M=1:12^14)
3 q* k$ i* i3 k* W  value1=clock_88*(M+1);
8 X+ @6 p1 L& e$ n8 |6 H  value2=value1-(clock_88/8)*1;' G4 R: g: ~/ `: R# H9 y
  value3=round(value1-(clock_88/8)*1);
+ m# f8 L, s1 \! |( H. ]4 H( ^" F  fprintf(fid,'%g\n',value3);; c" @4 _" q5 @, C8 R6 b( v( A( M; B
%%  fprintf(fid,'%g   Clock=%gn   Measure_Point=%gn   Round_Value=%gn\n',M,value1,value2,value3); & c+ A6 `/ u7 |, C9 M
end
& {2 x# d9 m  Z4 y9 [fclose(fid);
作者: hitxiaojun    時間: 2010-6-20 03:48 PM
非常感谢finster大大的无私分享与方向指导,我去深入学习一下matlab




歡迎光臨 Chip123 科技應用創新平台 (http://chip123.com/) Powered by Discuz! X3.2