こんにちは、ドルフィンシステムの笹生です。
今回で 20回目の USRP のサンプルについての紹介となります。
今回紹介するサンプルはタイトルの「USRP で受信した信号をスペクトログラムのように表示するサンプル」です。
それでは「niUSRP EX Spectral Monitoring (History).vi 」を見ていきましょう。
サンプルプログラムの開き方につきましては第一回のブログを参照してください。
※以前よりお伝えしましおりますが、USRP の古い型番の物はそろそろ販売中止になるものも出てくるそうですのでご注意ください。
niUSRP EX Spectral Monitoring (History).vi
名前順にソートされて20番目のサンプルが「niUSRP EX Spectral Monitoring (History).vi 」です。
ト
それではフロントパネルを見てみましょう。下のような GUI を確認できます。
フロントパネルとしては大きく分けて、左側が設定関連、右側が受信信号のグラフ表示になります。
Error out
エラーが発生したときに表示されます。
ベースバンドパワースペクトラムのグラフに受信結果(現在の)が表示されます。
初期化設定の部分
初期化設定の部分では 大きく8つの処理をしています。①USRPデバイスのオープン
Device Name への設定の仕方としてマスターを先に設定します。
開くことが出来たら、セッションハンドルを出力しますのでこの後の設定などはそのセッションハンドルを基に行います。
②チャネルの有効化
この部分は USRP のプロパティノードを使用しています。
⑤ 受信開始
受信が開始され、指定されたタイミングで取得した RF 信号が IQ データにダウンコンバートされてバッファに蓄えられていきます。
⑥最初のフレームを取得
このサンプルではパイプラインを開始するにあたり最初のフレームを取得しておくようです。目的は恐らく表示に時間がかかるので、次の受信ループの際にエラーしないようにするためだと考えられます。(あまり良いやり方とは思えませんが、、、)
②受信の部分
②受信の部分では、USRP でRF 信号が IQ データにダウンコンバートされてバッファに蓄えられていきますので、データを PC に吸いあげる(フェッチする)ことが主な処理です。また取得データをグラフに表示する処理も行っています。
本サンプルの受信の処理ループは While ループです。エラーした場合かユーザーが STOP ボタンを押したときに終了する構造になっています。
① While Loop
外側の四角い枠が While Loop です。ユーザーが STOP ボタンを押したときか、エラーが発生したらループを停止する条件で実装されています。
② 受信開始とフェッチ
毎回イニシエートしてからフェッチの関数で USRP からIQ データをフェッチしています。多くのサンプルでは個のフェッチのあと直接グラフにデータを渡すことが多いですが、このサンプルではグラフ表示のほうにはシフトレジスタで前回のデータを渡しています。この関数では CDB WDT という形式にしています。
CDB WDT は Complex Double の倍精度複素数のデータと時間情報がついた波形データが取得されます。
関数の下部にある選択できるリストから出力するデータフォーマットを変更することができます。もちろん変更した場合はそのあとの処理も対応する必要があります。
③グラフ表示
フェッチした 2D の複素である IQ データをスペクトラムに変換し通常のグラフにと強度チャート(Intensity Chart) に表示しています。
この強度チャートにヒストリカルなデータが表示されるサンプルです。
③終了処理
実行してみる
実行されると、受信が開始され、右側のスペクトラムへの表示と、強度チャートへの表示がされました。
0 件のコメント :
コメントを投稿