Main Content

Preamble Detector

データ パケットのプリアンブルの検出

  • Preamble Detector block

ライブラリ:
Communications Toolbox / Synchronization

説明

Preamble Detector ブロックはデータ パケットのプリアンブルの最後を検出します。プリアンブルは一連のシンボルまたはビットで、パケット ベースの通信システムで使用され、パケットの開始を示します。パケットはプリアンブル データとユーザー データで構成されています。パケットのユーザー データ部分の長さはシミュレーションの実行中に変動することがあります。

このアイコンには、利用可能な のすべての端子を使用したブロックが表示されています。

すべて展開する

detect_binary_preamble モデルは 40 ビットのパケットを作成し、これは 2 つの 6 ビット プリアンブル シーケンスと 2 つの 14 ビット ランダム データ シーケンスから構成されます。Preamble Detector ブロックを使用してプリアンブルの位置を検出します。

モデルを実行します。Preamble Detector ブロックによって出力された 6 および 26 の値は、検出されるべきプリアンブルの最後のシンボルのインデックスを表しています。時々、Bernoulli Binary Generatorブロックのいずれかで生成されたランダム シーケンスにプリアンブルと同じパターンが含まれることがあります。この場合、さらにプリアンブルを検出したことが報告されます。プリアンブルを長くすることで、そのような偽警報の頻度を減らすことができます。

Preamble index locations found:

ans =

     6
    26

detect_complex_preamble.slx モデルは、16 QPSK 変調シンボルから成るプリアンブルを生成し、それを 84 QPSK 変調シンボルから成るランダム シーケンスの前に追加することで、100 個のシンボル パケットを作成します。パケットはノイズを含むチャネルを通過し、Preamble Detector ブロックに入力されます。プリアンブルの位置と検出メトリクスの出力が、Time Scope ブロックにより表示されます。

検出しきい値を 3 に設定してモデルを実行します。

多数のプリアンブル位置が 1 秒の各フレームに表示されます。これは、検出メトリクスが各フレームで複数回しきい値を超えているためです。検出しきい値を大きくすると、誤って検出されるプリアンブルの数を減らすことができます。プリアンブルは 1 つのみであるため、各フレームに 1 つの位置のみが示されるのが理想的です。検出メトリクスのプロットを観察すると、しきい値が 15 であれば、ピーク検出メトリクスが選択されてプリアンブル位置が正しく検出されると考えられます。

検出しきい値を 3 から 15 に変更します。モデルを再実行します。各フレームのプリアンブル位置のインデックスは 16 です。これは、プリアンブルの末尾を示しています。

端子

入力

すべて展開する

シンボルまたはビットの入力データ。スカラーまたは列ベクトルとして指定します。空でも構いません。入力データには複数のパケットを含めることができます。この端子はブロックで名前なしになります。

データ型: single | double | Boolean | int8 | uint8
複素数のサポート: あり

出力

すべて展開する

最後のプリアンブル シンボルのインデックス。入力データのデータ型に合わせてスカラーまたは列ベクトルとして返されるか、空の値が返されます。

  • [検出] パラメーターが All に設定されている場合、Idx は検出された各プリアンブルの最後の要素に対応するインデックスを出力します。

  • [検出] パラメーターが First に設定されている場合、Idx は最初に検出されたプリアンブルの最後の要素に対応するインデックスを出力します。

この端子は DtMt 端子が有効になるまでは名前なしになります。

検出メトリクス。入力データ パケット In と同じ次元およびデータ型のスカラーまたは列ベクトルとして返されます。

  • プリアンブルまたは入力データのいずれかが複素数の場合、検出メトリクスはプリアンブルと入力データの相互相関の絶対値です。

  • プリアンブルと入力データの両方が実数の場合、検出メトリクスはプリアンブルと入力データの相互相関です。

依存関係

この端子を有効にするには、[入力] パラメーターを [シンボル] に設定し、[Output detection metric] パラメーターを選択します。

パラメーター

すべて展開する

ブロック パラメーターを対話的に編集するには、プロパティ インスペクターを使用します。Simulink® ツールストリップの [シミュレーション] タブの [準備] ギャラリーで [プロパティ インスペクター] を選択します。

入力タイプ。[Symbol] または [Bit] として指定します。

  • バイナリ入力の場合は、このパラメーターを [Bit] に設定します。

  • その他すべての入力の場合は、このパラメーターを [Symbol] に設定します。

実行速度の詳細については、ヒントを参照してください。

プリアンブル シーケンス。列ベクトルとして指定します。

  • [Input] パラメーターが [Bit] に設定されている場合は、プリアンブルは、バイナリにしなければなりません。

  • [Input] パラメーターが [Symbol] に設定されている場合は、プリアンブルは任意の実数または複素数シーケンスです。

検出しきい値。非負のスカラーとして指定します。検出メトリクスがしきい値以上の場合、ブロックはプリアンブルを検出して Idx を更新します。

調整可能: Yes

依存関係

このパラメーターを有効にするには、[入力] パラメーターを [シンボル] に設定します。

このパラメーターを選択し、検出メトリクスを出力して、DtMt 出力端子を有効にします。

依存関係

このパラメーターを有効にするには、[入力] パラメーターを [シンボル] に設定します。

返された検出。[All] または [First] として指定します。[All] を指定すると、検出したプリアンブルすべてを返します。[First] を指定すると、最初の検出したプリアンブルのみを返します。

調整可能: Yes

実行するシミュレーションのタイプ。[コード生成] または [インタープリター型実行] として指定します。

  • コード生成 — 生成された C コードを使用してモデルをシミュレートします。シミュレーションの初回実行時、Simulink は対象ブロックの C コードを生成します。このモデルは、モデルが変更されない限り以降のシミュレーションで C コードを再利用します。このオプションを使用すると、シミュレーションの起動時間は長くなりますが、以降のシミュレーションの速度は [インタープリター型実行] オプションを使用した場合よりも速くなります。

  • インタープリター型実行 — MATLAB® インタープリターを使用してモデルをシミュレートします。このオプションを使用すると、起動時間が短縮されますが、以降のシミュレーションの速度は [コード生成] オプションを使用した場合よりも遅くなります。このモードで、ブロックのソース コードをデバッグできます。

詳細については、シミュレーション モード (Simulink)を参照してください。

ブロックの特性

データ型

Boolean | double | integer | single

多次元信号

いいえ

可変サイズの信号

はい

ヒント

  • Preamble Detector ブロックをより高速に実行するには、[シミュレーション実行方法] パラメーターを以下のように設定します。

    • [コード生成] ([入力] パラメーターが [シンボル] に設定されている場合)

    • [インタープリター型実行] ([入力] パラメーターが [ビット] に設定されている場合)

アルゴリズム

ビット入力

入力データがビットで構成されている場合、プリアンブル検出器はパターンの完全一致を使用します。

シンボル入力

入力データがシンボルで構成されている場合、プリアンブル検出器は相互相関アルゴリズムを使用します。有限インパルス応答 (FIR) フィルターの場合は係数がプリアンブルから指定され、入力データとプリアンブルとの相互相関が計算されます。入力サンプルのシーケンスがプリアンブルと一致すると、フィルター出力がピークに達します。ピークのインデックスは、入力データのプリアンブル シーケンスの最後に対応します。FIR フィルター アルゴリズムの詳細については、Discrete FIR Filter (Simulink) を参照してください。

指定された検出しきい値以上の相互相関値がピークとして報告されます。

  • 検出しきい値が低すぎる場合、アルゴリズムは偽のピークを検出します。または、極端なケースでは、入力サンプルと同数のピークが検出されます。

  • 検出しきい値が高すぎる場合、アルゴリズムはピークを見落とします。または、極端なケースでは、ピークがまったく検出されません。

したがって、検出しきい値の選択は重要です。

拡張機能

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2016b で導入