PLL方式GNSSDO(GNSS Discipline Oscillator)の製作

Table of Contents

1. 概要

周波数や位相雑音の高精度な測定を行うためには,より安定した周波数源(発振器)が必要です. OCXO(恒温槽付水晶発振器)は温度安定性に優れ,ジッタの少ない高精度1な発振器です. しかしOCXOは発振周波数の長期的なドリフトや,フリーラン時の発振周波数が公称値からわずかにズレている可能性があり,周波数確度2が保証されません. そこで絶対的な周波数標準として測位衛星に搭載された原子時計に同期してその周波数を校正します.

2. はじめに

いろいろと無線関係の工作をしていくと,特定の周波数の信号を出力する発振を作ったりする機会が多々あります. 目的とする相手方と通信し,また他の相手に妨害を与えないためにはシステムの基準となる発振器の発振周波数が安定していることが重要です. このような発振器の周波数安定度,すなわち位相雑音などを評価するためにはスペクトラムアナライザ等の測定器が用いられます.

しかし,測定器内部で測定の基準となる信号を生成する発振器も完璧な周波数安定度を保てているわけではありません3. 高精度な発振器の評価をしようとする場合,評価対象となる発振器の性能を見ているのか,測定器内部の発振器の性能を評価しているのかわからなくなってしまいます. つまり高精度な発振器を評価する場合,そのための測定器の基準信号は対象よりもより高精度な発振器によって作られることが求められます.

測定器の基準信号源としては水晶発振器が広く用いられています. 水晶発振器は水晶の圧電効果を利用し,ある形に切り出した水晶片(水晶振動子)の機械的共振により特定の周波数で発振します. しかし水晶振動子の共振周波数は温度に依存して変化します. そのため,周波数精度が求められる用途では,水晶振動子の温度依存性を打ち消す補償回路を組み込んだTCXO(温度補償型水晶発振器)や恒温槽中に水晶発振子を収め,温度を一定に保ったOCXOが用いられます. OCXOは周波数安定度が高く高精度な発振器ですが,発振周波数の長期的なドリフト等は生じるため,定期的な校正なしにはその周波数確度を保証できません. しかし,個人の趣味レベルでは基準信号源にそこまでのコストを割くことは困難です. そこでそれなりに周波数の精確さが保証されている他の信号を用いてOCXOの発振周波数を常にチューニングすることにします. それなりに周波数の精確さが保証されており,容易に入手できる信号とは……そう,測位衛星の時刻信号です. 測位衛星には高精度な原子時計が搭載され,その時刻情報は地上から常時校正されています. この時刻情報を用いて発振器をチューニングすることで周波数確度の優れた基準信号を生成する. これがGNSSDO(GNSS Discipline Oscillator)の基本的なコンセプトです.

3. OCXOの評価

まずはチューニングされる対象となるOCXOを用意します. OCXOもちゃんとした所でちゃんとしたものを買うとそれなりに高く4つきます. しかし,ネットの海をサーフィンしていたところ良さげなものを見付けました5

ocxo.png

どうやら,何かしらの機器(携帯の基地局とか?)から取り外した中古品のようです. 足にあきらかにはんだを外した形跡が残っていますが,ちゃんと生きているでしょうか? とりあえず動作確認をすることにします. CTIというメーカーのOSC5A2B02という型番のようで,ネットで調べるとデータシートが出てきました. どうやらVrefピンの電圧を変えることで発振周波数を調整できるようです. GNSSDOを製作するうえでは,この機能が重要になります. 主要な性能諸元を以下にまとめます.

規格 代表値 備考
公称周波数 10 MHz  
初期確度 <=200 ppb Vc=2.0 V,25℃
エージングレート <=0.5 ppb/day, <=100 ppb/year 測定期間30日
短期安定度 <=0.5 ppb/s 測定時間1時間
制御電圧 2.0±2.0 V  
周波数制御範囲 -2.0~-1.0 ppm Vc=0 V
  -0.2~0.2 ppm Vc=2.0 V
  +1.0~2.0 ppm Vc=4.0 V

この表から見るに,制御電圧が2 Vのときに公称値の10 MHz,制御電圧を変えると1~2 ppm/V程度周波数を変化させられるようです. では実際にやってみましょう.

OCXOをスペアナに繋ぎ,Vrefを変化させた際の周波数の変化を確認しました. 画面の右上の方に出ている周波数はマーカーの読み値では無く,内蔵の周波数カウンタの値です. このスペアナの基準信号はOCXOよりも長期安定性が悪いとは思うので,測定は短時間のうちに終わらせ, 1セット測定した直後に逆順でもう一度評価してばらつきを確認しています.

0v.JPG 2v.JPG 4v.JPG

この結果から制御電圧が2 Vの場合と比較して,0 Vでは-2 ppm,4 Vでは+3 ppmと周波数が変化することが確認できました. 4 Vの際の変化量がスペックよりも大きいようにも見えますが,測定器の基準信号の安定度がよくわからない以上なんとも言えません. この結果はあくまで参考値で,定量的な値よりも,制御電圧に対して正のスロープで±数ppm程度周波数を動かせるということが確認できればokです.

4. GNSSに同期した時刻信号

ちゃんと動きそうなOCXOが手に入ったので,次に基準信号について考えます. GNSS(Global Navigation Satelite System)は人工衛星を利用して一を測定するためのシステムの総称で, 代表的なものとしてアメリカのGPSやロシアのGLONASSなどがあります. これらのシステムでは受信機の時計と衛星から送られてくる時刻情報の差から衛星と受信地点間の距離を求め,受信機の座標を決定します. 具体的な測位原理はここでは触れませんが,ユーザーは4機の衛星からの信号を受信し,処理を行うことで座標および受信地点の正確な時刻を知ることが可能です.

これらのシステムで高精度な測位を実現するためには,衛星から地上に送信される時刻情報の正確性が重要となります. そのため測位衛星には高精度な周波数源である原子時計が搭載されています. また,受信した複数の衛星同士の時計がズレていては正確な計算ができないため,測位衛星に搭載される原子時計は地上局の基準と常に比較校正され,一定の精確さを保っています. 例えばGPS衛星の場合,米海軍天文台(USNO)の保有する原子時計により校正されています6

ということで,この衛星からの信号を受信してくれば,USNOの原子時計によって校正された正確な時刻(周波数)の基準が得られます. この信号は遠く宇宙を飛ぶ衛星からやってくるため,とても弱く,またその受信処理や複数衛星の信号を統合して時刻補正をする計算は面倒です. そこで,ここでは大人しく既存の受信モジュールを用いることにしました. 今回はGE-612Tという受信モジュールを用いて実験しました. このモジュールは以下の写真のように非常にコンパクトで,機器に組込むときにも便利そうです. この写真ではアンテナをモジュールに直接繋いでいますが,これでは衛星からの電波を受信できなかったため,実験時はケーブルを延長してアンテナを窓辺に配置しました. アンテナ側にLNA(低雑音増幅器)が内蔵されたアクティブアンテナなので多少延長しても信号的には問題無さそうです.

GE612T.JPG

このモジュールはu-blox社のUBX-G6010-NTというICを用いているようです. ということでu-blox公式の評価ソフトであるu-centerをPCにインストールし,UARTで接続します. 標準では衛星を補足して時刻同期ができるとTIMEPULSEピンから1 ppsのパルスが出力されるはずです. u-centerからView→Configuration Viewを開くと以下のように1000 ms周期で100 msのパルスが出力される設定になっていることが確認できると思います.

TP1.PNG

GE-612Tのデータシートを見ると,このTime Pulseは最大1 kHzまで設定が可能と書かれています. しかし,後述するPLLにより,10 MHzのOCXOをチューニングすることを考えるとできればもう少し周波数を上げたいところです. 実はTP(Timepulse)から設定できる上限は1 kHzですが,このモジュール自体はもう少し高い周波数を出力することができます. 下図のように,TP5という方から設定を行います. ここでは100 kHzでDuty比50%に設定を行いました. 下の方を見るとケーブル等による遅延の補正など,いろいろいじれそうですが,ここでは触れません. 設定を変えると無事,100 kHzの出力を確認することができました. 当然ですが,この100 kHzは衛星の時刻情報に同期した信号です. 短期的な安定度は受信モジュールのクロックに依存しますが,衛星からの信号と同期しているため,長期的な誤差の累積は生じません.

TP5.PNG

5. PLLの設計7

準備したOCXOとGNSS受信モジュールを使って以下のような回路を作成しました. 上述したようにGNSS受信モジュールからは100 kHzの信号が出力されます. これとOCXOの出力とを比較するために,OCXOの信号を100分周します. 74HC390は10進カウンタが2つ(正確には2進と5進が2つずつ)入っているので,ちょうどIC1つで100分周が可能です. このようにして得た100 kHzの信号同士の位相を比較し,常に位相が同期するようにOCXOの制御電圧をコントロールします. 位相比較には74HC4046を用いました. このICはVCO(電圧制御発振器)を内蔵したPLL ICですが,発振器部分と位相比較器部分は内部で繋がっておらず,独立して動かせるようになっています. そこで位相比較器の部分だけを活用しました.

plltest.png

この回路を動かした際の波形を以下に示します. Ch. 1(黄)がGE-612TからのTime Pulseで青がOCXOを100分周した信号です. 両者がぴったり同期していることがわかります.

PFDlock.png

上の結果だけ見ても凄さがわからないような気もしますが…… 試しに位相比較器を外して,OCXOの制御電圧を2 Vに固定し,10分間放置した際の波形を示します. 測定日が変わり,Ch. 1と2が逆になっていますが,OCXOの信号を基準にして,GNSSモジュールからの信号の位相が進んできている,すなわち両者の周波数がわずかにズレていることがわかります.

lock+600s.png

6. 試作

ということでPLLはなんとなく上手く動きそうだったので,実用のために基板を起こしてしっかり作り込んでいくことにしました. しかし,ここで1つ問題が生じます. GE-612Tの設定を変更し,Time Pulseを100 kHzにしましたが,このモジュールには設定を保存するための不揮発性メモリが搭載されていません. これでは使うたびにPC等から設定を送り込む必要があり,不便です. u-blox6は外部にEEPROMを接続することで設定を保存できるようになっているため,GE-612Tはやめて,u-bloxの生のモジュールであるNEO-6Mを使うことを考えました. しかし,これは既に廃番だったため実際には後継機種となるNEO-M9N-00Bを搭載しています. NEO-xxシリーズは7世代以降外部EEPROMをサポートしていませんが,M9Nの場合flashメモリが内蔵されているため,外部の部品を必要とせず,楽に設定を保存できます. 設計したシステムのブロック図とPCBレイアウトを以下に示します. レイアウトは4層で引いていますが,気を使ったのはGNSSのアンテナとバイアスT部分くらいでしょうか. また基板上にはNEO-6Mを想定してEEPROMを搭載するためのパターンを引いていますが,実際にはNEO-M9Nを用いているので未搭載です. block.png board.png

さて,出来上がったのがこちら. さて,ここではEEPROMの他にBT1が未実装になっています. これはGNSS受信機のバックアップ用バッテリー8で,たまたま在庫が切れていたのですが無くても動くので一旦このままで行きます.

assy.jpg

さて,無事組み立ったので電源を入れてオシロに繋いで見ます. と……出力波形がカスですね…… 今回は5 V TTL出力(実際にはドライバはLVCMOSですが……)としているのですがリンギングが激しい波形になってしまっています.

これは高入力インピーダンスのオシロで反射した信号が,途中の線路(基板上のパターン,BNCケーブル共に50 Ω)とドライバの間で再度反射し,多重反射が生じている影響かと思います. LVCMOSのドライブ能力は数十Ωくらいかと思いますので……線路を削って適当に落ちていた39 Ωの抵抗を載せておきましょう(所謂ダンピング抵抗).

chip.jpg

これで,波形が改善されましたね. 一件落着です.

good.jpg

7. まとめ

さて,ケースに収めてそれっぽく纏めることができました. しかし,これを評価できるだけの周波数標準,高精度な測定器は持っていないので,あくまでそれっぽいだけで……実際どうなのかは検証しきれていないです. とりあえず,冒頭で活躍した家のスペアナに繋いでおこうかな……9 今後の活躍にこうご期待です.

Footnotes:

1

精密さ,ばらつきの少なさ(Precision). JIS Z8103:2019 計測用語では「指定された条件の下で,同じ又は類似の対象について,反復測定によって得られる指示値又は測定値の間の一致の度合い」と定義される.

2

ここでは確度という語を精確さ(Accuracy)の意味で用いている. 精確さは「測定値と測定対象量の真値との一致の度合い(JIS Z8103:2019)」であるが,この概念を数値的な量の値として表す統一的かつ共通的な方法はまだ定まっていない. 真度(trueness)とは異なる概念である.

3

仮に位相雑音がまったく無い神の発振器があったとして,それをスペアナに接続して評価した場合,スペアナ内部の発振器の位相雑音が見える.

4

今回用いたようなスペックのものを新品で買おうとすると2万円程度でした.

5

正確にはこれを見付けて勢いで買ったので有効活用するためにGNSSDOの製作を始めたという経緯がある.

6

USNOは米国の時刻の国家標準を提供しており,当然UTC(USNO)はUTC(協定世界時)にトレーサブルである.GPSの時系はUTC(USNO)により校正されるが,文章化された不確かさの連鎖は無いためGPSの時刻はUTCトレーサブルでは無い.

7

このようなフィードバック制御機構をPLL(Phase Lock Loop)と呼びます. PLLについてはたくさん詳しい資料があるのでここではあまり解説しません. 他にGNSS基準でトリガを掛けて単位時間あたりのパルス数をカウントし,そこから周波数の偏差を求めてフィードバックするFLL(Frequency Lock Loop)という方式もあります. GNSS受信機のTime Pulseを1 ppsのまま使えてわかりやすいので,既存のGNSSDOの製作例ではFLL方式の方が多いような気がします.

8

GNSS測位のためには衛星からの時刻情報だけでなく,どの衛星が今どこを飛んでいるのか,その衛星の時計はどの程度ズレているのかといった情報が必要です. これらの情報を受信するためには10分程度かかるため,受信機の電源を入れてから測位が可能になるまで時間が掛かってしまいます. そのため,バックアップバッテリーを設け,主電源が切れてもしばらくこの情報を保持していられるようにします.

9

当時交際していた相手にGNSSDOを設計しているという話をしたら,それで3分測ってカップラーメン食べようよって言われました……が,それを実現する前に破局してしまったので,良い使い道のアイデアないしは恋人になってくれる方を募集しています.

トップページへ