Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 37989|回復: 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即可, T- E, i3 o( t6 r# M
在HSPICE中利用PRINT寫來計算元件的(Vin-Vout)/I即可用awaves畫出元件的Ron電阻
  N/ F+ c( X  ^' f要特別注意一點的是,如果mos是內建的,那要留意外部電感的電流大小會"間接"決定mos的大小,或者mos是外接式的,那你直接看外部mos所提供的spice model大概就可以了
4#
發表於 2008-4-20 23:18:53 | 只看該作者
喔,嘿嘿,是finster版主啊,對啊就是V=IR啊,真是faint,原來我用錯電壓了,我錯用成Vout/I了怪不得不對呢, . T4 h9 _  ^; d  z7 M4 `: ?

! N9 t# u: P' ^  \. J, Q谢谢您的解答!
5#
發表於 2008-7-7 00:05:00 | 只看該作者
這個問題剛好是最近一直困擾的問題, V- {& {3 l  v  s$ O! G! A% R! M
為何不可以(vout-vin)/I阿# g) I0 p$ \3 H5 W
下面是我寫的spice檔
! @5 z' u) O7 S# L& k2 M' v: om1 vin vdd vout vss nch3 w=3.5u l=0.35u* H/ F; k8 |$ k- J. c: k' {5 _5 T
r1 vout 0 1k7 I: I- q7 r$ m$ ^7 O# ^
在.print部份( t" l! u/ b6 E! K4 S# A' r
是要寫 "v(vin)/v(vout)" "(v(vin)-v(vout))/i(r1)" "(v(vin)-v(vout))/i(m1)"呢
7 n9 U- d: R$ k3 M' u  l! x可否幫忙解答?; B8 E4 i3 i! h$ ?/ i# v7 C3 l
thanks
6#
發表於 2008-7-7 09:52:23 | 只看該作者
原帖由 dogst 於 2008-7-7 12:05 AM 發表 ' n, f) \6 m) [& R4 ~, M, n
這個問題剛好是最近一直困擾的問題
. K8 x; ]9 G5 n0 i9 f8 S! b0 D為何不可以(vout-vin)/I阿6 F1 j3 I4 l7 h
下面是我寫的spice檔
, c" \7 d* y9 z3 b" t1 ^) Zm1 vin vdd vout vss nch3 w=3.5u l=0.35u
( d9 }5 O, x( O, U$ s- |# Ir1 vout 0 1k
% q$ M0 i8 i7 g在.print部份
6 D' p, |5 Y" t8 \+ B8 v2 z5 o是要寫 "v(vin)/v(vout)" "(v(vin)-v(vout))/i(r1)" " ...
, t; y' P" m) r6 \
* v; n3 A  H2 G
/ j+ M9 s+ }& s, [; {* g$ d
4 Q3 \8 w' K3 ^5 j
建議你不要加r1 vout 0 1k" r/ j* E7 F% `5 {( J
因為你要對NMOS作計算ron,加了r1後,電流會對r1產生一個電壓,如此一來會壓縮到m1的vout電壓
5 l$ B) d- P/ M% T! r2 X% `) p建議的寫法為
) _/ x& B( t6 m9 d: n4 Hm1 vin vdd vout vss nch3 w=3.5u l=0.35u m=15 p$ t( r+ h' I; Y: v$ H
vvin  vin   vss    vss
0 Z$ {& [6 [5 Z, Evvout vout  vss    vss
, q+ j/ K0 w6 F1 i+ O- U" r+ M.dc vvin 0.001 3.3 0.1
0 i& E" g6 D, ^# ?! f.print PAR('(v(in))/abs(i(m1))')
+ c$ ]0 Y0 l; j.print i(m1)
7#
發表於 2008-7-7 15:37:14 | 只看該作者
嗯嗯  有沒有加電阻  真的有差  謝謝
3 _3 _* y3 K# ^: Q( i可是又有一個問題(不好意思 問題真多 多多包含); g" J) W& n: d- R
vvdd   vdd   0  3.0v / g. W( a0 I% s* X7 {) P
vvss   vss   0  0v
' r1 s4 [! p! F  W7 Kvvin   vin   0  0v * D/ X4 @$ T& o. k) k
vvout  vout  0  0v
9 x$ T% q) F0 Y$ H/ V' X+ O) S. X  Wm1   vin   vdd   vout  vss  nch3  w=3.5u   l=0.35u / J/ k0 i$ m! G" l
.print a=par('(v(vin)-v(vout))/i(m1)') b=par('v(vin)/i(m1)')/ _+ F4 f( \' L0 ?+ t# r
就是在vout的部份 有沒有設成0好像結果差很多耶  為何會這樣呢, p, a% g& |! N- ^% A% g/ m1 H
還有在量Ron部份時  到底是要par('(v(vin)-v(vout))/i(m1)')還是要par('v(vin)/i(m1)')5 P7 [- K' X. B' w; K! n
因為版主在回覆時  兩者都有提到  可是還是不清楚7 j# s; u/ b# A
可否幫忙解答?7 H4 \* ~/ w8 X& T2 @% U3 Y5 u: ]# j3 G7 Y
Thanks
8#
發表於 2008-7-7 17:25:19 | 只看該作者
不好意思,一時之間沒留意到7 G# {7 c8 P' i. m
應該是
6 F& ^1 E# h: d' G1 w% r.print PAR('(v(vin)-v(vout))/abs(i(m1))')- K/ h# k7 J8 @( n  W: ~/ ^4 N( |
要加abs則是因為電流有流進流出的問題,進而會產生正負符號的緣故,故而加了abs可以變成是正的
  p. n& N% N* \# D0 w" R6 P另外,vout的部份,因為你是作.DC的sweep,而且是對NMOS,所以,source端一定要加最低電位(也就是0V)然後對drain作dc sweep
( q1 |+ _; b4 K- ~8 T% ]4 x反之若是PMOS,則是要加最高電位(亦即VDD)
% Y$ W' K) R" O! G' N; c這是因為PMOS和NMOS兩者對VSS和VDD有不一樣的變化
9#
發表於 2008-7-7 18:04:27 | 只看該作者
順便來請教各位大大1 u& K2 w1 d$ {* z0 j0 a
有在其他書上看到
' Z+ q/ V4 |4 M; r6 a.print dc RON=par('1/LX8(mn1)')
6 w" `. {" H, h  h這個指令似乎也能看RON的電阻值
- h& p8 v# H5 H( H2 Z: |% c, F不過不太了解這個指令的意思?
10#
發表於 2008-7-7 20:41:52 | 只看該作者
原帖由 finster 於 2008-7-7 05:25 PM 發表 : f$ g, z( b. W* t+ {1 `
不好意思,一時之間沒留意到1 {7 n: d, @  c
應該是
1 ^' C2 q- e7 |2 ]) C# X1 O8 D0 x.print PAR('(v(vin)-v(vout))/abs(i(m1))')
( h' ]' D: a$ a# v9 e, t8 H3 O7 z+ T要加abs則是因為電流有流進流出的問題,進而會產生正負符號的緣故,故而加了abs可以變成是正的! T2 H+ c+ G! Z) m4 }
另外,vout的部份,因為你是作.DC的swe ...

% c! j0 c5 U; b) n: O- B4 l# L7 R- }# k2 n

2 w6 c) g$ ^3 S7 s嗯嗯  原來如此
5 d9 }; Q5 W: N意思也就是說 要寫成下面這樣子  對吧!
" `7 [% p: v9 I7 D+ Cnmos : m1 vin vdd vout vss ........  .print par('(v(vin)-v(vout))/abs(i(m1))')4 R; u- U0 s0 ]! n) w
pmos : m1 vout vss vin vdd ........  .print par('(v(vin)-v(vout))/abs(i(m1))')
  d: X9 O: ~8 G, B. _
  q8 G" v: y7 F9 C1 @1 |那如果是transmission gate的話/ p! ?5 p" ~- i" }8 U7 N
vvdd   vdd   0   dc   3.0V3 N5 y+ e0 [5 U6 n3 k- W
vvss   vss   0   dc   0.0v% P) A9 C; k. f. i, r- \5 h
vvin   vin   0   dc   0.0v
9 z5 G/ |9 c2 k$ x5 F! @5 g+ wm1   vin   vdd   vout  vss  nch3  w=3.5u   l=0.35u / y  k1 G- y7 t% s: F( P5 j+ b
m2   vout  vss   vin   vdd  pch3  w=3.5u   l=0.35u  
: O; J' G7 I) z" r, n3 g" i那麼在.print部份的話  要怎麼寫) j/ ~/ ~* Q# O
因為他不像nmos或者pmos一樣  只有m1的電流可以除
5 O9 Y& H, S# c2 h/ t這樣怎麼求Ron
  g. h% n, O. K可否請大大解釋疑惑
6 S! c- O, |# d) O謝謝
11#
發表於 2008-7-8 09:33:51 | 只看該作者
可以是各別算出Ron,再運算  H; v: R1 K  g% L; }
.print r_n=par('(v(vin)-v(vout))/abs(i(m1))')
' b5 _2 F! I2 a8 r' j.print r_p=par('(v(vin)-v(vout))/abs(i(m2))')
! ^: z6 `5 ~7 W2 y( @.print r_pn=par('(r_n*r_p)/(r_n+r_p)')
- v& g5 o' u7 [/ `6 m( m! j% G# L7 o  T$ @, O
另外一種方式則是將電流相加再作運算
; n8 W- _6 a# E6 a: G.print i_pn=par('abs(i(m1))+abs(i(m2))')* F' q4 L% M1 S
.print r_p=par('(v(vin)-v(vout))/i_pn')
12#
發表於 2008-7-10 21:40:18 | 只看該作者
大大  我用了你的方法  可是結果怎麼跟書上畫的不一樣呢
' H5 G- o, @: G& T以下是我的SPICE檔
2 u  y9 {' g: M) |2 C1 v' \' H# L' R" V( F( c8 S3 W
vvdd   vdd   0   dc   3.0V  N$ G6 W7 G) V" H. L' Y# Z8 x
vvss   vss   0   dc   0.0v) E1 }3 u; O( W4 |; T( X
vvin   vin   0   dc   0.0v
4 ]$ f: d; A1 m: y  \* wm1   vin   vdd   vout  vss  nxxx  w=3.5u   l=0.35u ' r) |3 r, M5 s
m2   vout  vss   vin   vdd  pxxx  w=3.5u   l=0.35u  m=4
# u0 Q; h. [- e) m  v6 n
7 G2 F2 u1 w4 A& E& g# z$ i- F& z/ P( ]! O
以下是用 .print i_pn=par('abs(i(m1))+abs(i(m2))')  r_p=par('(v(vin)-v(vout))/i_pn')
6 {' m3 p! I& k7 g( ~+ }) X4 s& M4 M0 m) N
.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)')
# L: G5 t' z  f( T/ A- M0 K
( y! o' r0 U0 u: a# Q/ }! j: U, g+ d4 d* H$ s2 q
為何兩個結果會不一樣呢
9 ?  }3 j; h& l7 e& {而且很納悶的是第二個方法為何要(相乘)/(相加)3 E6 n$ G; s3 A* D- v: g

8 r9 e3 _7 W6 d! ~5 U) w/ q5 m可否請大大幫忙解答' l; [7 k* y0 X$ b& u4 e( |' D* c
Thanks

本帖子中包含更多資源

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

x
13#
發表於 2008-7-11 00:20:41 | 只看該作者
第一個方法為何要(相乘)/(相加)???
9 t" H+ N) j: S7 W% L/ n( m9 F6 \' Q你要計算transmission gate的電阻,而transmission gate就是PMOS和NMOS兩者並聯,要求並聯電阻的阻值,當然是(相乘)/(相加),這是很基本的電阻公式計算1 l2 C9 \  [# ^. M3 ^, X  [8 H, W
所以,我先計算出各別PMOS和NMOS的阻值再作計算
& q% |/ z; [0 ?% m9 ]7 E: b
6 E' P1 g: Q9 `4 B至於兩種方法為何會不同* F8 z9 ?, m* T' U
照理說應該要相同才對,不過,我倒是很好奇為何你的電阻計算出來是負的( O3 G) [2 X) L* a* ]$ @8 |! z
這點很不合理7 D- f, g, |  |1 t* E- M
難道是你的VOUT沒有設對嗎??
14#
發表於 2008-7-13 12:05:56 | 只看該作者
如果我改成下面這樣7 S0 Z1 L6 y! [7 F) K0 F
.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)')
9 x: n( n4 F, E% t電阻就會變正的: H: s9 \+ A. b( J+ f
可是不管怎麼看  還是覺得不太對
# Y: m0 Z- A' Y3 U0 c9 R0 U/ k$ b0 u/ t4 t- o; a- s1 Q
以下是我的spice檔
5 ~. w4 [) K+ l. ?vvdd   vdd   0   dc   3.0V
2 \6 Z/ M- U9 b3 |" xvvss   vss   0   dc   0.0v
. M9 {: J4 A$ E8 Z2 dvvin   vin   0   dc   0.0v, q* d! [% A' o2 s9 h
) I; r4 g+ P& _& G. P
m1   vin   vdd   vout  vss  nxx  w=wsize   l=lsize ' e8 m/ q  S/ h+ n
m2   vout  vss   vin   vdd  pxx  w=wsize   l=lsize  
6 i1 i* i9 G3 w) I! g. a7 m/ Z# \6 ^4 l6 G" \3 A, e+ p; |
*r1    vout  0     1k
5 q+ _- \3 B$ q: {1 C5 ]5 `% X.dc vvin 0v 3.0v 0.05v  
1 a) Z9 l8 N7 m.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)')
+ A" d: X/ e0 G.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)')
) {# W( c2 j2 s* k" f( R0 B7 L
2 J+ O# V$ b' g, M2 G.end1 r- [# `5 y  x0 _

, p% ]" N" J) l希望大大幫我檢查一下  看看是否有錯: l- d& i+ ?6 p% U
還有一個問題  就是為何不能用 v(vout)-v(vin) 而一定要用 v(vin)-v(vout) 呢
( R3 d  n- g2 B# l  P  R3 V9 Q' y- M4 r2 ^6 C- s
可否幫忙解答, u  @' P; n5 I
Thanks
15#
發表於 2008-7-13 15:48:16 | 只看該作者
sorry  上面打錯了
3 }- s2 o7 q  s5 o- T' N) g應該是  rn=par('(v(vin)-v(vout))/abs(i(m1))') rp=par('(v(vin)-v(vout))/abs(i(m1))')  rpn=par('(rn*rp)/(rn+rp)') 才對
, d2 P4 J5 X3 [, y( Q& p: k5 ?7 g
( @5 A+ z5 B0 d9 v/ g$ g還有想要請問一下   跑出來的模擬圖  要怎樣看電阻值呢$ M- P9 O- A  V/ M+ [8 C; e
也就是說 NMOS 跟 transmission gate 的部分  要怎樣看; ^0 Q. ~! X, C. `- H
可否教導一下
, U: a! z0 C# n! y8 |! eThanks
16#
發表於 2008-7-14 11:23:44 | 只看該作者
附圖Noname1應該就你說書上的圖吧
8 b1 t( `. p. c) j; m) b1 W
& m- Z' G# I! N下面是我測試的transmission gate,而附圖Nonmame則是PMOS/NMOS/和PMOS+NMOS的電阻疊圖
4 A1 n, w9 L# g) D* mmp   in     vsa       vddah vddah  P_33_G2 L=0.35u W=5u M=1
3 r4 L1 W% A' I1 mmn   in     vddah     vsa     vsa    N_33_G2 L=0.35u W=5u M=1
6 t$ A9 J6 f. q5 x; m0 Y3 l8 T) yvvsa      vsa       0    0
4 G4 f" p- c# {vddah  vddah  0    vddah; ^: R4 T, @: n
vin    in     0    0# b: g8 f) w6 x* O  i1 c
.dc vin 0.05 3.295 0.005 * g- o5 X2 s+ j
.print r_p=par('(v(vddah)-v(in))/abs(i(mp))')# H- ~0 h& o1 q2 S7 ]: u
.print r_n=par('(v(in))/abs(i(mn))')
. Z3 O% r( \( o# K& A2 _.print r_pn=par('(r_p*r_n)/(r_p+r_n)')# J8 L' K  o- q" b0 ]
書上的圖是把PMOS和NMOS各別的電阻畫出來之後,再把兩個電阻並聯計算畫出來,其中,要計算PMOS電阻,一端要接VDDAH,而要計算NMOS電阻,另外一端則是接VSA

本帖子中包含更多資源

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

x

評分

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

查看全部評分

17#
發表於 2008-7-14 22:39:06 | 只看該作者
感謝版主這麼有耐心教導我
; p" u3 Y$ f, f2 ?# C6 q8 C這下子  我對開關又懂更多了+ e# P0 w$ @5 ?$ `
Thanks
18#
發表於 2008-7-25 11:23:31 | 只看該作者
原帖由 hiyato 於 2008-7-7 06:04 PM 發表 , z+ r  E! f, m7 A
順便來請教各位大大
- ^4 ~/ K1 Y" A% p) ~有在其他書上看到
6 R* p: z3 h/ u6 U* E0 J.print dc RON=par('1/LX8(mn1)')4 H( b. n7 D5 W+ t7 V; L  n
這個指令似乎也能看RON的電阻值
( M3 Z/ E* f6 J# a# o不過不太了解這個指令的意思?
, H0 z0 H! x6 O

/ B  w  v1 |" i' W- N7 mLX8(mn1)是hspice自带的一个function,可以用gdso(mn1),表示mn1的电导的大小,正好是电阻值的倒数,用它替换更直观和简单。: r6 S: _0 j+ L" @& t7 Q; l4 J! o+ @
.probe Ron=par('1/gdso(mn1)')
19#
發表於 2008-7-25 11:25:54 | 只看該作者
PMOS和NMOS组成的CMOS switch 电阻值写成# D& q" r0 |1 [5 x& d5 N2 C
.probe Ron= par('1/(gdso(mn1)+gdso(mp1))') 就OK了
20#
發表於 2008-12-2 15:05:30 | 只看該作者
原帖由 finster 於 2008-7-14 11:23 AM 發表 ; k6 K' j4 [$ O* W
附圖Noname1應該就你說書上的圖吧
/ L: t6 q* e( e2 Y* m( K1 ?, l2 K; v
下面是我測試的transmission gate,而附圖Nonmame則是PMOS/NMOS/和PMOS+NMOS的電阻疊圖) @' j% ~0 }6 o
mp   in     vsa       vddah vddah  P_33_G2 L=0.35u W=5u M=1
4 l- \4 k2 j9 Qmn   in     vddah      ...

5 N5 c; k+ {! T1 A+ I2 |3 H: g0 Q$ H1 Z% I1 L4 Q

& R2 C- F; P% t' g- p為何2種方法跑出來不一樣??  {( q; N) X" M7 h
+ t$ t. d* Y: I/ T/ {5 g& E: ^
.print pmos_Ron=par('(v(vdd)-v(Vin))/abs(i(M1p))')
/ O  Q% m+ {* p.print nmos_Ron=par('(v(Vin))/abs(i(M1n))')0 ]. o6 j* D+ V- L5 ^
.print TG_Ron=par('(pmos_Ron*nmos_Ron)/(pmos_Ron+nmos_Ron)')6 ?% s5 @% p/ g0 I( d8 N0 j* o

7 O5 I0 r1 x' ?, \6 _' k  r.print pmos_Ron=par('1/gdso(M1n)')7 p: y8 p+ p" |2 ~8 Y
.print nmos_Ron=par('1/gdso(M1p)')
8 F: J7 N8 B: H3 D6 m9 Y) j.print TG_Ron=par('1/(gdso(M1n)+gdso(M1p))') ' _% g; _/ d  T* n, v5 F  }$ L& @; M$ E

6 S  g& K3 ~: X7 E( x我只PO上TG的RON圖形出來,
6 y$ h7 r% n3 l, ~  @上圖是用前三行指令跑出來的RON(2點電壓相減除以電流)6 I( e. d0 C2 \# |8 [
下圖是用後三行指令跑出來的RON(直接用電導倒數)$ K; a, e6 h; z
為何跑出來的圖形不一樣,理論上應該是一樣的啊0 G/ b1 M& m# p& v
能否請各位大大位我解答

本帖子中包含更多資源

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

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

本版積分規則

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

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

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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