|
這個程式是我當初作DAC時我老板給我的範本& L( L9 [- f* A% a' n
當然,這只是一個產生DAC的數位碼的sin波產生器的MATLAB程式" j1 I8 N/ S, {8 v6 U. v
測試DAC的程式則是另外一個程式,但因為原始程式並不是我撰寫的,故而無法貼在這裡分享
0 _8 l3 F( r" u: h* B: X7 M6 R! p; z如果,你想走類比且DAC or ADC這條路,熟悉MATLAB是一定要會的工具程式6 L# c4 Y5 n7 D0 C; U) E+ r
若無法熟悉操作MATLAB這套軟體,對於日後設計DAC or ADC將會是一條很艱辛的路程
3 [! ]+ ^: k& a1 z' f# d
/ d p" o# d. k l- n! U1 u* X%clear all
: W1 K5 T: l$ ~2 P1 @* b2 q& l# S1 T%fid=fopen('test.txt','w')) q: ?; o2 p/ L
' y- |& w# \' ^! O2 L$ Y: e
%% 10MHz data-input speed
+ e1 X. k r- {/ z/ |5 ]# F$ A%for M=1:1:10248 q1 o2 L | S7 ?9 t& p& |
% T=M-1;- }1 q7 N3 Q4 T V$ d1 o8 R
% from=(50*T)+45; %DUAL DAC measure time
) q( ?8 s/ n) y" {! D+ |% to=50+(50*T);5 K( T* U/ g5 {, C$ h" T
% fprintf(fid,'.MEASURE TRAN A%g RMS v(daci_outp) from=%gn to=%gn\n',M,from,to);. J! t, X1 c) r* V) T
%end
* V1 s& x4 M2 ]; i/ K* F- t+ H! z M* ^
%fid=fopen('test2_2.txt','w');* y; f4 g; S& ?2 b/ Z9 `, N, ^
%for i=1:12^20)
! U) U: Y7 k8 `: @/ g2 p. ~% value=rand(1);0 W6 {1 u; L$ p0 O
% fprintf(fid,'%g\n',value);. D6 S+ ~: }: h5 \8 s8 B
%end. P/ M |! p- K$ A. E; x% A# Y
%fclose(fid);
" z9 z: @' J1 `! z3 S
% S4 F. W- p3 W2 h( H5 [0 A% O7 {1 [2 S1 B; @
clock_1000=1000/4000;
1 ^6 @% ? w9 ~! Y: Y; w%%fid=fopen('test1.txt','w')
% k' f0 ^& ]0 `; @7 P* afid=fopen('Measure_4G.txt','w');
; s1 |5 B; P7 o! `1 _for N=1:12^20)
5 O2 H5 _/ d$ n4 @. N: w' i value3=clock_1000*N;. f& E, E% H3 ^3 b
%% fprintf(fid,'%g Measure_Point=%gn\n',N,value3);
6 z' a$ |0 r$ w" y: V3 v fprintf(fid,'%g %g\n',N,value3);1 Q, _! ~1 C( a9 C, ^3 _1 j
end2 w9 `( [$ ^6 w3 x
fclose(fid);% Z8 P+ b/ w0 ~, ^- w$ o7 v( `
4 G& D) W. n( x6 L6 m( p. Y( S! g/ _. }& w( I' Y
clock_88=1000/88;
N* C+ @) N: y: D%%fid=fopen('Measure_88MHz.txt','w') K4 x6 N8 F. g" ?5 `* I
fid=fopen('Measure_88MHz_round.txt','w'), z/ N+ E4 m/ Q
for M=1:12^14)8 k6 R, c6 r" R% V
value1=clock_88*(M+1);2 e! Q+ l. y: I# W: Q6 e
value2=value1-(clock_88/8)*1;1 K3 H1 L7 ~. ?# R: S% b
value3=round(value1-(clock_88/8)*1);& }* E- H9 _3 v0 X
fprintf(fid,'%g\n',value3);
* J9 T# k+ S0 s7 S1 t1 z8 q3 T%% fprintf(fid,'%g Clock=%gn Measure_Point=%gn Round_Value=%gn\n',M,value1,value2,value3);
) d; \ R, \, T2 ~end
; G3 W/ y: A, G0 i2 ffclose(fid); |
|