Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 36675|回復: 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即可! h7 d/ N# z/ |
在HSPICE中利用PRINT寫來計算元件的(Vin-Vout)/I即可用awaves畫出元件的Ron電阻
5 }+ b0 L3 a. j. m- Z& r要特別注意一點的是,如果mos是內建的,那要留意外部電感的電流大小會"間接"決定mos的大小,或者mos是外接式的,那你直接看外部mos所提供的spice model大概就可以了
4#
發表於 2008-4-20 23:18:53 | 只看該作者
喔,嘿嘿,是finster版主啊,對啊就是V=IR啊,真是faint,原來我用錯電壓了,我錯用成Vout/I了怪不得不對呢, & |4 F% a7 G+ o, q* g

+ _& T) H) V, T& ?" J谢谢您的解答!
5#
發表於 2008-7-7 00:05:00 | 只看該作者
這個問題剛好是最近一直困擾的問題
8 O/ ~. t4 {9 L' z/ h  R為何不可以(vout-vin)/I阿
/ o7 N, I4 f; D3 u下面是我寫的spice檔
' H6 y0 S% P3 p4 o2 d$ j+ ^m1 vin vdd vout vss nch3 w=3.5u l=0.35u
0 c; `- ]. C$ A) `. S7 Tr1 vout 0 1k! c, Y- {9 S3 y% j
在.print部份
8 f9 N: i7 f6 Y9 ~7 t是要寫 "v(vin)/v(vout)" "(v(vin)-v(vout))/i(r1)" "(v(vin)-v(vout))/i(m1)"呢
# [; \" }" H2 o1 w. A+ K( j可否幫忙解答?
& e; H2 {- O, d; ~  ithanks
6#
發表於 2008-7-7 09:52:23 | 只看該作者
原帖由 dogst 於 2008-7-7 12:05 AM 發表
# M/ a4 t6 A* U4 T( n6 m這個問題剛好是最近一直困擾的問題" @1 p: B- }# L; _) _
為何不可以(vout-vin)/I阿
, o2 V. u4 E# x0 e) z下面是我寫的spice檔6 P8 d- b% j" n; F2 g  A
m1 vin vdd vout vss nch3 w=3.5u l=0.35u$ M8 p4 r- V1 g2 U# F7 D& |
r1 vout 0 1k9 U' t! c# H, x5 |
在.print部份
; k8 \2 C4 x$ {9 B是要寫 "v(vin)/v(vout)" "(v(vin)-v(vout))/i(r1)" " ...

' `- k( `/ k( s1 [5 P9 V7 ^& C5 d7 I" I; \  A+ I$ O4 Y1 v
6 H+ B' r/ p4 |" O0 _( N
+ [$ P4 @  g- }2 e9 G& K
建議你不要加r1 vout 0 1k
. w- H. `( {& d1 t$ V1 z因為你要對NMOS作計算ron,加了r1後,電流會對r1產生一個電壓,如此一來會壓縮到m1的vout電壓3 P! B! r4 B; \. K+ i: ]0 N
建議的寫法為; ]8 J6 ?4 N# Q' D
m1 vin vdd vout vss nch3 w=3.5u l=0.35u m=1+ V1 @2 M6 S" p/ B2 A0 O
vvin  vin   vss    vss
+ L; h  w# |+ F, xvvout vout  vss    vss
+ ~  |! k" `* b$ A# C.dc vvin 0.001 3.3 0.1
" u" |' |" R9 ?.print PAR('(v(in))/abs(i(m1))')
% t! z% r1 M, s9 p9 T% N. F.print i(m1)
7#
發表於 2008-7-7 15:37:14 | 只看該作者
嗯嗯  有沒有加電阻  真的有差  謝謝# H5 Z! I4 Q. z3 S" a5 K/ D! `& J/ q
可是又有一個問題(不好意思 問題真多 多多包含)
  J+ F4 g/ I6 O5 G' E9 Avvdd   vdd   0  3.0v # S8 x+ k5 O8 f% a: y( A5 a6 r
vvss   vss   0  0v
3 k5 |( @, T* [. R6 i3 O: Q4 H3 Dvvin   vin   0  0v
: _4 c8 X/ u5 O% h$ Cvvout  vout  0  0v
* s. S3 U! h/ w- f) R) @: h: Am1   vin   vdd   vout  vss  nch3  w=3.5u   l=0.35u : I! I8 F( R+ A1 t: y
.print a=par('(v(vin)-v(vout))/i(m1)') b=par('v(vin)/i(m1)')
$ Q( W: m0 p& B+ x就是在vout的部份 有沒有設成0好像結果差很多耶  為何會這樣呢- _, y7 [- k4 ~! C2 u
還有在量Ron部份時  到底是要par('(v(vin)-v(vout))/i(m1)')還是要par('v(vin)/i(m1)')
  R9 H6 ~; W" a! w3 |* D因為版主在回覆時  兩者都有提到  可是還是不清楚
2 z7 s# W! U% ^/ i$ l可否幫忙解答?
# y. e& V0 N; f8 J( D2 s2 J5 XThanks
8#
發表於 2008-7-7 17:25:19 | 只看該作者
不好意思,一時之間沒留意到
5 M$ r$ {3 x; P* C4 F. i$ S8 J5 f應該是/ B2 T4 Q+ Q% S
.print PAR('(v(vin)-v(vout))/abs(i(m1))')
( ~) O& T6 p4 ~( K- n要加abs則是因為電流有流進流出的問題,進而會產生正負符號的緣故,故而加了abs可以變成是正的
8 G3 A8 Y$ q6 v7 d) S* v另外,vout的部份,因為你是作.DC的sweep,而且是對NMOS,所以,source端一定要加最低電位(也就是0V)然後對drain作dc sweep- A( ?7 K6 l  H) i
反之若是PMOS,則是要加最高電位(亦即VDD)
# R3 K: p# [6 }% b, A. I6 G* W3 _這是因為PMOS和NMOS兩者對VSS和VDD有不一樣的變化
9#
發表於 2008-7-7 18:04:27 | 只看該作者
順便來請教各位大大
* b0 q: P. L' P+ Y有在其他書上看到
' e8 R( J/ N; U5 @0 z3 l) [4 I.print dc RON=par('1/LX8(mn1)')
7 ~% u" c- C5 o5 A) U這個指令似乎也能看RON的電阻值
$ T" i' A1 E/ q# T. [- l6 }& W不過不太了解這個指令的意思?
10#
發表於 2008-7-7 20:41:52 | 只看該作者
原帖由 finster 於 2008-7-7 05:25 PM 發表 2 ^6 I+ Q7 ?; `/ L
不好意思,一時之間沒留意到5 P9 _* Z) M7 v2 {1 r& |
應該是9 @2 ?! N7 V4 L( I9 O! @
.print PAR('(v(vin)-v(vout))/abs(i(m1))')
4 e8 b' N7 k1 L% A& v要加abs則是因為電流有流進流出的問題,進而會產生正負符號的緣故,故而加了abs可以變成是正的
/ n1 ^/ n2 e. V; y- o/ u8 [# q) Q% j另外,vout的部份,因為你是作.DC的swe ...
4 Q9 D# m6 w$ e+ n% ?
9 t8 M) O- K! Y: T

3 S0 v1 Z- q6 y/ V嗯嗯  原來如此
" u# H# h3 s6 q; W5 I' t4 V8 O4 j意思也就是說 要寫成下面這樣子  對吧!5 x* @1 a& u) Y4 Q
nmos : m1 vin vdd vout vss ........  .print par('(v(vin)-v(vout))/abs(i(m1))'); o; W/ }; r" O7 ?# I- L
pmos : m1 vout vss vin vdd ........  .print par('(v(vin)-v(vout))/abs(i(m1))'): i, B; u; ~. b# a9 ]& p. N
# I6 b* h1 z2 {. i: R" j
那如果是transmission gate的話  g( H4 B- V: F
vvdd   vdd   0   dc   3.0V) g/ E$ ?" d( Z
vvss   vss   0   dc   0.0v6 f" k( g+ k4 l6 x% _0 I* c
vvin   vin   0   dc   0.0v, l( q4 r2 \! E9 c; W. @9 A
m1   vin   vdd   vout  vss  nch3  w=3.5u   l=0.35u
/ x- f2 k4 c- [' z* A! Ym2   vout  vss   vin   vdd  pch3  w=3.5u   l=0.35u  
8 t5 g8 H/ n2 O( M+ b! d$ u那麼在.print部份的話  要怎麼寫6 r1 U0 f  T% I  }- w- I' a" i: D& i
因為他不像nmos或者pmos一樣  只有m1的電流可以除
& `  a: b& r0 o0 M. U5 V這樣怎麼求Ron, [$ U; }, k' q4 y# W+ @) c# R: E' F
可否請大大解釋疑惑' K- Z& [$ k. F' R% T& x- q6 f
謝謝
11#
發表於 2008-7-8 09:33:51 | 只看該作者
可以是各別算出Ron,再運算* e* n: x) L, O6 k5 }
.print r_n=par('(v(vin)-v(vout))/abs(i(m1))')
8 b4 V# j1 E* ?( u4 F/ E+ ^- @.print r_p=par('(v(vin)-v(vout))/abs(i(m2))')* o  Y, y; D* G5 l% v7 W
.print r_pn=par('(r_n*r_p)/(r_n+r_p)')/ ^* i0 K* |8 j8 i9 X' _$ o
5 s  I; Z% A4 f
另外一種方式則是將電流相加再作運算
5 w( |- _$ x6 R% N$ l" F6 M/ P.print i_pn=par('abs(i(m1))+abs(i(m2))')0 w7 [. D7 N/ h
.print r_p=par('(v(vin)-v(vout))/i_pn')
12#
發表於 2008-7-10 21:40:18 | 只看該作者
大大  我用了你的方法  可是結果怎麼跟書上畫的不一樣呢. J6 i/ d; y0 i2 O! X- p. P
以下是我的SPICE檔
/ W9 Y- j4 w% ?" {8 V. I; H- V8 ]+ i* J
vvdd   vdd   0   dc   3.0V4 ~3 q' m5 f* t9 E( A0 W4 A
vvss   vss   0   dc   0.0v
6 p. k2 B2 V, z: |' `* P$ O: lvvin   vin   0   dc   0.0v5 h+ a5 E. O- d& J4 N1 u
m1   vin   vdd   vout  vss  nxxx  w=3.5u   l=0.35u 8 \5 d: Y5 Y4 l  R7 D
m2   vout  vss   vin   vdd  pxxx  w=3.5u   l=0.35u  m=4 9 V. z8 h: A/ j: q
2 H4 _/ O9 i$ e, S) L; m. `

3 r  c7 I( h. Y以下是用 .print i_pn=par('abs(i(m1))+abs(i(m2))')  r_p=par('(v(vin)-v(vout))/i_pn')# i; Q+ F! ^: h1 T$ Z

; M" w6 |* ^- e! S+ L+ d7 w.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)')
  o1 k0 Y( d5 g# n5 Q: G, s
: K+ V* ^2 F; a, m
5 ~2 r8 j: b5 S7 T0 d! h為何兩個結果會不一樣呢
$ S7 N5 i5 _2 ~, K3 v4 A/ L1 c0 s* _而且很納悶的是第二個方法為何要(相乘)/(相加)
4 O! I: ]( O& ~: P! [) G& U* C" L3 c; A7 U2 ~
可否請大大幫忙解答
' ~5 i3 ^& I, c# K9 Z4 KThanks

本帖子中包含更多資源

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

x
13#
發表於 2008-7-11 00:20:41 | 只看該作者
第一個方法為何要(相乘)/(相加)???1 ]8 N& S; u- O. L1 D
你要計算transmission gate的電阻,而transmission gate就是PMOS和NMOS兩者並聯,要求並聯電阻的阻值,當然是(相乘)/(相加),這是很基本的電阻公式計算
- \, a% B0 Q- X所以,我先計算出各別PMOS和NMOS的阻值再作計算
8 N* o" i: K6 N* q3 `6 A) r
5 P6 H6 e. J3 F- x! R至於兩種方法為何會不同+ ^2 m5 I. v4 l7 H; b
照理說應該要相同才對,不過,我倒是很好奇為何你的電阻計算出來是負的
& E/ q0 A1 v4 m. W# Q/ w這點很不合理
9 B. \+ }# w7 u2 l9 k0 V( a3 i- Q難道是你的VOUT沒有設對嗎??
14#
發表於 2008-7-13 12:05:56 | 只看該作者
如果我改成下面這樣
* }  |$ i: V) r/ e4 w.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)')
" S6 p& K9 P$ I  X; i. ]7 q電阻就會變正的
* _$ s8 F% {. |$ z* g7 y% ^% S! H( W可是不管怎麼看  還是覺得不太對
% @: D. C% Q  l" Z4 R" C2 b5 {! V6 O& j6 p7 J2 l
以下是我的spice檔
, y1 ^! ?: h0 Tvvdd   vdd   0   dc   3.0V
$ C, K- g! L& H! f, b# H& c' H) Jvvss   vss   0   dc   0.0v$ S) B- {7 Q' |* n. R$ A8 z* ?
vvin   vin   0   dc   0.0v: b/ l  H+ W; z. F) u3 |- b( F, [5 g2 P

& n9 L$ Y2 o$ o, [0 [/ }- n1 ^m1   vin   vdd   vout  vss  nxx  w=wsize   l=lsize
! L4 e4 i4 \8 w5 m- mm2   vout  vss   vin   vdd  pxx  w=wsize   l=lsize  % l7 t# M$ q& m+ F! X
; E. j5 x% a7 x; k6 s% o
*r1    vout  0     1k
, h7 u; S4 z5 ?+ h.dc vvin 0v 3.0v 0.05v  , b' x, D& v" n2 s& w% N- i& |
.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)')
$ a2 r( ?) {9 `8 _6 B/ H.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)')" R& N! m7 _3 B, k. w1 R
1 _* @9 y! [7 g* J6 \. f
.end
% E- W; w7 g3 e& G  |- \0 R5 `3 K1 s9 ?! i
希望大大幫我檢查一下  看看是否有錯
# P( A  {9 L( M* A, B. c! N7 K還有一個問題  就是為何不能用 v(vout)-v(vin) 而一定要用 v(vin)-v(vout) 呢
2 l" p7 X, d- H7 Z  k( R; H
9 T, g. l1 h" y1 e" s: m% v可否幫忙解答7 q! c; d' \# ~  L
Thanks
15#
發表於 2008-7-13 15:48:16 | 只看該作者
sorry  上面打錯了3 n) b3 e4 _$ o7 ~, }" n2 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)') 才對
: r* G  o$ e2 Q) ~- Y) J6 Z1 f
$ W# P& Z) }8 E# G7 l: b) \還有想要請問一下   跑出來的模擬圖  要怎樣看電阻值呢4 e  i& j- r# {
也就是說 NMOS 跟 transmission gate 的部分  要怎樣看9 |; A2 T/ p1 R8 \" a" X( P8 f& ]( r
可否教導一下! p& W" s9 a- O0 K" y
Thanks
16#
發表於 2008-7-14 11:23:44 | 只看該作者
附圖Noname1應該就你說書上的圖吧
/ X* B+ b, h$ T1 q, Y
' y0 ^: z5 y  g# U( O2 z% H下面是我測試的transmission gate,而附圖Nonmame則是PMOS/NMOS/和PMOS+NMOS的電阻疊圖
8 M9 P0 t. K( r( ?: Z* c2 Dmp   in     vsa       vddah vddah  P_33_G2 L=0.35u W=5u M=1
2 x2 \0 }! H6 K* w$ x! wmn   in     vddah     vsa     vsa    N_33_G2 L=0.35u W=5u M=1. D% t  ?0 h" Q8 m/ m) K5 e
vvsa      vsa       0    03 \& b4 S& Y: A3 N0 e
vddah  vddah  0    vddah5 F: K* m4 Y. c$ P/ b
vin    in     0    0( @/ Z+ t+ g* b3 P+ X
.dc vin 0.05 3.295 0.005
2 s: P* F" F% O$ I  x+ U- H/ ^4 W.print r_p=par('(v(vddah)-v(in))/abs(i(mp))')
+ Y1 b! b# q! i.print r_n=par('(v(in))/abs(i(mn))')% p- R# E' U0 v; M1 x/ T
.print r_pn=par('(r_p*r_n)/(r_p+r_n)')
* l2 p# }6 }: r  [書上的圖是把PMOS和NMOS各別的電阻畫出來之後,再把兩個電阻並聯計算畫出來,其中,要計算PMOS電阻,一端要接VDDAH,而要計算NMOS電阻,另外一端則是接VSA

本帖子中包含更多資源

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

x

評分

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

查看全部評分

17#
發表於 2008-7-14 22:39:06 | 只看該作者
感謝版主這麼有耐心教導我
2 Q$ V3 k* H0 @9 U& N+ @! E這下子  我對開關又懂更多了/ k% y7 k; m5 V9 h6 @% r9 r
Thanks
18#
發表於 2008-7-25 11:23:31 | 只看該作者
原帖由 hiyato 於 2008-7-7 06:04 PM 發表
5 U5 Z8 C1 l, g/ u  S順便來請教各位大大% h! M3 A% F, i0 ]: E
有在其他書上看到. O8 h7 `2 H0 }' X* f: I
.print dc RON=par('1/LX8(mn1)')
' j; U9 D6 v& p# F1 c; r這個指令似乎也能看RON的電阻值# @3 i. i1 a: G8 p7 G- f
不過不太了解這個指令的意思?

& c' K, Z/ q' ~/ v9 J, s1 A8 b+ [3 ~5 I, B% Z/ B
LX8(mn1)是hspice自带的一个function,可以用gdso(mn1),表示mn1的电导的大小,正好是电阻值的倒数,用它替换更直观和简单。
$ B3 F6 t% W' `# z+ o2 S+ v.probe Ron=par('1/gdso(mn1)')
19#
發表於 2008-7-25 11:25:54 | 只看該作者
PMOS和NMOS组成的CMOS switch 电阻值写成
3 K( r7 _. O: v.probe Ron= par('1/(gdso(mn1)+gdso(mp1))') 就OK了
20#
發表於 2008-12-2 15:05:30 | 只看該作者
原帖由 finster 於 2008-7-14 11:23 AM 發表
* E" y4 l1 W+ I8 Z附圖Noname1應該就你說書上的圖吧2 y3 D$ P- x9 `( j: n: M% r

0 q' c) z4 q: A4 h) |) ?下面是我測試的transmission gate,而附圖Nonmame則是PMOS/NMOS/和PMOS+NMOS的電阻疊圖6 }% _; @+ \, w: K1 g# O
mp   in     vsa       vddah vddah  P_33_G2 L=0.35u W=5u M=1
, G3 f& u  j, B. C( d% [mn   in     vddah      ...

7 n( j9 j( o( S% C" ~7 E
3 |0 m1 o+ V+ a; h% ^0 D: _! T  L) X( u1 W- h
為何2種方法跑出來不一樣??
8 f7 a) L! g, X: o. P7 h+ @) Z+ _6 K* ^* p  s* W) e
.print pmos_Ron=par('(v(vdd)-v(Vin))/abs(i(M1p))')4 `: v: k; ^# O  j5 s! A
.print nmos_Ron=par('(v(Vin))/abs(i(M1n))')
, l( v1 y4 S: G' L  V& \8 M.print TG_Ron=par('(pmos_Ron*nmos_Ron)/(pmos_Ron+nmos_Ron)')
* `7 ~, _' x  o$ N* b7 ~5 C! o
% `% J8 Q1 j1 }: g8 e.print pmos_Ron=par('1/gdso(M1n)'): a5 @6 p6 f5 h6 i0 v) K
.print nmos_Ron=par('1/gdso(M1p)')
- ~- x1 \' {. f+ d# B.print TG_Ron=par('1/(gdso(M1n)+gdso(M1p))')
+ J2 V9 k4 n& L) h" Q9 N( b+ z+ P
# ?* M% _( }+ x( N3 Z2 R; Y我只PO上TG的RON圖形出來,
9 A8 ^. h. R2 H: E0 {! R上圖是用前三行指令跑出來的RON(2點電壓相減除以電流)
3 i) i0 V, R! d% v8 r" |# g下圖是用後三行指令跑出來的RON(直接用電導倒數)
" e7 F. ~1 ~  y* e4 g4 w6 r為何跑出來的圖形不一樣,理論上應該是一樣的啊
  V6 ^% o; s! H- R- U# F能否請各位大大位我解答

本帖子中包含更多資源

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

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

本版積分規則

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

GMT+8, 2024-6-13 08:10 PM , Processed in 0.135017 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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