Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 37988|回復: 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即可
! ~& h# g% d$ r# R+ }4 l! b在HSPICE中利用PRINT寫來計算元件的(Vin-Vout)/I即可用awaves畫出元件的Ron電阻
6 B' Z9 N! E9 K% y! W7 \2 p5 `$ Z8 R! ?要特別注意一點的是,如果mos是內建的,那要留意外部電感的電流大小會"間接"決定mos的大小,或者mos是外接式的,那你直接看外部mos所提供的spice model大概就可以了
4#
發表於 2008-4-20 23:18:53 | 只看該作者
喔,嘿嘿,是finster版主啊,對啊就是V=IR啊,真是faint,原來我用錯電壓了,我錯用成Vout/I了怪不得不對呢,
' Q8 }, K. C& n* a3 ^0 H
+ E8 P7 B3 v2 {: h谢谢您的解答!
5#
發表於 2008-7-7 00:05:00 | 只看該作者
這個問題剛好是最近一直困擾的問題  J# Z0 b& {+ u
為何不可以(vout-vin)/I阿1 S& q( O5 n6 i$ j4 I" N
下面是我寫的spice檔  G8 g! Z4 F8 ]& S3 i+ I
m1 vin vdd vout vss nch3 w=3.5u l=0.35u+ `6 `2 {5 P  S- m! S# L! @
r1 vout 0 1k, q! t! C. r' e, j' L1 E" r3 U
在.print部份
% e. T' U: w$ P5 K6 A& Z8 F是要寫 "v(vin)/v(vout)" "(v(vin)-v(vout))/i(r1)" "(v(vin)-v(vout))/i(m1)"呢
. {2 R+ k. ~; S1 j可否幫忙解答?7 T* K. G* v$ s/ N
thanks
6#
發表於 2008-7-7 09:52:23 | 只看該作者
原帖由 dogst 於 2008-7-7 12:05 AM 發表
) n8 s1 U( t7 _: \& C這個問題剛好是最近一直困擾的問題) c: t7 I( @. S0 [) {
為何不可以(vout-vin)/I阿
, q3 i+ l; G5 z* d# D2 @下面是我寫的spice檔
( R: z1 V  I  }6 A6 A$ |" U+ h2 gm1 vin vdd vout vss nch3 w=3.5u l=0.35u) o1 f" A9 |1 X- o1 P3 z+ {5 {5 v
r1 vout 0 1k
6 x( _& T1 j* `4 V) q. u在.print部份9 R+ n/ B' c6 n2 Q7 v
是要寫 "v(vin)/v(vout)" "(v(vin)-v(vout))/i(r1)" " ...
' d) l* x( d/ Z8 v
* w  |% h8 E% X8 r% a% c
1 o& a$ u+ p5 `
" L0 n0 R- a# O) u3 D, X! T) [
建議你不要加r1 vout 0 1k
$ u  D$ P" ?. F" {, ^: }( I因為你要對NMOS作計算ron,加了r1後,電流會對r1產生一個電壓,如此一來會壓縮到m1的vout電壓
  s2 p) w; N5 I* M* u/ Z, b' @建議的寫法為. C6 y7 H3 |5 e# d7 H
m1 vin vdd vout vss nch3 w=3.5u l=0.35u m=1
! S; F5 @- f/ f4 Y* V0 A- Lvvin  vin   vss    vss7 P% W" X+ i% G5 Y
vvout vout  vss    vss- a0 C0 K$ I" M
.dc vvin 0.001 3.3 0.1
0 K6 ^$ B6 g" L7 C% E.print PAR('(v(in))/abs(i(m1))')
; M' R: y; c2 h. Z.print i(m1)
7#
發表於 2008-7-7 15:37:14 | 只看該作者
嗯嗯  有沒有加電阻  真的有差  謝謝
5 ]' g+ g% @& L9 g% o可是又有一個問題(不好意思 問題真多 多多包含)
# Q$ q1 ^$ q1 Z4 F% T8 m' e+ Zvvdd   vdd   0  3.0v
3 W9 ]  C! O8 L3 P" u) e% tvvss   vss   0  0v / ^" x% K! i8 N7 v6 r
vvin   vin   0  0v
2 F2 t/ @0 q* Z  i* c% f$ E1 [vvout  vout  0  0v % _! W8 m" i9 `' d. E4 g0 [
m1   vin   vdd   vout  vss  nch3  w=3.5u   l=0.35u - R' `0 `6 J! r
.print a=par('(v(vin)-v(vout))/i(m1)') b=par('v(vin)/i(m1)')+ \3 N, S& [( ]' p& \1 e
就是在vout的部份 有沒有設成0好像結果差很多耶  為何會這樣呢
8 @9 p/ Q' ~% i; Q還有在量Ron部份時  到底是要par('(v(vin)-v(vout))/i(m1)')還是要par('v(vin)/i(m1)')
1 i, f& G' R9 }4 z因為版主在回覆時  兩者都有提到  可是還是不清楚" d: y+ d8 w7 X# x7 N. h& |
可否幫忙解答?
$ M+ v0 a+ d# y6 K8 W6 u9 A2 dThanks
8#
發表於 2008-7-7 17:25:19 | 只看該作者
不好意思,一時之間沒留意到
# p1 Q3 H6 r" L# r" \$ Y2 b應該是. z& z' x( w) w* C% ~7 v: D
.print PAR('(v(vin)-v(vout))/abs(i(m1))')7 r' f' b7 B/ y# N6 I- V2 l: {
要加abs則是因為電流有流進流出的問題,進而會產生正負符號的緣故,故而加了abs可以變成是正的  ?7 ^# O! F! g' M. R6 z
另外,vout的部份,因為你是作.DC的sweep,而且是對NMOS,所以,source端一定要加最低電位(也就是0V)然後對drain作dc sweep9 D1 G& r- }. y( l, q5 H
反之若是PMOS,則是要加最高電位(亦即VDD)
( N+ w8 w8 |) O2 ~  [! ^' F這是因為PMOS和NMOS兩者對VSS和VDD有不一樣的變化
9#
發表於 2008-7-7 18:04:27 | 只看該作者
順便來請教各位大大
/ ]9 U2 T& {, A- p0 `' o有在其他書上看到4 X4 Z2 j* N6 w# ~" Z0 b
.print dc RON=par('1/LX8(mn1)')
2 l7 G+ O, \% q, R. J, z! T" m; T這個指令似乎也能看RON的電阻值
5 w3 J6 U' E& @% ?- ?" |: i6 ~- {+ u% ^* U不過不太了解這個指令的意思?
10#
發表於 2008-7-7 20:41:52 | 只看該作者
原帖由 finster 於 2008-7-7 05:25 PM 發表   D% A! t! o) o- A1 Q
不好意思,一時之間沒留意到+ z: B* [  H. d* n- Q
應該是9 V3 ^5 H0 O8 R, V7 m
.print PAR('(v(vin)-v(vout))/abs(i(m1))')
+ Y0 T7 a6 M1 l9 ^) B要加abs則是因為電流有流進流出的問題,進而會產生正負符號的緣故,故而加了abs可以變成是正的8 d0 g4 X  f* x, b( O" `4 a5 o3 W
另外,vout的部份,因為你是作.DC的swe ...
; G7 Y' M3 M9 Q2 P  @  x8 @

0 C' g  Q+ H. l
% p0 A7 j$ y1 _0 H; r' Z3 q5 O/ _嗯嗯  原來如此$ @2 }$ Q! i% V+ B  Z1 n" K6 t
意思也就是說 要寫成下面這樣子  對吧!4 U8 g1 C5 L% v* b* L& p& N6 C3 \$ u
nmos : m1 vin vdd vout vss ........  .print par('(v(vin)-v(vout))/abs(i(m1))')
) }5 O/ r3 N6 v9 X  `pmos : m1 vout vss vin vdd ........  .print par('(v(vin)-v(vout))/abs(i(m1))')
" x8 |: M7 p/ O/ o! p7 y3 s
5 z+ k7 m6 ?% x, J! Q; `那如果是transmission gate的話3 [$ w  h) D5 a5 ]* ]- m& N, M
vvdd   vdd   0   dc   3.0V4 I6 F0 e9 u3 \+ j! o6 c  v% ?
vvss   vss   0   dc   0.0v
9 p. W9 z5 w$ w' A0 v( {4 {! Pvvin   vin   0   dc   0.0v; C. Q; i9 R9 j. W* W, _
m1   vin   vdd   vout  vss  nch3  w=3.5u   l=0.35u $ x+ R1 `" \& C0 g, |9 W
m2   vout  vss   vin   vdd  pch3  w=3.5u   l=0.35u  6 u+ N( a1 [& J( A+ f, o  I4 P
那麼在.print部份的話  要怎麼寫3 l$ r4 c/ {- D0 G$ |7 \3 M- u
因為他不像nmos或者pmos一樣  只有m1的電流可以除
! v: v( g( |; y2 z& d這樣怎麼求Ron1 N5 D7 }' Y- ^% H7 x
可否請大大解釋疑惑
4 G. S2 u) O) i* ~* I/ n. d. a* _  `謝謝
11#
發表於 2008-7-8 09:33:51 | 只看該作者
可以是各別算出Ron,再運算
- a1 t% ~: `; o! c: T$ c; m( t" Q6 h5 H.print r_n=par('(v(vin)-v(vout))/abs(i(m1))')
" Y+ k  k. s( A! M4 R3 D0 q.print r_p=par('(v(vin)-v(vout))/abs(i(m2))')
- V! r' k5 b2 X  d) M1 g8 D.print r_pn=par('(r_n*r_p)/(r_n+r_p)')
( P. v$ }% j+ B/ b9 d0 }
. F2 [& y# a9 T- b( a/ K另外一種方式則是將電流相加再作運算' U, M. p5 S7 I# G$ l" t6 ?' V
.print i_pn=par('abs(i(m1))+abs(i(m2))')
* }+ n$ M/ e$ e# C4 O/ Y.print r_p=par('(v(vin)-v(vout))/i_pn')
12#
發表於 2008-7-10 21:40:18 | 只看該作者
大大  我用了你的方法  可是結果怎麼跟書上畫的不一樣呢2 q! U  U" c9 i, I1 s
以下是我的SPICE檔% O/ n: O- y! i3 A! y3 p& n

+ L" N$ J4 S9 Vvvdd   vdd   0   dc   3.0V* ~2 p) A* f" p5 g; A4 C
vvss   vss   0   dc   0.0v
* e+ ~1 [" a$ F) uvvin   vin   0   dc   0.0v4 Q9 K1 R* f8 ], @
m1   vin   vdd   vout  vss  nxxx  w=3.5u   l=0.35u # \+ ?2 \1 O6 j8 \  T
m2   vout  vss   vin   vdd  pxxx  w=3.5u   l=0.35u  m=4
8 _6 ]7 Z) x. S. }; y+ ?: c
7 x* ?9 N, D3 r8 d& D; t6 G, m$ _) l* ?. `" o5 r5 O- o
以下是用 .print i_pn=par('abs(i(m1))+abs(i(m2))')  r_p=par('(v(vin)-v(vout))/i_pn')0 T/ M; l# h3 X3 I% X
) Z1 b. M* K+ O
.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)')
9 f  J. i1 }. r( T
# P" i6 T' Z. U& }7 D, e& Z$ ?( b; R
* W8 d. @8 Q) \  l為何兩個結果會不一樣呢, m; C  l; f: U: Y! f7 s: M8 w
而且很納悶的是第二個方法為何要(相乘)/(相加)
7 r$ a: U) x9 O/ ?5 e* M7 X) U
, ~0 E) {6 r5 `' P可否請大大幫忙解答; t: n) l, y/ `' V, K1 R+ k
Thanks

本帖子中包含更多資源

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

x
13#
發表於 2008-7-11 00:20:41 | 只看該作者
第一個方法為何要(相乘)/(相加)???$ k$ p% l7 P, ~; Y: ~. E# X7 Z$ |
你要計算transmission gate的電阻,而transmission gate就是PMOS和NMOS兩者並聯,要求並聯電阻的阻值,當然是(相乘)/(相加),這是很基本的電阻公式計算
9 y. U4 r2 P- e1 y, E0 |6 L6 w所以,我先計算出各別PMOS和NMOS的阻值再作計算' ]0 H3 W. _- a- [  {8 K

- R, c- W: p/ x7 {4 n至於兩種方法為何會不同
( K4 R4 d$ v6 \照理說應該要相同才對,不過,我倒是很好奇為何你的電阻計算出來是負的
  f& @8 a: W& a: `/ O& @這點很不合理  }* H" j! O# j
難道是你的VOUT沒有設對嗎??
14#
發表於 2008-7-13 12:05:56 | 只看該作者
如果我改成下面這樣
+ d4 h1 C  h. T0 j. I0 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)')/ ]/ l$ |' ^+ |! W1 t: K/ ?  l
電阻就會變正的2 U0 X: V& E1 D8 ?: O+ \
可是不管怎麼看  還是覺得不太對
  i9 h" ?' ]& k! j3 R, I2 \* \/ i- p
以下是我的spice檔
+ _  W/ \0 v1 B5 Nvvdd   vdd   0   dc   3.0V
- N3 e1 `8 y" K$ W9 w! rvvss   vss   0   dc   0.0v0 t/ v$ `/ h. k  k( U
vvin   vin   0   dc   0.0v
1 Q* q5 Q9 M3 W8 {+ M, r* u; X3 |+ ^1 Z4 Y6 o
m1   vin   vdd   vout  vss  nxx  w=wsize   l=lsize ! A3 {6 P( E" K" C. A5 [
m2   vout  vss   vin   vdd  pxx  w=wsize   l=lsize  
2 o& ?! |% c6 {0 o4 I5 }% v
* v6 R% @5 D9 u( M*r1    vout  0     1k
' @/ {, X9 f3 z: h1 {.dc vvin 0v 3.0v 0.05v  - s1 ?1 G8 o& 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)')
! C  j8 O, [4 E.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)')
" C, a! N1 |2 o) E: P( t: u' T3 T5 ?: z- n. U0 c& v: {; r
.end9 R6 h. r6 F# c  S, d8 f
1 N& Z, |& V! `
希望大大幫我檢查一下  看看是否有錯! w' I% n8 q  P
還有一個問題  就是為何不能用 v(vout)-v(vin) 而一定要用 v(vin)-v(vout) 呢
" }, L) B. v$ A' `8 O9 p! r
6 i; A" j8 r7 l可否幫忙解答
. n8 R/ y! H: y. \0 }Thanks
15#
發表於 2008-7-13 15:48:16 | 只看該作者
sorry  上面打錯了( `4 Y4 S: Z) s. R5 P4 D5 t
應該是  rn=par('(v(vin)-v(vout))/abs(i(m1))') rp=par('(v(vin)-v(vout))/abs(i(m1))')  rpn=par('(rn*rp)/(rn+rp)') 才對
, }" D! ^6 Q: T9 [* N* Y* q; H2 r: i. X$ U
還有想要請問一下   跑出來的模擬圖  要怎樣看電阻值呢0 p1 x' x  q5 Y
也就是說 NMOS 跟 transmission gate 的部分  要怎樣看( ~9 Q3 G! M+ E; U  S& y8 J& K
可否教導一下1 o) ~9 M. C2 ?4 p( y
Thanks
16#
發表於 2008-7-14 11:23:44 | 只看該作者
附圖Noname1應該就你說書上的圖吧. w/ R( v/ \+ w) C

, f: N+ i9 g1 U" }* I/ n/ b. x1 h下面是我測試的transmission gate,而附圖Nonmame則是PMOS/NMOS/和PMOS+NMOS的電阻疊圖% b) }# p: W! ~4 J# g9 Z, ]' \
mp   in     vsa       vddah vddah  P_33_G2 L=0.35u W=5u M=1/ X6 R9 ^; F1 B# V# P3 Y
mn   in     vddah     vsa     vsa    N_33_G2 L=0.35u W=5u M=1# q0 E' |: z% G) L4 x; Q& M- r/ t
vvsa      vsa       0    0
3 w9 y: a4 j; K* U$ U* nvddah  vddah  0    vddah) ?5 \) ], W/ ~: A- Q) V& V
vin    in     0    0. s8 y/ e' p! S. C( e
.dc vin 0.05 3.295 0.005
! W8 E1 h+ A' [; f/ o' w+ k.print r_p=par('(v(vddah)-v(in))/abs(i(mp))')
# ~9 P' ~: g& q6 ^3 H# l% n- l.print r_n=par('(v(in))/abs(i(mn))')! m& M6 x/ q4 g6 _7 _- I
.print r_pn=par('(r_p*r_n)/(r_p+r_n)')! I2 h4 C5 d3 K3 t( y( [
書上的圖是把PMOS和NMOS各別的電阻畫出來之後,再把兩個電阻並聯計算畫出來,其中,要計算PMOS電阻,一端要接VDDAH,而要計算NMOS電阻,另外一端則是接VSA

本帖子中包含更多資源

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

x

評分

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

查看全部評分

17#
發表於 2008-7-14 22:39:06 | 只看該作者
感謝版主這麼有耐心教導我, c, d& H! N( Z: j" {
這下子  我對開關又懂更多了  q4 g$ e1 c3 w7 z# L6 I) g) P
Thanks
18#
發表於 2008-7-25 11:23:31 | 只看該作者
原帖由 hiyato 於 2008-7-7 06:04 PM 發表
- K2 ]& j/ N9 F/ I7 F2 W% F順便來請教各位大大  V& E% V$ W+ G: n$ Z
有在其他書上看到
- d1 q8 ?( T) u.print dc RON=par('1/LX8(mn1)')
) G2 k. ~  r: d這個指令似乎也能看RON的電阻值  {! _; j1 ~4 y
不過不太了解這個指令的意思?
5 S3 y  M/ F0 C
( l% Z; w0 K; ?/ O
LX8(mn1)是hspice自带的一个function,可以用gdso(mn1),表示mn1的电导的大小,正好是电阻值的倒数,用它替换更直观和简单。' N4 f" A3 ]) a( j/ W# G4 Y! l
.probe Ron=par('1/gdso(mn1)')
19#
發表於 2008-7-25 11:25:54 | 只看該作者
PMOS和NMOS组成的CMOS switch 电阻值写成
$ q, M- W) A' g5 h3 B.probe Ron= par('1/(gdso(mn1)+gdso(mp1))') 就OK了
20#
發表於 2008-12-2 15:05:30 | 只看該作者
原帖由 finster 於 2008-7-14 11:23 AM 發表 " m; g8 T2 L- H
附圖Noname1應該就你說書上的圖吧
5 z# j: R+ w) m$ l* H) V0 r: x, T9 T+ x8 f' k( v/ h# u- Y' e
下面是我測試的transmission gate,而附圖Nonmame則是PMOS/NMOS/和PMOS+NMOS的電阻疊圖; Q+ o. S& Z( O$ B9 _
mp   in     vsa       vddah vddah  P_33_G2 L=0.35u W=5u M=1
! Z- o3 I6 j9 S7 s4 N4 Mmn   in     vddah      ...
: s: ^$ D) }! q( ]" E; ^+ d
# A% Q2 X% c2 ^9 K* O3 Y/ Q
/ M7 {- Q5 k, z* q9 q
為何2種方法跑出來不一樣??# T: b5 _5 o8 p. |* K

2 U( B# N- ^) z( o! t4 a- C.print pmos_Ron=par('(v(vdd)-v(Vin))/abs(i(M1p))')$ a& o1 n" ]5 w& h- K7 Z
.print nmos_Ron=par('(v(Vin))/abs(i(M1n))')2 k. h( X8 m7 E0 \
.print TG_Ron=par('(pmos_Ron*nmos_Ron)/(pmos_Ron+nmos_Ron)')" b4 y- c0 ~/ B- v+ Y* s! R
4 X# F; F7 B7 F' ]: X0 l6 y3 Y" G
.print pmos_Ron=par('1/gdso(M1n)')6 |( @7 ?  w8 b+ d+ b, Q. z
.print nmos_Ron=par('1/gdso(M1p)')
+ b0 c+ @) Q- z' y6 N) M# b.print TG_Ron=par('1/(gdso(M1n)+gdso(M1p))') ( L4 j1 w, w* t% v. v

9 C. e8 k: h6 r8 E% i) }# U3 {8 E我只PO上TG的RON圖形出來,* m% I! `7 q2 i, X
上圖是用前三行指令跑出來的RON(2點電壓相減除以電流)1 B( P) B! N+ P5 p
下圖是用後三行指令跑出來的RON(直接用電導倒數)/ C2 ~0 }: R1 c$ W9 A  u/ `% u
為何跑出來的圖形不一樣,理論上應該是一樣的啊' q! f; J, ]; p/ M
能否請各位大大位我解答

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2024-9-27 09:15 PM , Processed in 0.208012 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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