こんにちは、ドルフィンシステムの笹生です。
今回で 14回目の USRP のサンプルについての紹介となります。
今回紹介するサンプルはちょっとマニアックなサンプルになります。USRP-RIO シリーズ等で、背面の イーサネット SFP+ポート(デフォルトではRJ-45に変換した1GbE と 10GbE) を2つ接続して同時に受信するサンプル「niUSRP EX Rx Dual Ethernet Connection.vi」を紹介します。
PC との物理的な接続や設定については別途紹介したいと思います。本記事ではサンプルの解説に絞ってまいります。
サンプルプログラムの開き方につきましては第一回のブログを参照してください。
niUSRP EX Rx Dual Ethernet Connection.vi
名前順にソートされて14番目のサンプルが「niUSRP EX Rx Dual Ethernet Connection.vi」です。
このサンプルは 1台の USRP-RIO デバイス、複数の受信ポート(2944/2954の場合は 4ch、それ以外は 2ch)で連続的に受信を行うサンプルですが、USRP 背面の 2つのイーサネットポート(SFP+)で並行して取得できるになります。
それではフロントパネルを見てみましょう。
開くと位置がずれて開いてしまうと思いますが、垂直水平バーで位置を調整してください。
調整すると下のような GUI を確認できます。
フロントパネルとしては大きく分けて、左側が設定関連、右側が受信信号のグラフ表示になります。
下のコメントはこう書いてあります。
"The IP address pair will be passed to the niUSRP Open Rx Session VI in this format.
Note: Refer to this formatting example when creating a new VI with dual streaming and ensure consistency before passing it to another VI."
「IP アドレス ペアは、この形式で niUSRP Open Rx Session VI に渡されます。
メモ: デュアルストリーミングを使用して新しい VI を作成する場合は、このフォーマットの例を参照し、別の VI に渡す前に一貫性を確認してください。」
各ch の RF 設定が 4つ横に並んでいます。
上記 Enabled Channel で指定した ch の番号が設定されます。
Start Trigger Time
Actual Rx Timestamp
受信開始からの経過時間が表示されます。
Error out
エラーが発生したときに表示されます。
実行しエラーがなければ右側のグラフに IQ 時間波形とスペクトラム波形が表示されます。
初期化の部分
初期化の部分では 大きく5つの処理をしています。左から
①アドレスを結合してUSRPデバイスのオープン
Device Name への設定の仕方は USRP のデバイスの種類によって異なります。
Ethernet で接続するタイプの USRP では USRP に設定してある IP アドレスを設定します。PCIe ケーブル接続の USRP では、NI MAX で認識しているデバイス名を設定します。
今回のサンプルでは2つのイーサネットポートを[+] の文字列で結合して渡しています。
開くことが出来たら、セッションハンドルを出力しますのでこの後の設定などはそのセッションハンドルを基に行います。
②チャネルの有効化
この部分は USRP のプロパティノードを使用しています。
使いたい チャネルの有効化をするプロパティです。
文字列で与えます。通常は 0 です。USRP の種類によって 2ch 使えるものは 1 も設定できます。
③スタートトリガタイミングの設定
設定項目は以下のクラスタになります。
④ IQ レートの設定
プロパティノードで IQ Rate を設定し、設定された実際の IQ Rate を取得して後段受信ループのスペクトラムの表示でで使用しています。
⑤ USRP モデル毎の RF 設定
プロパティノードの Model を取得して、開いたデバイスの USRP タイプを取得し、"NI USRP-2945","NI USRP-2955" のケースでは 4ch 分の設定をし、それ以外の USRP (デフォルトのケース)では 2ch 分の設定をしています。
受信が開始され、RF 信号が IQ データにダウンコンバートされてバッファに蓄えられていきますので、後段の②データ受信の部分でデータを PC に吸いあげます。
②受信ループの部分
②受信ループの部分では、USRP でRF 信号が IQ データにダウンコンバートされてバッファに蓄えられていきますので、データを PC に吸いあげる(フェッチする)ことが主な処理です。また取得データをグラフに表示する処理も行っています。
①2D CDB タイプでデータをフェッチ
CDB は Complex Double なので倍精度複素数のデータです。
2DCDB の設定なので、2次元の倍精度複素数の配列として取得しています。
WDT ではないので波形情報は含まれていません。
2D になっている理由は、複数ch 指定しているからです。
行が ch数、列が指定した"Number of Samples Per Fetch" です。
② IQ グラフ表示
CDB タイプをそのままグラフ表示器に接続すると I しか表示されないので、2D CDB の各要素(実部、虚部)を分離して、表示用に2次元の配列にし直しています。
③ ベースバンドスペクトラム表示
このサンプルでは 8回に1回の割合で表示しています。
(恐らく処理が重いので飛び飛びで表示させることでエラーさせない工夫だと思いますがあまりいい方法ではないですね。。。個人的には他のサンプルの様にタイマーで調整したほうがいいと思います。)
2D CDM を ch 毎に処理していて、WDT の波形タイプに作り直して計算→表示をしています。
③終了処理
①USRP を停止
受信側でイニシエートしているので、受信側では USRP を停止します。
② USRP デバイスを閉じる
USRP のセッションを閉じて終了です。
実行してみる
使用する USRP は USRP 2954 で実行してみます。
今回は デフォルトのファームウェアで実行したため、Port 0 は RJ-45 変換した 1GbE のポート(IP = 192.168.10.2) を指定し、Port 1 は SFP+ を使った 10GbE ポート(IP = 192.168.40.2) を指定して実行しました。
IQ Rate は 1Msps で行ったのでそれぞれの ch のレートはおよそ 32Mbps になります。
0 件のコメント :
コメントを投稿