ソフトウェア無線を使用した信号受信
この例では、SDR Receiver アプリを使用し、ソフトウェア無線 (SDR) を調整して信号を受信する方法を示します。この例では、次のことを行います。
継続的な信号受信用に SDR を構成します。
IQ サンプル、パワー スペクトル、およびコンスタレーションを可視化します。
RF 劣化要因を補正します。
アプリ構成を MATLAB™ スクリプトにエクスポートします。
必要なハードウェアとソフトウェア
この例を実行するには、次に示す無線機のいずれか、およびそれらに対応するソフトウェア サポート パッケージが必要です。
USRP™ N2xx シリーズまたは B2xx シリーズの無線機と Communications Toolbox Support Package for USRP Radio。詳細については、USRP 無線機およびサポートされているハードウェアと必要なソフトウェアを参照してください。
USRP™ N3xx シリーズ、X シリーズ、または E320 無線機と Wireless Testbench Support Package for NI USRP Radios。詳細については、Supported Radio Devices (Wireless Testbench) (Wireless Testbench) を参照してください。
ADALM-PLUTO 無線機と Communications Toolbox Support Package for Analog Devices® ADALM-PLUTO Radio。詳細については、ADALM-Pluto 無線機を参照してください。
RTL-SDR 無線機と Communications Toolbox™ Support Package for RTL-SDR Radio。詳細については、RTL-SDR 無線機を参照してください。
はじめに
SDR は、デジタル関数を実行するための FPGA またはプログラム可能なチップ上のシステム (SoC) を備えた構成可能な RF フロント エンドで構成されるワイヤレス デバイスです。市販の SDR は、FM、LTE、WLAN、および 5G などの無線規格を実装するため、さまざまな周波数で信号を送受信します。

SDR を使用する際の一般的な課題には、ゲインを適切に設定することや、周波数オフセット値および位相オフセット値を正確に推定することが含まれます。SDR Receiver アプリは、選択した SDR のゲインを調整するための対話型インターフェイスを提供します。さらに、このアプリでは、信号受信中に位相オフセット、fine 周波数オフセット、および coarse 周波数オフセットを調整できます。また、それぞれの調整が受信信号にどのような影響を与えるかを確認できます。
以下のイメージは、SDR Receiver アプリで使用されるワークフローを示しています。
SDR Receiver アプリを開く
SDR Receiver アプリを開くには、以下に示すコマンドを実行します。
app = SDRReceiver();

信号パラメーターの設定
Center Frequency (Hz):[Center Frequency] を非負のスカラーとして指定します。[中心周波数] の値の有効範囲は、選択した SDR によって異なります。
以下の表は、USRP™ 無線機の [中心周波数] の範囲を示しています。サポートされている RF ドーターボードを搭載した USRP 無線機の場合、[中心周波数] の有効範囲は、使用する RF ドーターボードによって異なります。
無線機 | 中心周波数の範囲 |
|---|---|
B シリーズ | [34e6, 6e9] |
USRP N300、USRP N310 | [10e6, 6.05e9] |
USRP N320、USRP N321 | [3e6, 6.1e9] |
USRP X410 | [1e6, 8e9] |
USRP X300、USRP X310 | [10e6, 6e9] *これは一般的な範囲であり、ドーターボードによって異なります。 |
N2xx シリーズ | [10e6, 6e9] *これは一般的な範囲であり、ドーターボードによって異なります。 |
中心周波数の範囲の詳細については、それぞれの受信機 System object の info() メソッドを使用してください。
PLUTO 無線機の場合、[Center Frequency] の有効な調整範囲は 325 MHz ~ 3.8 GHz になります。Communications Toolbox Support Package for Analog Devices ADALM-Pluto Radio では、AD9364 ファームウェアを使用して動作するように無線を構成することで、適格な調整範囲を超えて PLUTO 無線機を使用できます。[Center Frequency] の範囲を拡張するには、MATLAB コマンド プロンプトで
configurePlutoRadio('AD9364')と入力します。RTL-SDR 無線機の場合、[中心周波数] の範囲はチューナー チップによって異なります。
チューナー | 中心周波数の範囲 |
|---|---|
Elonics E4000 | 52 MHz ~ 2200 MHz (1100 MHz ~ 1250 MHz (可変) にギャップあり) |
Rafael Micro R820T | 24 MHz ~ 1766 MHz |
Rafael Micro R828D | 24 MHz ~ 1766 MHz |
Fitipower FC0013 | 22 MHz ~ 1100 MHz (FC0013B/C および FC0013G には L バンド用の別入力あり。この入力は多くのスティックでは接続されていない) |
Fitipower FC0012 | 22 MHz ~ 948.6 MHz |
FCI FC2580 | 146 MHz ~ 308 MHz および 438 MHz ~ 924 MHz (間にギャップあり) |
詳細については、[1] を参照してください。
Rx Gain (dB): SDR 受信機のゲインを dB 単位で指定します。[Rx Gain] の値の有効範囲は、選択した SDR によって異なります。
USRP 無線機の場合、[Rx Gain] の有効範囲は RF ドーターボードによって異なります。有効なゲイン値を取得するには
comm.SDRuReceiverのinfo()メソッドを使用します。PLUTO 無線機の場合、[Rx Gain] の範囲は中心周波数によって異なります。
中心周波数の範囲 | ゲイン (dB 単位) |
|---|---|
70 MHz ~ 1300 MHz | [-1,73] |
1300 MHz ~ 4 GHz | [-3,71] |
4 GHz ~ 6 GHz | [-10,62] |
RTL-SDR の場合、[Rx Gain] の値の有効範囲はチューナー チップによって異なります。有効なゲイン値を取得するには
comm.SDRRTLReceiverのinfo()メソッドを使用します。
Sample Rate (Hz): 無線機フロント エンドのベースバンド サンプル レートを正の数値スカラーとして Hz 単位で指定します。
USRP 無線機の場合、[Sample Rate] はマスター クロック レート (MCR) と間引き係数によって異なります。
Hz
無線機 | マスター クロック レート (MCR) | 範囲 [1, 1024] におけるサポートされている間引き係数の値 |
|---|---|---|
B シリーズ |
| - [1, 3] - 4 ~ 128 の奇数 - 範囲 - 範囲 |
N2xx シリーズ |
| - 2 ( - 4 ~ 128 の奇数 - 範囲 - 範囲
|
USRP N300 USRP N310 | - 122.88 MHz - 125.00 MHz - 153.60 MHz | - [1, 3] - 範囲 - 範囲 - 範囲 [512,1016] 内の 8 の整数倍 |
USRP N320 USRP N321 | - 200.00 MHz - 245.76 MHz - 250.00 MHz | - [1, 3] - 範囲 - 範囲 - 範囲 [512,1016] 内の 8 の整数倍 |
USRP X410 | - 245.76 MHz - 250.00 MHz | - [1, 3] - 範囲 - 範囲 - 範囲 [512,1016] 内の 8 の整数倍 |
USRP X300 USRP X310 | - 184.32 MHz - 200.00 MHz | - 1 ~ 128 の範囲の整数 - 128 ~ 256 の範囲の偶数 - 256 ~ 512 の範囲内の 4 の倍数 - 512 ~ 1016 の範囲内の 8 の倍数
|
詳細については、comm.SDRuReceiver を参照してください。
PLUTO 無線機の場合、[サンプル レート] は
comm.SDRRxPlutoのBasebandSampleRateプロパティと同じ値になります。範囲は 1 秒あたり 65105 ~ 61.44e6 サンプルです。RTL-SDR の場合、[サンプル レート] の有効範囲は (225, 300] kHz および (900, 3200] kHz です。[Sample Rate] を 2560 kHz より大きく設定すると、サンプルが破棄される可能性があります。信頼性が最大となるサンプル レートの詳細については [1] を参照してください。
フレーム サイズ: 出力信号のフレームあたりのサンプル数を正の整数として指定します。
USRP 無線機の場合、[フレーム サイズ] は 1 ~ 256e6 の範囲の正の偶数でなければなりません。
PLUTO 無線機の場合、[フレーム サイズ] は 2 ~ 16,777,216 の範囲の正の偶数でなければなりません。
RTL-SDR 無線機の場合、[フレーム サイズ] は 1 ~ 375,000 の範囲の正の偶数でなければなりません。
パラメーターの範囲の詳細については、それぞれの受信機 System object の info() メソッドを使用してください。
信号の受信
信号を受信するには [開始] をクリックし、信号受信を一時停止するには [一時停止] をクリックします。信号受信が開始されると、アプリによって [Select SDR] が無効化されます。
アプリには、受信のステータスが "Receiving....." と表示されます。
RF 補正の適用
RF 通信システムで信号の送受信を必ず正確に行うには、周波数オフセットや位相オフセットの補正などの RF 補正を実行しなければなりません。
位相オフセットは、受信信号と基準信号との間の位相の差を指し、シグナル インテグリティに影響します。周波数オフセットは、予想される搬送波周波数と実際の受信周波数との間の差を指し、信号の不整合や信号の劣化を引き起こします。
SDR Receiver アプリを使用すると、シミュレーション中に [Phase Offset (deg)]、[Coarse Frequency (Hz)]、および [Fine Frequency (Hz)] を使用して位相と周波数のオフセットを対話形式で推定できます。これらのパラメーターを変更して、[Constellation] プロットにどのような影響があるかを確認します。
受信信号の可視化
次の 3 つのプロットを使用して受信信号を可視化できます。
IQ Plot: 受信信号の実数部と虚数部をプロットします。ここで、[X 軸] は [サンプル]、[Y 軸] は [振幅] です。
パワー スペクトル プロット: 受信信号のパワー スペクトルをプロットします。アプリは spectrumAnalyzer オブジェクトを使用してこれらのプロットを生成します。プロットでは、[X 軸] は [周波数] (Hz 単位)、[Y 軸] は [dBFS] (フル スケールに対するデシベル) です。
Constellation Plot: 受信信号のコンスタレーションをプロットし、位相と周波数のオフセットを推定します。
受信の停止
信号受信を停止するには、[停止] をクリックします。受信が停止すると、アプリによって [Select SDR] コントロールが有効化され、無線機を変更できるようになります。

MATLAB スクリプトへのエクスポート
現在の SDR Receiver アプリ構成用の MATLAB スクリプトを生成するには、[MATLAB スクリプトにエクスポート] ボタンをクリックします。
アプリを閉じる
SDR Receiver アプリを閉じるには、以下に示すコマンドを実行します。
app.delete();
まとめとその他の調査
この例では、SDR を調整し、要件に基づいて位相と周波数のオフセットを推定します。
SDR のその他の例については、以下を参照してください。
参考文献
[1] SDR (Software Defined Radio)
補助関数
SDRReceiver.mhelperUISDRRxWidgets.mhelperUISDRRxController.m