USRP-RIOで送受信開始タイミングを同期させるテスト

概要

USRP-RIOで送信と受信を同じタイミングで行うための方法を調査しまとめました。

ハードウェア

NI USRP-2943R (40MHz BW)

LabVIEW

2015 SP1

NI-USRP

NI USRP 15.0

サンプルソフト

Simple USRP Streaming

スタートトリガの種類

このサンプルではスタートトリガとして以下の種類が定義されています。

トリガ名

内容

Software

ホスト側ソフトが最初の受信もしくは送信の直前のタイミングで、トリガをかけます。
Initiate and Trigger.viでソフトウェアトリガを送信します。

clip_image001[8]

Digital Edge

USRP-RIOフロントパネルのGPIOコネクタのトリガを使用します。

Rx Start Triger

送信側でRx Start Trigerを指定すると、受信が開始したタイミングで送信も開始します。送受信タイミングを合わせることができます。

Tx Start Triger

受信側でTx Start Trigerを指定すると、送信が開始したタイミングで受信も開始します。
送受信タイミングを合わせることができます。

Immediate

即座に送受信を開始します。具体的にはConfigure Start Trigger.viの実行時のようです。

その証拠にトリガ設定後に500ms程度疑似ウェイトを入れるとタイムアウトエラーが発生しました。

clip_image002[8]

Future Time Event

指定時間後にスタートトリガをかけます。
サンプル
"Simple USRP Streaming"では動作しませんが、"Simple USRP Streaming with Time"で動作します。

Rx, Tx 両方ともImmediateの挙動

以下は、TxとRxをループバック接続し受信データをプロットしたものです。

Immediateだと、送受信のタイミングはバラバラ。ソフトの実行タイミングでトリガが掛かるので、実行する毎に受信位置が異なってしまいます。

データが受信できているのが、受信開始後350~400us程度なので送信が遅れているようですね。

clip_image003[6]

clip_image004[6]

Rx, Tx 両方ともSoftwareの挙動

Softwareも送受信のタイミングはバラバラ。ソフトの実行タイミングでトリガが掛かるので、実行する毎に受信位置が異なってしまいます。

clip_image005[6]

clip_image006[6]

Rx はImmediate or Software, Tx は Rx Start triggerの挙動

Rx Start Triggerは、受信が開始されたタイミングで発生するトリガで、送信側のスタートトリガとして設定すると、受信が開始→送信もトリガが掛かって送信開始、という動作になります。

上記のSoftware, Immediateトリガでは、データを受信するまで350us程掛かっていますが、Rx Start Triggerを使用すると、以下のグラフのように受信開始直後から波形を受信しています。よって送受信が同期して居ることが確認できます。

clip_image007[6]

さらに拡大してみます。送信開始後5us程度で波形が落ち着いているようです。

clip_image008[6]

さらに拡大してみるとトリガが掛かってから、1.3usで波形が立ち上がり始めています。これは毎回実行しても同じ1.3us程度で立ち上がっていますので、これがUSRP-RIOのハードウェア性能ですね。

clip_image009[6]

Tx はImmediate or Software, Rx は Tx Start triggerの挙動

先ほどは、受信トリガが掛かってから送信トリガを掛けていましたが、今回は逆で試してみます。すると全く同じく1.3usで毎回立ち上がっていることが確認できました。

clip_image010[6]

以上、ドルフィンシステム福島でした。

コメント