こんにちは、ドルフィンシステムの笹生です。
今回で 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受信ポートで単純に一回だけ受信を行うサンプルとなります。
それではフロントパネルを見てみましょう。
左側の設定項目・表示項目については以下のような意味です。
左側の設定・表示項目
名称 | デフォルト | 設定値について |
Device Name | 192.168.10.2 | USRP のデバイス名を入力します。 Ethernet で接続している時はIP で設定します。 USRP-RIO のように PCIe (MXI) ケーブルで 接続しているときは NI MAX で認識しているデバイス名 を入力します。 |
IQ Sampling Rate[S/sec] | 200k | いわゆるサンプリングレートです。設定可能な 範囲は USRP のハードウェアによります |
Carrier Frequency[Hz] | 90.5M | いわゆるキャリア周波数(センター周波数)です。 設定可能な範囲は USRP のハードウェアによります。 |
Gain[dB] | 20 | ゲインを設定します。 設定範囲はUSRP のハードウェアによります。 |
Active Antenna | RX1 | アンテナと書いてありますが、受信するポートの名称を文字列で 指定します。USRP のハードウェアによって多少ことなりますが、 TX/RX 、RX1 などを設定します。 |
Transient Duration [sec] | 20.00m | 最初捨てる一時的な受信時間を設定します。 |
Acq Duration [sec] | 50.00m | 実際に受信するデータの時間を設定します。 |
IQ Sampling Rate[S/sec] (actual) | | 実行したときに実際に設定された IQレートが表示されます。 |
Carrier Frequency[Hz] (actual) | | 実行したときに実際に設定されたキャリア周波数が表示されます。 |
Gain[dB] (actual) | | 実行したときに実際に設定されたゲインが表示されます。 |
Frame size [samles] | | 受信したデータのフレームサイズ(サンプル数)が表示されます。 |
error out | | エラーがある場合にはここに表示されます。 |
右側にはグラフ表示があり、上段は受信した時間の IQ 時間波形が表示されます。下段は受信信号のマグニチュード(電力)の周波数スペクトラムが表示されます。
ブロックダイアグラムはこのような感じです。
まずは一番左から受信側の初期化→データ受信→終了という流れです。
初期化の部分
初期化の部分では 大きく4つの処理をしています。
左から
①USRPデバイスのオープン
"niUSRP Open Rx Session.vi" でデバイスの受信側 Rx を開きます。まずはこの関数を呼ばないことには始まりません。必須です。
名称 | デフォルト | 設定値について |
Device Name | 192.168.10.2 | USRP のデバイス名を入力します。 Ethernet で接続している時はIP で設定します。 USRP-RIO のように PCIe (MXI) ケーブルで 接続しているときは NI MAX で認識しているデバイス名 を入力します。 |
Device Name への設定の仕方は USRP のデバイスの種類によって異なります。
Ethernet で接続するタイプの USRP では USRP に設定してある IP アドレスを設定します。PCIe ケーブル接続の USRP では、NI MAX で認識しているデバイス名を設定します。
開くことが出来たら、セッションハンドルを出力しますのでこの後の設定などはそのセッションハンドルを基に行います。
②チャネルの有効化
この部分は USRP のプロパティノードを使用しています。
使いたい チャネルの有効化をするプロパティです。
名称 | デフォルト | 設定値について |
Enabled Channel | 0 | これも USRP のハードウェアによって 複数チャネルに 対応していることもあります。0, 1 などを設定します。 |
文字列で与えます。通常は 0 です。USRP の種類によって 2ch 使えるものは 1 も設定できます。
③各種 RF 設定
受信の RF 設定のメインとなる関数です。
名称 | デフォルト | 設定値について |
IQ sampling Rate[S/sec] | 200k | いわゆるサンプリングレートです。設定可能な 範囲は USRP のハードウェアによります |
Carrier Frequency [Hz] | 90.5M | いわゆるキャリア周波数(センター周波数)です。 設定可能な範囲は USRP のハードウェアによります。 |
Gain [dB] | 20 | ゲインを設定します。 設定範囲はUSRP のハードウェアによります。 |
Active Antenna | RX1 | アンテナと書いてありますが、受信するポートの名称を文字列で 指定します。USRP のハードウェアによって多少ことなりますが、 TX/RX 、RX1 などを設定します。 |
IQ sampling Rate[S/sec] (actual) | | 実行したときに実際に設定された IQレートが表示されます。 |
Carrier Frequency[Hz] (actual) | | 実行したときに実際に設定されたキャリア周波数が表示されます。 |
Gain [dB] (actual) | | 実行したときに実際に設定された ゲインが表示されます。 |
④ 受信開始
設定後、この関数で受信開始を USRP に指示します。
受信が開始され、RF 信号が IQ データにダウンコンバートされてバッファに蓄えられていきますので、②データ受信の部分でデータを PC に吸いあげます。
②データ受信の部分
②データ受信の部分では、USRP でRF 信号が IQ データにダウンコンバートされてバッファに蓄えられていきますので、データを PC に吸いあげる(フェッチする)ことが主な処理です。
このサンプルでは 2回フェッチをしており、最初のフェッチでは受信データを未使用(破棄)し、2回目のデータをグラフ表示させています。
4a, 4b とコメントされていまして、
「4a. Retrieve / discard transient due to tuning.
4b. Retrieve I/Q array.」
最初のフェッチではチューニングの間のデータを一時的に破棄しているようです。不安定なデータになるからのようです。
データの受信はこの関数で USRP から Number of Sample で指定した数の IQ データをフェッチしてグラフ表示のほうに渡しています。
サンプルを参考に受信信号に信号処理させるときはこの関数の出力を使うことになります。
名称 | デフォルト | 設定値について |
Number of Samples | 16384 | USRP から取得する1回あたりのサンプル数を指定します。 |
Timeout | 10s | タイムアウトとして指定する秒数を指定します。 |
Actual Rx Timestamp | | 実行して受信をしたタイミングでのタイムスタンプを表示します。 |
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 のセッションを閉じて終了です。
実行してみる
使用する USRP は USRP 2954 で実行してみます。
Device Name に NI MAX で取得した名称を指定して実行します。
実行すると、右側上のグラフには受信した IQ グラフ、右下にはスペクトラムが表示されます。
まとめ
一番単純な受信サンプルではないでしょうか。
単純すぎて応用できないかな。。。とも思いましたが、1回目の受信データはチューニングの期間を含むので捨ててしまうなど、実際には有用な処理も実装されていました。
(そうであれば繰り返しのサンプルでも最初は捨てるべきなのではとも思いますが、、、)
このサンプルの難易度は初級者向け(★☆☆)としたいと思います。
0 件のコメント :
コメントを投稿