Chip123 科技應用創新平台

標題: 如何design dac? [打印本頁]

作者: averyer    時間: 2008-7-24 11:21 PM
標題: 如何design dac?
各位前輩~4 ?) n. S' N0 i  X
7 x/ A- \& K% `
我現在正設計一個dac(3bit),雖然有看了一些data和書上的介紹~2 c+ i( r) N1 x' O6 k; C4 r
7 h1 F, t* U; v; W
不過畢竟理論是理論,但真正要設計一個dac,到底是要如何進行呢?
1 Q, m5 O  U6 J( s; N  q, [( r" z1 v5 `) x5 j3 a7 a
譬如* 我的輸入要如何給?+ m+ v2 d8 D* g$ R) W  Q
   * 要如何知道輸出是我要的?(是要simulation書上提到的dnl,inl...還是...?)( I/ b7 Y( \, u. j; L7 }9 d
   ( ^, _& O4 |3 }# D$ K8 z0 V2 V
實在是因為實驗室沒人在做這方面的研究,所以根本不清楚要如何開始啊?
" A1 K" L0 s$ M& _
! \0 G7 K& u! T! J; f. S. O6 W2 ~請有經驗的前輩~能給我一些建議...
作者: finster    時間: 2008-7-25 11:27 AM
這種問題還真難回答. D5 [" v# ?- z3 i
DAC是把數位碼轉換成類比電壓的電路
& K( U: s& U0 |2 Z& _所以輸入信號是數位的"0"和"1"信號,亦即0電壓和VDD電壓的數位信號1 D  b3 `; J% ~; F3 ^
而你是3-bit DAC,假若輸出的最高電壓準位是1V,1個LSB=1/(2^3)=0.125V,換算為
0 a8 }' T/ `! C  E- E! y% p000  -->  0.000V
- G" [4 @8 L6 d, {5 N001  -->  0.125V1 y4 V5 B% Y" L6 e
010  -->  0.250V' a/ F2 D) y. `) `; u5 x  y1 l
.          .& S1 ~' q( m7 K) N$ B8 L
.          .2 ^! L' ^) S; U5 ]7 P; R3 I2 B8 T, \
111  -->  1.000V
9 [3 j& f& A$ \: O& i你先藉由INL和DNL來計算出DAC的特性和轉換準位是否正確,然後才去計算SNR,SFDR,THD等參數
作者: averyer    時間: 2008-7-28 01:54 PM
感謝finster的回答~" n  a/ V6 a2 ?/ H4 s
. ?. p/ ~8 R  {- o3 o
關於這點我大概知道~
1 h, I2 I6 D7 {+ L" s5 ?
% Z, [2 I4 A6 {- B; ]; Z現在因為從學長那�得到一個電路,不過是很久以前的電路~6 ?2 z' E$ C( ]6 M0 c

/ v& J1 B% H6 h我有拿來跑過,不過對電路還是有些疑問$ P1 |/ ]0 C0 _' C2 b: c# V
# L8 L0 ^$ {& s. s8 a5 r1 V
* mcel1,mcel3,mcel5...mcel26是把他當成一個電阻嗎?
: W! r1 P8 I: \, S* mcel2,mcel6,mcel8...mcel25則是switch吧?
, X# `5 y" ~. B8 Q* 我給da0b~da7b的輸入後,為什在00000000不是在0v呢?
* \6 Y# Y+ V* f# E* 這個電路應該是current scaling dac 吧?! `: k! J( r0 I& k
* 在mcel16,mcel21,mcel23,mcel26應該是當成保護mcel15,mcel19和mcel24,mcel25的元件吧?
* {1 p2 K' x! J: F1 n% L+ f$ p0 s' W5 z; b; C7 Y
我總是對電路都不太確定,只知大概~請各位前輩在幫我解答一下~麻煩各位了~謝謝
作者: finster    時間: 2008-7-28 05:55 PM
我稍微看了一下電路! A) ]- g* v2 p0 `6 c. @* }
1. mcel1,mcel3,mcel5...mcel26是把他當成一個電阻嗎?
6 H1 t1 k0 B; e" f8 U+ h   嚴格來講,並不是,這是採用current scale的cascode架構的DAC,上面的那顆MOSFET是用來增加阻抗用的,你可以視它為一顆電阻並沒有錯,因為的它的作用類似是一顆電阻,不過,更正確的講法是這顆MOSFET是要提供一個由外部的bias voltage所產生出一個DAC所需的current$ @1 |, `, w0 H2 G
- x8 i7 u9 j4 {, n$ T
2. mcel2,mcel6,mcel8...mcel25則是switch吧?6 l3 w0 \2 |" Q0 S( U: v
   是的,你可以這個樣子看它並沒有錯,不過,建議把上面兩顆MOSFET看成是cascode架構會比較完整7 A8 Z% n( ?" [' e/ u: I

: b7 V- g( G5 w+ I3. 我給da0b~da7b的輸入後,為什在00000000不是在0v呢?
+ e9 a2 @: N; [   建議你在DAC的output設initial電壓為0V,如此一來應該就會是了
1 |5 I) Q; Y: C0 Z9 i/ D. p+ L9 v( J  B- P" r
4. 這個電路應該是current scaling dac 吧?
3 [8 E, |! t$ H+ q; {   我沒有看到它的size比例,不過,若從電路架構來看,是的
" n1 _6 @4 P  X# ]* n2 w  G. j4 M( _2 g
5. 在mcel16,mcel21,mcel23,mcel26應該是當成保護mcel15,mcel19和mcel24,mcel25的元件吧?
& m, J* e. h  U& P: ~5 K   不是,誠如我在第一點所言,你要把它看成是cascode架構以及上面那顆MOSFET是在提供一個由外部的bias voltage所產生出一個DAC所需的current,當比例值已經大到有點離譜時,一般的作法是串接MOSFET來減少電流值(另外一種說法是增加電阻),不過,因為電路圖有些字並不清楚,所以無法很正確的判斷,若由我以從的電路來判斷,上面的MOSFET的Gate應該要接同一點電位會比較合適些
作者: averyer    時間: 2008-7-31 10:50 PM
hi~
4 R/ l4 r4 u/ b. z. G1 {9 S% D2 S
" F$ A/ P0 M& t: K9 Y謝謝finster的回答~
) W( G/ l! _+ B( o8 E" y: ~. D
7 ?( V- ~2 f9 e) d0 _* L1. 從mcel3,mcel5...mcel13的比分別為32,16,8...1,但怎麼感覺和current scale不太一樣啊?
) K7 C- w; h% e) [* l- p/ h   因為mcel1,mcel2組成了類似inv(有什作用呢?)0 |, V8 U5 S- d# X& `3 T
/ [  g5 W! a& n6 W
2. mcel21,mcel19,mcel15,mcel16,mcel26,mcel25,mcel24,mcel23,mcel22,mcel20,mcel17,mcel18又有什用途呢?! O6 O3 H9 u. J2 a% p6 \* x% |6 S  g
   (因為我覺得current scale應該不是只包括mcel3~mcel13這部分嗎?)
" t; f  {0 Z2 a7 n4 }% t8 l# v3 i0 W. m
3. 假如mcel1,mcel3...mcel26是提供一個所需的current的話,納這些mos不就都需要工作在sat.嗎?
; `# L* m7 J9 x$ o4 u7 x: \7 L1 N" n
p.s 除了幾個mos的gate是接dac7b~dac0b,其餘mos的gate都是接到同一個reference voltage上...
; l% \  J8 G* @1 |
" M3 z: ?8 |  h8 f( Q- i9 I對電路概念不是很清楚,所以又要麻煩各位大大的幫忙了,非常感謝~
作者: finster    時間: 2008-8-1 11:28 AM
附圖是我以前作10-bit DAC的簡圖
, d+ [7 j6 q$ k7 y4 D- [# o- x在LSB部份採用6-bit binary code的current switching架構
1 U9 N0 i' ]4 c( c這種架構是很常見的方式,你可以在很多IEEE Journal或者conference paper中找到,下面是2個PMOS作為code switching,上面則是作為bias current, channel length則是採用2進制的比例變化
: n( g: \1 ~; o% F4 `  M4 j請留意它的length size的變化
作者: averyer    時間: 2008-8-11 10:29 PM
finster版主你好~
$ h% Z* {' B) n& d7 ?% N, k( j% Q& E2 `/ S( E$ e) d
我最近試了一下,也對你提的範例研究了一番...# n) ^+ M6 {, T) B: C

7 x. @# Q, j: N' I你舉的例子我也在一些paper裡看過,也大概知道一二...
/ H' I5 m5 M" m; x' B( V) [
; N+ p- c( W+ d' }( \: V1 t不過因為我的重點依舊是我所發問的範例(我老闆希望我用這個電路來做dac)...
: a7 H4 V+ z+ t4 K' e7 r" g% V# b2 p0 T0 o) O" V0 F6 I& ^4 @  y3 m
目前run的結果...# j$ z$ i5 T- u  [9 c

4 e$ L* L' C8 a+ T4 C3 Y' s如上述的圖..
9 B* k0 L4 [" U/ {* o( j6 `
/ M5 @6 D+ D( m' t1 e: N*. mcel1,mcel2的功能是做什用的呢?+ f' F9 x* F2 N+ S2 a4 m
*. 在dac7b(128)~dac0b(mcel20)給11111111(因為是pmos)cout應該是0v...但模擬結果卻大概在1.7v左右,而在00000000卻大於  * T, e$ ^' m5 M" H# U0 C0 G! g- @
    vdd.試什原因呢?5 J0 ^, @  J+ B# ?* Z
請各位前輩看看,給點意見...
8 x) h0 Z7 z; L1 A( G6 p! F- V& G" @
非常感謝~
作者: finster    時間: 2008-8-12 09:29 AM
*. mcel1,mcel2的功能是做什用的呢?" f& q$ Q/ H" o) N. Z
   這個要看你的輸入信號和DAC的關係為何# q0 O' T( u/ D6 c
你的圖太小,有些字無法看清楚
% i/ {  D' U# T* l2 Z9 h7 n0 b6 Z1 @3 V另外mcell1和mcell2的輸入信號和其他cell的輸入信號有相關嗎??
+ s9 t6 A3 _0 Q% T$ q) V( z/ z8 p若有,那關係為何??
# s5 @/ i  [4 G5 m. {若沒有,那控制mcell1和mcell2的信號腳何時動作,對DAC的影響為何??它會干擾到DAC的輸出信號嗎??它的波形又為何呢??7 P% q9 j* e4 s* n' K

% ], ?! w4 ?" g1 I5 n+ t
8 y$ g6 r7 Q% t6 b*. 在dac7b(128)~dac0b(mcel20)給11111111(因為是pmos)cout應該是0v...但模擬結果卻大概在1.7v左右,而在00000000卻大於  ) z5 t; k. T0 N6 D7 Z
    vdd.試什原因呢?* a; l0 y* F1 t5 g7 A0 H) N
你在輸入11111111時,有其他路徑的電流流到電阻嗎??
% l, l6 u- j% C0 L0 Q你在給11111111這組CODE時,有沒有在輸出電阻端先設initial value,另外,你在跑11111111這組code時,總共經過多少cycle??
! s1 n4 u" f& w0 m8 z1 t# ~; j上面這些情況都會影響你的輸出電壓值,要先確定才能夠回答現象
+ `; @" s" ~: Z1 N& D而你給00000000這組code卻會超過vdd,那你的1LSB的電流為何??輸出電阻又為何??是在一開始出現呢??還是在多少個cycle後出現??" [, \" A5 [5 @0 t
另外,你的vdd是幾伏電壓
作者: averyer    時間: 2008-8-12 06:14 PM
感謝FINSTER版主~6 K" ~% K. l" N: S. P7 d

3 u$ l6 A6 A  K  k. v( _6 F我在另外付一個檔案...應該比較清楚了~. U; Y% d8 a8 A
, W6 c5 f0 u0 u# ]% Q" N
我的VDD=3.3V
7 X$ o- U5 \0 j3 N; n2 R7 ?
5 |2 {& I8 W% z- o% `: g我認為是MCEL1和MCEL2在輸入11111111時,會再提供一個電流給輸出,所以輸出才不會為0V,只不過我不知道為什要再另外加這一組MCEL1和MCEL2?
) K& n9 s- B8 S7 o; a# [5 a) [; v% n7 v+ ~8 s, t
麻煩FINSTER版主在繼續幫我解答一下,非常感謝~
作者: finster    時間: 2008-8-13 12:55 PM
原帖由 averyer 於 2008-8-12 06:14 PM 發表
- j9 i4 I, p: h' a7 }感謝FINSTER版主~
4 B! L5 x6 E2 B( ^$ R+ [$ N% r, z. J# M/ y$ Z
我在另外付一個檔案...應該比較清楚了~& |0 l* n" d3 ^$ r2 A9 g7 K( I$ L

- X5 `& `3 Z  X1 r我的VDD=3.3V8 ~! f# S: Q) ?: v
2 x5 @. \7 E7 d7 O8 T
我認為是MCEL1和MCEL2在輸入11111111時,會再提供一個電流給輸出,所以輸出才不會為0V,只不過我不知道為什要再另外加這一組MCEL1和MCEL ...

) i2 l/ C9 z6 j! o( z! `$ Z5 z
8 p% S% j: c$ G9 n5 W( @* r% ~9 u  b8 h  T9 g" s6 V1 _4 j
你的解釋是可以成立! K7 z. }$ {5 \2 K! Z6 e
不過,這樣一來你就要特別留意從11111111變成11111110時,analog voltage是不是為(1LSB+電壓基準準位)
3 \% a% U5 d2 I+ ]3 p; V4 ADAC是把digital code從00000000從11111111的碼變成analog voltage,如果11111111時不是在0V,那它應該在某一個自我所設的類比電壓準位,然後所有的analog voltage會從這個電壓準位隨著digital code的增加而增加; E* }( Z) w& j$ n6 r6 ]

# V( d1 [, _# h9 M4 p不過,從你前面的描述來看,11111111時模擬結果卻大概在1.7v左右,而你的VDD=3.3V,我不知道你1LSB是多少mV,不過8-bit共256階,這個樣子就很危險,你的code在接近00000000時會很嚴重失真,可是你又說00000000卻大於vdd,這個樣子的現象很奇怪(因為那表示你的輸出電壓會往vdd回灌電流),很不合電路原理,除非你MCEL1和MCEL2只有在輸入11111111時才有動作,不過,這樣子一來,就完全不符合DAC的電路原理和精神,而且,也沒有人會這個樣子設計DAC,尤其當你在測INL/DNL/SFDR/SNR/THD...等參數時,DAC的performance會很差
作者: averyer    時間: 2008-8-14 05:00 PM
hi~
( r7 f, @- ~! D' I8 @: N
1 ?, y! U% H# X% {! E3 r謝謝finster版主的回答~$ \/ u  h) v* X

; Z+ e- v5 H2 O我照這個電路來看,我不確定說我的對它的理解對不對,但我在給11111111時,* S& g' j1 T6 U5 Y) _
- Z7 u1 G, g2 y; f' Q/ a- b: b
他輸出不是0也不是mcel1和mcel2所產生的那個電壓準位,反而是為vdd(最高電壓)...
4 W8 L% j* O+ C. i+ }6 u+ ^- E1 U1 v! g4 z- Z1 I2 G
且在00000000時,它的輸出是所有da7b~da0b上最小電壓....2 c, x4 m& A. i" K3 L( p
) P# L) _3 ?6 H5 V* j" d% m
((例如 da7b產生1.7v,da6b產生2v....da0b產生3.3v,輸出卻為1.7v))
$ ^, E. i" j+ v; U1 x
1 `9 z, E7 z* h9 O4 P8 a: {2 x給11111111時的輸出也是如此....0 d& n* f2 A& ]$ t: N
, {- ]* {( h& \# F2 H
我是猜原本學長給我的這個電路的下一級是不是需要推動某一cell,需要位準在某一個壓降上,4 H. G$ i* Y0 v+ R1 l

* c$ c2 {( i6 u* g所以才要mcel1,mcel2來在11111111時產生一個電壓....! u0 Z4 p3 f2 R, z3 Y' @8 ^

' _$ V! P2 }  j; }麻煩版主在費心幫我想看看了~非常感謝...
作者: finster    時間: 2008-8-15 11:25 AM
從你的描述來看4 D% U- L/ M. i) b7 }. T& U
你應該先弄清楚你學長當初用DAC這個電路的用意,又或者先把DAC的前後電路特性和規格弄清楚
( `* Y5 t- e9 N因為從你的說明來看,其實這個電路特性很不像DAC,而你學長大概又為了取一個比較體近這個電路又好叫的名字,所以把這個電路叫作DAC' R* e7 _) z  m6 f. c
我在前面所言,DAC是把數位信號轉成類比電壓或者電流,每一個數位碼都要相對映到相對映的類比電壓或者電流,而且它的增加和減少都是以2進制的變化而增加和減少  [" Z" _& C" m' r' |# X- X3 N6 t
故而,11111111應是最小(從你的描述來看),然後往上以2進制的碼來增加,但你的電路特性卻沒有照這個特性來走,很顯然己經脫離了DAC應為的電路特性
& Z  X% z8 {- U& Z1 B( u所以,我個人覺得你這個電路應是近似於DAC特性的電路,但實際上並不完全是DAC,但為了方便跟老板解說,所以就直接取名為DAC,也因為如此,所以一直無法以DAC的原理來解說為何在11111111以及在00000000的情況會如此奇怪而不合DAC的動作原理( d9 B; u2 ?$ Q+ k) v
我個人比較建議你把這個電路和下一級電路合在一起看,並弄清楚下一級電路需要怎麼子的類比信號來作處理,又或者在你負責的系統中,這個電路功用為何?先弄清楚,不然,我真的覺得你會因為要把這個電路用DAC的原理和運作特性來解釋而卡住
作者: averyer    時間: 2008-8-20 11:35 PM
HI~FINSTER版主謝謝你  u( \& W  @9 s0 c# }
2 t+ M! A2 \  b/ Q! f6 Y1 j
我學長要找看看這個完整的電路,他也不確定...所以我基本上經過這些問答,我大概知道整個DAC要如何運作及如何去模擬它了...( K% J7 j. i) e6 v  @
! N0 |% C% j7 U. S, S8 M
我也試這其他比較基本的架構來實驗,也大致都OK了...非常謝謝你的指教~




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