2010年6月26日土曜日

Si570 "ANY-RATE"プログラマブル発振器(2)

Si570の出力周波数
出力は、4~5GHz帯のDCO(Digitally-controlled Oscillator)をディバイダで分周して得られます。周波数は次式で求められます。


RFREQ・HSDIV・N1レジスタで任意の周波数を選べますが、いくつか制約もあります。

  • DCO周波数範囲: 4850~5670MHz
  • XTAL周波数: 114.285MHz
  • 出力周波数: 10~280MHz (Cグレード、LVDS出力の場合)





出力周波数の変更
出力周波数を微調整(±3500ppm以内)するときは、RFREQレジスタに書き込むだけで変更できます。±3500ppmを越えた周波数とするには、いったんDCOを停止させ、各レジスタの設定後、再スタートさせる必要があります。


 

レジスタ値の選定
周波数設定に関するレジスタの制約は次の通りです。
  • RFREQ: 38ビット
  • HSDIV: 4, 5, 6, 7, 9, 11
  • N1: 1と128までの偶数
データシートによると、消費電力を考慮してDCO周波数を出来るだけ低くすること。また、N1を小さく、かつ、HSDIVを大きくしたときに消費電力が最小になるとのことです。
次に、RFREQレジスタの上位10ビットは整数部、下位28ビットは小数部に割り当てられています。小数部を含む10進数値を2進数の整数へ変換するには、2^28を掛ければ良いそうです。
 


次に、4つの周波数について検討してみます。

(1)122.880MHz
  • 出力周波数 = DCO周波数/(HSDIV×N1) より、DCO周波数4850MHzとするときの HSDIV×N1 は、4,850MHz/122.880MHz ≒ 39.5。
  • いくつかの組み合わせの中から、HSDIV=5、N1=8を選定。
  • DCO周波数 = 出力周波数×HSDIV×N1 = 122.880MHz×8×5 = 4,915.2MHz
  • RFREQ = DCO周波数/XTAL周波数 = 4,915.2MHz/114.285MHz = 43.0082688より、2^28を掛けると、11544944248。これを16進数に変換すると、0x02B021DE77となる。
(2)73.728MHz
  • HSDIV=11、N1=6、RFREQ=0x02A9404015
(3)61.440MHz
  • HSDIV=5、N1=16、RFREQ=0x02B021DE77
(4)12.288MHz
  • HSDIV=11、N1=36、RFREQ=0x02A9404015



周波数の変更手順
今回は、Si570をFPGAのシステムクロックとして使います。アプリケーションに応じた周波数を出せればよいので、電源投入時にDIPスイッチの設定に応じて周波数を変更します。I2Cによる、設定変更手順の流れは次の通りです。
  • Freeze DCO
  • RFREQ, HS_DIV, N1を更新
  • UnFreeze DCO
  • (10ms以内に) NerFreqビットをセット

Si570のレジスタ(データシートより)

0 件のコメント:

コメントを投稿