Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
樓主: monkeybad
打印 上一主題 下一主題

[問題求助] CMOS晶體震盪器模擬

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2007-8-1 16:50:04 | 顯示全部樓層 回帖獎勵 |倒序瀏覽 |閱讀模式
之前有討論過有關CMOS Pierce crystal osc/ k3 h+ r8 M7 \& R/ n
現在我的模擬好像有點問題 想請教一下% z0 \8 P/ `: v: W3 a9 D
圖一為我簡化後的Model 基本上 就是一顆CMOS Inverter 然後並連上一個偏壓電阻- m& t6 Y% @; E1 S/ U% V& L
然後a b兩點再分別接到Crystal的兩端 . I6 P$ I' L9 W. D' e$ S
Crystal用的model是一個L, C, RS串聯在並連一個CO 震盪頻率為32.768K
" z- @7 b7 S# m9 P- N8 B1 ]這是要for時鐘用的
$ E! t' k" c" w$ y以下是我模擬的值 這個是從網路上面抓的一組值+ `- L% u+ D; L4 Z. \# B8 X3 A
L=7000, C=0.003p, RS=200K, CO=1.7p
9 K  h# Z" _' h  yRBIAS=1E7,; c/ r' }5 ?% z7 w7 _) H1 c
C1=1.2p, C2=1.2p7 {; G' E( f1 v# d) K) n( b/ b
CMOS INVERTER: MN W=0.22U L=10U
, {6 q  \" L, u$ u3 N' g" X                         MP W=0.22U L=10U
2 f. w: n* ^5 p7 T, CVDD=3.3V
0 {$ J0 r# X& W根據理論 圖二看進去的負電組值 也就是電壓值實部的絕對值 要大於Crystal Osc裡面的寄生電阻RS2 X- P; N; R5 D- A0 y
就是負電阻加正電阻要為負 才會震盪 . q* F% a& u6 v; `
7 A' @5 ~) p' M9 X% N$ y
圖二是我模擬負電組的電路
* q3 q* X3 |. b! Haa和bb電壓偏在Inverter飽和區裡面 V(aa)=V(bb)=1.3V7 V) x  J- G7 g/ g: R
我在aa bb這兩點加一個電流源 hspice的指令為! H1 ~' q+ V2 R8 r1 J+ N5 i
Iin aa bb ac=1
7 e! a& A& i& R: j然後我跑.ac模擬. h# N  A8 f* d
.ac DEC 1e5 1k 40k
" r+ h, Z5 h2 W) a# W0 q7 ?再下
9 R/ T7 r. l* J* x5 e1 O.probe VR(aa,bb)0 G; x' U# Z! W, r
顯示aa,bb電壓的實部! L6 ^6 i' ~2 x  B: R, l1 a9 S% {9 E
看ac的圖 在Avanwaves裡面叫做Volts Real的圖 看VR(aa,bb)
5 [7 ~$ g/ ?2 a% w- d& ]# c然後發現在32.768K左右的時候 大約是-520K左右
+ T1 Q. _# _$ u) N7 y6 J/ b請問一下這樣模擬負電阻的方法對嗎?' `' {9 B% I; E) E% b* s4 y
) U9 {- o8 P% }/ M' k8 M9 G9 l2 p
假如是正確的 那負加正小於零應該會起震才對
8 `( S4 S1 C4 {) S1 l" k" N9 ~4 {+ @; _
在跑.TRAN模擬2 S% x# t3 r" |  T
我的初始值設定為) ^. _$ p* r' f6 m
.ic V(A)=0 V(B)=1 V(C)=0 V(D)=0
7 \. v3 l6 S7 [1 I3 E可是後來發現一開始有震盪 但是越到後來振幅就越小 到最後整個衰減掉了 電壓收斂在1.3V
' E( D9 @! T8 L5 I4 O/ ]* B: }3 P請問是哪裡模擬出了問題呢?

本帖子中包含更多資源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享分享 頂27 踩 分享分享
2#
 樓主| 發表於 2007-8-1 16:51:27 | 顯示全部樓層
圖二為負電阻模擬% }- j* }* B8 Q
2 t7 z0 F5 R& ?3 r7 b& x
圖三為負電阻模擬結果
( K2 Y7 D6 D; K, n$ N
+ K4 N) |: t- \% Z! h圖四為b點電壓 .TRAN的模擬結果 發現振幅一直變小
# X0 ^  \3 b+ C, b, a" B8 K9 L5 i7 W5 K- `( w1 R
[ 本帖最後由 monkeybad 於 2007-8-1 05:03 PM 編輯 ]

本帖子中包含更多資源

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

x
3#
 樓主| 發表於 2007-8-6 18:08:14 | 顯示全部樓層
For adele:) ~" A( ?: U' K" n5 B7 T- y
有試過你給的值 而且用一顆NMOS gmN=44u 上面用定電流源PMOS來偏壓 I=37uA4 N. T# v) A. E$ r+ [% q2 x
可是好像還是不會震耶 # Q* u- b2 a1 p7 f
另外我是用HSPICE模擬的 我這邊沒有spectre耶) i9 V3 e8 A# u* c9 A* s
; r: n2 Z, {$ k$ T& A& z. ~2 Y" i; p$ v
For m851055: [3 `$ A5 ^+ @  R3 H" f* n3 Z5 W$ X
因為要做RTC(Real Time Clock)的OSC, 所以要求非常省電, Inverter的W/L值才會設這麼小& ?( C8 v1 E$ b+ y9 k& @
: S1 ^/ |9 P) e0 F( h, V  }
For wwm101 :0 k( P" N8 @  }: T* j) w; ?
那要怎麼下指令去給電感初始電流? 還有初始條件要怎麼設才恰當?
/ K$ _& [5 U# M6 L8 {  _% \7 ]8 b/ c5 d- A9 e1 W
有沒有人有經驗的能指導一下 感溫感溫!  O1 H2 S! W4 u9 w2 q. e7 e1 G' _
% ^- A. J2 G# A8 ?; H
[ 本帖最後由 monkeybad 於 2007-8-6 06:17 PM 編輯 ]
4#
 樓主| 發表於 2007-8-8 14:08:22 | 顯示全部樓層
感謝finster大大提供這麼寶貴的經驗 真是造福人群 功德無量
6 `9 I% [) \0 e請受我一拜!
5#
 樓主| 發表於 2007-8-9 10:01:00 | 顯示全部樓層
昨天晚上試了一下以前在網路上找到的一個方法
2 B1 j9 I1 X# M6 F就是在一開始的時候 串聯一個起始電壓源來加速Hspice的模擬9 L3 i5 e! y9 j+ N- R" |
起始電壓源為一個sine波 頻率設為crystal的震盪頻率 然後要加入damping factor 讓起始電壓慢慢衰減到零
; n* v4 O$ x* N! F結果神奇的事情發生了
( H2 Q' X0 y2 ^3 R+ y0 z" i4 y0 eCrystal Oscillator到最後居然開始震盪了
% E' Y# S) E% |0 }好感動喔!
) D+ v+ l1 M8 e) @- k+ T7 ~% P趕快來跟大家分享一下!
) O; ^, Q0 D3 Z+ o. T8 _. N6 |
$ _  P* m( }/ Z. t0 g, s電路仍然是之前的Inverter電路" F5 Y* k/ R) u+ p7 W
在d點加入起始電壓
& f: n- w, }8 V4 LVK d1 d2 sin ( 0V 800V 32K 0 1e5)2 H1 d- z  D+ n$ N$ o
模擬時間約400ms( s: @) N  E( w' Y9 B# [9 [
.TRAN 0.01u 400m
& ]7 m: R3 f1 t6 z- s到最後就看到震盪器開始震盪了! % K7 h/ z4 }7 i% v1 e
) d5 F4 d, [% @: F3 T
後來又試了另一個類似的方法 就是在電路另外並聯一個電流源
, p" E5 c" {1 \2 J1 |" Q也是同樣的sin波然後慢慢衰減到零 結果也是能讓電路起震
1 K1 [9 \# R6 @  k3 @
' x) w0 O* C: L& s' \% [! y1 b另外好像模擬時間的間隔不能設太大 設太大好像也不會起震
2 C9 Y9 Z8 E! J2 l  r) w) p+ f4 u# V2 J$ D
附件為網路上找到的文件& ~6 i2 W+ c( |& k5 I) t+ K7 M) o4 I
& D% o# H% \6 i8 G9 C/ X/ S
[ 本帖最後由 monkeybad 於 2007-8-9 10:14 AM 編輯 ]

本帖子中包含更多資源

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

x
6#
 樓主| 發表於 2007-8-13 15:32:02 | 顯示全部樓層
恩 這種加起始電壓的方法的確怪怪的 因為實際上晶片沒有這種起始電壓
$ r1 L( Q0 b, |# j: \# |) k應該是要用正統的加起始值以及VDD上升等條件一起模擬才符和實際的情況3 s3 _2 N* K( X' i
0 D8 `9 x7 U! |5 W! U% S
看參考資料裡面是說 在晶體震盪器模擬都要花費相當長的時間 這種方法可以加速模擬的時間
- A# V, j6 k% S  U" h  X: L% T% N因為時間過很久後起始的電壓還是衰減到零了 對電路沒有影響 所以最後假如電路還是可以震盪的話
# G2 l. {! ]$ B- H: p我想OSC的設計應該是會震才對 # ~+ H7 M+ I' P7 U( N

( c9 N+ n! M( r+ y+ A我覺得這種方法只能表示最後會不會震盪 不能模擬剛開始的時候會不會起震 另外就是可以節省模擬的時間
0 b- D2 T( D$ Z! e+ C
% q. P) M0 }7 y& f; _[ 本帖最後由 monkeybad 於 2007-8-13 03:35 PM 編輯 ]
7#
 樓主| 發表於 2007-8-22 15:10:49 | 顯示全部樓層
根據推導的公式 RP應該是越大 所需要的gmmin會越小  這應該是沒錯
% g$ Q4 |4 G' S! L' h) O) J) B$ [3 M$ `* g' d& Q
另外說實話 我模擬負電阻時也有遇到全部變成正的情形 但是我也不知道為什麼 我猜可能是相位的問題吧 Hspice把他反過來了
( ?9 w4 }% D1 u% r/ y所以我後來就直接根據推導的公式去計算 就是之前那份Philip的文件 移項一下就可以得到正電阻跟負電阻的計算公式: ~$ a  M) |2 p& k, s. M
然後至少負電阻絕對值要大於正電阻 根據之前網友的說法是說要大五倍比較保險
7 K# T) m9 `8 }9 E3 t9 {& m  R7 t' l. H& \  o8 @/ m0 N
然後在時域上面去模擬 有一個可以參考的方法來驗證你OSC會不會震 就是一開始起始值的電壓用很小. k; T) e2 E- A$ e, p' J
然後你去看震盪器裡面的波形振幅 如果振幅慢慢被一直放大 則表示你的OSC是會震盪的
+ H) |! V. d- E+ E1 J0 _# ?因為表示負電阻的力量是比較強的 7 I4 Q% o" k4 Z
: ?# C/ r# K& I5 y9 U1 S+ }/ i, P
若是要看steady state時的波形 就把起始值加大 加速他transient的時間
* j8 c- h; c( n- g' \1 [7 T$ `1 X: h2 {
另外注意好像.TRAN時間間隔也不能設太小的樣子 不然也不會震 目前我模擬是設0.01U 但是你頻率比較快 可能在設小一點吧

評分

參與人數 1 +3 收起 理由
skyboy + 3 很受用!

查看全部評分

8#
 樓主| 發表於 2007-8-24 17:03:57 | 顯示全部樓層
請問一下ADiT是什麼呀
1 T+ y$ n# _" k
" T+ }$ V6 S5 v; v另外Hspice模擬中 我是參考之前的附件裡面設的起始電壓 就是原來附圖中的d點加入一個起始電壓
0 C/ u6 b0 d4 V( \VK d1 d2 sin ( 0V 800V 32K 0 1e4) 其中d拆成了d1 d21 L) I2 d" c6 F% F" I+ s+ ~
那起始電壓用小一點的話 就是sin的震幅用小一點 例如設成50V這樣
; M) n# \# z  d) f用這樣設起始條件模擬時間會比較快一點
3 H  b: {& C1 W9 u0 {7 ]5 \0 i3 ?( U: m- q$ h5 J6 ^  y
另外再模擬起震時 參考finster的設法 VDD用ramp模擬上升 另外V(A) V(B)就設成3.3V
6 o! D& g' w8 W那因為crystal從零一直到起震需要很久的時間 所以一開始你會看到XTALIN XTALOUT兩端都會被拉到VDD/2
' i9 m- c4 Q% E4 W- O0 \但是你去看crystal model裡面的c點 應該會開始震盪 而且會慢慢變大
: W8 {2 c! K& v6 E根據穩態模擬的結果 震盪到穩態時電壓振幅都會到上百V至上千V
1 F- S- _# I# _; E3 S: h
4 H& _0 i- Y, l另外我看你crystal model最好是去找看看 實際上廠商在用的model參數下去設
  Y; `1 \1 u5 k) T2 c% E8 M+ j* w2 m+ i
# p: ]4 a4 x  _[ 本帖最後由 monkeybad 於 2007-8-24 05:09 PM 編輯 ]

評分

參與人數 1 +3 收起 理由
skyboy + 3 感謝啦!

查看全部評分

9#
 樓主| 發表於 2007-8-30 14:32:14 | 顯示全部樓層
哇 32768的crystal OSC模擬要一個禮拜喔!5 S! q* N' o9 N4 f% I
原來要這麼久 難怪我跑模擬過半個小時去看 怎麼感覺都一樣勒
10#
 樓主| 發表於 2007-8-30 18:51:19 | 顯示全部樓層
另外附帶提一下 RTC晶片規格裡面 要求非常省電
$ c; s4 u% ~6 E! T0 ?# X+ t8 ]因為可以延長電池的壽命 或是外掛的精電容可以撐的比較久 : r9 z/ \8 c8 h& s: ]7 K0 _' ]+ E/ i
目前我找到比較厲害的是seiko 還有一家瑞士做的 兩個差不多強$ a2 x  C" n" c( Y  L
time keeping current=0.25uA, VDD=5V-1.3V3 u! Z- Y( U  u1 A

7 E8 m$ h% B/ I  x& n7 i1 P真的能做到這麼省電 而且VDD可以吃這麼大的範圍的電壓嗎?
" u4 ?6 Q- J: U! W) V! ~( H, E# d  N
$ g+ Q9 p, X# B3 X' O" m這種規格實在很嚇人. _- K& B+ @! i3 B8 ]

/ s9 W6 L0 o- d$ A+ n猜想是不是他先內建一個LDO把電壓降下來 然後再用這個LDO Vout去做類比和數位的電路的power嗎

本帖子中包含更多資源

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

x
11#
 樓主| 發表於 2007-9-8 16:44:00 | 顯示全部樓層
感謝wwm101提供這麼詳細的模擬資料& t6 |: ]. H: a# t. p
原來設電感初始值只要加 IC=1uA 就可以了 又學到一個指令了# n' |5 x( |5 Y: w% k

8 U) J8 V4 _0 y/ H看了討論區的文章 ' M; g6 M0 H9 p6 [7 s
同意裡面的講法
6 [8 h1 p7 k( j; E1 h# q- m震盪器模擬應該跟初始值有關 可能是模擬軟體本身的收斂問題 可能跟演算法有關吧+ a' P3 d. b- P- S6 @. Y9 v
設不好就都掉到ZERO的狀態 而不是震盪的狀態  " a( u# M- L+ w, U+ V
所以應該要設初始條件 尤其是在模擬電源start-up的情形 初始值沒設好 好像也不會振說
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-6-9 07:50 AM , Processed in 0.146518 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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