Simulink での FRS/GMRS 受信機
この例では、Simulink® および Communications Toolbox™ を使用してトランシーバー受信機を実装する方法について説明します。この例が従う特定の無線規格は、CTCSS (Continuous Tone-Coded Squelch System) を搭載した FRS/GMRS (Family Radio Service/General Mobile Radio Service) です。Communications Toolbox Support Package for RTL-SDR Radio を使用することで、シミュレートした信号、取得した信号、または商用のトランシーバーから受信した信号を使用できます。
この例は、FRS/GMRS の動作に対して米国規格を使用するように設計されています。これらの規格の技術的な仕様については、以下のリファレンのリストを参照してください。他の国での動作は、機能する場合と機能しない場合があります。
必要なソフトウェアとハードウェア
取得した信号を使用してこの例を実行するには、次のソフトウェアが必要です。
信号をリアルタイムに受信するには、次のハードウェアも必要になります。
RTL-SDR 無線機
トランシーバー
さらに次のソフトウェアも必要になります。
Communications Toolbox でサポートされる SDR プラットフォームのすべてのリストについては、ソフトウェア無線 (SDR) のソフトウェア無線のための MATLAB & Simulink ハードウェア サポートの節を参照してください。
はじめに
FRS/GMRS 技術とそれらの信号の復調の概要については、FRS/GMRS トランシーバー受信機の例を参照してください。
例の実行
シミュレートした信号を使用してこの例を実行するには、Signal Source Selector
ブロックを使用して、FRS/GMRS Signal Generator
ブロックをソースに選択します。FRS/GMRS Signal Generator
ブロックをダブルクリックして CTCSS code
と 'Single tone'、'Chirp'、または 'Audio' のいずれかのソース タイプを選択します。次に実行ボタンをクリックします。
取得した信号を使用してこの例を実行するには、Signal Source Selector
ブロックを使用して、FRS/GMRS Captured Signal
ブロックをソースとして選択します。次に実行ボタンをクリックします。
RTL-SDR 無線機をソースとして使用してこの例を実行するには、Signal Source Selector
ブロックを使用して、RTL-SDR Receiver
ブロックをソースとして選択します。次に実行ボタンをクリックします。トランシーバーをオンにして、チャネルを 14 チャネル (1 ~ 14 の番号) の 1 つに設定し、プライベート コードを 38 のプライベート コード (1 ~ 38 の番号) のいずれかまたは 0 に設定します。0 の場合、スケルチ システムは使用されず、すべての受信メッセージが受け入れられます。なお、38 よりも大きなプライベート コードはデジタル コードであり、この例では実装しないことに注意してください。
Channel Number
ブロックをダブルクリックし、トランシーバーと同じチャネル番号を選択します。CTCSS Code
ブロックをダブルクリックし、CTCSS コードをトランシーバーで設定されているプライベート コードに設定します。モデルを実行して、コンピューターのスピーカーから自分の声が聞こえるかどうかを確認します。聞こえない場合は、Detection Threshold
ブロック値を少し下げて調節してみてください。チャネルおよびプライベート コードは、モデルを停止および再起動することなく変更できます。
音の途切れや遅延がある場合は、アクセラレータ モードでモデルを実行します。モデルのメニューから、[シミュレーション]、[アクセラレータ] を選択し、次に実行ボタンをクリックします。アクセラレータ モードでも依然として音の途切れや遅延が発生する場合は、ラピッド アクセラレータ モードでモデルを実行してみてください。
[Signal Spectrum] には、Channel Selector
ブロックの入力での受信信号のスペクトルが表示されます。トランシーバーに向かって話すと、スペクトルの変化を確認できます。
受信機の構造
次のブロック線図は、受信機の構造をまとめています。処理には 4 つの主要な部分があります。信号ソース、チャネル セレクター、FM 復調、および CTCSS 処理。
信号ソース
この例では、3 つの信号ソースを使用できます。
"シミュレートされた信号": 240e3 サンプル/秒でシミュレートされた FRS/GMRS 信号
"取得した信号": ファイルに書き込まれ、240e3 サンプル/秒で Baseband File Reader ブロックを使用して取得される無線信号
''RTL-SDR 無線機'': 240e3 サンプル/秒の RTL-SDR 無線機。トランシーバーを送信機として使用します。チャネル番号をトランシーバーのチャネル番号に設定します。
チャネル セレクター
受信機は DC 成分を除去し、可変ゲインを受信信号に適用して、近似的に認識された振幅信号を取得し、干渉を緩和します。次に受信機は、ローパス チャネル分離フィルターを適用して、隣接チャネルからの信号を減らします。隣接チャネルの間の隙間は 25 kHz で、ベースバンド帯域幅は最大でも 12.5 kHz です。したがって、10 kHz にするカットオフ周波数を選択します。
次に、チャネル セレクターは、フィルター処理された信号の平均電力を計算します。これがしきい値 (既定値が 10% に設定されています) より大きい場合、チャネル セレクターは、受信した信号が正しいチャネルから生成されたものであると判断し、信号が通過することを許容します。帯域外信号の場合、チャネル分離フィルターは信号を減衰させますが、まだ FM 変調されており、変調信号は FM 復調の後にも存在します。このような信号を完全に除去するために、チャネル セレクターはすべてゼロを出力します。
FM 復調器
この例では、サンプル レートおよび最大周波数偏差がそれぞれ 240 kHz と 2.5 kHz に設定された FM Demodulator Baseband
ブロックを使用します。
CTCSS
まず、間引きフィルターによってサンプル レートが 240 kHz から 8 kHz へ変換されます。このレートは、ホスト コンピューターの出力オーディオ デバイスのネイティブ サンプル レートの 1 つです。次に、CTCSS 復号化器は、Goertzel アルゴリズムを使用して CTCSS トーン周波数ごとの出力を計算して、最大出力でコードを出力します。Goertzel アルゴリズムは、事前定義された周波数 (つまり、FRS/GMRS で使用されるトーン コード周波数) での周波数成分を計算する効率的な方法を提供します。
このモデルは、推定された受信コードを事前選択されたコードと比較し、2 つのコードが一致すると、信号をオーディオ デバイスに送信します。事前選択されたコードがゼロの場合、このブロックは、スケルチ システムが使用されていないことを示し、コードが使用されているかどうかにかかわらず、決定ブロックがチャネルでの信号をオーディオ デバイスに渡すことを示します。
最後に、カットオフ周波数が 260 Hz のハイパス フィルターは、最大周波数が 250 Hz の CTCSS トーンを除去します。Audio Device Writer
ブロックを使用して、コンピューターのスピーカーを通して受信信号を再生します。音が何も聞こえない場合は、Audio Device Writer
ブロックの DeviceName パラメーターを使用して別のデバイスを選択してください。
オーディオ出力
オーディオ デバイスの前に、カットオフ周波数が 260 Hz のハイパス フィルターは、最大周波数が 250 Hz の CTCSS トーンを除去するのに使用され、このトーンが聞こえないようにします。
Audio Device Writer
ブロックは、システム設定の現在のオーディオ デバイスに出力するように既定で設定されています。
例の検証
CTCSS 復号化は、Goertzel アルゴリズムを使用して入力信号の DTFT (離散時間フーリエ変換) を計算し、トーン周波数での出力を計算します。トーン周波数は互いによく似ているので (3 ~ 4 Hz しか違いません)、DTFT のブロックの長さは、周波数解析に対して十分な分解能を提供する大きさでなければなりません。しかし、ブロックの長さを長くすると復号化が遅延する原因になります。たとえば、復号化器は 8 kHz サンプル レートで動作するので、ブロックの長さが 16384 のときは 2 秒の遅延が発生します。これにより、検出能力とレイテンシの処理のトレードオフが作成されます。最適なブロックの長さは、送信機および受信機の品質、送信機と受信機の距離、およびその他の要因によって異なる場合があります。関数 helperFRSReceiverConfig に移動し、CTCSSDecodeBlockLength フィールドの値を変更して、初期化関数のブロックの長さを変更することをお勧めします。これにより、トレードオフを観察して、送信機と受信機の両方の最適値を検出することができます。
FRS/GMRS Signal Generator
をソースとして選択した場合、このブロックの CTCSS tone amplitude
パラメーターを変更し、これが信号スペクトルにどのように影響するかを観察できます。
付録
この例では以下のスクリプトが使用されています。