USRP の受信ポートの IQ インバランスの セルフキャリブレーションについて (NG編)

こんにちは、ドルフィンシステムの笹生です。

本日は、「USRP の IQ インバランスのセルフキャリブレーションについて (NG編)」の記事です。

弊社でも福島のブログで何度か取り上げております。今回は NI 社のサポートページにある「USRP IQ Imbalance and How to Self-Calibrate It」について実際に試してみようと思います。

上記の NI のサポートページは、USRP の FPGA を LabVIEW FPGA で開発できる IDL というテンプレートでセルフキャリブレーションが適用できるという記事となります。

これまで NI USRP ドライバや、UHD での適用については確認してきましたが、IDL での確認はまだしていませんでした。(これまでは IDL では自前で別途キャリブレーションをしていました。記事の日付は 2023/3月 なのですが最近気が付きました、、、)

果たして実力はどのくらいあるか試したかったのですが今回は (NG編)ということでうまく行きませんでした。。。


関連する弊社福島のブログ記事のリンクはこちら

USRP の DC offset キャリブレーションを行なう

USRP-RIOのキャリブレーションをしてDCオフセットとIQ位相ずれに対処する


関連する Ettus Research 社のオンラインマニュアルはこちら

Self-Calibration


以下大きく3つの行程で行いました。

① キャリブレーションを行う前の確認

② セルフキャリブレーションを実行

③ キャリブレーション実行後の確認

それでは早速見ていきたいと思います。


① キャリブレーションを行う前の確認


Tx RF 0 でトーン信号を出して Rx RF1 で受けます。

ポートを離しているのは回り込みの影響が極力ないようにするためです。

またLO 周波数はなるべくキリが良くないような周波数にしてみました。

結果としては、Rx でイメージを確認することができていますが結構小さい印象です。

左の強い信号が Tx の主信号で、中央は 受信の DCオフセット、右の信号がイメージに相当します。

-60dBc 程度でしょうか。すごく大きいわけではないですがそれなりに出ています。



Tx については、DC オフセットやイメージはそれなりに小さそうです。工場出荷時の設定がいいのでしょうか。。。


② セルフキャリブレーションを実行

以下の Ettus Research 社のオンラインマニュアルを参考にセルフキャリブレーションを実行してみます。

Self-Calibration

NI の USRP ドライバをインストールしているので、"C:\Program Files (x86)\National Instruments\NI-USRP\utilities" にあるセルフキャリブレーションツールを実行します。

福島のブログにもあるように、RF ケーブルは外して実行します。

今回は分かりやすい uhd_cal_rx_iq_balance を実行してみます。

10分程度で終了しまして、指定された "LOCALAPPDATA%\uhd\cal\" に rx_*.cal ファイルができておりました。

とここで問題発生。

特にオプションを指定しなければ USRP-2954 の 受信 2ポートともキャリブレーションしてくれるのかと思いきや、RF0 側の Rx のみのようでした。。。

最初に測定していた RF1 側の Rx はデフォルトでは行ってくれないようです。。。

オプションの --subdev で指定できそうだったのですが、ちょっと実行できませんでした。

こちらは引き続き調べてみたいと思います。

ということで再度①を RF 0で行いました。


① キャリブレーションを行う前の確認(再度)

Tx RF 0 でトーン信号を出して Rx RF0 で受けてみます。

ドキュメントにあるように rx*.cal ファイルを削除すれば恐らくキャリブレーション前の状態になるということなので、削除して計測してみます。

計測した感じでは結構イメージは小さいです。-70dBc くらいには小さいようです。


③ キャリブレーション実行後の確認

②で計測した rx_*.cal ファイルを戻して再度Tx RF 0 でトーン信号を出して Rx RF0 で受けてみます。

結果としては変化なし?という状況でした。


まとめ

今回セルフキャリブレーションについて Rx RF1 側が適用されなかったので、改めて調査してみようと思います。

ただ、RF0 側で作成された rx_*.cal ファイルがある場合と無い場合で、変化があまり認められませんでした。

変化がない理由を考えてみますが

1:まったく適用されていない

2:キャリブレーションで抑え込むレベルより小さい

3:工場出荷状態の設定が優先?

といったことが考えられるのですが、また機会を作って調べたいと思います。

0 件のコメント :

コメントを投稿