Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 36344|回復: 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即可7 ~" }* _# \' e
在HSPICE中利用PRINT寫來計算元件的(Vin-Vout)/I即可用awaves畫出元件的Ron電阻/ M# p7 [; G& Y/ t3 x8 l3 \" l( |
要特別注意一點的是,如果mos是內建的,那要留意外部電感的電流大小會"間接"決定mos的大小,或者mos是外接式的,那你直接看外部mos所提供的spice model大概就可以了
4#
發表於 2008-4-20 23:18:53 | 只看該作者
喔,嘿嘿,是finster版主啊,對啊就是V=IR啊,真是faint,原來我用錯電壓了,我錯用成Vout/I了怪不得不對呢,
+ W& |% I! R. l  S9 v
& I( P) R9 f, o- `. d! e谢谢您的解答!
5#
發表於 2008-7-7 00:05:00 | 只看該作者
這個問題剛好是最近一直困擾的問題
% G  }5 V0 N2 T/ p& u為何不可以(vout-vin)/I阿
$ f: d+ [- k  L下面是我寫的spice檔
! I# _9 R! y: x3 H9 o/ `+ R. ?- {m1 vin vdd vout vss nch3 w=3.5u l=0.35u  n: m. M) s# f! b6 Y4 ~- [
r1 vout 0 1k' P3 G" @# m* v( x" ~7 r+ H
在.print部份
' N+ m, c. J+ b是要寫 "v(vin)/v(vout)" "(v(vin)-v(vout))/i(r1)" "(v(vin)-v(vout))/i(m1)"呢' ~6 C( U4 I: z: p0 }3 z
可否幫忙解答?/ ^4 N' g1 z7 v5 h
thanks
6#
發表於 2008-7-7 09:52:23 | 只看該作者
原帖由 dogst 於 2008-7-7 12:05 AM 發表
8 }" \6 y* `; s% R4 x) z這個問題剛好是最近一直困擾的問題+ Y) f  m6 b8 F% ^/ c
為何不可以(vout-vin)/I阿0 w( k  V: i6 S9 J. j5 D
下面是我寫的spice檔  a5 M5 I7 B9 ]
m1 vin vdd vout vss nch3 w=3.5u l=0.35u
7 v& @% f+ b; A/ Y( W8 er1 vout 0 1k
5 }/ t8 k9 x1 [. F4 S8 p9 J4 u% c/ `% F在.print部份
) d/ j; i# v) C是要寫 "v(vin)/v(vout)" "(v(vin)-v(vout))/i(r1)" " ...

# m- {# X$ L0 f6 M3 R" @1 C' q' H7 Z8 d

* ?7 B% s% z0 T9 k1 r3 F" L
, I! }% |& @3 @+ E* |0 G建議你不要加r1 vout 0 1k
3 q! C1 B. ?8 n- \: f' I因為你要對NMOS作計算ron,加了r1後,電流會對r1產生一個電壓,如此一來會壓縮到m1的vout電壓; ]9 |4 l1 U$ r  I# l
建議的寫法為  z+ B& H. R, k, I! H0 ]
m1 vin vdd vout vss nch3 w=3.5u l=0.35u m=10 y6 ^% |( N( e- `4 Z9 f
vvin  vin   vss    vss3 t3 n% M- q! f- j. x
vvout vout  vss    vss
8 t, z* p( R) z0 c% G2 p.dc vvin 0.001 3.3 0.1
5 _$ q# H4 N% r4 E# {1 c+ a.print PAR('(v(in))/abs(i(m1))')9 a* f/ C8 Z' o7 D( `, p0 n$ r
.print i(m1)
7#
發表於 2008-7-7 15:37:14 | 只看該作者
嗯嗯  有沒有加電阻  真的有差  謝謝+ @1 a) E! a6 c
可是又有一個問題(不好意思 問題真多 多多包含)
, ]( ^3 A9 R+ {! ^8 M( C8 Yvvdd   vdd   0  3.0v
+ `( M3 d% \* b2 E, h2 B0 j/ ~vvss   vss   0  0v
. @2 c: ]$ s; ivvin   vin   0  0v & M, y5 I2 ?- Q0 X* k- I' L% V- b7 I
vvout  vout  0  0v # C. J. a- G! l0 _2 D
m1   vin   vdd   vout  vss  nch3  w=3.5u   l=0.35u
; L# ^& k5 ~8 A( z  n4 k8 b.print a=par('(v(vin)-v(vout))/i(m1)') b=par('v(vin)/i(m1)')
9 W9 u( l3 T: B$ @就是在vout的部份 有沒有設成0好像結果差很多耶  為何會這樣呢* l4 x2 J/ |4 |7 x% d
還有在量Ron部份時  到底是要par('(v(vin)-v(vout))/i(m1)')還是要par('v(vin)/i(m1)')
, I  ?0 O- P6 G2 x因為版主在回覆時  兩者都有提到  可是還是不清楚* w6 ^( O0 U8 E
可否幫忙解答?1 r: k# O& b$ I% g* h  L
Thanks
8#
發表於 2008-7-7 17:25:19 | 只看該作者
不好意思,一時之間沒留意到
) ~7 B# T; V6 X" q8 v4 k5 q應該是
+ d& q: [% Z! l" A.print PAR('(v(vin)-v(vout))/abs(i(m1))')9 h5 l  O! T0 u. E6 e+ U
要加abs則是因為電流有流進流出的問題,進而會產生正負符號的緣故,故而加了abs可以變成是正的/ q* q  I. a/ T9 {" O" \( `
另外,vout的部份,因為你是作.DC的sweep,而且是對NMOS,所以,source端一定要加最低電位(也就是0V)然後對drain作dc sweep$ N, o, V- M) Y
反之若是PMOS,則是要加最高電位(亦即VDD)/ B4 B; s1 M8 p" D: y+ e) E
這是因為PMOS和NMOS兩者對VSS和VDD有不一樣的變化
9#
發表於 2008-7-7 18:04:27 | 只看該作者
順便來請教各位大大
% t4 ]( j4 `5 H$ [+ \3 u有在其他書上看到$ E! g; p0 x/ D5 P) l
.print dc RON=par('1/LX8(mn1)')( a3 I0 Q9 y5 z9 ^& O' M/ R
這個指令似乎也能看RON的電阻值
" |& p' _% }( X  O. t. G4 |1 v不過不太了解這個指令的意思?
10#
發表於 2008-7-7 20:41:52 | 只看該作者
原帖由 finster 於 2008-7-7 05:25 PM 發表 1 P6 {9 ~2 s& m  S& k/ m  a& q% ?
不好意思,一時之間沒留意到- \% {3 G  r1 K  l
應該是1 N9 K; D" ?/ u! y$ f# \
.print PAR('(v(vin)-v(vout))/abs(i(m1))')
& N" F4 E" `7 \3 ]5 p$ p5 d要加abs則是因為電流有流進流出的問題,進而會產生正負符號的緣故,故而加了abs可以變成是正的4 r# T: F6 {3 x0 u
另外,vout的部份,因為你是作.DC的swe ...
4 ^; c4 O0 R& b/ m

+ C7 w, D2 q1 e1 {3 B, D, U1 Y
4 e! z, b3 v9 F' Y% x( o嗯嗯  原來如此% U3 f4 F" g3 w# |
意思也就是說 要寫成下面這樣子  對吧!9 ~3 N/ F1 Q: n9 \" q: d
nmos : m1 vin vdd vout vss ........  .print par('(v(vin)-v(vout))/abs(i(m1))')! j, H9 B" @, J  f' p# H4 @
pmos : m1 vout vss vin vdd ........  .print par('(v(vin)-v(vout))/abs(i(m1))')4 F0 i9 c/ W3 I1 c& X" s0 _

/ c( b6 Y, {/ M' _+ V0 A那如果是transmission gate的話% ?6 n5 t/ ~3 x% V
vvdd   vdd   0   dc   3.0V6 p0 i7 h2 K9 }! E( b7 D
vvss   vss   0   dc   0.0v. G, t( |2 U0 G+ S
vvin   vin   0   dc   0.0v
$ `, S2 D' Y+ T* f: im1   vin   vdd   vout  vss  nch3  w=3.5u   l=0.35u : c+ G# f2 v% ?9 D
m2   vout  vss   vin   vdd  pch3  w=3.5u   l=0.35u  
0 \( d6 U, P) F  n. Y那麼在.print部份的話  要怎麼寫
; m; T$ m1 p/ e+ D3 Z# v因為他不像nmos或者pmos一樣  只有m1的電流可以除* [4 M' e9 a  G3 y/ `% W+ }
這樣怎麼求Ron8 k) x* [5 x$ {+ e
可否請大大解釋疑惑
. z" }: [1 B; q# }5 L4 p5 k8 B謝謝
11#
發表於 2008-7-8 09:33:51 | 只看該作者
可以是各別算出Ron,再運算2 \5 S- f' ~4 Q% D' u2 i
.print r_n=par('(v(vin)-v(vout))/abs(i(m1))')( S' S0 a4 i) Z7 k4 G0 C
.print r_p=par('(v(vin)-v(vout))/abs(i(m2))')8 m% N, e* q' C  G8 r
.print r_pn=par('(r_n*r_p)/(r_n+r_p)')
6 }, w' I' E( O4 u+ Q  h
. D6 ]' }; p$ j3 ]! X" M& F# _另外一種方式則是將電流相加再作運算
6 z& [: w; ^% K.print i_pn=par('abs(i(m1))+abs(i(m2))')) x0 d2 T: ~, g: h" N
.print r_p=par('(v(vin)-v(vout))/i_pn')
12#
發表於 2008-7-10 21:40:18 | 只看該作者
大大  我用了你的方法  可是結果怎麼跟書上畫的不一樣呢
. n" e& c: F/ G; q: [# b以下是我的SPICE檔% m5 s4 i1 U# q! r

, m/ V4 H) Q4 }2 I* g1 @& r3 T! j' wvvdd   vdd   0   dc   3.0V9 }3 ^& ~0 u8 O: o2 k  Q$ `
vvss   vss   0   dc   0.0v4 n# W5 q7 t1 U# K  y% ?9 J
vvin   vin   0   dc   0.0v$ z% f/ g8 [( l0 e, m4 v/ S
m1   vin   vdd   vout  vss  nxxx  w=3.5u   l=0.35u
! ?2 ^6 e- i* N. J! H' C/ b( ?  `m2   vout  vss   vin   vdd  pxxx  w=3.5u   l=0.35u  m=4
( `8 j  @5 G! z! Y) G: _7 G' e3 y6 V1 _) z/ m& _
4 x5 v( z4 H  \# F$ ^! m; i
以下是用 .print i_pn=par('abs(i(m1))+abs(i(m2))')  r_p=par('(v(vin)-v(vout))/i_pn')
! b  w- |5 _7 ]# C2 N' u
) u6 W5 S! N5 A% p9 g8 Z4 h' s.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)')
+ O  n* F+ ]7 W7 E. [% r" L
; u3 @' I$ n. P0 p+ t5 O$ G* u6 a. X$ x/ S! ?4 U
為何兩個結果會不一樣呢3 ?2 e5 r. f$ J' X
而且很納悶的是第二個方法為何要(相乘)/(相加)
1 b* I: q6 f& R8 Y3 n: d! x3 n& W. J$ V$ |1 x' u/ W
可否請大大幫忙解答
- c2 S. G$ j6 J% x- ^/ hThanks

本帖子中包含更多資源

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

x
13#
發表於 2008-7-11 00:20:41 | 只看該作者
第一個方法為何要(相乘)/(相加)???
8 x& C4 v- U8 g4 q2 T0 \, A你要計算transmission gate的電阻,而transmission gate就是PMOS和NMOS兩者並聯,要求並聯電阻的阻值,當然是(相乘)/(相加),這是很基本的電阻公式計算4 ]5 {$ Y- B- K( _* F. [/ T% z
所以,我先計算出各別PMOS和NMOS的阻值再作計算2 @% Q6 R, o4 n7 Z% A

# m* _& r7 t/ X至於兩種方法為何會不同
: k7 N& N6 ?& B- k) o照理說應該要相同才對,不過,我倒是很好奇為何你的電阻計算出來是負的3 ^& o4 s9 J4 y
這點很不合理. G. F  ?) l0 M. C5 C
難道是你的VOUT沒有設對嗎??
14#
發表於 2008-7-13 12:05:56 | 只看該作者
如果我改成下面這樣
  f9 X" K5 O; w. ~; U.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)')
4 {- Y* h* x2 d" w& k電阻就會變正的
2 G: L6 L  [1 C7 q! r1 K+ H8 q- t可是不管怎麼看  還是覺得不太對1 f" O% }$ T& K! Y
) A* h4 k* I. d; J) d# {
以下是我的spice檔
* G; I* v9 R+ @( v& Zvvdd   vdd   0   dc   3.0V# k0 A) q4 {0 d! F
vvss   vss   0   dc   0.0v
9 p/ d! {: G5 Q" cvvin   vin   0   dc   0.0v
0 ^6 Z, r% S1 v( Y2 m& R2 [1 r; ]
6 Z) D9 Z) g4 h2 X: b5 am1   vin   vdd   vout  vss  nxx  w=wsize   l=lsize 6 o- d4 x+ H( D. D! t! g& [1 C
m2   vout  vss   vin   vdd  pxx  w=wsize   l=lsize  
! K2 H/ J0 f9 \- b! A
$ r% }* {7 _; T. V. r*r1    vout  0     1k
- |8 M2 H8 j* R4 Y, Z- c.dc vvin 0v 3.0v 0.05v  
" `& v8 [, b% k# x6 k. V.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)')
' p+ L0 T- l- Z* j; T& i/ G6 m.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)')
/ D  s0 h8 d- C0 O
7 F4 |2 W1 q- [' {.end" A7 I8 z, c) Y

; T2 ^2 v# f4 w- z希望大大幫我檢查一下  看看是否有錯
8 j1 P( c6 g$ r還有一個問題  就是為何不能用 v(vout)-v(vin) 而一定要用 v(vin)-v(vout) 呢: ?, ], D& Y' D4 T* `6 m
7 f$ ]( r$ D1 E- w7 F- y
可否幫忙解答% {  E/ @- O, y* V$ ^
Thanks
15#
發表於 2008-7-13 15:48:16 | 只看該作者
sorry  上面打錯了. W' y" ]5 c( H0 B+ X5 e! m& F
應該是  rn=par('(v(vin)-v(vout))/abs(i(m1))') rp=par('(v(vin)-v(vout))/abs(i(m1))')  rpn=par('(rn*rp)/(rn+rp)') 才對- S/ y1 q2 l* y0 ~% R4 \
/ d  S9 @* ^4 k2 `9 B1 i7 n2 K9 y2 ]
還有想要請問一下   跑出來的模擬圖  要怎樣看電阻值呢% o  e" d( }& D9 p# k9 Z
也就是說 NMOS 跟 transmission gate 的部分  要怎樣看4 Q# T& }  i( U5 P
可否教導一下" s7 g6 T1 v- L, c+ ]# v
Thanks
16#
發表於 2008-7-14 11:23:44 | 只看該作者
附圖Noname1應該就你說書上的圖吧
8 P2 _1 N! ~4 I( U0 h3 e! ?- d, s4 J9 j- d2 O
下面是我測試的transmission gate,而附圖Nonmame則是PMOS/NMOS/和PMOS+NMOS的電阻疊圖
& j3 V4 e; p9 M: l% d0 Q7 `6 u, ?mp   in     vsa       vddah vddah  P_33_G2 L=0.35u W=5u M=1: E$ _: C, [, B+ T
mn   in     vddah     vsa     vsa    N_33_G2 L=0.35u W=5u M=1; v' w4 a& J/ p9 Z# ?
vvsa      vsa       0    00 E( ?) q: ~4 ]2 m5 i
vddah  vddah  0    vddah! Q0 i  V. O+ H$ D! ~+ X" J* i* k
vin    in     0    0
; k1 J- g/ n( j$ e.dc vin 0.05 3.295 0.005
$ Z; Y% F" W' }8 i0 c.print r_p=par('(v(vddah)-v(in))/abs(i(mp))')
" Y4 N& c" ]+ |- z# ]& z.print r_n=par('(v(in))/abs(i(mn))')
- \9 G1 B: R, M6 A.print r_pn=par('(r_p*r_n)/(r_p+r_n)')
: v; o9 ^4 y0 G/ m6 j3 m" \書上的圖是把PMOS和NMOS各別的電阻畫出來之後,再把兩個電阻並聯計算畫出來,其中,要計算PMOS電阻,一端要接VDDAH,而要計算NMOS電阻,另外一端則是接VSA

本帖子中包含更多資源

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

x

評分

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

查看全部評分

17#
發表於 2008-7-14 22:39:06 | 只看該作者
感謝版主這麼有耐心教導我/ A! v& z0 G$ y3 @+ k' j
這下子  我對開關又懂更多了
# _+ \/ q, v2 B6 a5 g8 H/ lThanks
18#
發表於 2008-7-25 11:23:31 | 只看該作者
原帖由 hiyato 於 2008-7-7 06:04 PM 發表
, }5 P* y. v8 P6 R) v5 `順便來請教各位大大
( v  u- ~9 {6 t3 ]有在其他書上看到
5 f0 |& u4 j" s.print dc RON=par('1/LX8(mn1)'). Y% m" }0 j  v# j& j6 W
這個指令似乎也能看RON的電阻值
% _* n& K7 e) g' _% ]不過不太了解這個指令的意思?
4 e, D2 D* Z% p* ?  |

3 W+ r/ |% E2 g" O2 C& zLX8(mn1)是hspice自带的一个function,可以用gdso(mn1),表示mn1的电导的大小,正好是电阻值的倒数,用它替换更直观和简单。
' A# |1 T( x, V.probe Ron=par('1/gdso(mn1)')
19#
發表於 2008-7-25 11:25:54 | 只看該作者
PMOS和NMOS组成的CMOS switch 电阻值写成5 t% D2 j. ?7 g# Z( t0 H6 O
.probe Ron= par('1/(gdso(mn1)+gdso(mp1))') 就OK了
20#
發表於 2008-12-2 15:05:30 | 只看該作者
原帖由 finster 於 2008-7-14 11:23 AM 發表 4 E3 k) V8 F; t/ H' f
附圖Noname1應該就你說書上的圖吧, x# p8 g& e* A; x9 _! c3 L
$ {) ^# \+ Q' L. Z7 X
下面是我測試的transmission gate,而附圖Nonmame則是PMOS/NMOS/和PMOS+NMOS的電阻疊圖% Q) M( a  z, M1 Q4 y6 @9 @
mp   in     vsa       vddah vddah  P_33_G2 L=0.35u W=5u M=1* h) K# e. l0 g1 ^' a& T
mn   in     vddah      ...
( c& z6 N( ]3 Q; S
( E4 V" }2 w. c9 C; K! \* C

/ C9 R* Q! V* v7 g為何2種方法跑出來不一樣??
% S3 W: w% Q; G% @
/ f5 ~" ~" N0 E  `.print pmos_Ron=par('(v(vdd)-v(Vin))/abs(i(M1p))')/ v. A3 b* R7 w3 m( M
.print nmos_Ron=par('(v(Vin))/abs(i(M1n))')% D, G; o% i- @/ i9 u
.print TG_Ron=par('(pmos_Ron*nmos_Ron)/(pmos_Ron+nmos_Ron)')
6 \2 }$ Z  i6 R  a3 V8 \; ?! _* L; Z3 c' [( R, g
.print pmos_Ron=par('1/gdso(M1n)')
8 L) b% q/ k" s4 t.print nmos_Ron=par('1/gdso(M1p)')
) \$ g) b# w6 h& {6 ~4 P) T# [2 m5 A  j.print TG_Ron=par('1/(gdso(M1n)+gdso(M1p))') ' S5 [' u1 n! L

, T5 `- c, D& u: K! V) P$ q我只PO上TG的RON圖形出來,
- W$ t0 F( c2 U  ^上圖是用前三行指令跑出來的RON(2點電壓相減除以電流)
6 a/ \8 l$ l/ Y' K下圖是用後三行指令跑出來的RON(直接用電導倒數)
' t4 O+ e8 o' W$ `5 F, r2 p為何跑出來的圖形不一樣,理論上應該是一樣的啊
( R& |! m$ y! b. e( d  R能否請各位大大位我解答

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2024-5-8 06:38 AM , Processed in 0.140008 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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