|
先回答第一個問題
2 r7 W" f" U; Y% w; ]$ o% E- ?你的MATLAB程式我大概看了一下,發覺到AD10應該是一個由別人自行撰寫的運算函式,而因為你在MATLAB程式中並沒有這個函式,同時也沒有呼去這個函式,故而,你在執行MATLAB程式時,當然會出現錯誤訊息
) n2 N8 w2 J6 H7 I9 o" }$ U2 }所以,如果這不是你自己寫的MATLAB程式,那我只能說你的MATLAB程式並不完整,也許,這是別人故意留一手的吧
( ]! b7 f7 x5 y! @
% s' \3 ^' k+ Z5 W8 Q8 p1 V+ g! V再來,在ADC中的Sample and hold電路若是用SC電路,是會用non-overlap clock,故而會有兩個clock0 l* ~, {+ r: w, M8 _7 s2 v2 U3 F7 n
但,源頭的clock只有一個,而這個clock會透過non-overlap circuit去產生兩個時間差的clock
* X" ~ N, N& Q* ^! t一般而言,ADC的數位電路所需的clock通常都是由源頭的clock作為基準,然後將數位信號輸出,故而,在使用.measure時,所參考的時間及頻率也該是以這個源頭的clock為主,而不是由non-overlap circuit所產生出來的兩個時間差clock,除非,你的ADC電路並沒有包Sample and hold circuit(我不清楚你的電路架構為何,但,ADC一般而言一定要有Sample and hold circuit), e- P& D) L4 t
再來,我看了一下你的取樣頻率為5.12Mhz,這是很低的clock頻率,所以,照理來說這麼低的頻率,你的架構應該是採用SAR架構的ADC吧,那你的輸入信號頻率為何呢??另外,你的.tran的時間多久呢???還有,你是幾個bit的ADC呢???
1 s- j4 Y8 N# B6 ~7 C5 Z舉個例來說,假如你是4-bit ADC,輸出分別為D3,D2,D1,D0,且clock為1MHz,所以使用.measure應該為. r. J" @2 B0 x- ` _2 j5 h1 d( [
.MEASURE TRAN DIGOUT_D3_t1 find V(D3) AT=5.2us% ]: z5 ~# {# ^1 W
.MEASURE TRAN DIGOUT_D2_t1 find V(D2) AT=5.2us
% j; [2 M! L9 F3 a; R' ?.MEASURE TRAN DIGOUT_D1_t1 find V(D1) AT=5.2us8 T& f" S3 p3 n+ H+ c7 Q
.MEASURE TRAN DIGOUT_D0_t1 find V(D0) AT=5.2us
$ C; ] d1 O, u3 V( C6 Y' r6 i$ V
! m8 l6 B7 \% Y.MEASURE TRAN DIGOUT_D3_t2 find V(D3) AT=6.2us
) f' H/ Z) z3 w" P" k7 F4 L; [# ]# V.MEASURE TRAN DIGOUT_D2_t2 find V(D2) AT=6.2us
9 K, u3 g- Z+ A, w# K; b.MEASURE TRAN DIGOUT_D1_t2 find V(D1) AT=6.2us
7 `! m w6 c4 H+ q/ H5 R5 Q* m.MEASURE TRAN DIGOUT_D0_t2 find V(D0) AT=6.2us
( ]$ _/ E3 ?6 d& T& o' F! S& F6 Z: e1 D' r
我只計算clock的週期,然後再初估ADC中的delay時間為0.2us,所以,我第一個數位取出的時間為第5個clock週期來取出4個bit的digital code,然後在第6個clock週期時又取出第2筆digital code
4 E& ~' E& Z( S- j1 c我用的方式較為簡化些,因為ADC要取出的是在每個clock週期中的digital code,所以,只要精算出每個clock時間,即可簡化.measure的指令,而不用用到TRIG....TARG.....,當然,這是我的作法,你也可以依照我前面寫的改成你用的TRIG...TARG的用法4 ?; H2 _. U: v2 m% i6 r3 Z
' W* G1 ~) m6 \7 z, W' T8 H) {
最後,像我剛才寫的.MEASURE TRAN DIGOUT_D3 find V(D3) AT=5.2us( S8 q1 u! f9 G: [/ q* B5 S9 [
可以用MATLAB程式寫成一個自我產生的.measure,我以前是用MATLAB來自己產生的,不然,光是計算1024點就要寫4096行.MEASURE指令,那是一件很浪費時間和生命的事,用MATLAB的迴圈即可一下子產生出所有.MEASURE指令,小小作法,提供給你參考 |
|