Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 104899|回復: 82
打印 上一主題 下一主題

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

  [複製鏈接]
跳轉到指定樓層
1#
發表於 2007-8-1 16:50:04 | 顯示全部樓層 回帖獎勵 |倒序瀏覽 |閱讀模式
之前有討論過有關CMOS Pierce crystal osc
) R0 ]% r  m/ a/ D9 Y5 S現在我的模擬好像有點問題 想請教一下7 k+ s: z) }+ C4 G
圖一為我簡化後的Model 基本上 就是一顆CMOS Inverter 然後並連上一個偏壓電阻
6 U& j& j% @) ?9 |' \! h然後a b兩點再分別接到Crystal的兩端 $ I1 ?, g* r& }) f
Crystal用的model是一個L, C, RS串聯在並連一個CO 震盪頻率為32.768K
7 U6 v3 Q3 o; P7 _! n7 q7 W; ?這是要for時鐘用的
* Z4 p" p  |& C3 d以下是我模擬的值 這個是從網路上面抓的一組值" T3 l. |8 W' P8 r
L=7000, C=0.003p, RS=200K, CO=1.7p. W0 g* k" u& I# K: c
RBIAS=1E7,
0 t5 @& R/ Y. n( k" O9 [& wC1=1.2p, C2=1.2p
/ w5 c  _! W& b" O/ uCMOS INVERTER: MN W=0.22U L=10U
7 {& w! [3 n. b- K+ l                         MP W=0.22U L=10U* d% v, H/ e. Y% o8 Q
VDD=3.3V
; \7 u" w% n7 J3 f* m: S$ {$ q5 _! R根據理論 圖二看進去的負電組值 也就是電壓值實部的絕對值 要大於Crystal Osc裡面的寄生電阻RS9 f, v$ X, m* j. m
就是負電阻加正電阻要為負 才會震盪
0 F7 A/ w8 ^: L& `1 ?! e$ b7 P! }
圖二是我模擬負電組的電路 & o, c6 h! h& A% c3 b/ J( y
aa和bb電壓偏在Inverter飽和區裡面 V(aa)=V(bb)=1.3V1 M% C: k1 |" J( A, j1 J) e
我在aa bb這兩點加一個電流源 hspice的指令為& M& `$ J* x) y# K
Iin aa bb ac=1
( U  j% D" ?; X+ Q! k2 V6 |4 w+ B7 u然後我跑.ac模擬  q3 k- r8 c  @7 k: X
.ac DEC 1e5 1k 40k
$ o6 A2 L, b* F  q6 D/ w再下/ \( U( k# Q8 m! V1 y+ T! R
.probe VR(aa,bb)3 a0 X" |# k& H9 N. p/ D4 e( L
顯示aa,bb電壓的實部' d) \8 ~- }/ ^. {
看ac的圖 在Avanwaves裡面叫做Volts Real的圖 看VR(aa,bb)
7 U) m# O8 ^- Z+ |0 [' w1 K然後發現在32.768K左右的時候 大約是-520K左右
8 l2 k1 T$ ]+ u$ U2 I請問一下這樣模擬負電阻的方法對嗎?; r; U; S  X$ J3 R

. ~: y% M# J4 e假如是正確的 那負加正小於零應該會起震才對
; u, N# V9 H9 H- Y/ F; i! K, e  E; Q$ y7 |6 l
在跑.TRAN模擬
: e' C4 y0 s- U. I$ N我的初始值設定為
+ U. [+ x; `, L4 ?7 e1 }$ @! D.ic V(A)=0 V(B)=1 V(C)=0 V(D)=0) ]' \* O: p( j
可是後來發現一開始有震盪 但是越到後來振幅就越小 到最後整個衰減掉了 電壓收斂在1.3V
, o2 R: E- i( h- I, v* a5 v0 E6 k% o請問是哪裡模擬出了問題呢?

本帖子中包含更多資源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享分享 頂27 踩 分享分享
2#
 樓主| 發表於 2007-8-1 16:51:27 | 顯示全部樓層
圖二為負電阻模擬
% f4 Z  Y: R$ y9 _6 V/ R9 q4 k; K* q6 ^
圖三為負電阻模擬結果
( @. e0 g4 J2 F( W9 j4 \0 }& \& M' Q2 O0 ~$ P# W
圖四為b點電壓 .TRAN的模擬結果 發現振幅一直變小
. Y/ ~. K; J7 {; z2 N7 c: O# ?9 R$ z  h8 ?
[ 本帖最後由 monkeybad 於 2007-8-1 05:03 PM 編輯 ]

本帖子中包含更多資源

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

x
3#
 樓主| 發表於 2007-8-6 18:08:14 | 顯示全部樓層
For adele:
! @$ f* d# _; V* _1 i" N有試過你給的值 而且用一顆NMOS gmN=44u 上面用定電流源PMOS來偏壓 I=37uA3 X, I. E0 W9 ]8 _: X: c
可是好像還是不會震耶
& }* d; v% ?- d. d& {8 H  H另外我是用HSPICE模擬的 我這邊沒有spectre耶3 @# U1 K6 F# B5 y. A% J
* a' R  I4 G7 t$ T2 n
For m851055/ a2 }2 R" f9 V$ J' [
因為要做RTC(Real Time Clock)的OSC, 所以要求非常省電, Inverter的W/L值才會設這麼小
; g2 K5 o9 [" Y3 `& h3 G1 t0 [( `9 y' J& D; o3 ]( _/ f, P. z
For wwm101 :
; V) p- c: `+ G. O( Y: U: m那要怎麼下指令去給電感初始電流? 還有初始條件要怎麼設才恰當?2 {2 W9 w4 w7 D
2 S$ o* e; P6 q; p
有沒有人有經驗的能指導一下 感溫感溫!9 N; }/ q% o% J2 U2 y0 ^& f0 J! i

  L; G- o5 ?( B( H  X[ 本帖最後由 monkeybad 於 2007-8-6 06:17 PM 編輯 ]
4#
 樓主| 發表於 2007-8-8 14:08:22 | 顯示全部樓層
感謝finster大大提供這麼寶貴的經驗 真是造福人群 功德無量- C: h9 x+ j( {
請受我一拜!
5#
 樓主| 發表於 2007-8-9 10:01:00 | 顯示全部樓層
昨天晚上試了一下以前在網路上找到的一個方法
. c% m9 l! ~$ O8 k% `就是在一開始的時候 串聯一個起始電壓源來加速Hspice的模擬" t% M# n* I* z7 E* ~
起始電壓源為一個sine波 頻率設為crystal的震盪頻率 然後要加入damping factor 讓起始電壓慢慢衰減到零
# W1 P( F6 ]& m6 I# d/ t結果神奇的事情發生了7 A: W4 H9 W6 C1 a9 S/ v
Crystal Oscillator到最後居然開始震盪了
! x% [" a+ g% k# H8 R好感動喔!
2 v! q2 p/ u- D! c趕快來跟大家分享一下!
3 e# Q7 A9 x& r! y- }+ H
$ q6 R5 }# ~$ Z# Q( C3 r電路仍然是之前的Inverter電路
2 [& }5 Y+ g1 Y5 ^在d點加入起始電壓* G7 ?4 h/ H- S- I2 S5 h
VK d1 d2 sin ( 0V 800V 32K 0 1e5)  J, J7 i2 _; g- d
模擬時間約400ms& w% B% a& I  l/ L. ]' v) N9 X
.TRAN 0.01u 400m
  @. t7 b0 n$ }% F到最後就看到震盪器開始震盪了! & _2 M$ l8 O/ Y7 q0 t/ \6 e

* Y8 v  h4 Q, E9 c" P& i後來又試了另一個類似的方法 就是在電路另外並聯一個電流源
6 I8 H" G6 A9 d/ l- M; X也是同樣的sin波然後慢慢衰減到零 結果也是能讓電路起震/ R0 K5 n6 U8 v, M; I. H: S

. o/ ~* e* ^, C5 u, q另外好像模擬時間的間隔不能設太大 設太大好像也不會起震+ P  q! I, x3 P# r# ]. |/ A. a
! a; I. a( N& |8 j! ?" m* @5 U+ C/ s
附件為網路上找到的文件
- S& D7 X. ]  w
. Y* I* I7 D5 ]' J" e: l: \* X[ 本帖最後由 monkeybad 於 2007-8-9 10:14 AM 編輯 ]

本帖子中包含更多資源

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

x
6#
 樓主| 發表於 2007-8-13 15:32:02 | 顯示全部樓層
恩 這種加起始電壓的方法的確怪怪的 因為實際上晶片沒有這種起始電壓* x, [4 M. h) H0 ]5 t
應該是要用正統的加起始值以及VDD上升等條件一起模擬才符和實際的情況3 |4 V7 A7 L9 V! {* ?7 M

. Y& M, ^: G' {  }; e; k看參考資料裡面是說 在晶體震盪器模擬都要花費相當長的時間 這種方法可以加速模擬的時間 4 m$ P! J: f9 g
因為時間過很久後起始的電壓還是衰減到零了 對電路沒有影響 所以最後假如電路還是可以震盪的話
0 y& E2 V/ Z5 [- q% m& N% W3 b' ^我想OSC的設計應該是會震才對
4 j6 w: D2 s' }7 s6 r. U7 {! f$ n6 J9 y9 h
我覺得這種方法只能表示最後會不會震盪 不能模擬剛開始的時候會不會起震 另外就是可以節省模擬的時間
6 N1 z) W) e1 m5 u$ k4 w2 b2 T
$ A* X# w7 V( b" M' z' a" X: P  d[ 本帖最後由 monkeybad 於 2007-8-13 03:35 PM 編輯 ]
7#
 樓主| 發表於 2007-8-22 15:10:49 | 顯示全部樓層
根據推導的公式 RP應該是越大 所需要的gmmin會越小  這應該是沒錯
: R, [# ]5 L9 I
# b( q1 R  c8 P1 e8 }6 w! b另外說實話 我模擬負電阻時也有遇到全部變成正的情形 但是我也不知道為什麼 我猜可能是相位的問題吧 Hspice把他反過來了
( V* U2 G2 y% [3 T" c8 W2 @- E1 t所以我後來就直接根據推導的公式去計算 就是之前那份Philip的文件 移項一下就可以得到正電阻跟負電阻的計算公式
5 h- U7 c- M7 o9 ?然後至少負電阻絕對值要大於正電阻 根據之前網友的說法是說要大五倍比較保險$ [/ h) m2 ]2 }0 u* _2 v, o! A

8 V, E8 T% R3 `然後在時域上面去模擬 有一個可以參考的方法來驗證你OSC會不會震 就是一開始起始值的電壓用很小9 o; i& ]. \& `# j
然後你去看震盪器裡面的波形振幅 如果振幅慢慢被一直放大 則表示你的OSC是會震盪的) F% E. C! S/ g
因為表示負電阻的力量是比較強的 6 C2 I! Z( T1 I) f; O# q

% G! I( M3 Y: F9 [- ?! O# R若是要看steady state時的波形 就把起始值加大 加速他transient的時間
, D2 H7 Q( t2 w7 S! x8 s, {! @7 _& P. R) A
另外注意好像.TRAN時間間隔也不能設太小的樣子 不然也不會震 目前我模擬是設0.01U 但是你頻率比較快 可能在設小一點吧

評分

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

查看全部評分

8#
 樓主| 發表於 2007-8-24 17:03:57 | 顯示全部樓層
請問一下ADiT是什麼呀
. B1 O" X8 x) n% a. c5 m- F8 [1 O' x2 h( \& `% K& R, r% u/ A- k
另外Hspice模擬中 我是參考之前的附件裡面設的起始電壓 就是原來附圖中的d點加入一個起始電壓8 \7 n. T3 B7 _' K/ x. L9 F
VK d1 d2 sin ( 0V 800V 32K 0 1e4) 其中d拆成了d1 d2
8 V# z; t( J. h! e! E那起始電壓用小一點的話 就是sin的震幅用小一點 例如設成50V這樣
2 K+ Y  K( S; g; x用這樣設起始條件模擬時間會比較快一點0 s8 X- ?- G) r- O) r0 S+ s

+ L" ?9 e. M3 A3 ~另外再模擬起震時 參考finster的設法 VDD用ramp模擬上升 另外V(A) V(B)就設成3.3V
& D9 `4 v8 ?, v  x" h7 m! e$ Q4 k$ q那因為crystal從零一直到起震需要很久的時間 所以一開始你會看到XTALIN XTALOUT兩端都會被拉到VDD/29 ?/ k9 C0 v1 V* @. W
但是你去看crystal model裡面的c點 應該會開始震盪 而且會慢慢變大
5 r* v( J6 t+ N1 x8 ]) I( g根據穩態模擬的結果 震盪到穩態時電壓振幅都會到上百V至上千V; e  q  v. f3 T' ?

2 j4 h, r6 e' |( X& ~) s9 \6 R另外我看你crystal model最好是去找看看 實際上廠商在用的model參數下去設
  d6 ^4 ]* |3 N0 A2 _
* t& v0 v; s2 }7 i, z  b( d/ P/ J[ 本帖最後由 monkeybad 於 2007-8-24 05:09 PM 編輯 ]

評分

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

查看全部評分

9#
 樓主| 發表於 2007-8-30 14:32:14 | 顯示全部樓層
哇 32768的crystal OSC模擬要一個禮拜喔!3 z# [( L$ R) e( g: p# [
原來要這麼久 難怪我跑模擬過半個小時去看 怎麼感覺都一樣勒
10#
 樓主| 發表於 2007-8-30 18:51:19 | 顯示全部樓層
另外附帶提一下 RTC晶片規格裡面 要求非常省電
) J+ x) L! r8 R0 v" l2 l4 Y因為可以延長電池的壽命 或是外掛的精電容可以撐的比較久
' g- p' s+ O0 d5 U) L! C目前我找到比較厲害的是seiko 還有一家瑞士做的 兩個差不多強' M1 x$ {0 A7 v/ N1 p) g
time keeping current=0.25uA, VDD=5V-1.3V9 W) o. j4 ~0 y
. n. C$ `) W$ o7 G8 z' z7 [- Q
真的能做到這麼省電 而且VDD可以吃這麼大的範圍的電壓嗎?
2 c1 L2 F* z1 _( J" n0 ^* x# l/ Q1 y" Q3 s
這種規格實在很嚇人
% o7 z- K& Z; z8 K% K' r5 H
2 M. T+ ^% C( D7 i猜想是不是他先內建一個LDO把電壓降下來 然後再用這個LDO Vout去做類比和數位的電路的power嗎

本帖子中包含更多資源

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

x
11#
 樓主| 發表於 2007-9-8 16:44:00 | 顯示全部樓層
感謝wwm101提供這麼詳細的模擬資料. o2 p; I9 A5 r/ ]
原來設電感初始值只要加 IC=1uA 就可以了 又學到一個指令了/ L* e1 @+ \  ]
6 ?" Q6 V- x( H! t- l
看了討論區的文章
- |/ d7 @+ `! W' S0 _同意裡面的講法
0 V: l( ^- [* `6 u; q7 H- U+ w震盪器模擬應該跟初始值有關 可能是模擬軟體本身的收斂問題 可能跟演算法有關吧
  o+ r' p& |' W. e$ g設不好就都掉到ZERO的狀態 而不是震盪的狀態  3 ~1 X* b7 S0 p8 Q6 ]; d8 D
所以應該要設初始條件 尤其是在模擬電源start-up的情形 初始值沒設好 好像也不會振說
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-6 12:36 PM , Processed in 0.119007 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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