GPS に同期して USRP で受信する ~ niUSRP EX Rx with GPS.vi (USRP のサンプルを紐解く (19))

 こんにちは、ドルフィンシステムの笹生です。

今回で 19回目の USRP のサンプルについての紹介となります。

今回紹介するサンプルはタイトルの「GPS に同期して USRP で受信するサンプル」です。このサンプルは GPS アンテナ入力のある USRP デバイスであれば使用可能です。

本サンプルを動作させるためには

GPS アンテナ入力のある USRP デバイス

・GPS アンテナ(アクティブアンテナ)

が必要です。

それでは「niUSRP EX Rx with GPS.vi 」を見ていきましょう。

サンプルプログラムの開き方につきましては第一回のブログを参照してください。

以前よりお伝えしましたが、USRP の古い型番の物はそろそろ販売中止になるものも出てくるそうですのでご注意ください。また 8月の価格改定で価格が上昇する可能性もございますので合わせてご注意ください。

niUSRP EX Rx with GPS.vi

サンプルのフォルダを開くと以下のようにずらずらっと並んでおります


名前順にソートされて19番目のサンプルが「niUSRP EX Rx with GPS.vi 」です。

このサンプルは GPS のタイミングに同期して USRP で信号を受信するサンプルになります。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

GPS 対応の USRP

GPS 同期モジュールである GPSDO を最初から搭載している USRP の型番は以下の通りです。

●Ettus N シリーズ

USRP N320

USRP N321

USRP N300

USRP N310


●Ettus X シリーズ

USRP X410


●Ettus E シリーズ

USRP E320

USRP E312

USRP E310

USRP E313


●NI USRPシリーズ

USRP-2930

USRP-2932

USRP-2952

USRP-2953

USRP-2954

USRP-2955

Ettus の USRP Nシリーズ、Xシリーズ、Bシリーズの一部でもオプションで後から GPSDO を購入して GPS に対応させることは可能です。


GPS アンテナ

https://www.ettus.com/product-categories/antennas/

GPS アンテナとしては、Ettus から上記にある 2種類が提供されています。

電圧が 3V と 5V があり、対応できる機器が異なるので注意してください。

ーーーーーーーーーーーーーーーーーーーーーーーーット

それではフロントパネルを見てみましょう。

下のような GUI を確認できます。


フロントパネルとしては大きく分けて、左側が設定関連、右側が受信信号のグラフ表示になります。

名称デフォルト設定値について
Device Names192.168.10.2USRP のデバイス名を入力します。
Ethernet で接続している時はIP で設定します。
USRP-RIO のように PCIe (MXI) ケーブルで
接続しているときは NI MAX で認識している
デバイス名を入力します。
Reference Frequency SourceGPSリファレンス周波数のソースを指定しています。
ここでは GPSを指定します。
Timebase Clock SourceGPSタイムベースクロックのソースを指定しています。
ここでは GPSを指定します。
Active AntennaRX1アンテナと書いてありますが、受信するポート
の名称を文字列で指定します。USRP のハード
によって多少ことなりますが、TX/RX 、RX1
などを設定します。
Enabled Channel0有効にしたい ch 番号を指定します。
IQ Rate10Mいわゆるサンプリングレートです。設定可能な
範囲は USRP のハードによります
Carrier Frequency98Mキャリア周波数を設定します。
設定可能な範囲は USRP のハードによります。
Gain0設定したいゲインを入力します。
Total Number of Samples5000000ここで指定したサンプル数受信したらプログラムを終了します。
Number of Samples Per Fetch163841フェッチあたり受信するサンプル数を指定します。
Sattellite Fix Timeout600GPS のフィックス(同期の確立)まで待機している時間を
秒で指定します。この時間までにフィックスしないとタイム
アウトします。


名称デフォルト設定値について
Timestamp-GPS が正しくフィックスした時にGPS の時刻を表示します。
Coerced IQ Rate実行時に設定された IQレートが表示されます。
Coerced Carrier Frequency実行時に設定されたキャリア周波数が表示されます。
Coerced Gain実行時に設定されたゲインが表示されます。


Error out

エラーが発生したときに表示されます。


ベースバンドパワースペクトラムのグラフに受信結果が表示されます。


ブロックダイアグラムはこのような感じです。

左から①初期化設定→②受信→③終了という流れです。





初期化設定の部分

初期化設定の部分では 大きく8つの処理をしています。

①デバイスオープン
チャネルの有効化・リファレンスソース設定
IQレート、RF設定
④GPSフィックス待機
⑤トータルでのサンプル数設定
⑥同期試行回数の設定
⑦受信開始


①USRPデバイスのオープン




"niUSRP Open Rx Session.vi" でデバイスの受信側 Rx を開きます。まずはこの関数を呼ばないことには始まりません。必須です。

名称デフォルト設定値について
device Names
2台の USRP の IP アドレスを入力します。
Ethernet で接続している時はIP で設定します。
ここでは 2つのイーサネットポートを[;] の文字列で
結合して渡しています。

Device Name への設定の仕方としてマスターを先に設定します。

開くことが出来たら、セッションハンドルを出力しますのでこの後の設定などはそのセッションハンドルを基に行います。


②チャネルの有効化・リファレンスソース設定


この部分は USRP のプロパティノードを使用しています。

使いたい チャネルの有効化をするプロパティと、リファレンスソース(タイムベースクロックとリファレンス周波数)の設定をしています。

いずれも GPS をフロントパネルから指定します。


IQレート、RF設定


IQ レート、キャリア周波数、ゲイン、アクティブアンテナの設定をします。

④ GPSフィックス待機


GPS が正しくフィックスされるまで(同期が確立されるまで)待機する部分です。

コメントにあるように初回は 10分以上かかることもあります。

デフォルトは 600秒(=10分)ですが、私の経験則では 900秒(=15分)はかかる気がします。


⑤トータルでのサンプル数設定



このサンプルでは、指定した数までの受信を行うので、

number of samples is finite を T にして、トータルのサンプル数を指定しています。


同期試行回数の設定

このサブVIは、USRP サンプルフォルダにある VI "niUSRP EX Synchronize Clocks Multi-Device (PPS).vi"を使っています。

このサブVI は複数台の同期に使うのもので、PPS以外にも 内蔵GPS の PPSで同期させるときにも使用できるようです。

今回は内蔵GPS の PPSを使用し、マスターの繰り返しアルゴリズムを使っているようで、デフォルト20回繰り返し同期を試すようです。

このサブ VI はまた別途時間がある際に詳しく解析したいと思います。

⑦ 受信開始



受信が開始され、指定されたタイミングで取得した RF 信号が IQ データにダウンコンバートされてバッファに蓄えられていきますので、後段の②受信表示の部分でデータを PC に吸いあげます。

②受信の部分

②受信の部分では、USRP でRF 信号が IQ データにダウンコンバートされてバッファに蓄えられていきますので、データを PC に吸いあげる(フェッチする)ことが主な処理です。また取得データをグラフに表示する処理も行っています。




本サンプルの受信の処理ループは While ループで指定したトータルサンプル分受信したら終了する構造にしています。


① While Loop 

 外側の四角い枠が While Loop です。トータルサンプル分受信するか、エラーが発生したらループを停止する条件で実装されています。

② 受信データのフェッチ 



この関数で USRP からIQ データをフェッチしてグラフ表示のほうに渡しています。この関数では 2D CDB という形式にしており、マルチチャネルに対応してデータを取得しています。

CDB は Complex Double なので倍精度複素数のデータですので 2次元の複素数配列が取得されます。

受信するサンプル数分データをフェッチします。

関数の下部にある選択できるリストから出力するデータフォーマットを変更することができます。もちろん変更した場合はそのあとの処理も対応する必要があります。

③グラフ表示



フェッチした 2D の複素である IQ データを、IQ グラフと、スペクトラムに変換しグラフに表示しています。

④タイムスタンプの表示

フェッチ関数から出力される時刻情報は以下の様に全体の経過秒と小数以下の秒が出力されます。それを現在時刻の表示に変換して表示しています。





③終了処理

最期は終了処理で、USRP を停止してUSRP デバイスを閉じます。


①USRP を停止


受信側でイニシエートしているので、受信側では USRP を停止します。

② USRP デバイスを閉じる


USRP のセッションを閉じて終了です。

実行してみる

今回使用する USRP は NI USRP 2954Rを使用します。

背面の GPS ANT に 5V の GPS アンテナを接続します。



アンテナは室内では衛星を補足できないので、窓から少しだします。

今回は USRP-2954を使用しているので、IP の代わりにデバイス名を Device Names に設定して実行します。


実行されると、Timestamp が現在時刻を表示し、スペクトラム無事に表示されました。

まとめ

このサンプルは GPS を使用してUSRP を GPS に同期させて受信させる簡易なサンプルだと思います。

このサンプルの難易度は中級者向け()としたいと思います。

0 件のコメント :

コメントを投稿