Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

  [複製鏈接]
1#
發表於 2007-8-7 09:13:35 | 顯示全部樓層
先給你幾篇我之前作RTC Crystal Oscillator的參考paper0 r# S8 @$ x8 Q% K; L. z* \9 o
找之前也做過類似的circuit,而且current只有3uA2 o+ C: A+ z5 a, o8 v: ?/ E& {
1. 1999, IEEE conference paper, An improved low power crystal oscillator
/ h! I! n5 d( f6 f9 b% X  G) I% o9 N2. 1997, IEEE Journal paper, A 2.1MHz Crystal Oscillator Time Base with a current comsumption under 500nA
: c% h* d) G0 V- B3. 1995, IEEE conference paper, Low Power and Very low EMI high efficiency high frequency crystal oscillator" j9 V# e6 J8 t# Y. @" `
4. 1991, IEEE conference paper, A Cell Based Suer low power CMOS crystal oscillator with "on chip" tuning capacitors2 V$ p4 G) D! \. x% m; m+ [
這幾篇的架構可參考看它們的架構和方式4 Q3 n- R7 g, k, l) G
晚些再分享一下當初我做的經驗以及遇到的相關問題和要注意的事項

評分

參與人數 2Chipcoin +2 +5 收起 理由
skyboy + 3 很受用!
monkeybad + 2 + 2 感謝指教啦!

查看全部評分

2#
發表於 2007-8-7 22:09:14 | 顯示全部樓層
來補回答我的經驗# i; j8 u2 v/ z5 y2 a/ |' i& e5 y
我之前是做0.18um的RTC的32.768KHz的Crystal Oscillator,條件規格是整體的Crystal Oscillator + Buffer + I/O PAD的current < 3uA,工作電壓要從1.2V ~ 1.95V8 a. \; c& o/ ]. n

' Z; ]  u8 w' @6 ]% R& n1. 首先,要做low current Crystal Oscillator時,要把I/O PAD給考慮進去,我之前在設計時,Crystal Oscillator設計一段時後,模擬及電流均在規格內可以動了,但在加入I/O PAD後,Crystal Oscillator卻不會起振了,後來追了快一個星期才發覺到因為整體current非常小,但因為I/O PAD本身的leaking current過大,導致Crystal Oscillator無法起振,所以,low current Crystal Oscillator無法使用Standard I/O PAD(leaking current會過大),必需使用額外的I/O PAD才行,這點非常重要,因為它會直接影響到起振與否的問題
( Y. t* D% x% J0 p$ R, y4 O; j  s9 u$ C7 A/ p6 ^
2. 要作到low current Crystal Oscillator,本身的inverter不能使用單一個PMOS和一個NMOS,必需採用Bias voltage control的方式才行(架構有點類似1999年IEEE Conference paper那種,但需要再變化一下),同時,為了low current,本身的buffer以及送出clock的buffer需採用long channel的方式,而之所以要採用Bias voltage control的inverter架構,乃因要作到low current Crystal Oscillator,本身在XTAL IN和XTAL OUT兩端點的信號並無法達到rail-to-rail的幅度,故而若採用standard inverter方式,並不能在大的工作電壓中起振,再者,因為要low current,所以在XTAL IN端點的信號幅度會很小,所以,利用Bias voltage control方式來限制住inverter兩端點的voltage level,這個並不好作,必需不斷地試
) N7 t9 O# @0 L0 j% h$ ^; j; C
9 n) p, E. d3 [* C, D- N8 W! Y3. low current Crystal Oscillator的外接兩端電容要非常小,我當時的外接電容方式是用可調的架構(類似1991年IEEE Conference paper那種,不過這兩個電容我是做在內部),我當時試過,外部電容不能超過10pf,否則會因為外部電容過大而無法起振,那時我只用3-4pf的電容(有考慮到封裝廠的寄生電容,I/O PAD的寄生電容,板子上的電容以及實際量測時probe的電容),另外,因為本身兩端的電容值很小,所流過的電流也異常地小,故而只要有稍大的noise或者leaking current,都會造成Crystal Oscillator無法起振
5 @& ?$ j  X, K; I$ i
2 |1 |0 @. i6 T* s0 A$ _4. 連接在XTAL IN和XTAL OUT兩端的回授電阻要很大,最好是50M ohm以上,而這是為了low current Crystal Oscillator而特別考量的,用MOS電阻即可
1 w- n% d- B2 Q' }5 a( |; P. V4 Z8 K4 Z) H5 I& B- X5 D2 G
5. 最後一點,這是經驗談,當初我負責的chip回來,量測function正常,量測到的current約在4uA左右,可是後來整合到digital counter時卻出現問題,追了快兩個星期,才發覺到因為是low current Crystal Oscillator,所以其送出外面的Buffer也是使用long channel,故而它的推力很weak,造成rising time/falling time會有過長的現象,而對digital counter而言,過長的rising time/falling time則會有重覆trigger的問題,以致兩個個別電路均沒有問題,但整合在一起時卻出現錯誤計數的問題,建議你,在送到digital counter時,請他們加一個schmitter buffer,以確保因為low current的緣故而產生過長的rising time/falling time的問題不會造成digital方面的誤判

點評

非常感謝  發表於 2016-4-18 03:18 PM

評分

參與人數 5感謝 +8 Chipcoin +5 +15 收起 理由
tzjyddozue + 2 很詳細
chris020 + 2 很精闢..學到一課
chrishit + 4 好詳盡的分享阿
skyboy + 5 感謝經驗分享!非常祥細...
monkeybad + 10 非常感謝這麼詳細的回答!學到不少!

查看全部評分

3#
發表於 2007-8-9 19:36:40 | 顯示全部樓層
建議你採用這個方式來試+ a. I5 Q* M2 n# d3 v; o* C
VDD   VDD    0    PWL(0 0  10ms  3.3)8 I" V5 m8 [7 Q! W9 j5 {
. ]0 P2 v" P& K* g5 M$ f
並加入initial voltage
) A/ [# M& B+ p- N2 W.ic v(A)=3.3 v(B)=3.3
% J; E- X8 Q8 J$ ?) a7 `* z$ h- S' Z5 y: o1 B6 ~- |' K# E
將電壓源採用ramp的方式來作,那是因應實際電壓源皆是從0慢慢爬升到穩定的電壓源
  l5 b3 q2 X/ n: E0 s9 l再者,將crystal model兩端設初使值為3.3V,最主要是因為inverter會將0-->1-->0-->1
3 `2 M6 y5 V+ D/ j7 r; V  sinverter的兩端若皆為3.3,那在一開始時,inverter的output會因為input為3.3而讓output由3.3-->0,當inverter的input受到回授電阻的緣故而讓input由3.3-->0,又會讓output由0-->3.3,如此循環下去就可起振,當然,這要在crystal能夠起振才行2 F& j3 i3 ?3 x0 i. v4 s! Q
如果一開始就是設v(A)=0, v(B)=3.3,或者v(A)=3.3, v(B)=0,那對inverter而言就會是一個穩定的狀態而不會進行起振的環境條件
1 T- |! v) v9 |+ W; r3 A0 R3 C" m$ m" t# K' M+ n- x8 T, s
最後,實在不建議你用電壓源來作初使值的起振方式" A, B4 ^1 U/ l" {4 p4 [* o/ R
crystal能不能夠起振,端看整個loop有否達到起振的條件9 f- O) i$ l+ |$ _( G' Q! N, _
設初始值只在HSPICE一開始模擬才有效,真正在模擬時己經脫離初始值的狀能,設初始值是能夠幫助HSPICE在計算時有收斂的成效
/ f* m# i! X) @而使用電壓源或者電流源來作初始值的起振條件,相當於我們外加一個信號源來讓電路動作,但實際卻沒有這個信號,這對實際chip的環境而言是不對的,再者,用電壓源或者電流源作初始值要持續一段時間,而這種現象對crystal整體系統而言,無疑干擾了整個loop的運作

點評

非常詳細!  發表於 2020-12-25 04:09 PM

評分

參與人數 2 +6 收起 理由
skyboy + 3 學到不少!
monkeybad + 3 感謝指教啦!

查看全部評分

4#
發表於 2007-8-29 13:51:43 | 顯示全部樓層
如果說Crystal Model沒有問題的話,有用Power ramp和加入初使值的設定而依然不能夠起盪的話
/ D) d. C- r) @/ Q那我只能說應該是你電路本身的問題
# s' {/ l" K) p& t
# D" `2 w+ h$ R. W, v/ K' L假如是用hspice在作模擬的話,32.768khz的要跑上一個星期是常有的事
" w* G( f# E" p如果是使用spectre來作模擬的話,大概半天到一天應該就會有結果出來
1 Y9 P5 P. T1 ^, `# X建議你兩個方向試試看
% r( P+ @2 j8 O+ U& ~一是先測試一下反相器的輸入電壓對輸出電壓的關係,你說你的偏壓大約在VDD/2,但我看了一下你反相器的size再對應映到你的反相器的轉換電壓卻似乎並不在這個區間,先單獨對反相器作模擬,如果你的輸入電壓並不在這個範圍的話,那你的反相器根本無法作出反應,也根本無法起振4 f( n; V) Q6 O5 ^
先讓反相器的輸入電壓可以在接近VDD/2作出反轉,然後再試著加大size試試看& I4 j7 G) J$ Y$ d
另外一個作法則是加大回授電阻,建議你觀察一下回授電阻和兩端電容的電流值及Crystal Model兩端各為多少以及流向,這點純粹是個人經驗,當然,這必須是在上面那個建議改了之後仍然無法起振才用這個,而這點也是當初我在作極低low current crystal oscillator時所觀察到的現象
: r+ `, F% N' [5 q) N/ O& I
! J' m& G0 [/ @- B& t0 K
3 S7 g, A3 F3 Q# F) F3 t
3 W. t( C0 R" t) s& }- z' P9 x; d5 u# C& M3 ?) C% Q  G: T
原帖由 skyboy 於 2007-8-27 12:32 PM 發表
  d7 N2 V" k$ _0 P- ~3 V5 lADiT 是本土公司 (華凱, EverCAD) 開發的一套 simulation tool, 這套 tool 標榜模擬的速度
" a" h# O  Z) q" y2 k. r" S5 R' t比 HSPICE 快上許多, 也有提供準確度較高的 spice mode...Mentor 為了加強他在電路模擬
6 t5 ~$ y1 L; P2 w, s這個領域的 tool, 在去年(前 ...

評分

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

查看全部評分

5#
發表於 2008-1-18 09:26:07 | 顯示全部樓層
原帖由 markcheng 於 2008-1-15 12:33 AM 發表
8 t: D4 w: ~0 V# l/ P/ {/ x感謝finster分享! N" Z8 |8 t# [; E: e& h
小弟我目前遇到一個跟你的第五點問題滿類似的: H" p( s# f1 [: E! b5 V
我是design一個32.768k crystal osc6 u. Q- C, |. P6 ~/ w
ic 回來量測時發現經過digital counter的輸出會有過快的現象,也就是它會數太快,代表著也許我送給它的頻率變快了 ...
8 w5 Z0 {; |$ K
  |% k9 K  E1 n, _9 `% x

' F) C- J2 ^5 u. |" T不好意思,因為這一個主題己經有太多人回覆了
) n4 Z) E7 x" q# R. y0 W所以也就一直沒有留意有沒有人有再提出新的問題來
! s! G2 K  i% @) T: X" f( A我們後來實驗的結果(藉由FIB),發現到當初的推論沒有錯,因為原本的規格是要作到很low power,所以32.768KHz Crystal output的推力就設計的很弱,以致於輸出的clock的rise time和fall time就變得很長,導致後級counter在遇到很長的rise time和fall time時,就會被重覆trigger,故而使得原本要一秒一秒計數的計數器變快了6 x5 Q+ ?# N' E5 v$ @  [
解法就是加一個schmitter trigger,藉由schmitter trigger的hysteresis windows特點來解決過長rise time/fall time所造成的問題(我們有用hspice作過模擬,利用crystal oscillator + counter但卻沒有看到過長rise time/fall time會造成counter有多數的情況,後來,我們是在power處和crystal oscillator的output端各加一些noise,便會看到問題出現,因為過長的rise time/fall time在爬升的過程中,因為noise的緣故會導致counter在某些較大的noise處會被trigger)
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-6 10:13 AM , Processed in 0.116006 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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