Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 3727|回復: 12
打印 上一主題 下一主題

[問題求助] 如何design dac?

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-7-24 23:21:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位前輩~) \8 _) \8 s4 I) t" y5 l

+ ]( v% G4 L0 h3 @" [我現在正設計一個dac(3bit),雖然有看了一些data和書上的介紹~
& f) N" f. k6 c- Q. U" K* R9 k% s
5 z, G' L) N8 F8 b不過畢竟理論是理論,但真正要設計一個dac,到底是要如何進行呢?9 M' x7 i+ H& f! P; r9 w

+ _2 u% A4 w3 Y/ K% N/ Q/ u譬如* 我的輸入要如何給?
8 C, q/ _0 ^, S8 d6 p3 y( S   * 要如何知道輸出是我要的?(是要simulation書上提到的dnl,inl...還是...?)
! Q6 T! U) z: |+ h  [5 {   
5 _" F$ a9 l3 t, B) x3 g9 n4 ]實在是因為實驗室沒人在做這方面的研究,所以根本不清楚要如何開始啊?+ ^* |/ C9 |! R
7 P5 }' Q1 J  g1 M# ?3 g" b
請有經驗的前輩~能給我一些建議...
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2008-7-25 11:27:10 | 只看該作者
這種問題還真難回答- p) q2 J5 S2 X  V
DAC是把數位碼轉換成類比電壓的電路
4 S+ j5 h$ n% S9 s- u所以輸入信號是數位的"0"和"1"信號,亦即0電壓和VDD電壓的數位信號3 w6 J0 G( k* O
而你是3-bit DAC,假若輸出的最高電壓準位是1V,1個LSB=1/(2^3)=0.125V,換算為
4 M/ p8 i- o. m- U; S- l' U000  -->  0.000V) E! _9 i( d$ G- g2 I# i
001  -->  0.125V% w5 E. R5 M8 u( y% \# w0 Q
010  -->  0.250V
# F, V- c  L* A- b! w  ].          .3 w' T3 X" t$ H7 `# p! N
.          .
* Y" @7 c9 n3 H( N8 B111  -->  1.000V
  q$ {, P/ t+ N4 d  D& `! I你先藉由INL和DNL來計算出DAC的特性和轉換準位是否正確,然後才去計算SNR,SFDR,THD等參數
3#
 樓主| 發表於 2008-7-28 13:54:05 | 只看該作者
感謝finster的回答~
3 m6 V. q  Q4 o4 v* Z5 c( O) X; D9 i; s
關於這點我大概知道~
6 b' {+ [* |) G5 P) L2 A$ S: g* L! F* C* X! q. m3 w. i
現在因為從學長那�得到一個電路,不過是很久以前的電路~
' q. }$ ~( [) Q/ B( X! V: K. B4 n3 u. J
我有拿來跑過,不過對電路還是有些疑問! N# s% i* k5 c1 e
, v; v( @" Q9 {
* mcel1,mcel3,mcel5...mcel26是把他當成一個電阻嗎?1 i7 E. B8 V2 z( X1 f
* mcel2,mcel6,mcel8...mcel25則是switch吧?, _4 d' Z+ Z0 [8 p' o# ~
* 我給da0b~da7b的輸入後,為什在00000000不是在0v呢?
% @$ S; f" a( W: }* 這個電路應該是current scaling dac 吧?
/ A( Z& a& h2 X7 J* 在mcel16,mcel21,mcel23,mcel26應該是當成保護mcel15,mcel19和mcel24,mcel25的元件吧?  ~5 E3 D% R* E7 i' T

) Y$ A, K7 `! e- s+ i% K+ p我總是對電路都不太確定,只知大概~請各位前輩在幫我解答一下~麻煩各位了~謝謝

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?申請會員

x
4#
發表於 2008-7-28 17:55:25 | 只看該作者
我稍微看了一下電路2 a9 C& ]3 s* W. N! b
1. mcel1,mcel3,mcel5...mcel26是把他當成一個電阻嗎?0 I6 k- ~# a% K" N4 w' Q
   嚴格來講,並不是,這是採用current scale的cascode架構的DAC,上面的那顆MOSFET是用來增加阻抗用的,你可以視它為一顆電阻並沒有錯,因為的它的作用類似是一顆電阻,不過,更正確的講法是這顆MOSFET是要提供一個由外部的bias voltage所產生出一個DAC所需的current
. E, L% s' k7 k+ C: ~% P  T( Q$ b
) {" x! M* U. b9 E1 G+ J2. mcel2,mcel6,mcel8...mcel25則是switch吧?3 f% w1 L3 t& U/ n& L7 s
   是的,你可以這個樣子看它並沒有錯,不過,建議把上面兩顆MOSFET看成是cascode架構會比較完整' y  e1 z" ~  V5 b
" M1 t/ T) ~) W' {4 U
3. 我給da0b~da7b的輸入後,為什在00000000不是在0v呢?- H8 w3 ~! ?! c1 ]6 h
   建議你在DAC的output設initial電壓為0V,如此一來應該就會是了" M( r0 Y5 f: Z8 H) q
3 e7 z* x# F7 p- `
4. 這個電路應該是current scaling dac 吧?) o5 `$ O1 t5 J2 d3 ~- K) Y( Y( P
   我沒有看到它的size比例,不過,若從電路架構來看,是的
: r0 r2 L5 U; t4 H' O8 \6 N% D
5 R$ m  O3 L) j5 e7 I1 J5. 在mcel16,mcel21,mcel23,mcel26應該是當成保護mcel15,mcel19和mcel24,mcel25的元件吧?0 J) z' i% l' s3 Z* f/ Q! w
   不是,誠如我在第一點所言,你要把它看成是cascode架構以及上面那顆MOSFET是在提供一個由外部的bias voltage所產生出一個DAC所需的current,當比例值已經大到有點離譜時,一般的作法是串接MOSFET來減少電流值(另外一種說法是增加電阻),不過,因為電路圖有些字並不清楚,所以無法很正確的判斷,若由我以從的電路來判斷,上面的MOSFET的Gate應該要接同一點電位會比較合適些
5#
 樓主| 發表於 2008-7-31 22:50:28 | 只看該作者
hi~; w" ?$ l4 Q* N* K5 z

/ o. b8 u- P$ _* ^) a( H謝謝finster的回答~/ D  J( a" j. l1 A+ e
! Y8 _9 ^' p) L) g- a& a
1. 從mcel3,mcel5...mcel13的比分別為32,16,8...1,但怎麼感覺和current scale不太一樣啊?
5 `# k# A) [# ?7 n- P+ o   因為mcel1,mcel2組成了類似inv(有什作用呢?)
7 N" j( A2 e! i' @6 c: ^$ S3 Z- G6 Z# i: ?* j
2. mcel21,mcel19,mcel15,mcel16,mcel26,mcel25,mcel24,mcel23,mcel22,mcel20,mcel17,mcel18又有什用途呢?1 q% n! }( N  G3 i- y
   (因為我覺得current scale應該不是只包括mcel3~mcel13這部分嗎?)1 \$ I8 {+ R* m: N% d3 m: h
2 ?7 `+ u# P$ ~) j1 \- R7 D
3. 假如mcel1,mcel3...mcel26是提供一個所需的current的話,納這些mos不就都需要工作在sat.嗎?
$ m: Z; s+ n9 r# {# p- O  L
  g: |; c  [- [- P, L8 ~8 g! dp.s 除了幾個mos的gate是接dac7b~dac0b,其餘mos的gate都是接到同一個reference voltage上...1 \# [5 M3 t. q6 S
! p. x6 |8 r( u0 v
對電路概念不是很清楚,所以又要麻煩各位大大的幫忙了,非常感謝~
6#
發表於 2008-8-1 11:28:35 | 只看該作者
附圖是我以前作10-bit DAC的簡圖; M- W5 T5 V4 m6 [1 ?$ j7 f; Z
在LSB部份採用6-bit binary code的current switching架構$ K$ E8 X" q! `- i+ z
這種架構是很常見的方式,你可以在很多IEEE Journal或者conference paper中找到,下面是2個PMOS作為code switching,上面則是作為bias current, channel length則是採用2進制的比例變化
$ o+ h4 J+ C% @' s% S請留意它的length size的變化

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?申請會員

x
7#
 樓主| 發表於 2008-8-11 22:29:29 | 只看該作者
finster版主你好~& K5 L7 m; t1 ?" i
4 k9 n4 E. W2 {$ X% i
我最近試了一下,也對你提的範例研究了一番...) [% h5 m+ @4 C' [: ?1 D
3 ^& P0 k' C  j7 ~% y
你舉的例子我也在一些paper裡看過,也大概知道一二...
. c$ e$ `$ g; A5 s/ Q9 Q! I& _1 \6 s
不過因為我的重點依舊是我所發問的範例(我老闆希望我用這個電路來做dac)...; |5 E* b! g4 l- n

/ y: s8 `/ z8 D: G) q/ S# g目前run的結果...* V. B2 [! o- q5 G

0 ^0 G1 @' _; \如上述的圖..
& `5 u% ?; [1 b5 P* a! a- v+ B5 m) i& Q1 K+ ^
*. mcel1,mcel2的功能是做什用的呢?
( C% _: O; E( r# l- F4 F4 l*. 在dac7b(128)~dac0b(mcel20)給11111111(因為是pmos)cout應該是0v...但模擬結果卻大概在1.7v左右,而在00000000卻大於  2 Y* H4 E9 n. Q! u6 ~
    vdd.試什原因呢?
7 i& ~. g+ a/ w2 x; T請各位前輩看看,給點意見...
- U0 `: ?2 r, k* F4 I9 Q" y
! D' u% k+ F4 }4 C' G, {非常感謝~
8#
發表於 2008-8-12 09:29:51 | 只看該作者
*. mcel1,mcel2的功能是做什用的呢?
9 \, x* a2 N, l2 x/ k   這個要看你的輸入信號和DAC的關係為何3 w8 o9 s  s* K/ g5 Y0 A8 z
你的圖太小,有些字無法看清楚- O4 x2 X; ~7 {9 z% _
另外mcell1和mcell2的輸入信號和其他cell的輸入信號有相關嗎??
2 i' I; @) a/ A. b+ i7 o若有,那關係為何??3 Z1 _2 s, a4 |2 N( M. {8 c
若沒有,那控制mcell1和mcell2的信號腳何時動作,對DAC的影響為何??它會干擾到DAC的輸出信號嗎??它的波形又為何呢??! x, U# Q; z( l( L4 z% C9 Q3 E; {

" ^8 ?( ?( V$ g0 C" R0 C1 _4 F( i9 I- {2 ^7 n/ i
*. 在dac7b(128)~dac0b(mcel20)給11111111(因為是pmos)cout應該是0v...但模擬結果卻大概在1.7v左右,而在00000000卻大於  
) M& N; i. H! \2 e% O    vdd.試什原因呢?4 P3 ]! R$ A+ w; i! W
你在輸入11111111時,有其他路徑的電流流到電阻嗎??1 b9 x5 U2 |2 I- B3 {" m% H
你在給11111111這組CODE時,有沒有在輸出電阻端先設initial value,另外,你在跑11111111這組code時,總共經過多少cycle??% w- M# r9 V/ j0 o5 x: u( R
上面這些情況都會影響你的輸出電壓值,要先確定才能夠回答現象$ B2 W* V1 Y/ H
而你給00000000這組code卻會超過vdd,那你的1LSB的電流為何??輸出電阻又為何??是在一開始出現呢??還是在多少個cycle後出現??& j1 P; Y- h! K( B% r0 |* h: [0 o
另外,你的vdd是幾伏電壓
9#
 樓主| 發表於 2008-8-12 18:14:27 | 只看該作者
感謝FINSTER版主~8 L' c2 W) @# J' q% k1 P

1 M% ^7 e4 G' [我在另外付一個檔案...應該比較清楚了~" {4 M0 X0 v/ m4 {  C+ Z

, W8 h( D7 q5 h; o我的VDD=3.3V
: ]% V% A" N4 ]9 _" V* G
$ [# `0 J, \. A我認為是MCEL1和MCEL2在輸入11111111時,會再提供一個電流給輸出,所以輸出才不會為0V,只不過我不知道為什要再另外加這一組MCEL1和MCEL2?) n+ Y  ?) D, @! g% k$ E

; P4 V2 u, V# Z  m( a& G麻煩FINSTER版主在繼續幫我解答一下,非常感謝~

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?申請會員

x
10#
發表於 2008-8-13 12:55:47 | 只看該作者
原帖由 averyer 於 2008-8-12 06:14 PM 發表 / j+ j, W. {1 C+ m+ S& A  N3 U
感謝FINSTER版主~9 F  N9 o# Z* L7 ]/ Q2 B; h& a2 \

8 a$ c! e5 G8 N. S( z$ P, A我在另外付一個檔案...應該比較清楚了~
! D) w/ m2 O! c3 V
, v7 z( U$ ?/ K; `# q( S我的VDD=3.3V
  i& ]$ F5 Y* G2 V" y( u0 L$ x( {" k2 E4 T; S9 U* r# |1 Q$ |- t
我認為是MCEL1和MCEL2在輸入11111111時,會再提供一個電流給輸出,所以輸出才不會為0V,只不過我不知道為什要再另外加這一組MCEL1和MCEL ...

8 |) J& v7 E% M3 N, G  q4 {' B" K  z0 g  M( m/ d4 c2 X$ ^

3 T/ R: i/ R! U" `' M; ^你的解釋是可以成立* y# M( D9 B: k+ [) D0 M- i& p
不過,這樣一來你就要特別留意從11111111變成11111110時,analog voltage是不是為(1LSB+電壓基準準位). Q/ F2 G- H' ~( E' c0 g/ a) S
DAC是把digital code從00000000從11111111的碼變成analog voltage,如果11111111時不是在0V,那它應該在某一個自我所設的類比電壓準位,然後所有的analog voltage會從這個電壓準位隨著digital code的增加而增加
! g  \7 B5 \* X- M/ D/ V6 a) y
2 S5 N% |1 {3 U" s' X, S. Z2 h9 f不過,從你前面的描述來看,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會很差

評分

參與人數 1Chipcoin +5 +5 收起 理由
sjhor + 5 + 5 感謝經驗分享!您的回覆總是讓人學到很多唷

查看全部評分

11#
 樓主| 發表於 2008-8-14 17:00:56 | 只看該作者
hi~6 \3 q' R% \* V3 _: w

* \- [. g! Y1 o$ J% H謝謝finster版主的回答~1 ]! s, o3 L& s* T5 E9 }, M1 o

& C$ D& h; {/ m我照這個電路來看,我不確定說我的對它的理解對不對,但我在給11111111時,+ F& h% a3 x7 y( x5 w

) |4 E1 c2 o- }$ U7 G7 N* l) T$ p他輸出不是0也不是mcel1和mcel2所產生的那個電壓準位,反而是為vdd(最高電壓)...
  A3 w- |1 v! `  x/ K& ]: @! c: Y. Y; @/ h
且在00000000時,它的輸出是所有da7b~da0b上最小電壓....2 _7 F; k' ?2 n5 |
& y4 \" w6 H) A; U  s' S
((例如 da7b產生1.7v,da6b產生2v....da0b產生3.3v,輸出卻為1.7v))
  {/ j% F! a6 H( ]4 }1 }* j: S1 p( Q+ @- T8 M  O- S6 q
給11111111時的輸出也是如此....8 r1 q. h: T. J) P
6 P2 ~/ ?' k" X$ ]! \
我是猜原本學長給我的這個電路的下一級是不是需要推動某一cell,需要位準在某一個壓降上,
- i4 f( ?  ^" f( U( N% g9 G
4 H; _; D6 [8 j6 N所以才要mcel1,mcel2來在11111111時產生一個電壓....
3 L' k7 u$ W% [0 z. ]9 N( D$ Y) Z2 Z0 I
麻煩版主在費心幫我想看看了~非常感謝...
12#
發表於 2008-8-15 11:25:26 | 只看該作者
從你的描述來看7 n; R$ [% V; w: [3 W0 ?5 p" G
你應該先弄清楚你學長當初用DAC這個電路的用意,又或者先把DAC的前後電路特性和規格弄清楚
8 [# o$ a* _8 [因為從你的說明來看,其實這個電路特性很不像DAC,而你學長大概又為了取一個比較體近這個電路又好叫的名字,所以把這個電路叫作DAC
/ s8 D7 s* f' k* b; R- n我在前面所言,DAC是把數位信號轉成類比電壓或者電流,每一個數位碼都要相對映到相對映的類比電壓或者電流,而且它的增加和減少都是以2進制的變化而增加和減少
7 s  G1 ]7 N8 Z6 D! J, m& U) r; u故而,11111111應是最小(從你的描述來看),然後往上以2進制的碼來增加,但你的電路特性卻沒有照這個特性來走,很顯然己經脫離了DAC應為的電路特性. y0 n/ _6 G1 ^# h6 w9 Y; V
所以,我個人覺得你這個電路應是近似於DAC特性的電路,但實際上並不完全是DAC,但為了方便跟老板解說,所以就直接取名為DAC,也因為如此,所以一直無法以DAC的原理來解說為何在11111111以及在00000000的情況會如此奇怪而不合DAC的動作原理
$ m/ c" A5 n9 }我個人比較建議你把這個電路和下一級電路合在一起看,並弄清楚下一級電路需要怎麼子的類比信號來作處理,又或者在你負責的系統中,這個電路功用為何?先弄清楚,不然,我真的覺得你會因為要把這個電路用DAC的原理和運作特性來解釋而卡住

評分

參與人數 1 +5 收起 理由
skyer1 + 5 你的經驗就是知識的來源!

查看全部評分

13#
 樓主| 發表於 2008-8-20 23:35:46 | 只看該作者
HI~FINSTER版主謝謝你9 o7 Z6 S9 o2 A7 W: M3 T1 k
% f/ V5 m6 R. C% U# F: v. h
我學長要找看看這個完整的電路,他也不確定...所以我基本上經過這些問答,我大概知道整個DAC要如何運作及如何去模擬它了...# o8 w! l1 {3 N- {

8 E4 ?3 k" W1 l我也試這其他比較基本的架構來實驗,也大致都OK了...非常謝謝你的指教~
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-12-29 09:09 AM , Processed in 0.182010 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表