NI-USRP 21とLabVIEW 2018の組み合わせがおかしい?

B200で送信中心周波数設定時にパルスが送信される現象。

こんにちは。ドルフィンシステム福島です。

先日USRP B200で信号を送信していたところ、怪しげな現象を発見しました。
B200で信号を送信し、それを確認するためにUSRPでその収録していたのですが、謎の信号を検出しました。

USRP B200で信号送信のRF設定時に原因不明の謎のパルスが送出されるのです。

B200の制御を、LabVIEW2018, 2020とNI-USRP 18, 20 及び UHD 3.14などソフトウェア環境を変更しましたが、同じように謎のパルスがB200から送信されます。

どうもB200が搭載しているAnalog Devices AD9361に関わる現象のようです。

B200やB200mini、E310, E320などAD9361搭載ソフトウェア無線機を使用している方は要注意です。


B200の出力をUSRP 2954Rで収録した原因不明のパルス


1番目のパルスの拡大図


2番目のパルスの拡大図


こんな信号は送信していないのですが、一体なんなんでしょう?


各種ソフトウェア環境で試してみる

各種ソフトウェア環境で試してみました。


LabVIEW

NI-USRPドライバをインストールするとLabVIEWのサンプルとしてインストールされている "niUSRP EX Tx Continuous Async.vi"を使いました。標準的な送信サンプルです。

その結果、下図のようにLabVIEW 2018でも2020でもNI-USRP 18でも20でも同じようにパルスが送信されていることを確認しました。


IQレートは 1Msps、中心周波数は2GHzにします。


LabVIEW 2018, NI-USRP 18, niUSRP EX Tx Continuous Async.vi

Receive CF 2GHz, NI USRP-2954R, RefLevel 0


LabVIEW 2020, NI-USRP 20, niUSRP EX Tx Continuous Async.vi

Receive CF 2GHz, NI USRP-2954R, RefLevel 0


UHD

次にEttus Research標準のUHDのサンプルを使用して確認します。使用したアプリはUHDサンプルの "tx_waveforms"をWindows上で実行しまし、送信周波数を2GHz, 1GHzやゲインを変更するなど変更して試してみました。

その結果、下図のように中心周波数を変更すると送信パルスの形や振幅に変化がありました。


UHD 3.14 and 4.0.0 tx_waves

$ /usr/lib/uhd/examples/tx_waveforms  --freq 200e7 --rate 25e6 --gain 50


UHD 3.14 and 4.0.0 tx_waves

$ /usr/lib/uhd/examples/tx_waveforms  --freq 100e7 --rate 25e6 --gain 50


UHD 3.14 and 4.0.0 tx_waves

$ /usr/lib/uhd/examples/tx_waveforms  --freq 100e7 --rate 25e6 --gain 0

パルス発生のタイミング

ソフトウェア環境に限らず謎のパルスは送信されるようなので、送信されるタイミングを調べます。

パルス発生のタイミングを細かく探るために、UHDのtx_waves実行時にブレイクポイントで実行を停止しながらパルス送出を観測しました。

すると、

usrp->set_tx_freq(tune_request);

関数実行後に出力されています。これは送信中心周波数を設定する関数です。


はてこれは一体?


アドバイスを求めて

ちょっと調べても限界がありそうなのでUSRP Users MLに質問を投げていました。するとMr. Kent Torellから返信があった。

その内容を見ると、


[USRP-users] B200 sends an unknown large pulse after sets a center frequency.

Kent.Torell@gd-ms.com <Kent.Torell@gd-ms.com> 10月20日(火) 23:57


To 自分

There is no work around.  The Analog Devices part is recalibrating when you tune, and it puts out almost full scale tones while it does that.  In our hardware we open switches when we have to tune.  There are other tricks you might be able to do, but the ettus hardware and drivers do not support them.

Kent Torell, General Dynamics


というわけで中心周波数を設定するとキャリブレーション用の信号がフルスケールで送信されているようです。メールにも書かれているように、中心周波数を設定する前にRFSWで送信されないように配慮することが必要かもしれないですね。


同系統のRFICを搭載しているADALM-PLUTOでの観測

AD9361特有の現象であれば、同系統のRFIC AD9363を搭載しているADALM-PLUTOでも発生するはずです。

早速ADALM-PLUTOでも調査しました。

ADALM-PLUTOの制御アプリは、IIO Oscilloscopeの送信機能を利用した。


観測結果

送信信号送信前にフルスケールのパルスが出力されていることが観測できた。

このパルスは送信ゲインと関係なく出力されるようで、IIO Oscilloscope送信設定のATTを89.5にしてもフルスケールのパルスが出力された。


USRPの時と違い、パルスも数が多く、かつフルスケールで出力されています。

明らかにUSRP B200の時と違いますが、一体何が違うのでしょう?

パルスを拡大したところ


まとめ

  • Analog Devices AD936xが搭載されているソフトウェア無線機で、信号を送信する際にキャリブレーション用パルスが送信されてしまう。
  • これを抑止することは出来ないようだ。
  • この現象はAD9361を搭載したUSRP B200 でも観測できたし、AD9363を搭載したADALM-PLUTOでも観測できた。
  • この現象はAD936xに依存するもので、ソフトウェア環境には依存しない。
  • ただB200のパルスとADALM-PLUTOのパルスは明らかに違うものが送信されているので、何らかの違い(AD936xのレジスタに書き込む値など?)があるようだ。

AD936x系はよく使われているので、注意してください。

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


コメント