ダウンロード

マニュアル、データシート、ソフトウェアなどのダウンロード:

ダウンロード・タイプ
型名またはキーワード

フィードバック

スペクトラム・アナライザの使用方法 - SDR(ソフトウェア無線)

By テクトロニクス・エキスパート

SDR(ソフトウェア無線)は、従来のハードウェア・ベースの測定器や無線受信機と比較して、柔軟性、再構成可能性、オープンソース処理ツールを使用できるなどの利点を提供します。この記事では、テクトロニクスのリアルタイム・スペクトラム・アナライザ(RTSA)からデータをエクスポートし、さまざまなツールにインポートする方法について説明します。

まず、基本的な分析に単純なスプレッドシートを使用することで、対象信号についてかなりのレベルの洞察がどのように得られるのかを解説します。Octaveのようなツールは高度な行列演算操作機能を提供し、GNU Radioはフィルタ、チャネルコード、同期要素、イコライザなどの多くの無線分析ブロックを提供します。もともとオーディオ操作用に設計されたAudacityは、復調されたデータをサンプルレベルまで表示・編集するために使用できます。

この記事で選んだアプリケーション例は、RFカー・キーフォブの分析です。これらのデバイス(少なくとも米国では)は通常315 MHzで送信し、単純なオン・オフ・キーイング(OOK)変調方式を使用しています。カー・キーフォブのような単純なデバイスを使用することで、オープンソース・ツール・チェーンの使用に集中し、信号の複雑さに圧倒されることがなくなります。

測定セットアップ

この場合のデータ収集のカギは、タイム・オーバービュー・ディスプレイのセットアップです。このディスプレイは収集記録全体を表示し、スペクトラム時間と分析時間が収集記録内にどのように適合するかを示します。また、データの一部を測定するためにスペクトラム時間と分析時間を調整する方法も確認できます。

RTSAが同等のSDRより優れている点の一つは、アナログ・ダウン・コンバータを備えていることです。そのため、送信の中心周波数である315 MHzに機器を同調させ、この場合、信号を確実に捉えるために任意にスパンを5 MHzに設定します。機器のトリガーはRFパルスに設定する必要があり、キーフォブが作動すると収集が行われます。

RFパルスの持続時間は約185 msで、データ・レートは〜1,700 Hz、周期は0.6 msに相当します。7 MS/s(メガサンプル/秒)で220 msのデータを取得することにした場合、1.5メガサンプルを取得することになり、サンプルあたり142 ns(0.219s/1.5メガサンプル)となります。1,700 Hzつまり0.6 msのデータ・レートでは、パルス遷移あたり4,000ポイントを収集していることになります。。ナイキストの定理によれば、かなり少ない量でも捉えられるはずです。しかし今回の場合、収集スパンを5 MHzに設定したので、7 MS/sで十分です。スパンが小さければ、必要に応じてサンプル・レートを下げることができます。

タイム・オーバービュー・ウィンドウはスペクトラム長と分析長を表示します。スペクトラム長は、スペクトラムが計算される収集記録内の期間です。分析長は、以下の例に示すように、振幅対時間やスペクトラムなどの他のすべての測定が行われる収集記録内の期間です。スペクトラム・ディスプレイを生成するために使用されるデータが測定ディスプレイにも使用されるように、スペクトラム長と分析長を一緒にロックすることができます。ただし、これらを一緒に結合する必要はありません。デフォルトでは、これらは別々に指定され、収集記録の異なる部分を分析するために使用されます。

sdr_figure_1_2_28_19
図1 - データ収集のセットアップ

データのエクスポート

測定が取得されたら、データをIQデータとして保存できます。ファイルを選択し、「名前を付けて保存」でデータを保存します。今回はフォーマットとしてCSVを選び、データ・タイプとして「Acq data Export」を選択しました。

sdr_figure_2_2_28_19

次に、現在の収集データの分析長をIQレコードとして保存します。

sdr_figure_3_2_28_19

NotePadやその他のASCIIエディタでファイルを開くと、ヘッダが表示され、サンプリング周波数7000000 Hzで1532861サンプルポイントを取得したことを確認できます。

sdr_figure_4_2_28_19

スプレッドシート

スプレッドシートにCSVファイルとしてインポートし、振幅(I2+Q2)を簡単に計算してデータをプロットすることもできます。150万のデータポイントがあり、これは一部のスプレッドシート・プログラムにとっては多すぎるデータです。しかし、SignalVu-PCソフトウェアを使用すれば分析用に波形の一部だけを取得することができます。今回は、ヘッダをバイパスし、タイム・オーバービュー・ウィンドウを使用して16 msのデータ・フィールド、つまり120,000サンプルを選択しました。その後、上記と同様に、分析データをCSVファイルに保存しました。

sdr_figure_5_2_28_19

スプレッドシートにインポートすると、ヘッダ・データとIQデータを確認できます。D列では、振幅を計算し、IQ Magデータ・グラフを作成しました。

sdr_figure_6_2_28_19

スプレッドシートには信号分析機能がある程度ありますが、大きな行列データ・タイプの処理には最適化されていません。しかし、まさにそのために設計された複数のオープンソース・プログラミング言語があります。

Octave

GNU Octaveは、主に数値計算を目的とした、無料のオープンソース高水準言語です。Octaveはグラフィカル・ユーザ・インタフェース(GUI)またはコマンドライン・インタフェース(CLI)バージョンで実行できます。以下の例では、CLIバージョンを使用します。

上記の例では、CSVファイルがヘッダとともに保存されていることに注意してください。Octaveはこのヘッダを必要としません。区切り文字読み取りコマンド(dlmread)はデータをインポートするのに適しています。カンマを区切り文字として指定し、10行目の後からインポートを開始して、ヘッダをインポートしないようにできます。行列を割り当てたいベクトルとして「v」を指定します。

v = dlmread (filename, ',', 10,0);

インポートが完了したら、データが正しくvに割り当てられたことを確認できます。sizeコマンドはvの長さと幅を返します。スプレッドシートの例からファイル・データ・フィールドのみのファイルをOctaveに読み込み、配列のサイズを照会すると、照会は119,291行の2列行列を返します。

sdr_figure_7_2_28_19

Octaveには強力な行列操作関数のセットが含まれています。例えば、IQ配列の振幅を手計算するには、行列の各要素を二乗し、sum()関数を使用して各水平線を合計します。

sdr_figure_8_2_28_19

結果は119,291行の単一列配列になります。これをグラフ化するには、上記のようにplot()関数を使用するだけで、以下のグラフィック・ウィンドウが開きます。

sdr_figure_9_2_28_19

Octaveにはいくつかの行列操作と数学関数があります。例えば、各要素を二乗してから合計する必要はなく、sumsq()関数を使用して、行の各要素を二乗してから行を合計することができます。

sdr_figure_10_2_28_19

flipud() を使用して配列の内容を反転し、以下のようにデータを逆順にプロットすることもできます。

sdr_figure_11_2_28_19

Octaveは行列演算に優れており、多くの機能を持っていますが、無線信号の分析に最適化されているわけではありません。そこでGNU Radioの出番です。

GNU Radio

GNU Octaveと同様に、GNU Radioもコマンドラインとグラフィカル・プログラミング言語の両方を持っていますが、GNU Radioは明確に無線信号の分析のために設計されています。GNU Radioは、ソフトウェア無線を実装するための信号処理ブロックを提供する、無料のオープンソース・ソフトウェア開発ツールキットです。テクトロニクスのRTSAファミリーを含むいくつかの外部ハードウェア・システムと共に使用できます。

基本的に、受信した信号をソースとし、処理し、その結果の信号をスペクトラムや時間表示などのグラフィカル要素に出力するか、ファイルに出力したり、最終的に実際のハードウェア送信機に出力したりします。

GNU Radioには、無線システムで一般的に見られるフィルタ、チャネルコード、同期要素、イコライザ、復調器、ボコーダ、デコーダ、その他多くの要素(要素ブロック)が含まれています。さらに重要なことに、これらのブロックを接続する方法と、あるブロックから別のブロックへのデータの受け渡し方法も含まれています。GNU Radioの拡張も非常に簡単です。特定のブロックが不足していると感じた場合、すぐに作成して追加できます。

スペクトラム・キャプチャからCSVデータを使用するには、GNU Radioで読み取れるバイナリ形式に変換する必要があります。これを複数の方法で行うことができますが、この例ではすでにOctaveを開いていたので、小さな変換スクリプトを書きました。まず、dlmread()を使用して150万ポイントのキーフォブ・ファイルを行列vに読み込み、次にtextInBinOut()関数を使用して、GNU Radioで読み取れるファイルを作成します。

sdr_figure_12_2_28_19

データが使用可能な形式になったら、GNU Radioフロー・グラフを作成できます。以下のフロー・グラフは、作成したファイルから信号をソースとし、それをGUI周波数シンクにシンクします。これはスペクトラム・アナライザのように周波数ドメインで信号を表示します。サンプル・レートは7 MS/sで、samp_rateという変数に割り当てています。スロットル要素はこの変数を使用してデータ・スループットを制限します。データ・スループットをサンプル・レートに制限するのは良い習慣です。これにより、フロー・グラフが外部ハードウェアからのリアルタイム・データ・ストリームによって制御されていない場合に、GNU RadioがすべてのCPUリソースを消費するのを防ぎます。

sdr_figure_13_2_28_19

フロー・グラフを実行すると、以下のスペクトラム表示が得られます。

sdr_figure_14_2_28_19

これはデータの変換を伴わないことに注意してください。フロー・グラフ内のすべての要素は複素データ型を使用し、要素間の複素データを渡すために単に線を繋ぎます。次のステップは、振幅データをプラスマイナス1に正規化することです。この信号の場合、IQデータを10倍にすることができます。また、信号にノイズを追加し、中心周波数を調整することもできます。

以下の例では、ノイズ・ジェネレータ要素からの加算ノイズを増加させ、シングル・ソース要素によって生成された信号と元の信号を混合することで中心周波数を移動させるための、基本的にはスライダーとなる2つのRange GUI要素を追加しました。また、時間経過による変化を観察するためのスペクトログラム表示またはウォーター・フォール・シンク要素も追加しました。

sdr_figure_15_2_28_19

上記のフロー・グラフを実行すると、以下の出力が得られます。周波数スライダを動かすと、元のキャリアの中心周波数が移動するのが見え、ノイズ・ソースからノイズを追加すると、ノイズ・フロアの振幅が増加します。

sdr_figure_16_2_28_19

最終的には、信号を復調して時間ドメインで見たいと考えています。OOKのような単純な変調方式では、これは比較的簡単です。GNU Radioは非常に強力なため、クロック回復、複雑な復調フィルタリング、シンボル・デコードを行うことができる要素を使用して、完全なアナログまたはデジタル受信機チェーンを構築できます。

OOKは比較的簡単にデコードできるため、上記のフロー・グラフを修正し、まず乗算定数要素を使用してスケーリングを簡素化し、次にIQ信号を浮動小数点振幅に変換しました。

sdr_figure_17_2_28_19

初期測定は無線経由(OTA)だったため、振幅にいくつかの変動がありますが、しきい値関数を使用してこれを修正できます。要素への入力で0.8 Vを超えるすべての入力を1 V出力として、0.1 V未満のすべての値を0 V出力として定義します。2つの振幅プロットは、生の振幅データとしきい値関数を通過した振幅データの両方を示しています。

sdr_header_image_2_28_19_1

 

フロー図では、データを70分の1に間引いて、WAVEファイル・シンク要素を使用して結果のデータを次のツールでの処理用にファイルに保存したことにも注目してください。

 

Audacity

Audacityは、無料のオープンソースのデジタル・オーディオ・エディタおよび録音ソフトウェア・アプリケーションです。多くの人々が様々な種類の復調データの分析にも使用しています。これにより、各サンプル・ポイントまでのデータを表示および操作することができます。次の例では、各個別のサンプル・ポイントが見えるように十分にズームインしています。

sdr_figure_19_2_28_19

サンプル編集ツールを使用することで、各ポイントを調整したり、必要に応じて全体的なエンベロープを変更したりすることができます。ファイルをGNU Radioに戻すには、単にソースWAVEファイル要素を使用します。

結論

スプリアス・フリー・ダイナミック・レンジ、イメージ、高調波、その他のスプリアス信号に関する問題は、市場で入手可能な多くのSDRのパフォーマンスを妨げているため、基本的に処理前に取得したデータが良好であることを確認することが、成功した分析のカギとなります。高性能なRSA306またはRSA500 RTSAをSDRとして使用することで、高品質なスペクトラム・データを確実に取得できます。データをキャプチャしたら、SDR機能を可能にする多くの強力なソフトウェア・ツールがあります。

この記事では、スペクトラム・アナライザとオープンソース・ツールの組み合わせでできることを解説しました。OctaveとGNU Radioはどちらも、クロック復元、復調、およびあらゆるタイプのIQ変調信号の測定にも使用でき、一方Audacityではサンプル・レベルでグラフィカルに編集できます。結論、高品質な受信機能と強力なオープンソース・ソフトウェア・ツールの配列を組み合わせれば、ほぼ無限の分析能力と、私たちの周囲の無線環境への深い洞察を得られます。スペクトラム・アナライザについてもっと学ぶ »