Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[問題求助] 如何使用Hspice模擬MOS的導通電阻Ron

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2008-4-19 21:41:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
把電晶體當開關使用時,請問大家都是如何用Hspice來模擬電晶體的導通電阻Ron呢?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂43 踩 分享分享
2#
發表於 2008-4-19 23:21:35 | 只看該作者
同問,同問,最近在仿真bootstrapped switch 不知道如何用Hspice跑出Ron,想問問大家
3#
發表於 2008-4-20 11:19:25 | 只看該作者
利用公式V=IR即可
/ ^3 b) v6 W: l) ^  P- N2 v, }3 Z2 j. H在HSPICE中利用PRINT寫來計算元件的(Vin-Vout)/I即可用awaves畫出元件的Ron電阻; M3 {, D. D3 T* T7 [2 v: {1 ]
要特別注意一點的是,如果mos是內建的,那要留意外部電感的電流大小會"間接"決定mos的大小,或者mos是外接式的,那你直接看外部mos所提供的spice model大概就可以了
4#
發表於 2008-4-20 23:18:53 | 只看該作者
喔,嘿嘿,是finster版主啊,對啊就是V=IR啊,真是faint,原來我用錯電壓了,我錯用成Vout/I了怪不得不對呢, 0 F' S! m+ N" I# u; x# a( E
3 i3 ?4 a+ k0 D1 I
谢谢您的解答!
5#
發表於 2008-7-7 00:05:00 | 只看該作者
這個問題剛好是最近一直困擾的問題- R/ q* `8 o5 ]+ N9 k
為何不可以(vout-vin)/I阿
4 R9 Q/ P, F8 I+ v$ y) b; F下面是我寫的spice檔+ X7 R7 }# M: a5 A5 g: ^
m1 vin vdd vout vss nch3 w=3.5u l=0.35u
! z# M' K  C3 |1 f+ D0 `6 dr1 vout 0 1k
* p3 K- y) q+ {; C4 f( i在.print部份
. Z* ^' B  ?! u- ^* E+ P- {! A是要寫 "v(vin)/v(vout)" "(v(vin)-v(vout))/i(r1)" "(v(vin)-v(vout))/i(m1)"呢6 w. C* N8 C7 `$ ~6 W
可否幫忙解答?& u) d* n) R; }8 `5 h
thanks
6#
發表於 2008-7-7 09:52:23 | 只看該作者
原帖由 dogst 於 2008-7-7 12:05 AM 發表
. [7 J7 p% F. J, v這個問題剛好是最近一直困擾的問題, D2 K( A3 _% Y( \2 s' R; b
為何不可以(vout-vin)/I阿
. C, L) ]3 h2 a2 S/ |下面是我寫的spice檔
+ m. V2 |' \* q9 |9 ~0 jm1 vin vdd vout vss nch3 w=3.5u l=0.35u. f+ ^  B6 H! k8 a" G2 S5 J# ^; S
r1 vout 0 1k
  @. U0 \, V' \+ B0 h; ]在.print部份
7 S- p  d. S# Y: Q( V2 O是要寫 "v(vin)/v(vout)" "(v(vin)-v(vout))/i(r1)" " ...

/ @1 _. R& \  `
" ~: f  o2 ?0 F( L( H  C: a+ j2 a7 L# O% O5 L/ u6 K6 i$ E

! d3 v! k. X& v. `, S建議你不要加r1 vout 0 1k, `- G8 `$ q3 ~6 c' F, J' g0 Z( Z
因為你要對NMOS作計算ron,加了r1後,電流會對r1產生一個電壓,如此一來會壓縮到m1的vout電壓
0 J" S  p" U$ s8 G建議的寫法為
" ^. w. ^4 f: ^- w; R* C0 k+ bm1 vin vdd vout vss nch3 w=3.5u l=0.35u m=11 j* K! @. s# w$ @  W
vvin  vin   vss    vss
$ `1 k( z5 [3 [* ?, [! l: nvvout vout  vss    vss
0 s/ l1 R2 }# \" [8 Y7 e; d.dc vvin 0.001 3.3 0.14 R2 N$ J6 S( w; f- _3 D; v
.print PAR('(v(in))/abs(i(m1))')
: c% y. R9 D! F" V( L+ C1 a( u9 @.print i(m1)
7#
發表於 2008-7-7 15:37:14 | 只看該作者
嗯嗯  有沒有加電阻  真的有差  謝謝, ~8 [) C& N0 Y8 I# g* R1 B
可是又有一個問題(不好意思 問題真多 多多包含)
6 U/ Q  E0 c/ t1 B5 L4 L$ mvvdd   vdd   0  3.0v " V+ F+ E  C: _. |) _$ j. Q
vvss   vss   0  0v 6 Q; R% y  U, K6 H
vvin   vin   0  0v + F( B. O& e, d) g
vvout  vout  0  0v % m/ l4 ^2 H9 D7 }" ?( A
m1   vin   vdd   vout  vss  nch3  w=3.5u   l=0.35u
( \2 W# m% k0 t! K( `; m# Q.print a=par('(v(vin)-v(vout))/i(m1)') b=par('v(vin)/i(m1)')- }  e* D! z8 T0 l9 t
就是在vout的部份 有沒有設成0好像結果差很多耶  為何會這樣呢
0 [+ O& ^. \0 |" C2 W+ E& z還有在量Ron部份時  到底是要par('(v(vin)-v(vout))/i(m1)')還是要par('v(vin)/i(m1)')
5 Y( ~3 U) `8 u1 F) y0 \; }因為版主在回覆時  兩者都有提到  可是還是不清楚: i$ Z: s% W% K3 M; Q8 M- E
可否幫忙解答?; |  ~. \3 j" ~; Y9 r# S
Thanks
8#
發表於 2008-7-7 17:25:19 | 只看該作者
不好意思,一時之間沒留意到
) n" P* v6 j  q應該是
" u+ z' {0 g, ~, ?# T) d; O% ?2 M.print PAR('(v(vin)-v(vout))/abs(i(m1))')
& [6 [8 r+ J* g. B2 ^" N1 A要加abs則是因為電流有流進流出的問題,進而會產生正負符號的緣故,故而加了abs可以變成是正的
: U' [2 W$ C" h, S+ F: o: K9 I- A$ b另外,vout的部份,因為你是作.DC的sweep,而且是對NMOS,所以,source端一定要加最低電位(也就是0V)然後對drain作dc sweep+ J- ^5 P' T1 b$ i
反之若是PMOS,則是要加最高電位(亦即VDD)
0 D# Q( e4 ]7 `* j/ x$ U這是因為PMOS和NMOS兩者對VSS和VDD有不一樣的變化
9#
發表於 2008-7-7 18:04:27 | 只看該作者
順便來請教各位大大
# m; p* O- D- j" r有在其他書上看到9 }( E1 @! e6 N2 A$ }
.print dc RON=par('1/LX8(mn1)')
& y/ b% Q* y0 q' _$ Q) J' m這個指令似乎也能看RON的電阻值
$ D0 E7 |4 T$ O# ~- i不過不太了解這個指令的意思?
10#
發表於 2008-7-7 20:41:52 | 只看該作者
原帖由 finster 於 2008-7-7 05:25 PM 發表 ' ?9 y% }" R7 t2 v6 p- S1 M
不好意思,一時之間沒留意到1 e  P% `/ K) i# p! b
應該是8 r& k3 a* s( l9 F4 |+ L6 u- D
.print PAR('(v(vin)-v(vout))/abs(i(m1))')( ^. t' G% B, s/ \3 [" R3 s6 m; Z$ V0 {
要加abs則是因為電流有流進流出的問題,進而會產生正負符號的緣故,故而加了abs可以變成是正的! D  Q3 X. O, F* f+ G
另外,vout的部份,因為你是作.DC的swe ...
) s8 {; Q" \, x3 E

# p0 a. o9 `! ~3 X5 |6 t' G: n* b' B+ S7 T. }
嗯嗯  原來如此% v/ H. k" j. C0 k4 j
意思也就是說 要寫成下面這樣子  對吧!
; x! O/ L& H/ d/ i3 H  Jnmos : m1 vin vdd vout vss ........  .print par('(v(vin)-v(vout))/abs(i(m1))')) D/ _7 V5 D8 A: `0 j" `
pmos : m1 vout vss vin vdd ........  .print par('(v(vin)-v(vout))/abs(i(m1))')
# T# t) R  w7 I: B' q. T
) R$ E7 a; M% ?那如果是transmission gate的話6 u: O0 P& q; U, N2 j5 [* ^
vvdd   vdd   0   dc   3.0V
+ H0 G5 a; G; q, M6 ]4 j8 i7 o2 Kvvss   vss   0   dc   0.0v5 m2 B$ f" b: H( @5 n
vvin   vin   0   dc   0.0v
. Y& T5 A$ Z* l; \m1   vin   vdd   vout  vss  nch3  w=3.5u   l=0.35u 0 P# b0 j, g- A- o1 O2 W# i
m2   vout  vss   vin   vdd  pch3  w=3.5u   l=0.35u  / L5 m" U% I4 D8 s, I, D( Q
那麼在.print部份的話  要怎麼寫4 |9 K" k, Q. q  g  T
因為他不像nmos或者pmos一樣  只有m1的電流可以除7 u: v4 }7 d* _3 [
這樣怎麼求Ron8 }) d- Y: K) e5 ^0 H) x, A+ _
可否請大大解釋疑惑/ p: j$ M( @9 B% F1 z5 g
謝謝
11#
發表於 2008-7-8 09:33:51 | 只看該作者
可以是各別算出Ron,再運算2 ^) x5 C. h  e; K2 O4 G0 [
.print r_n=par('(v(vin)-v(vout))/abs(i(m1))')
- `, V1 a3 Y$ j5 I.print r_p=par('(v(vin)-v(vout))/abs(i(m2))')
% _+ I: `# \! t" W* z: i/ ].print r_pn=par('(r_n*r_p)/(r_n+r_p)')3 Y8 c4 P9 `+ [  |5 k/ e

! _  v, N4 O" Z3 V3 _另外一種方式則是將電流相加再作運算: W; ?5 o8 g9 n2 _. q3 o+ ~
.print i_pn=par('abs(i(m1))+abs(i(m2))')
* @: ^0 _" O/ ~/ Y2 ].print r_p=par('(v(vin)-v(vout))/i_pn')
12#
發表於 2008-7-10 21:40:18 | 只看該作者
大大  我用了你的方法  可是結果怎麼跟書上畫的不一樣呢+ g% r; b9 }2 C8 M
以下是我的SPICE檔; i# n0 T6 \6 }3 y( Y  q

+ r9 n, D' t/ X3 evvdd   vdd   0   dc   3.0V6 b' ~: `& f! f% i1 J- n; ^7 O% D
vvss   vss   0   dc   0.0v
! V! s5 E9 b) ?9 w4 V+ l: @7 P2 jvvin   vin   0   dc   0.0v- J) d5 j$ A# H7 v  T# ]  M" e
m1   vin   vdd   vout  vss  nxxx  w=3.5u   l=0.35u 6 G: W; f! R" C- P
m2   vout  vss   vin   vdd  pxxx  w=3.5u   l=0.35u  m=4
1 ~6 {+ ?, K' K: m" n. I
6 ^( q8 ~" C* |5 @7 w7 t, S
4 R3 [: n/ t& l/ @* B以下是用 .print i_pn=par('abs(i(m1))+abs(i(m2))')  r_p=par('(v(vin)-v(vout))/i_pn')
9 }+ x$ m# H* Q' T! x. @
4 g1 W* l, ~* l, A, {.print rn=par('(v(vin)-v(vout))/abs(i(m1))') rp=par('(v(vin)-v(vout))/abs(i(m2))') rpn=par('(rn*rp)/(rn+rp)')/ u9 W% h9 d' i, _, J5 }; s# x
6 k# q% _4 I5 j% p# D# c/ Q7 N+ E
3 W+ i: w: d% K
為何兩個結果會不一樣呢& z! j( J8 W, ^2 C/ R
而且很納悶的是第二個方法為何要(相乘)/(相加)4 r3 q* `6 l2 Q& j, i
8 x3 P* |) N( o$ O
可否請大大幫忙解答3 W5 A) N1 S$ X7 q' L3 M
Thanks

本帖子中包含更多資源

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

x
13#
發表於 2008-7-11 00:20:41 | 只看該作者
第一個方法為何要(相乘)/(相加)???+ i, V4 L; d3 F/ Y0 L
你要計算transmission gate的電阻,而transmission gate就是PMOS和NMOS兩者並聯,要求並聯電阻的阻值,當然是(相乘)/(相加),這是很基本的電阻公式計算
2 a" S9 u% G7 N6 q$ t$ G所以,我先計算出各別PMOS和NMOS的阻值再作計算, }* |" ]: R! ?% h" f& r

5 t$ ^! M9 F8 L6 |至於兩種方法為何會不同3 M* l2 I/ C( U
照理說應該要相同才對,不過,我倒是很好奇為何你的電阻計算出來是負的
5 V1 S; D5 h% v2 i' s. N8 j這點很不合理
( d  @; }# T7 q! z1 m難道是你的VOUT沒有設對嗎??
14#
發表於 2008-7-13 12:05:56 | 只看該作者
如果我改成下面這樣
: y7 i6 m: x* @, R3 {& O3 A8 o0 h.print rn=par('(v(vout)-v(vin))/abs(i(m1))') rp=par('(v(vout)-v(vin))/abs(i(m2))') rpn=par('(rn*rp)/(rn+rp)')* z- S. D0 p4 x* g3 ^3 Q
電阻就會變正的
  _2 s9 M- h8 L: x6 ~可是不管怎麼看  還是覺得不太對
( G, g7 a$ s) b$ m0 D& N
# \0 L0 [: ]; n: a! y以下是我的spice檔, x- ~, v" Q9 b3 {8 x8 }+ z
vvdd   vdd   0   dc   3.0V
  E5 {1 }* s/ `9 @# B8 Wvvss   vss   0   dc   0.0v* A/ M9 S7 d, Z2 c8 p
vvin   vin   0   dc   0.0v
; x  t% Q* }7 }9 X; T# Q$ M1 F# ^9 p
m1   vin   vdd   vout  vss  nxx  w=wsize   l=lsize
& F. O. q6 ^4 nm2   vout  vss   vin   vdd  pxx  w=wsize   l=lsize  
) S& W8 W1 _6 U: @! D4 w  ]; b: Z$ C8 {3 _) o
*r1    vout  0     1k5 P: y! y2 w, B% F. ~) q) r% r8 s( v, @6 V
.dc vvin 0v 3.0v 0.05v  + q! |' p# R0 K: z# H/ c# X
.probe  rn=par('(v(vin)-v(vout))/abs(i(m1n))') rp=par('(v(vin)-v(vout))/abs(i(m1p))')  rpn=par('(rn*rp)/(rn+rp)')9 y' v( D' E" E7 M. |! |; t( J
.print  rn=par('(v(vin)-v(vout))/abs(i(m1n))') rp=par('(v(vin)-v(vout))/abs(i(m1p))')  rpn=par('(rn*rp)/(rn+rp)')4 S! {( O, j7 ]1 g7 ]" V
+ q. Z; L; A+ D/ z% q
.end. L. }- k: v. V" o& G! W

7 q% ~1 `$ r5 i1 t+ P希望大大幫我檢查一下  看看是否有錯9 t4 f+ _% i; i4 C$ t4 U2 ]9 J2 T; T
還有一個問題  就是為何不能用 v(vout)-v(vin) 而一定要用 v(vin)-v(vout) 呢3 r, A: o1 N* F' \6 b4 o5 D2 M
- ]) M1 E$ u& f# I
可否幫忙解答- H( E$ I7 X8 T) D
Thanks
15#
發表於 2008-7-13 15:48:16 | 只看該作者
sorry  上面打錯了5 S$ u* B6 `$ E# H) {
應該是  rn=par('(v(vin)-v(vout))/abs(i(m1))') rp=par('(v(vin)-v(vout))/abs(i(m1))')  rpn=par('(rn*rp)/(rn+rp)') 才對1 ?) P# u" F6 V+ v
9 L" ~3 `  d& u% R8 x* p$ u
還有想要請問一下   跑出來的模擬圖  要怎樣看電阻值呢% n, C  f/ h$ B# [' e
也就是說 NMOS 跟 transmission gate 的部分  要怎樣看7 _" V1 Q1 u5 A% v4 ]% q
可否教導一下
" n4 d4 u" b9 E7 LThanks
16#
發表於 2008-7-14 11:23:44 | 只看該作者
附圖Noname1應該就你說書上的圖吧
2 d. U6 ~, Y+ Q7 V9 }
7 y1 |) R- s2 F, _4 D9 B下面是我測試的transmission gate,而附圖Nonmame則是PMOS/NMOS/和PMOS+NMOS的電阻疊圖# r  l5 T# Y# y1 h( U& U
mp   in     vsa       vddah vddah  P_33_G2 L=0.35u W=5u M=1
+ p! E, U) y: J) h0 Qmn   in     vddah     vsa     vsa    N_33_G2 L=0.35u W=5u M=18 L( A- m( [4 I
vvsa      vsa       0    02 [* V( s4 k8 S
vddah  vddah  0    vddah
9 D, O" J$ L- d( g: ^* Pvin    in     0    0
$ q3 `3 A0 Q/ H.dc vin 0.05 3.295 0.005
$ I) p' ^. H6 Q# o( v.print r_p=par('(v(vddah)-v(in))/abs(i(mp))'); L- B% ~! p1 c
.print r_n=par('(v(in))/abs(i(mn))')* j1 Z$ Z: f2 L& Z6 J+ e7 h- E
.print r_pn=par('(r_p*r_n)/(r_p+r_n)')
1 @3 }5 f  L$ W書上的圖是把PMOS和NMOS各別的電阻畫出來之後,再把兩個電阻並聯計算畫出來,其中,要計算PMOS電阻,一端要接VDDAH,而要計算NMOS電阻,另外一端則是接VSA

本帖子中包含更多資源

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

x

評分

參與人數 1 +3 收起 理由
blueskyinair + 3 您的回答解決了我對Ron模擬上的疑惑~

查看全部評分

17#
發表於 2008-7-14 22:39:06 | 只看該作者
感謝版主這麼有耐心教導我  Q6 q' z% z9 j, p9 C3 V0 j& t
這下子  我對開關又懂更多了' A+ ]; }* X& ?2 j& I" N
Thanks
18#
發表於 2008-7-25 11:23:31 | 只看該作者
原帖由 hiyato 於 2008-7-7 06:04 PM 發表
! X! x  P  U( y. b& O順便來請教各位大大* P- ]1 J- y: P4 N8 P* A
有在其他書上看到; i6 Q( J& V- A
.print dc RON=par('1/LX8(mn1)')' t: m' i" c; J$ y
這個指令似乎也能看RON的電阻值
8 H% h* B3 b8 e- m' s  r$ ?不過不太了解這個指令的意思?
- I6 ?! d, X# ]: ^: n! F' S
4 l: i2 P- b  Y3 x( a  T8 D
LX8(mn1)是hspice自带的一个function,可以用gdso(mn1),表示mn1的电导的大小,正好是电阻值的倒数,用它替换更直观和简单。) L% z; P3 S/ q6 r( o% v' }
.probe Ron=par('1/gdso(mn1)')
19#
發表於 2008-7-25 11:25:54 | 只看該作者
PMOS和NMOS组成的CMOS switch 电阻值写成, m! _+ o" [) _' d* N! H6 K
.probe Ron= par('1/(gdso(mn1)+gdso(mp1))') 就OK了
20#
發表於 2008-12-2 15:05:30 | 只看該作者
原帖由 finster 於 2008-7-14 11:23 AM 發表
" L$ }9 }# ?$ [, H: q! X附圖Noname1應該就你說書上的圖吧& {; P* f$ R  y& w# U$ d

0 N' w' a3 h  b. f3 W下面是我測試的transmission gate,而附圖Nonmame則是PMOS/NMOS/和PMOS+NMOS的電阻疊圖6 _1 x# m. ~' A
mp   in     vsa       vddah vddah  P_33_G2 L=0.35u W=5u M=1/ `: ]+ D1 }) U! o% i) i# \* W
mn   in     vddah      ...
- ]) K- p, e  n; {
" A: ^4 ?' x9 q* S! U4 S6 D; F
; O9 D' O, M! X" t) G- e9 J
為何2種方法跑出來不一樣??0 n: ~( n2 @, |; X
6 x* Z$ U- @! P9 ?) ^9 w
.print pmos_Ron=par('(v(vdd)-v(Vin))/abs(i(M1p))')
1 K3 T6 W' P  k+ u1 N% M- @4 V.print nmos_Ron=par('(v(Vin))/abs(i(M1n))')
3 j& G( f7 T" ], ?* G.print TG_Ron=par('(pmos_Ron*nmos_Ron)/(pmos_Ron+nmos_Ron)')% v  J- P7 Q( l" {; S6 \4 ?

0 r8 ~  j5 `' c7 k4 C.print pmos_Ron=par('1/gdso(M1n)')6 r6 \  G  ^1 W
.print nmos_Ron=par('1/gdso(M1p)')
; @4 _" [4 e8 g.print TG_Ron=par('1/(gdso(M1n)+gdso(M1p))')
0 B: U) `/ |  ?/ l+ l  ^% w8 l. y' N( M3 ]4 Z
我只PO上TG的RON圖形出來,
$ t+ }# {: K+ w5 x/ k/ R; y上圖是用前三行指令跑出來的RON(2點電壓相減除以電流)
! G# y& D7 V* f下圖是用後三行指令跑出來的RON(直接用電導倒數)) R  x& C: ^* a/ ?
為何跑出來的圖形不一樣,理論上應該是一樣的啊) N9 H9 C" f" _, j
能否請各位大大位我解答

本帖子中包含更多資源

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

x
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-9-27 11:28 PM , Processed in 0.211012 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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