|
這個程式是我當初作DAC時我老板給我的範本. @6 v* L. g& A8 K5 B. V# r, R$ x6 C2 _
當然,這只是一個產生DAC的數位碼的sin波產生器的MATLAB程式
% g" D* E+ q8 p測試DAC的程式則是另外一個程式,但因為原始程式並不是我撰寫的,故而無法貼在這裡分享
# q! s5 e4 ^' i- v j% L如果,你想走類比且DAC or ADC這條路,熟悉MATLAB是一定要會的工具程式* ?; `( G3 O' T, d$ @6 ^
若無法熟悉操作MATLAB這套軟體,對於日後設計DAC or ADC將會是一條很艱辛的路程" ?+ W3 o/ l6 q3 }
( N( F+ c! r/ L- }/ O7 c: R
%clear all
7 ]/ y2 k. e* y3 U%fid=fopen('test.txt','w')+ K0 N- J. B, c W8 j3 p% O
5 g) n8 o$ [1 D, f% h1 A%% 10MHz data-input speed4 l; [- g( ]' G+ V
%for M=1:1:1024
4 F( Q% _: U3 t6 y% T=M-1;" P$ f3 B4 w2 J- H9 n; i' H6 |0 z3 F
% from=(50*T)+45; %DUAL DAC measure time
B$ z0 `" l4 N3 |% to=50+(50*T);
W$ i, E0 \7 Q/ j3 k! l# B; k% fprintf(fid,'.MEASURE TRAN A%g RMS v(daci_outp) from=%gn to=%gn\n',M,from,to);
1 O& }* E# V1 x- h%end
# w4 A: f6 O: n7 Y
7 q6 n1 Z8 |% {# X%fid=fopen('test2_2.txt','w');
: G% b2 j6 n2 G: h4 Z+ Y1 b%for i=1:1 2^20)
$ a1 a8 ^4 j- X% value=rand(1);
" B3 d+ h, u$ G% fprintf(fid,'%g\n',value);0 Y J5 H# v. J: ~% P; V3 `6 g8 F
%end* J2 r' t1 H; S! q- w9 V# Q
%fclose(fid);' _7 [2 g2 s7 ^ b
" T# @! ]4 T9 B. L9 ?5 J' Z- o8 [
8 m( g* A3 T L5 g, e4 `" S0 g; ?clock_1000=1000/4000;
# s8 ^& F- _& ?! J! _1 u. U" t8 O%%fid=fopen('test1.txt','w')
7 Y" {+ o5 A! ]fid=fopen('Measure_4G.txt','w');& N6 a( Y- p6 v2 ?. w' a' ~
for N=1:1 2^20)
. H4 T2 ?8 N; e: d4 z& w7 g value3=clock_1000*N;
Z& U5 T3 [) [. L1 C3 }/ P%% fprintf(fid,'%g Measure_Point=%gn\n',N,value3);% e2 L/ t" Q/ q8 x5 T* ?' E0 M& c
fprintf(fid,'%g %g\n',N,value3);
7 ^' L- S$ g7 o' \5 d( k+ ~; Tend& i0 y$ E/ {1 s" \( g+ T
fclose(fid);
" ]* G1 W3 l& V2 K: q: H( g$ E( h5 K$ h
5 P8 `0 j w+ w* N, Y2 [
clock_88=1000/88; 7 O. n6 u( M2 v8 {% k6 w2 W# L
%%fid=fopen('Measure_88MHz.txt','w'). [0 g8 E3 m& ]+ D6 } X, x
fid=fopen('Measure_88MHz_round.txt','w')
. x4 J) C$ o, nfor M=1:1 2^14): V8 H; ~1 `2 ]
value1=clock_88*(M+1);
$ ~: C+ B* ~$ U' Y. B value2=value1-(clock_88/8)*1;
6 z. X$ O0 _; \" w9 w1 Y value3=round(value1-(clock_88/8)*1);5 g- }% F! O4 Q8 m2 s8 K
fprintf(fid,'%g\n',value3);
3 @0 K1 E/ @4 n# d1 B+ i& p3 }%% fprintf(fid,'%g Clock=%gn Measure_Point=%gn Round_Value=%gn\n',M,value1,value2,value3);
/ g! p3 x- R( L3 x( E D0 cend% K1 k6 N) w3 M" l
fclose(fid); |
|