Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[問題求助] 如何design dac?

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-7-24 23:21:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位前輩~
  Q7 o" u# Q7 D: m7 t5 O$ z9 [3 w2 |* p2 j" F7 `' h  N1 R4 e) t
我現在正設計一個dac(3bit),雖然有看了一些data和書上的介紹~$ ^: E8 ?9 ]! O. z
' \3 S) T0 s  \8 [
不過畢竟理論是理論,但真正要設計一個dac,到底是要如何進行呢?
( m- J0 h: b4 G! [  N' ?
; ?, z$ q0 v% F6 S1 T譬如* 我的輸入要如何給?
: i- L( l" f+ z3 u5 c: U$ G* v   * 要如何知道輸出是我要的?(是要simulation書上提到的dnl,inl...還是...?)4 j5 z5 u9 _. v% Z3 O( Z: X% c
   6 c, v+ E6 j7 h" c
實在是因為實驗室沒人在做這方面的研究,所以根本不清楚要如何開始啊?
% J8 D# k2 @7 k6 V  V; y6 r3 ^: @0 q: J1 @% r1 |0 j0 z! ]
請有經驗的前輩~能給我一些建議...
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
發表於 2008-7-25 11:27:10 | 只看該作者
這種問題還真難回答
6 a  f% B  r3 g1 mDAC是把數位碼轉換成類比電壓的電路
  z3 \3 |* a  {  }5 q6 q7 G; U所以輸入信號是數位的"0"和"1"信號,亦即0電壓和VDD電壓的數位信號+ \6 V3 ~* k* L: m8 W* a: X  N$ o7 p
而你是3-bit DAC,假若輸出的最高電壓準位是1V,1個LSB=1/(2^3)=0.125V,換算為' ^+ R" H; y5 |! U
000  -->  0.000V, b) K0 x5 E4 G
001  -->  0.125V
4 c+ ?4 E" ^% ]3 V; _5 r010  -->  0.250V' b6 ?& [* V  }1 Q* q
.          .. v+ }+ M6 C5 u: e7 [) ?0 S: h
.          .
- M2 @1 P* L5 z$ _111  -->  1.000V% U1 n& A" q5 {4 ^
你先藉由INL和DNL來計算出DAC的特性和轉換準位是否正確,然後才去計算SNR,SFDR,THD等參數
3#
 樓主| 發表於 2008-7-28 13:54:05 | 只看該作者
感謝finster的回答~$ s! \* F9 Z0 ^5 Z" \+ ^
0 Y$ ?8 f% X0 i; k. z% K
關於這點我大概知道~0 Q7 I0 s) ]- f4 Z$ M
9 Q: w3 Q- d( C2 {
現在因為從學長那�得到一個電路,不過是很久以前的電路~
) p/ t& P) o. e1 T0 ]' `2 S8 @" Z$ t" O! z2 {
我有拿來跑過,不過對電路還是有些疑問8 ~0 o. A6 G6 Z' z5 Y' r: `
1 ~( w4 Z6 e' S
* mcel1,mcel3,mcel5...mcel26是把他當成一個電阻嗎?4 ^' o5 \; C- d  ]2 T6 O
* mcel2,mcel6,mcel8...mcel25則是switch吧?
/ j- Y+ ?6 c2 D# y* 我給da0b~da7b的輸入後,為什在00000000不是在0v呢?
; l/ c7 w* M8 h* H  A* 這個電路應該是current scaling dac 吧?
' L8 `; y. ~, ~* 在mcel16,mcel21,mcel23,mcel26應該是當成保護mcel15,mcel19和mcel24,mcel25的元件吧?
9 I) I, B4 Z' e: h. m1 R
4 `; K2 B  u1 `4 r3 J- y我總是對電路都不太確定,只知大概~請各位前輩在幫我解答一下~麻煩各位了~謝謝

本帖子中包含更多資源

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

x
4#
發表於 2008-7-28 17:55:25 | 只看該作者
我稍微看了一下電路) g& i) _; P1 [% b; f$ D
1. mcel1,mcel3,mcel5...mcel26是把他當成一個電阻嗎?2 |- e! d5 w+ S1 |) x  w
   嚴格來講,並不是,這是採用current scale的cascode架構的DAC,上面的那顆MOSFET是用來增加阻抗用的,你可以視它為一顆電阻並沒有錯,因為的它的作用類似是一顆電阻,不過,更正確的講法是這顆MOSFET是要提供一個由外部的bias voltage所產生出一個DAC所需的current* \% ]; `6 f; v. N& K3 M
# @, j- P: C' N. s% w, {  K
2. mcel2,mcel6,mcel8...mcel25則是switch吧?
9 b6 q1 e6 I8 E2 X, |   是的,你可以這個樣子看它並沒有錯,不過,建議把上面兩顆MOSFET看成是cascode架構會比較完整
& U+ S" N, o+ b' r
8 N% b& `9 E. z/ I3. 我給da0b~da7b的輸入後,為什在00000000不是在0v呢?6 O5 y" H. m! i
   建議你在DAC的output設initial電壓為0V,如此一來應該就會是了) i, j# [8 A9 z# [- ^1 C
* p' J/ J( c4 h3 R+ y3 F. _
4. 這個電路應該是current scaling dac 吧?+ n1 ?- t; E$ n1 O6 F# b0 g
   我沒有看到它的size比例,不過,若從電路架構來看,是的
; m2 T1 z, w" m! s( r2 P8 q+ q/ F; ]( F/ E  Y% ?9 x. _
5. 在mcel16,mcel21,mcel23,mcel26應該是當成保護mcel15,mcel19和mcel24,mcel25的元件吧?
3 M' |! D2 ?. x7 X, o8 O" r   不是,誠如我在第一點所言,你要把它看成是cascode架構以及上面那顆MOSFET是在提供一個由外部的bias voltage所產生出一個DAC所需的current,當比例值已經大到有點離譜時,一般的作法是串接MOSFET來減少電流值(另外一種說法是增加電阻),不過,因為電路圖有些字並不清楚,所以無法很正確的判斷,若由我以從的電路來判斷,上面的MOSFET的Gate應該要接同一點電位會比較合適些
5#
 樓主| 發表於 2008-7-31 22:50:28 | 只看該作者
hi~5 A0 \/ a9 k: {4 x# i! w
1 R8 d. O" V. w
謝謝finster的回答~
0 `# @! u* _" h( v& v) J" k- E
+ _$ N6 o" X8 s3 c& ~3 |: }1. 從mcel3,mcel5...mcel13的比分別為32,16,8...1,但怎麼感覺和current scale不太一樣啊?8 M% r% G/ {( H8 M. N' G
   因為mcel1,mcel2組成了類似inv(有什作用呢?)
5 ?2 y- g9 Z& Y+ j# F; P1 q( ]- x2 f6 {/ ~9 H3 @. c! G
2. mcel21,mcel19,mcel15,mcel16,mcel26,mcel25,mcel24,mcel23,mcel22,mcel20,mcel17,mcel18又有什用途呢?
3 v( ~& @# N# s+ H  i& r% P   (因為我覺得current scale應該不是只包括mcel3~mcel13這部分嗎?)
% [2 W6 `: G5 x8 q$ e# Q# k" n8 v& Q% a
3. 假如mcel1,mcel3...mcel26是提供一個所需的current的話,納這些mos不就都需要工作在sat.嗎?* ^( {$ a8 O& b# s8 ^  m0 o
+ U  _" O, w8 h. [; n) C0 _
p.s 除了幾個mos的gate是接dac7b~dac0b,其餘mos的gate都是接到同一個reference voltage上...
7 {! c7 ~! }4 f8 K* a2 f1 m8 N3 u- n, I0 F
對電路概念不是很清楚,所以又要麻煩各位大大的幫忙了,非常感謝~
6#
發表於 2008-8-1 11:28:35 | 只看該作者
附圖是我以前作10-bit DAC的簡圖+ c0 p' Z. a) F( s+ |, M8 C
在LSB部份採用6-bit binary code的current switching架構  ?% z4 r0 P; b3 T7 G
這種架構是很常見的方式,你可以在很多IEEE Journal或者conference paper中找到,下面是2個PMOS作為code switching,上面則是作為bias current, channel length則是採用2進制的比例變化  `5 o; X4 [4 a/ o8 A7 Y8 Y6 q
請留意它的length size的變化

本帖子中包含更多資源

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

x
7#
 樓主| 發表於 2008-8-11 22:29:29 | 只看該作者
finster版主你好~
; y2 Y; \1 |% r, b( g& s
1 T* T8 L5 q% w$ h1 o" l我最近試了一下,也對你提的範例研究了一番...
& ]( j% Y! Q$ `2 Z) o
( A* N3 ]9 m  P. M- D* Z+ j你舉的例子我也在一些paper裡看過,也大概知道一二...) \7 N- B9 _" a. T$ }& g5 j5 I& Y* i

" U4 M/ ~% E5 Y不過因為我的重點依舊是我所發問的範例(我老闆希望我用這個電路來做dac)...
- t; r6 g2 ]* U
  I3 a6 K1 \' v0 P# Y' A9 t目前run的結果...# t* E* y) ~6 I, Q
9 n9 o, ]; |; V
如上述的圖..! I2 B4 L/ s- Y5 C% l

# d7 m, G$ X* z4 S*. mcel1,mcel2的功能是做什用的呢?
6 H6 w1 i+ N- I3 c* }: U) M" L6 ]# A5 |*. 在dac7b(128)~dac0b(mcel20)給11111111(因為是pmos)cout應該是0v...但模擬結果卻大概在1.7v左右,而在00000000卻大於    P( ]3 q7 P" g' g& _7 p% ?, Q5 x6 n; P5 Y
    vdd.試什原因呢?
" U" E! C  E, b) y& @請各位前輩看看,給點意見..., p  f5 C7 w/ y6 t  K. Z4 C
; T( P7 u: E0 x* S% w* q4 R1 x/ h
非常感謝~
8#
發表於 2008-8-12 09:29:51 | 只看該作者
*. mcel1,mcel2的功能是做什用的呢?
. S( b! [3 ^3 T7 E) d7 D8 @   這個要看你的輸入信號和DAC的關係為何
8 n3 `8 ~+ r1 o* X# U你的圖太小,有些字無法看清楚  k) C$ ?. R  M+ K: |
另外mcell1和mcell2的輸入信號和其他cell的輸入信號有相關嗎??
9 ]: B7 C9 ~  g: i3 e  T; G  S- W# ]若有,那關係為何??. F7 c5 M" e5 p) K
若沒有,那控制mcell1和mcell2的信號腳何時動作,對DAC的影響為何??它會干擾到DAC的輸出信號嗎??它的波形又為何呢??
, F5 T+ P( i: v
# ]2 J1 H. n+ u* K( g
6 i# j5 f$ I  F4 ~7 H*. 在dac7b(128)~dac0b(mcel20)給11111111(因為是pmos)cout應該是0v...但模擬結果卻大概在1.7v左右,而在00000000卻大於  $ |2 Y" t: j4 v
    vdd.試什原因呢?
0 ^+ C: e3 y" w你在輸入11111111時,有其他路徑的電流流到電阻嗎??& r$ z! q& f- ~4 _8 }) T' k
你在給11111111這組CODE時,有沒有在輸出電阻端先設initial value,另外,你在跑11111111這組code時,總共經過多少cycle??3 N' E/ _1 `+ D1 T
上面這些情況都會影響你的輸出電壓值,要先確定才能夠回答現象& x8 N4 E5 o9 n+ k" z& Z+ E( F
而你給00000000這組code卻會超過vdd,那你的1LSB的電流為何??輸出電阻又為何??是在一開始出現呢??還是在多少個cycle後出現??
$ ?* g8 Q  y8 [# J( t另外,你的vdd是幾伏電壓
9#
 樓主| 發表於 2008-8-12 18:14:27 | 只看該作者
感謝FINSTER版主~
  B5 m5 y5 B& `- z% a- h
5 c, u3 W* g9 w我在另外付一個檔案...應該比較清楚了~% `4 r- T# F* P( V* V2 f

. q8 [, C* r# }* I  Y我的VDD=3.3V
% [3 c. x8 h- N% N0 ]
5 z/ X3 S  s' V' T" J我認為是MCEL1和MCEL2在輸入11111111時,會再提供一個電流給輸出,所以輸出才不會為0V,只不過我不知道為什要再另外加這一組MCEL1和MCEL2?
  \0 R& I; K# R  K- g# u& F& ?5 \$ [9 q  |+ w
麻煩FINSTER版主在繼續幫我解答一下,非常感謝~

本帖子中包含更多資源

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

x
10#
發表於 2008-8-13 12:55:47 | 只看該作者
原帖由 averyer 於 2008-8-12 06:14 PM 發表 0 h, X3 P5 G3 S( T7 X7 N1 ?
感謝FINSTER版主~
% L5 B: ~6 }/ N
) P. s3 w/ S* C4 t我在另外付一個檔案...應該比較清楚了~
* V1 ~. i- l3 N- z7 N% z
6 U  y# A/ q; H2 o$ B; \我的VDD=3.3V- X* U9 _0 U; B# d

$ B  W5 j9 r$ ?$ }6 }我認為是MCEL1和MCEL2在輸入11111111時,會再提供一個電流給輸出,所以輸出才不會為0V,只不過我不知道為什要再另外加這一組MCEL1和MCEL ...

( v6 v* m7 A, q  T- d: ?$ _) V# Q' E' ]+ I- a2 N

4 j3 H& C$ |  z4 r# l你的解釋是可以成立$ a; Z2 X& B0 ]9 d
不過,這樣一來你就要特別留意從11111111變成11111110時,analog voltage是不是為(1LSB+電壓基準準位)6 W8 Z  ~3 s- Q) @9 ?: _
DAC是把digital code從00000000從11111111的碼變成analog voltage,如果11111111時不是在0V,那它應該在某一個自我所設的類比電壓準位,然後所有的analog voltage會從這個電壓準位隨著digital code的增加而增加: C; [& Q: N0 ^

: _" Q5 H: d+ ^$ U- @. G不過,從你前面的描述來看,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~
( ~" M- |, h2 e4 Q9 X
4 }" @& i8 e, x0 @( J% q& B6 s謝謝finster版主的回答~
3 L* w% K2 F2 R8 @4 M. Q8 @$ L
! u3 z& |9 F+ G" q) \4 Q我照這個電路來看,我不確定說我的對它的理解對不對,但我在給11111111時,+ u0 f6 t% ^" y) X0 i
$ B4 [" m+ J* F0 z) ~% h
他輸出不是0也不是mcel1和mcel2所產生的那個電壓準位,反而是為vdd(最高電壓)...* T- F, i; ^3 C; c$ Z3 ]; p- k5 @

. W7 y8 R+ y* k7 o* _! w( \# U且在00000000時,它的輸出是所有da7b~da0b上最小電壓....
* H5 E' C" \3 J! J3 [! W/ |" q1 t7 o# q$ [/ a
((例如 da7b產生1.7v,da6b產生2v....da0b產生3.3v,輸出卻為1.7v))
4 G* N8 K8 h  W, U- n6 F  ?8 u% o! }4 M* O3 k3 ?) @. y1 A/ E6 q" c
給11111111時的輸出也是如此....- z+ C/ c3 t/ A# L8 l( n

4 w, F: P; z/ x6 v. X9 R我是猜原本學長給我的這個電路的下一級是不是需要推動某一cell,需要位準在某一個壓降上,
: a2 C0 T; Y( q# k
/ Q$ m: i8 c( ~' }所以才要mcel1,mcel2來在11111111時產生一個電壓....
8 ^* ]6 n# @6 r+ c* [  j- W' `$ e  S5 I9 i5 _1 z7 H
麻煩版主在費心幫我想看看了~非常感謝...
12#
發表於 2008-8-15 11:25:26 | 只看該作者
從你的描述來看
* \. ]) Q) p  G9 L' o你應該先弄清楚你學長當初用DAC這個電路的用意,又或者先把DAC的前後電路特性和規格弄清楚
* M# Y; ~- n$ E  P因為從你的說明來看,其實這個電路特性很不像DAC,而你學長大概又為了取一個比較體近這個電路又好叫的名字,所以把這個電路叫作DAC
; U: w8 g2 Y, I0 L& h, \& R我在前面所言,DAC是把數位信號轉成類比電壓或者電流,每一個數位碼都要相對映到相對映的類比電壓或者電流,而且它的增加和減少都是以2進制的變化而增加和減少- T" F6 ~' S. I  M3 b0 {
故而,11111111應是最小(從你的描述來看),然後往上以2進制的碼來增加,但你的電路特性卻沒有照這個特性來走,很顯然己經脫離了DAC應為的電路特性( M: z/ n1 ^9 Z% v# g8 B4 Q
所以,我個人覺得你這個電路應是近似於DAC特性的電路,但實際上並不完全是DAC,但為了方便跟老板解說,所以就直接取名為DAC,也因為如此,所以一直無法以DAC的原理來解說為何在11111111以及在00000000的情況會如此奇怪而不合DAC的動作原理
9 A* @& E; {4 e) n我個人比較建議你把這個電路和下一級電路合在一起看,並弄清楚下一級電路需要怎麼子的類比信號來作處理,又或者在你負責的系統中,這個電路功用為何?先弄清楚,不然,我真的覺得你會因為要把這個電路用DAC的原理和運作特性來解釋而卡住

評分

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

查看全部評分

13#
 樓主| 發表於 2008-8-20 23:35:46 | 只看該作者
HI~FINSTER版主謝謝你) G! ^& |% Y$ A8 b  y9 e

6 S. ^, A. J3 @) f3 m; A# _我學長要找看看這個完整的電路,他也不確定...所以我基本上經過這些問答,我大概知道整個DAC要如何運作及如何去模擬它了...
6 Y0 H2 O! B& n6 q" Y/ Y( u# O' ]
  Y5 ^' i& j  p2 K  t3 y我也試這其他比較基本的架構來實驗,也大致都OK了...非常謝謝你的指教~
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-12-28 05:50 PM , Processed in 0.188011 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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