こんにちはドルフィンシステムの笹生です。
今回は USRP の LO 周波数を高精度に設定するサンプル niUSRP EX Fine-Tune LO Frequency.vi」の紹介です。
サンプルプログラムの開き方は第一回のブログを参照してください。
niUSRP EX Fine-Tune LO Frequency.vi
サンプルのフォルダを開くと以下のようにずらずらっと並んでおります
名前順にソートされて4番目のサンプルが「niUSRP EX Fine-Tune LO Frequency.vi」です。
このサンプルではファイル名からの推測では、LO 周波数を高精度に設定する(チューンする)ような印象を受けますが、ブロックダイアグラムを見ると LO のチューニングというよりも、実際に設定された LO の周波数を取得して、そこから信号の受信するキャリア周波数を正確に設定するサンプルだと理解しました。
これでは何を言っているかよくわからないと思いますが、受信したい信号の中心周波数の設定と LO の設定値がずれていても正確な周波数で受信できますというサンプルなんだと思います。
まずはフロントパネルを見てみます。
中央の表示器(実際の設定値等)は以下のような意味です。
右側のグラフにはスイープした時のキャリア周波数に対しての電力スペクトラムが並べて表示されます。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
ブロックダイアグラムはこのような感じです。
横に長いので2つに分割してます。
まずは左側
ここで使用している USRP の関数は左から、[niUSRP Open Rx Session.vi]、[プロパティーノードでの各種設定取得]、[niUSRP Initiate.vi]、[niUSRP Fetch Rx Data (poly).vi]、[niUSRP Abort]、[niUSRP Close Session]です。
①初期化の部分
初期化の部分では 大きく4つの処理をしています。
左から
①USRPデバイスのオープン
"niUSRP Open Rx Session.vi" でデバイスの受信側 Rx を開きます。まずはこの関数を呼ばないことには始まりません。必須です。
Device Name への設定の仕方は USRP のデバイスの種類によって異なります。
Ethernet で接続するタイプの USRP では USRP に設定してある IP アドレスを設定します。PCIe ケーブル接続の USRP では、NI MAX で認識しているデバイス名を設定します。
開くことが出来たら、セッションハンドルを出力しますのでこの後の設定などはそのセッションハンドルを基に行います。
②チャネルの有効化
この部分は USRP のプロパティノードを使用しています。
使いたい チャネルの有効化をするプロパティです。
文字列で与えます。通常は 0 です。USRP の種類によって 2ch 使えるものは 1 も設定できます。
③各種 RF 設定と設定値取得
受信の RF 設定のメインとなる関数です。
設定後、この関数で受信を初期化します。
②処理ループの部分
本サンプルの処理ループは For ループでスイープ分のステップを実行します。
構造としては以下の様になっています。
① For Loop
四角い枠が For Loop です。指定回数ループするか、Stop ボタンを押されるか、エラーが発生したらループを停止しする条件で実装されています。
②
③ 受信データのフェッチ
この関数で USRP から [Samples / Frame] で指定した数の IQ データをフェッチしてグラフ表示のほうに渡しています。サンプルを参考に受信信号に信号処理させるときはこの関数の出力を使うことになります。
CDB は Complex Double なので倍精度複素数のデータです。
WDT は Waveform Data Type の略で、配列に時間データが付与された波形データの形式を表しています。
関数の下部にある選択できるリストから出力するデータフォーマットを変更することができます。もちろん変更した場合はそのあとの処理も対応する必要があります。
③グラフ表示
フェッチした IQ データをスペクトラムに変換しグラフに表示しています。
スペクトラムは For ループのシフトレジスタに接続されていて、グラフに追加されていくように実装しています。
③終了処理
最期は終了処理で、USRP を停止してUSRP デバイスを閉じます。①USRP を停止
USRP を停止します。
② USRP デバイスを閉じる
USRP のセッションを閉じて終了です。
実行してみる
使用する USRP は USRP 2922 + SBXボード で実行してみます。
Device Name に IP を指定して実行します。
実行すると、希望する LO は デフォルト 98M ですが、 Actual は 400M (SBX ボードの下限)になり、20M のスイープ範囲で 200kHz 毎に実行されます。
ステップ数は 100になり、For ループは 100回実行されます。
初期キャリア周波数は 390MHz であり、200kHz 幅でずらしながら 410MHz までデータを取得してそのスペクトラムがグラフに追加表示されていきます。
0 件のコメント :
コメントを投稿