APDahlen Applications Engineer
この技術記事は、PNT(Position, Navigation and Timing)機器に適用可能な技術に焦点を当てています。具体的には、PPS(Pulse Per Second:1秒ごとの基準パルス)信号を使用してデータ収集システムをトリガする際の課題を取り上げます。データ収集装置は、対応する高機能FPGA(Field Programmable Gate Array)に接続された高性能ADC(Analog to Digital Converter)デモボードで構成されていると想定しています。
ADCとFPGAの組み合わせと、オシロスコープとの比較
ADCはオシロスコープではありませんが、適切なソフトウェアがあれば、オシロスコープのような機能を実行できます。これは、高性能ADCがFPGAに結合されている場合に特に当てはまります。
ほとんどのオシロスコープにはトリガ入力があることを思い出してください。トリガ閾値は、様々な方法で調整できます。例えば、3.3V DCのPPSパルスが1.65V DCの閾値を越えたら、その立ち上がりエッジでトリガをかけることができます。ユーザーの観点からは、この閾値電圧を、トリガ波形の振幅によってのみ、上下に微調整することができます。信号の立ち上がり時間が遅い場合、トリガ閾値を動かすことで、表示される波形がわずかに右または左に移動します。このようにして、信号の開始点を、オシロスコープの時間ゼロ(遅延なしと仮定)とトリガ閾値電圧の交点に合わせます。
少なくとも、これはアナログオシロスコープのユーザーの経験を示しています。
関連する話にシフトチェンジしましょう。皆さんは電気自動車を運転したことがありますか?私が初めて運転したのは1990年代で、EV1でした。交差点でクルマがクリープしながら前進するのに驚きました。ブレーキから足を離すと、クルマはおよそ時速5マイル(8キロメータ)で走るのです。技術者たちは、オートマチックトランスミッションを搭載した内燃エンジン車の感覚を再現したのです。
電気自動車の体験は、古いアナログオシロスコープから新しいデジタルオシロスコープに移行するときの体験によく似ています。
デジタルオシロスコープとは何でしょうか?
デジタルオシロスコープは洗練された外観で、いくつかの高性能ADCを搭載しています。これは、基本的な2チャンネルまたは4チャンネルおよびトリガ入力を備えています。画面に表示される波形は、オシロスコープの高速メモリに取り込まれたデータを忠実に表現したものではありません。その代わり、有限のサンプリングデータを滑らかにつなぎ合わせたものです。オシロスコープの技術者が古いシステムの見た目と雰囲気を残したEV1のようなものです。
この説明は、オシロスコープのトリガにも当てはまります。トリガレベルを調整すると、私たちは滑らかで連続的な動きを経験しますが、それはそうではありません。その代わり、ポイント間の補間を行うコードによる裏技があります。
技術的なヒント: オシロスコープの中には、滑らかなカーブの中にサンプリングされたデータの位置を表示またはマーキングするオプションがあります。これは、デジタルオシロスコープが捉えたデータが有限であることを思い出させる便利な機能です。時間と振幅の両方でスライスされた離散的なサンプルを示しています。
PPS(Pulse Per Second)信号とは何でしょうか?
ADCをトリガする方法を検討する前に、PNT分野の主要な1つのデバイスを探ってみましょう。具体的には、IQD ICPT-1 ルビジウム発振器のような原子時計を調べてみましょう。ルビジウム発振器は、幅広いPNTクロック、発振器、そしてGPS(Global Positioning System)のような関連システムの代表的なデバイスです。
現在のルビジウム原子時計やセシウム原子時計は奇跡的な技術です。比較のために、安価な壁掛け時計を考えてみましょう。1ヶ月の間に数秒の誤差が生じるかもしれません。適切に調整されたルビジウム発振器によって駆動される同じ時計機構では、人間の一生の間に数分の1秒の誤差しか生じないかもしれません。
PPSはPNT機器に関連する高精度の出力信号です。PPSは10MHzなどの他の信号とともに、他のPNTクロックを校正するために使用されるのが一般的です。完璧な例は、GPSレシーバやGPSブレークアウト基板で、GPSレシーバのクロック、つまりPPSは、GPS衛星の原子時計によって「設定」されます。これらのGPS衛星の時計は、コロラド州のシュリーバー空軍基地にあるスペースデルタ8で常時モニタリングされています。GPS時計は、世界中の研究所で維持されているクロックアンサンブル(複数の高精度時計の組み合わせによる時刻校正)により 「セット」されます。GPS信号は、協定世界時(UTC:Coordinated Universal Time)を定義する世界の時計にリンクされていることを認識することが重要です。これには、NIST(アメリカ合衆国国立標準技術研究所)やUSNO(アメリカ合衆国海軍天文台)などの場所の時計が含まれます。NISTの5071Aセシウムビーム管発振器の例を図1に示します。これは、筆者がコロラド州ボルダーにあるNIST研究所を訪れた際に撮影した古い写真です。
図1: NISTのクロックアンサンブル(複数の高精度時計の組み合わせによる時刻校正)の1つとして動作する5071Aセシウムビーム管発振器の恒温槽
PPS(Pulse Per Second)はPNTデバイスの標準出力信号と考えられています。これには、前述のルビジウム原子時計や、全てではありませんが、大半のGPSレシーバが含まれます。また、多くのデバイスには1MHz、5MHz、および10MHzの基準信号が含まれており、その信号からPPS信号が生成されます。PPSは通常デジタルで生成され、高周波発振器信号にリンクされます。この信号は、後述する重要な信号です。
ここからは、1MHz、5MHz、あるいは10MHzの信号をまとめて単に10MHzと呼ぶことにします。また、便宜上、PPSと10MHzの両方の出力を持つPNTデバイスを指す場合は、ルビジウムという用語を使用します。最新のルビジウム発振器の写真を図2に示します。
図2: データシートにあるIQD ICPT-1ルビジウム発振器の写真
PPS信号の属性
PPS信号は矩形波です。他のデジタルロジック信号と同様に扱うことができます。3.3V DCのデバイスの場合、グランドに対して3.3V DCのロジックパルスが見込まれます。可変パルス幅にプログラムされているデバイスもあります。
PPS信号の立ち上がりエッジは、関連デバイスの10MHz内部発振器と同期しています。前述のように、PPSは高周波クロックによって駆動される分周回路によってデジタル的に生成さ れます。原則として、PPS信号は高性能デバイスの場合、±50ns以内またはそれよりも高い精度で同期されます。
歴史: 高精度時刻とナビゲーション(PNT)という用語は一見関係がないように見えるかもしれません。
しかし、1700年後半にハリソンのクロノメータが開発されて以来、高精度時刻はナビゲーションの不可欠な要素であるため、この関係はこれ以上ないほど重要です。コンピュータプログラミングの偉大な先駆者の一人による、距離と関連する時間の視覚化については、動画1をご覧ください。
動画1: Grace Hopper退役海軍少将(コンピュータプログラミングの先駆者)へのインタビュー。ナノ秒の視覚化についてはタイムインデックス4:20を参照してください。
PNT設定でのADCをトリガする方法
ADCとFPGAはデジタルデバイスです。これらのシステムのタイミングは、FPGAに供給されるクロックに基づいています。これには、クロック速度を上げるためのPLL(Phase Lock Loop)が含まれている場合と含まれていない場合があります。このPLLにより、PCB上の高周波外部配線の固有の問題に左右されることなく、半導体チップ内で高速クロックを得ることができます。
クロック性能はコストに直結していると言って差支えないでしょう。ADCやFPGAに付随するデフォルトの発振器(クロック)は便利ですが、一般的にPNTに適したものではありません。例えば、ルビジウム発振器それ自体は、ほとんどのFPGAデモボードよりも高価です。
しかし、そこがポイントであり、この記事をあなたが読んでいる理由なのです。あなたはADCとFPGAシステムをPPS信号に同期させる方法を探しているのですから。
PPSをFPGAファブリックに直接送る
FPGAがPPS信号を直接読み出すことは可能です。つまり、PPSは3.3 VDCのロジック信号にレベルシフトされるか、またはレベルシフトされる可能性があります。多くのアプリケーションではこれで十分かもしれません。しかし、問題があります。
例えば、GPSが生成するPPSとFPGAを表す2つのデジタル時計があったとしましょう。一方の時計は、もう一方の時計よりもわずかに速く進むようにします。この思考実験を始めるにあたり、時計は互いに合わせてせておくようにします。その後、時計#1に合わせるように時計#2を校正する必要があります。時計#2の時間を止めることができるのであれば、これはそれほど難しいことではありません。例えば、時計#2が15分に切り替わったところで、停止ボタンを押します。時計#1が15分になれば(立ち上がりエッジイベント)、すぐに時計#2の停止ボタンを解除します。理論的には、両方のクロックが同じ時刻にセットされます。
この思考実験における問題は、FPGAベースの時計#2のサンプリング特性です。「時計#1が切り替わるとすぐに」という文言は、時計#2の時刻の刻み(サンプリング特性)によって複雑になります。時計#2が適切なクロック境界保護(clock boundary protection)が施されたサンプリングシステムであると仮定すると、この文言は「時計#1が切り替わると時計#2の次の立ち上がりエッジですぐに」となります。
別の言い方をすれば、FPGAによるPPS時間ゼロの解釈には常に不確実性が伴うことです。100MHzで動作するFPGAでは、不確実性は10nsの周期で制限さ れます。サンプリングシステムでは、PPSトリガは、クロックが相対的に時間でスライドするため、10nsの時間的差異が生じます。また、ロジック閾値電圧の不確実性に起因する小さな問題もあります。論理0と論理1を区別する正確な電圧レベルは、デバイスや温度によって異なる可能性があります。しかし、特にPPSケーブルの長さ(1フィートあたり約1nsの遅延)などのキャリブレーションを考慮すると、その影響はわずかです。
ルビジウム高周波信号をADCサンプリングクロックとして使用
ルビジウムソースからの10MHz信号を直接使用することは、アプリケーションによっては可能です。例えば、ADCのサンプリングクロックを10MHzの信号で駆動することができます。ナイキスト定理に基づき、ADCのフロントエンドローパスフィルタを設けて、5MHz以上の信号をすべて除去します。FPGAの内部では、クロックシンクロナイザを使って、10MHzサンプリングをより高速のFPGAクロックドメインにクロスさせる(クロックドメイン間の同期を取る)ことができます。
この手法の問題点は、先に述べたPPSクロックの不確実性です。ADCは正確に動作しますが、PPSのタイミングをFPGAのクロック周期以下にすることはできません。
自走のADCクロックを使用し、ルビジウムの高周波発振器をサンプリングし、PPSトリガを使用する
PPSは、ルビジウムの高周波発振器によって駆動されるデジタルカウンタから得られることを思い出してください。PPSの立ち上がりエッジと10MHzクロック信号の間には、固定のTOC(Time Of Coincidence)関係があるのは当然です。ルビジウムとFPGAを同期させるために、この固定のTOC関係を使うことができます。
これがオシロスコープでどのように観測されるかを考えてみましょう。オシロスコープをPPSでトリガさせます。10MHzの信号は静止しているように見え(TOCイベント)、連続する数秒間でのジッタはほとんどありません。例えるなら、PPS信号を分針、10MHz信号を秒針に見立てた壁掛け時計のようなものです。この場合を除き、精密な時間測定は、ナノ秒、あるいはピコ秒の範囲にまで及ぶ可能性があります。
ここでPPSがFPGAをトリガするようにします。また、ADCチャンネルの1つを使用して10MHz信号をサンプリングします。コース(大まか)とファイン( 微細)の手法により、FPGAはPPSを認識するようになります。FPGAは、10MHz信号の次の正のゼロクロスを基に実際の正確な時間測定を行うため、PPS信号は「準備完了」信号として機能します。
驚くべきことに、PPSと10MHzの接続ケーブルの相対的な長さを変えることでTOCの関係を変えることができます(1フィートあたり約1ns)。このテクニックを使用すると、10MHz TOCをPPSから十分な時間距離だけ後ろに配置できます。ちなみに、将来、技術者がケーブルを短くして機器ラックを片付けないようにしてください。
補正なしでは、タイミングは依然としてFPGAとADCの自走クロックに左右されます。
この問題を解消する1つの方法は、10MHz信号のサンプルを補間することです。このテクニックは図3に示されています。まず、ゼロクロスのすぐ上とすぐ下のサンプルを選択します。次に、ゼロクロスのタイミングを特定(補間)するために、類似の三角形を使った計算を行います。この方法により、コース(大まかな)PPSトリガよりもはるかに高い分解能で推定値を得ることができます。測定は、接続ケーブルの長さを含めて校正されなければなりません。
プロセスには多くのステップがあります。アルゴリズムをもう一度説明します。
-
コースタイム(大まかな時間)の基準点を確立するためにPPS 信号を待ちます。
-
ゼロクロスの1つすぐ上と1つすぐ下のデータポイントを含め、次の10MHzのゼロクロスに関連するデータポイントをキャプチャします。これにより、正確な時間基準点が形成されます。
-
相似三角形に関連する代数を使用して、時間ゼロをサンプル時間の割合として計算します。
-
必要であれば、ADC のサンプリングクロックの正確な周波数を計算することによって、このテクニックを改良します。これは、1秒間に完了する ADCクロック(サンプル)の数をカウントする周波数カウンタを実装することによって行うことができます。
-
共通のサンプリングクロックを持つ複数のADCを使用して、オシロスコープのような複数のチャンネルのタイミングを決定します。データはFPGAバッファに保存され、そのバッファはPPS TOCの正確なタイミングでデータの格納を始めます。TOC でキャプチャされるインデックスとともにリングバッファを使用することもできます。
-
ADCのサンプリング周波数の精密な計算を使用して、すべてのサンプルを固定 (事実上タイムスタンプ)します。言い換えると、発生したサンプル数をカウントし、相似三角形を使って計算した小数部分を加えることで、経過時間を確定することができます。
-
必要に応じて調整し、この非常に複雑でエネルギー集約的なアプリケーションの複雑さとコストを抑えます。処理を行うのに十分な速度(ナイキスト周波数)でサンプリングし、必要なデータだけを保存します。可能であればサンプラを停止します。コストを削減し、エネルギーを節約するために、ハードウェアソリューションを検討することもできます。プロジェクトのタイミング要件が許せば、ソリッドステートスイッチやリレーなどのハードウェアを使用して、必要なADCの総数を最小限に抑えることができます。要するに、可能な限り最適化します。
図3: 正のゼロクロスの正確な時間を見つけるための補間
FPGA駆動のダイレクトデジタルシンセサイザ(DDS:Direct Digital Synthesizer)を操作する
まず、FPGA と高度なマイクロコントローラは、高ビット レートのダイレクトデジタルシンセサイザ(DDS)を実装できることを述べておきます。適切な制御アルゴリズム(ステアリング)により、FPGAは、外部ソースにフェーズロックされた内部的な時間計測を行うことができます。
2つの壁掛け時計の同期の例えに戻ると、時計#2は時計#1に追従するように自己修正することができます。定期的な時間調整の代わりに、連続的な調整を行うことができます。これは、時計#2が、時計#1に異常が発生した場合に、それを判断する能力をある程度限定的に持つという点で有利です。
ダイレクトデジタルシンセシスとは何でしょうか?
DDSは、正弦波を生成するために使用されるデジタル技術です。通常、モジュロN加算器(位相アキュムレータ)と、サンプリングされた正弦波を表すNビットの値を含む大規模なルックアップテーブル(LUT)で構成さ れます。その後、デジタルアナログコンバータ(DAC)を使用して、DDSから読み出される物理的な正弦波信号を生成します。高性能なFPGAベースのDDSには、32ビットの位相アキュムレータと16ビットのLUTがあります。32ビットの位相アキュムレータにより周波数の微調整が容易になり 、16ビットのLUT (符号付き)によって正弦波または任意の波形が忠実に再現されます。
DDSは、できれば再生される信号の少なくとも10倍の周波数を持つ高周波発振器によって駆動することが望ましいです。この発振器の立ち上がりエッジごとに、DDSの位相アキュムレータはユーザーが設定する位相増加数(PIN:Phase Increment Number)をアキュムレータ自身に累積加算します。その結果、得られる数値はLUTから所定の数値を読み出すためのインデックスとして使用されます。
技術的なヒント: メモリを節約するため、DDS LUTには正弦波を表す第1象限データのみを格納します。
単純なFPGAベースのルーチンは、位相アキュムレータに保持されている数値に基づいて適切な正弦波の象限を決定します。LUTへのインデックスは必要に応じて調整されます。また、完全な4 象限の正弦波形を生成するために、必要に応じてLUT値を上下、左右に反転します。
DDSを完全に理解するためには、三角法を復習し、壁掛け時計の数学を使う必要があります。手始めに、正弦波を壁掛け時計の秒針で定義してみましょう。秒針が0の時、正弦波の振幅は0、秒針が90度(15秒後)の振幅は+1、秒針が180度(30秒後)の振幅は0、秒針が270度(45秒後)の振幅は-1です。この例えのポイントは、正弦波が時計の秒針の位置の関数であることを認識することです。
秒針に関連する歯車を変えたらどうなるか考えてみましょう。私たちの秒針の概念は、時計が1秒ごとに時を刻むのと同じです。この刻みは、DDSを駆動する発振器を表しています。もし歯車が秒針の動きを2倍速くすれば、2Hzの信号を生成するDDSになります。同様に、歯車を5倍速くすると、クロックは200ms周期の正弦波を生成します。
この壁掛け時計の例えでは、歯車は位相アキュムレータとPINのようなものです。秒針の位置はLUTのようなものです。PINを変えると正弦波の周波数が変わります。PINが高いほど、DDSの周波数も高くなります。
DDSの安定性
DDSの安定性は、その駆動発振器の安定性に左右されます。その感度を実感するために、図4を見てください。これは、熱安定性を向上させるためにFPGAとADCを箱の中に設置した写真です。動作時、この箱は閉じられ、毛布に包まれています。システムの熱質量を増加させ、クロックの変化速度を緩やかにするために、多くの水のボトルが箱の中に入っていることに注目してください。今にして思えば、オーブン制御水晶発振器(OCXO:Oven Controlled Crystal Oscillator)をこのプロジェクトに追加してもよかったかもしれません。
ナノ秒レベルの測定を扱う場合、こうした極端な対策が必要になることがあります。私の記憶では、ゆっくりと息を吹きかけたり、指で触れたりすると、別のクロックと比較して標準のFPGA 発振器がナノ秒レベルでずれます。通常、このようなことに気付くことはありませんが、PNTの世界ではそうではありません。また、熱安定性に関して、図1のセシウム5071A発振器も恒温槽内に設置されていることに注目してください。
図4: 著者が使用したFPGAベースのDDSとサンプラは、熱質量を増加させるために複数の水のボトルの入った箱に収められています。
おわりに
これはシンプルに見える質問に答えるための長い記事です。場合によっては、PPSをFPGAのマイクロコントローラに直接接続するだけで済むこともあります。これは簡単で安価なソリューションであり、良い結果をもたらすでしょう。しかし、ナノ秒に近づき、ピコ秒の測定に達すると、コストと複雑さが急速に上昇します。
この複雑なトピックにはまだまだ多くのことがあります。しかし、FPGAというレンズを通してPNTを紹介することで、重要な国家のタイミングインフラの中心部を明らかにしてくれることを願っています。
ご健闘をお祈りします。
APDahlen
著者について
Aaron Dahlen 氏、LCDR USCG(退役)は、DigiKeyでアプリケーションエンジニアを務めています。彼は、技術者およびエンジニアとしての27年間の軍役を通じて構築されたユニークなエレクトロニクスおよびオートメーションのベースを持っており、これは12年間教壇に立ったことよってさらに強化されました(経験と知識の融合)。ミネソタ州立大学Mankato校でMSEEの学位を取得したDahlen氏は、ABET認定EEプログラムで教鞭をとり、EETプログラムのプログラムコーディネーターを務め、軍の電子技術者にコンポーネントレベルの修理を教えてきました。彼はミネソタ州北部の自宅に戻り、このような記事のリサーチや執筆を楽しんでいます。 LinkedIn | Aaron Dahlen - Application Engineer - DigiKey