このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
フレーム同期を使用した有効な伝送データの検出
以下の例では、Stateflow® チャートで複素数データを処理する方法を説明します。モデルは複素数データのベクトルを使用して、通信システムからの信号に見られる固定パターンを検出します。
フレーム同期
通信システムでは、フレーム同期は、データ フレームで構成される伝送で有効なデータを検出する方式です。フレーム同期を支援するため、送信側は各データ フレームの先頭に固定データ パターンを挿入して、有効なデータの開始を示します。受信側は固定パターンを検索して、入力データと固定パターンの相関が高い場合に、フレーム同期を実施します。
この例では Stateflow チャート Frame Sync Controller は複素数の入力信号 IQ
を受け取り、固定データ パターン trainSig
を検索します。データ フレームの開始を認識した後、チャートは有効なデータを複素数の出力信号 frame
に格納します。この出力信号は、有効なデータ点と搬送波の位相角間の複素数積のベクトルです。その後、チャートは有効なデータを Frame Processor サブシステムに渡します。
このモデルには通信システムの残りの部分は含まれないことに注意してください。
データ フレームの同期
Frame Sync Controller チャートの look_for_sync
ステートは、フレーム同期アルゴリズムを開始します。各タイム ステップで、MATLAB® 関数 correlate
が入力信号 IQ
と固定データ パターン trainSig
の相関を計算します。関数は複素数相関を corr
、その絶対値を corrAbs
として保存します。corrAbs
の値は相関のパーセンテージであり、範囲は 0 から 100 パーセントになります。0 パーセントには相関がありません。100 パーセントは完全相関を示します。
corrAbs
が 50 パーセントを上回った場合は相関が高く、チャートはデータ フレームの開始点を記録します。チャートはget_payload
ステートに遷移して、220 の有効なデータ点を複素数ベクトルframe
に保存します。corrAbs
が 300 の連続データ点にわたり 50 パーセント未満にとどまった場合、フレームの同期アルゴリズムがリセットされます。チャートはframe_out
ステートに遷移して、Frame Processor サブシステムをトリガーします。その後、チャートはlook_for_sync
ステートに戻ります。
スカラー データのベクトルへの保存
Frame Sync Controller チャートがデータ フレームの開始を認識すると、get_payload
ステートは MATLAB 関数 get_carrier_phase
を呼び出して搬送波の位相角を計算します。ステートはこの位相角をローカル データ オブジェクト phasor
として保存します。その後、ステートは IQ*phasor
の積のスカラー値をベクトル frame
に集めます。インデックス カウンターとして余分な変数を使用しなくてもよいように、このステートは count
演算子を使ってこのベクトルにインデックス付けを行います。
ステートがアクティブになると、
entry
アクションはframe
の最初の要素に積の初期値を保存します。後続するタイム ステップでは、
during
アクションはこの積の以降の値をframe
の連続する要素に保存します。インデックス式count(true)
は、ステートがアクティブになってからのタイム ステップ数を返します。
220 タイム ステップ後、遷移条件 [after(220,tick)]
は true
になり、チャートはステートから出ます。チャートが frame_out
ステートに入る時点で、ベクトル frame
には 220 個の積の値が含まれています。チャートはこのデータを Frame Processor サブシステムに渡し、その後 look_for_sync
ステートに戻ります。