GPSDO 10.0MHz 基準周波数発振器を作る(3)

投稿者: | 2020/08/18

今回はGPSDOの基本構成です。

  • マイコンSTM32F411CEU6はクロック周波数最大100MHzで動作させることができます。
    外部クロックとしてOCXOからの10.0MHzを入力し、マイコン内蔵のPLLを使って100.0MHzに10逓倍します。
    具体的には、クロック設定は入力された10.0MHzを5分周した2MHzと内蔵VCOの発振出力を50分周したものをPLLでロックさせます。PLLがロックするとマイコン内蔵のVCOは100.0MHzを発振させることになります。この100.0MHzがマイコンのクロックとなります。この100.0MHzはOCXOと同期したもので、マイコンのタイマー等もこの100MHzを基準に動作します。内蔵PLLのジッタを心配しましたが、大きな問題はないようです。
  • 100.0MHzをTIM3で分周しPWM生成機能を使い1.0Hzのパルスを生成します。生成した1.0Hzは32bit タイマーTIM2のInput Capture端子IC2に入力します。
  • GPSモジュールのPPS信号をTIM2のInput Capture端子IC1に入力します。PPS出力があれば基本的にどのGPSモジュールでも使えるよう、デフォルトの1.0Hzを使用します。
  • マイコンのシステムクロックを分周した1Hzは、当然のことながらタイマークロックと完全に同期しているためサンプリングによる量子化誤差が発生しません。量子化誤差の影響を受けるのはGPSモジュールからのPPS信号のみです。
  • GPSモジュールは、AliExpressや秋月電子で販売されている色々なものを差し替えて使えるようにソケットにしました。1PPSの出力があるものが使えます。
  • NMEA出力をUARTに接続します。時計や、カレンダーの表示に使用します。また、UARTを介してGPSモジュールのパラメータを設定します。
  • OCXOの周波数調整はオーディオ用のDACを使用します。I2Sで制御します。
    PCM5102Aを使用しました、ブロック図では24bit DACになっていますが、32bit対応です。秋月秋月電子でもDIP化されたものが売られていますし、AliExpressではモジュールになったものが購入可能です。ほぼ直流の信号を出力する必要があるためオーディオ用のDACで大丈夫か心配しましたが、温度ドリフトも特に問題ないようです。GPSモジュールからのPPSジッタの影響のほうがはるかに大きいです。オーディオ用ですので、DCレベルの信号を出力するとプロテクタが動作するかなとちょっと心配しましたが、こちらも問題ありませんでした。
    PCM5102Aは単一電源で動作しますが、チャージポンプを内蔵しており出力は0V±2Vrmsを出力することができます。マイナスに制御する必要はありませんので、プラス側のみ使用することにします。
    DACはNEC μPD6372/6376に切り替えることもできます。このDACは16bitですので、L,Rを組み合わせて分解能を上げています。19bit相当(16+3bit)μPD63672/6376は、約1.6V±1Vの範囲で制御可能です。DAC直接だと最大制御電圧は2.6〜2.8V程度になりますので、OCXOのバラツキによっては制御電圧が足りない場合もあります。このような時のためにOP-AMPで制御範囲を拡大できるようにしています。ただし、OP-AMPを通した場合のノイズやオフセット温度ドリフト等の影響を最少にするためなるべくOP-AMPなしで使いたいところです。
  • モニター用のLCD SC2004、温度センサーBME280をI2Cで制御します。

OCXOの周波数は、GPSモジュールから出力される正確な1秒であるPPS(Pulse Par Second)を基準に計測します。
ゲート期間中のパルスを計数する通常の周波数計測方法だと1秒で1Hzまで、0.001Hzを計測するには1000秒のゲートタイムが必要になります。今回はOCXOを10逓倍していますので、1秒ゲートで0.1Hz,100秒ゲートで1mHzの単位までと1/10の時間で計測できることになります。

電源投入時など、周波数のズレが目標に対し1Hz程度と大きい時は、1秒ゲートで周波数を計測し、周波数を合わせこみます。ある程度合わせ込めたらゲート時間を段々と伸ばしていき、周波数計測の精度を上げていきます。
今回のターゲットは周波数偏差±0.5mHzですから、クロック周波数100MHzでゲート時間1000秒であれば0.1mHz程度の計測精度になります。ただし、ゲート時間の基準となるPPS信号にもジッタがありますので、1000秒程度では0.1mHzの計測精度を保証するのは難しいでしょう。また、周波数調整がある程度追い込めたらOCXOのパルスをカウントするだけではなく、PPS信号とOCXOを分周して作った1Hzの位相変化を計測して周波数を計測する方式も併用しました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください