こんにちは、ドルフィンシステムの笹生です。
今回で 11回目の USRP のサンプルについての紹介となります。
今回のサンプルは 「USRP で1回だけ受信するサンプル~ niUSRP EX One Shot Rx.vi」を紹介したいと思います。第一回で紹介している「niUSRP EX Rx Continuous Asyc.vi」も単純でしたけど、こちらはさらに単純なサンプルになります。
(単純すぎて応用の出番がないような気がしますが、、、)
サンプルプログラムの開き方は第一回のブログを参照してください。
niUSRP EX One Shot Rx.vi
名前順にソートされて6番目のサンプルが「niUSRP EX One Shot Rx.vi」です。
このサンプルは 1台の USRPデバイス、1受信ポートで単純に一回だけ受信を行うサンプルとなります。
それではフロントパネルを見てみましょう。
左側の設定項目・表示項目については以下のような意味です。
初期化の部分
初期化の部分では 大きく4つの処理をしています。左から
①USRPデバイスのオープン
Device Name への設定の仕方は USRP のデバイスの種類によって異なります。
Ethernet で接続するタイプの USRP では USRP に設定してある IP アドレスを設定します。PCIe ケーブル接続の USRP では、NI MAX で認識しているデバイス名を設定します。
開くことが出来たら、セッションハンドルを出力しますのでこの後の設定などはそのセッションハンドルを基に行います。
②チャネルの有効化
この部分は USRP のプロパティノードを使用しています。
使いたい チャネルの有効化をするプロパティです。
文字列で与えます。通常は 0 です。USRP の種類によって 2ch 使えるものは 1 も設定できます。
③各種 RF 設定
受信の RF 設定のメインとなる関数です。
設定後、この関数で受信開始を USRP に指示します。
受信が開始され、RF 信号が IQ データにダウンコンバートされてバッファに蓄えられていきますので、②データ受信の部分でデータを PC に吸いあげます。
②データ受信の部分
②データ受信の部分では、USRP でRF 信号が IQ データにダウンコンバートされてバッファに蓄えられていきますので、データを PC に吸いあげる(フェッチする)ことが主な処理です。
このサンプルでは 2回フェッチをしており、最初のフェッチでは受信データを未使用(破棄)し、2回目のデータをグラフ表示させています。
4a, 4b とコメントされていまして、
「4a. Retrieve / discard transient due to tuning.
4b. Retrieve I/Q array.」
最初のフェッチではチューニングの間のデータを一時的に破棄しているようです。不安定なデータになるからのようです。
サンプルを参考に受信信号に信号処理させるときはこの関数の出力を使うことになります。
4a での Number of Samples は
Transient Duration [sec] * IQ sample Rate [S/sec] の結果が入力され、
4b での Number of Samples は
Acq Duration [sec] * IQ sample Rate [S/sec]( = Frame size )の結果が入力されます。
出力データは、CDB WDT という形式です。
CDB は Complex Double なので倍精度複素数のデータです。
WDT は Waveform Data Type の略で、配列に時間データが付与された波形データの形式を表しています。
関数の下部にある選択できるリストから出力するデータフォーマットを変更することができます。もちろん変更した場合はそのあとの処理も対応する必要があります。
③グラフ表示
4b で2回目に フェッチした IQ データをスペクトラム、IQ 時間軸で表示しています。
③終了処理
①USRP を停止
受信側でイニシエートしているので、受信側では USRP を停止します。
② USRP デバイスを閉じる
USRP のセッションを閉じて終了です。
実行してみる
使用する USRP は USRP 2954 で実行してみます。
Device Name に NI MAX で取得した名称を指定して実行します。
実行すると、右側上のグラフには受信した IQ グラフ、右下にはスペクトラムが表示されます。
0 件のコメント :
コメントを投稿