の続きです。
計測値をUARTで吐ける周波数カウンタを作ったので、GPSのPPS信号を基準にOCXOの周波数を1週間ほどログってみました。
Computer Radio RF Tech様で紹介されている方法とほぼ同じです。
GPSモジュールから1PPS信号を発生し、FPGAに入力しています。
PPSの立ち上がりエッジで、ゲート信号生成とカウンタ用レジスタの切り替えをやっていますので、計測値は毎秒、PPSの立ち上がりエッジごとに出力されます。(ダブルバッファのような実装になっています。)
回路図を図3に示しますが、完璧に検証しているわけではないので、不定値を拾う可能性はあります。ラベルと信号の対応は、
・inclk・・・被測定信号(10MHz)
・pps・・・GPSモジュールからのPPS信号(1Hz/Duty=50%)
・res_n・・・リセット信号(負論理)
・sync_clk・・・後段回路と同期するためのクロック(1MHz)
・freq・・・測定結果
・pps_trig・・・PPS信号の立ち上がりエッジから2sync_clk遅れた後段回路のスタート信号
FPGAはVerilogを使ってコーディングしています。計測コアよりI2C液晶の制御部の実装に時間がかかりました・・・。
図1. トラ技付録のMAX10 FPGAで仮組した周波数カウンタ
図2. FPGA内部のブロック図
図3. 計数部の回路
図4. ebayで購入したOCXO
図5. 梱包材で断熱&保護
図6. OCXOの電源。216円。(ハードオフで調達)
以下が測定結果です。
測定期間中の室温は10℃~25℃程度変動しています。
途中でカウントミスをしていますが、適当にカウンタを組んだのでメタステーブルを拾っているのだと思います。
図7と図11はカウントミスした箇所を除去して表示しています。
図7. 約8日間の測定結果まとめ
図8. 2点ほどおかしな値が計測されている
図9. おかしな値 その1
図10. おかしな値 その2
図11. 600 + 600回の移動平均処理後
図12. コールドスタート時の立ち上がり特性
図13. GPSモジュールの統計情報(抜粋)
図11を見ると20mHz程度の変動が有りそうだなーと読み取れます。変動要因にはOCXO自体のドリフトとppsの揺らぎが含まれています。
正直なところOCXOを評価しているのか、FPGAで構築した周波数カウンタのデバッグをしているのか、はたまたGPSモジュールを評価しているのか分からんというね・・・・w
とりあえず非同期信号を確実にカウントできる回路を組めるようにならなきゃね。
0 件のコメント:
コメントを投稿