banner
ホームページ / ブログ / GNU Radio の入門
ブログ

GNU Radio の入門

Jun 18, 2023Jun 18, 2023

ソフトウェア無線 (SDR)、つまり電子機器の代わりにソフトウェアを使用して無線信号を処理する機能は、間違いなく魅力的です。 ただし、既製の SDR ソフトウェアを使用できることと、独自の SDR ソフトウェアを作成できることには大きな隔たりがあります。 結局のところ、SDR には高速で多くのデジタル信号処理 (DSP) が必要です。

最新の PC をゼロから構築できる人は多くありませんが、マザーボード、I/O カード、電源、ケースを入手して、カスタム システムを組み立てることはほぼ誰でも可能です。 それが GNU Radio と SDR の背後にある考え方です。 GNU Radio は、高度な SDR アプリケーション (実際には、あらゆる DSP アプリケーション) の作成に使用できる豊富な Python 関数を提供します。

Python がまだ使いこなせていない場合 (または、Python が使いこなせている場合でも)、GNU Radio を使用するさらに簡単な方法があります。GNU Radio Companion (GRC) です。 これは主にグラフィカルなアプローチであり、モジュールをグラフィカルにスレッド化し、新しい無線を制御するためのシンプルな GUI を構築できます。

通常、GRC は無線に関するものだと考えられていますが、実際には、あらゆる種類の DSP アプリケーションを構築するための優れたフレームワークです。それを以下のビデオで紹介します。 GRC には信号発生器ブロックがあり、サウンド カードに接続します。 ファイル システムに対してデータを読み書きする機能も備えているため、追加のハードウェアを必要とせずに、これを使用して多くの DSP アプリケーションやシミュレーションを実行できます。

アップデート:SDRPlay を使用して GNU Radio ベースの受信機を構築するフォローアップ投稿をお見逃しなく。

SDR を可能にするために組み合わせる重要な構成要素がいくつかあります。 1 つ目は、あるサンプリング レートでサンプリングされる入力デバイス (ソース) です。 オーディオ デバイスの場合、サンプルは実数になります。 ただし、無線デバイスは I および Q コンポーネントを含む複素数を提供する可能性が高くなります。

信号を I 成分と Q 成分 (直交データとも呼ばれる) として表現することに慣れていない場合、これは大きなトピックです (優れた 3D 説明があり、1 つは Tektronix から、もう 1 つは National Instruments から提供されています)。 ただし、GRC の使用を開始するために、直交信号の背後にある理論を直接理解する必要はありません。 I 信号と Q 信号を組み合わせて任意の波形を表現できること、また逆に、任意の波形を一連の I 値と Q 値に分割できることを知っておいてください。 ただし、GRC では、PCI Express バス上にどのような信号があるのか​​を正確に知らなくてもビデオ カードを使用できるのと同様に、それを理解することは (ほとんどの場合) それほど重要ではありません。

以下のビデオで簡単なスターター プロジェクトを見つけることができます。 GRC は、ブロック図 (フロー グラフ) を使用してプロジェクトを表します。 新しいフロー グラフを作成すると、2 つのブロックがすでに存在していることがわかります。1 つはオプション用、もう 1 つは samp_rate という名前の変数です。 オプション ブロックの最も重要な部分では、使用するグラフィカル ツールキット (WX グラフィカル ウィジェットまたは QT ウィジェット) を設定します。 私たちの目的にとってはそれほど重要ではありませんが、ビデオでは Qt を選択します。 サンプル レートは設計に不可欠であるため、特別な変数が存在します。 他のほとんどのブロックは、この変数の値を取得し、それをサンプル レートに使用します。 ただし、これが常に望ましいものであるとは限りませんが、出発点としては適しています。 この例では、最終的にはサウンド カードから入力を取得することになるため、ほとんどのサウンド カードがサポートするサンプル レート (48 kHz) が必要でした。 ただし、最初に、上の図に見られるように、例を非常に単純なものにしました。

まず、IQ データ (複素数) を生成する信号ソースをフロー グラフ上に配置します。 信号発生器ブロックは実際に大量のデータを生成し、CPU の速度を低下させる可能性があります。 サンプルレートは 48 kHz であるため、1 秒あたり 48,000 を超えるサンプルを生成することは意味がありません。 これを確実に行うには、スロットル ブロックを追加し、発電機に接続します。

同じ色の (したがって同じデータ型の) ポートを接続するのは簡単です。 1 つのポートをクリックしてから、もう 1 つのポートをクリックするだけです。 順序は重要ではなく、複数の入力を 1 つの出力に接続できます。 ポートのデータ型が一致しない場合は、型コンバーターを使用する必要があります (これについてはサンプル ビデオで後で説明します)。