Main Content

このページは前リリースの情報です。該当の英語のページはこのリリースで削除されています。

遅延

この節の概要

モデルによっては、モデルの一部にあるデータがモデルの他の部分にある信号に影響を与えるために必要な時間を知ることが必要な場合があります。たとえば、エラー レート計算機を設定する場合、送信側と受信側の間の遅延を指定しなければなりません。この遅延の計算を間違うと、エラー レート計算機は一致しないデータの組み合わせを処理し、その結果、無意味な結果を返します。

この節では、マルチレート モデルおよびブロックのシーケンス内での合計遅延が個々のブロックからの複数の遅延で構成されるモデルでの遅延の計算について説明します。この節では、モデル内の遅延の取り扱いに役立つよう、Find Delay ブロックと Delay ブロックの使用方法についても説明します。

遅延に関するその他の参考資料

このドキュメンテーションの他の部分にも遅延についての説明があります。遅延の取り扱いまたは特定タイプのブロックの遅延に関する詳細については、以下を参照してください。

この節よりも簡単な例題での遅延については、以下を参照してください。

遅延の原因

ブロックの中には現在の入力値だけを使用して現在の出力値を決定できるものがありますが、現在の出力値を計算するために、複数のタイム ステップからの入力値を必要とするブロックもあります。後者の場合、ブロックに遅延が発生します。この場合の例には、Derepeat ブロックがスカラー信号からの 5 つのサンプルの平均をとる必要があるものがあります。このブロックは合計 5 つのサンプルを受信するまで平均計算を遅延させなければなりません。

一般に、モデル内の遅延には、次のようなさまざまな原因があります。

  • デジタル復調器

  • 畳み込みインターリーバーまたはデインターリーバー

  • イコライザー

  • Viterbi Decoder ブロック

  • バッファー処理、ダウン サンプリング、デリピート、および類似の信号処理

  • Delay、Variable Integer Delay などの明示的な遅延ブロック

  • フィルター

以下ではこの種の遅延の原因についても説明します。

ADSL の例のモデル

この節では256 チャネル ADSLの例について調べ、モデルの Error Rate Calculation ブロックの 1 つにある [Receive delay] パラメーターの正しい値を計算する方法を示します。モデルには畳み込みインターリーバーによる遅延と明示的な遅延ブロックが含まれています。

ADSL の例では、データの前に 2 つの並列パスがあり、各パスの終端近くには Error Rate Calculation ブロックがあります。第 1 のパスにインターリーバーはなく、遅延はゼロです。第 2 のパスは第 1 のパスと比べて遅延が生じます。この原因は畳み込みインターリーバーとデインターリーバーのペアおよび固定の遅延です。Error Rate Calculation ブロックの [Receive delay] パラメーターには、与えられたパスの遅延を反映しなければなりません。この後の節ではモデル内のフレーム周期について観測を行い、次にインターリーブ データ パスの遅延について検討します。

モデル内のフレーム周期

個々の遅延について調べる前に、モデル全体での大半の信号線が同じフレーム周期を共有していることに着目してください。[デバッグ] タブで、[情報のオーバーレイ] を展開します。[サンプル時間] セクションで、フレーム周期 (サンプルベース信号の場合はサンプル周期) に基づいてブロックと信号を色分けするため [色] を選択します。モデルの上位レベルにあるすべての信号線は同じ色になります。これはすべてが同じフレーム周期であることを示します。共通のフレーム周期があるので、フレーム数は、これらの信号を処理するブロックでの遅延を測定する便利な単位になります。パスに沿った累積遅延の計算では、加重平均 (各フレーム周期で加重されたフレームの数) は和に還元されます。

インターリーブ データ用のパス

モデルの送信側では、インターリーブ パスは下図に黄色で示されている、下方の分岐になります。同様に、モデルの受信側のインターリーブ パスも下方の分岐になります。インターリーブ パスの終端近くの Error Rate Calculation ブロックでは、Interleaved BER のラベルの付いた値を計算します。

次の表に、インターリーブしないデータ用のパスにおける遅延をまとめます。次の節では遅延についてもう少し詳しく説明し、Error Rate Calculation ブロックに相対的な合計遅延が 1 フレーム、つまり 776 サンプルになる理由を説明します。

ブロック遅延 (個々のブロックの出力サンプル数)遅延 (フレーム数)遅延 (Error Rate Calculation ブロックへの入力サンプル数)
Convolutional InterleaverConvolutional Deinterleaver のペア40 1 (組み合わせ)776 (組み合わせ)
Delay (Simulink)800
"合計"1776

インターリーブ.  第 2 のパスでは、送信側の Convolutional Interleaver ブロックと受信側の Convolutional Deinterleaver ブロックによる遅延は、Rows of shift registers × Register length step × (Rows of shift registers – 1) です。構成により、ADSL の例のインターリーバーとデインターリーバーのペアによる遅延は、5 × 2 × (5 – 1) = 40 です。

Delay ブロック.  インターリーブ パスの受信部には Delay (Simulink) ブロックも含まれています。このブロックは 800 サンプルの遅延を挿入するように設定されます。遅延ブロックは、インターリーバー ブロックおよびデインターリーバー ブロックと同じサンプル時間をもちます。このため、インターリーバー、デインターリーバーからの遅延と明示的な遅延の合計は 840 サンプルになります。これらの 840 サンプルは、Delay ブロックを出るデータの 1 フレームを構成します。

遅延の加算.  ADSL の例のインターリーブ パスにあるその他のブロックでは遅延は発生しません。インターリーバーとデインターリーバーのペアによる遅延と Delay ブロックからの遅延を加算すると、インターリーブ パスの合計遅延が 1 フレームになることを示します。

Error Rate Calculation ブロックに相対的な合計遅延.  Interleaved BER のラベルの付いた値を計算する Error Rate Calculation ブロックには、1 フレームに相当する [Receive delay] パラメーター値が必要です。[Receive delay] パラメーターはサンプル単位で測定され、Error Rate Calculation ブロックへの各入力フレームには 776 サンプルが含まれます。また、インターリーブ パスで遅延を発生させるすべてのブロックの出力端子でのフレーム レートは、Error Rate Calculation ブロックの入力でのフレーム レートに等しくなります。したがって、[Receive delay] パラメーターの正しい値は 776 サンプルです。

パンクチャド符号化モデル

この節では、復号化、ダウン サンプリング、フィルター処理からの遅延を含むパンクチャド符号化モデルについて説明します。モデルにある 2 つの Error Rate Calculation ブロックは、その [Receive delay] パラメーターが正確にモデルの遅延に反映される場合にのみ正しく機能します。

モデル内のフレーム周期

個々の遅延を調べる前に、[タイミング凡例] ペインがまだ開いていない場合は、[デバッグ] タブで [情報のオーバーレイ] を展開します。[サンプル時間] セクションで、[凡例] を選択します。[タイミング凡例] ペイン、[強調][すべて] を選択します。モデルの右端部分だけが、モデルの他の部分と色が違っています。これは、この右端部を除くモデルのすべての信号とブロックが同じフレーム周期を共有していることを意味します。その結果、この大勢を占めるフレーム レートのフレーム数は、これらの信号を処理するブロックでの遅延の測定に便利な単位になっています。パスに沿った累積遅延の計算では、加重平均 (各フレーム周期で加重されたフレームの数) は和に還元されます。

黄色のブロックはマルチレート システムを表し、これに対し AWGN Channel ブロックはモデルの大半の他のブロックよりも高いフレーム レートで実行されます。

Inner Error Rate ブロック

Inner Error Rate というラベルの付いたブロックがモデルの中央近くにありますが、これは Comm Sinks ライブラリから Error Rate Calculation ブロックをコピーしたものです。これは、パンクチャド畳み込み符号を除いたモデルの部分に対するビット エラー レートを計算します。このブロックの 2 つの入力信号間のモデル部分には、Tx Filter および Rx Filter からの遅延が発生しています。この節では、Inner Error Rate ブロックの [Receive delay] パラメーターが合計遅延16 になる理由を説明します。

Tx Filter ブロック.  Tx Filter のラベルの付いたブロックは、 Raised Cosine Transmit Filter ブロックのコピーです。これは入力信号を係数 8 で内挿し、ルート レイズド コサイン フィルターを適用します。フィルターでは [Filter span in symbols] パラメーターの値は 6 です。これは、その群遅延が 3 シンボルであることを示します。このブロックのサンプルレートは入力端子から出力端子の間で増加するので、シミュレーション開始時にゼロの初期フレームを出力する必要があります。この入力フレーム サイズは 2 なので、ブロックの合計遅延は 2 + 3 = 5 シンボルになります。これは、ブロックの入力端子で 5 サンプルに対応します。

Rx Filter ブロック.  Rx Filter のラベルの付いたブロックは、 Raised Cosine Receive Filter ブロックのコピーです。これは入力信号を係数 8 で内挿し、別のルート レイズド コサイン フィルターを適用します。フィルターでは [Filter span in symbols] パラメーターの値は 6 です。これは、その群遅延が 3 シンボルであることを示します。フィルター ブロックの出力では、3 シンボルは 3 サンプルに対応します。

QPSK Demodulator ブロック.  QPSK Demodulator Baseband のラベルが付いたブロックは、複素 QPSK 信号を受信し、各複素数入力について 2 ビットを出力します。この出力ビットへの変換により、ブロックの入力における累積遅延が 2 倍になります。

遅延の加算.  Inner Error Rate ブロックの 2 つの入力信号間のモデル部分にある他のブロックでは遅延は発生しません。したがって合計遅延は、(2 + 3 + 3) × 2 = 16 サンプルです。この値は Inner Error Rate ブロックの [Receive Delay] パラメーターとして使用できます。

Outer Error Rate ブロック

Outer Error Rate というラベルの付いたブロックがモデルの左にありますが、これは Comm Sinks ライブラリから Error Rate Calculation ブロックをコピーしたものです。これは、パンクチャド畳み込み符号を含むモデル全体のビット エラー レートを計算します。遅延は、Tx Filter、Rx Filter および Viterbi Decoder ブロックで発生します。この節では、Outer Error Rate ブロックの [Receive delay] パラメーターが合計遅延108 になる理由を説明します。

Filter ブロックと Downsample ブロック.  Tx Filter、Rx Filter および Downsample ブロックの組み合わせ遅延は 16 サンプルです。詳細については、Inner Error Rate ブロックを参照してください。

Viterbi Decoder ブロック.   Viterbi Decoder ブロックは符号化率 3/4 のパンクチャド符号を復号化するので、実際には入力での遅延が減少します。この減少は 16 × 3/4 = 12 サンプルとして与えられます。

Viterbi Decoder ブロックは畳み込み符号を復号化し、そのアルゴリズムがトレースバック パスを使用するため遅延を発生します。このブロックはフレームベース信号を処理し、[Operation mode][Continuous] に設定されています。このため出力サンプル内で測定した遅延は、[Traceback depth] パラメーター値 96 に等しくなります (遅延量については、Viterbi Decoder ブロックのリファレンス ページで説明されています)。Viterbi Decoder ブロックの出力は正確に Outer Error Rate ブロックの入力の 1 つであるため、遅延が 96 サンプルになることは、相当するフレーム数に変換しないでも容易に検討できます。

Outer Error Rate ブロックに相対的な合計遅延.  Outer Error Rate ブロックには、システムのすべての遅延の合計である [Receive delay] パラメーター値が必要です。この合計遅延は 12 + 96 = 108 サンプルです。

Find Delay ブロックの使用

これまでの検討で、モデル内のある種のブロックが特定の [Receive delay] パラメーター値をもつ理由を説明しました。Find Delay ブロックを使用すれば、これらの数値を個別に求めることができます。このセクションでは、256 チャネル ADSLのモデル例を使用して信号遅延を検出する方法について説明します。パンクチャド符号化モデルで説明したパンクチャド畳み込み符号化の例に対して、これらの手法を同様に適用できます。

Find Delay ブロックを使用して正しい受信遅延を決定する

インターリーブ データ用のパスから、インターリーブ データ用のパスの遅延は 776 サンプルであることを思い起こしてください。Find Delay ブロックに遅延値を計算させるには、以下の手順を実行します。

  1. Find Delay ブロックと Display ブロックを、モデル内の、Interleaved BER のラベルの付いた値を計算する Error Rate Calculation ブロックの近くに挿入します。

  2. 以下に示すように、ブロックを接続します。

  3. Find Delay ブロックの [Correlation window length] パラメーターを 776 より十分大きい、2000 などの値に設定します。

    メモ

    [Correlation window length] には十分な大きさの値を使用しなければなりません。そうでない場合、Find Delay ブロックで生成される値は正しい値で安定化しません。

  4. シミュレーションを実行します。

新しい Display ブロックは、予想どおり 776 を表示します。

遅延の操作

遅延と整列の問題.  一部のモデルでは、遅延の計算に加えて遅延の操作も必要です。たとえば、あるモデルでブロック符号化器と対応する復号化器の間で遅延が発生した場合、復号化器は受信コードワード間の境界の解釈に失敗し、結果的に無意味な結果を返してしまう可能性があります。より一般的には、(インターリーブ、ブロック符号化、ビット/整数変換などの) 対になるブロック指向操作コンポーネント間のパスが遅延要因となる操作 (遅延の原因 にリストされている操作など) を含む場合、そのような状況が発生する可能性があります。

この問題を回避するために、符号化器と復号化器の間に適切な量の追加の遅延を挿入できます。モデルがエラー レートを計算している場合、遅延の説明にあるように、遅延の追加はプロセスに影響を与えます。この節では例を使って、さまざまな状況における遅延操作の目的、方法、および影響を説明します。

この節では、単純な形式で問題の本質を捉えられるように小規模なモデルを使用しながら、ブロック指向操作の遅延に対する感度を説明します。次に、Display ブロックに関連する値が表示されるように、シミュレーションを実行します。

このモデルでは、2 つの符号化ブロックがブロック符号を作成し、復号化しています。Deley ブロックの 2 つのコピーが符号化器と復号化器の間の遅延を作成しています。この説明モデルでは、2 つの Delay ブロックの目的は異なります。

  • Inherent Delay ブロックは、符号化器と復号化器の間で発生し得る、任意の遅延要因ブロックを表します。より現実的なモデルで発生する可能性のある原因の一覧は、遅延の原因を参照してください。

  • Added Delay ブロックは明示的な遅延として符号化器と復号化器の間に挿入され、遅延総量を適正化します。たとえば、256 チャネル ADSLのモデル例にはこの目的に使用される Delay ブロックがあります。

問題の観察.  既定では、Inherent Delay ブロックと Added Delay ブロックの [Delay] パラメーターの設定は、それぞれ 10 です。これは、一部の操作により生じた符号化器と復号化器の間の 1 ビットの遅延に対し、補正されていない状況を表しています。符号化器と復号化器間の合計遅延は 1 ビットです。Word および Delay Word のブロックを見ると、符号化器を出たコードワードが、復号化器に入るまでに 1 ビット下方にシフトされていることが分かります。復号化器はコードワードの境界がフレームの先頭にではなく、2 番目のビットにある信号を受信します。つまり、コードワードとそれを保持するフレームが互いに整列していません。

Hamming Decoder ブロックでは、それぞれのフレームは新しいコードワードを開始する前提であるため、この不整合は問題になります。その結果、符号化器から送信されたある出力フレームの最終ビットと、それに続く次の出力フレームの最初の 6 ビットで構成されたワードが復号化対象になります。Error Rate Display ブロックを見ると、この復号化操作によるエラー レートが 1/2 に近いことがわかります。つまり、復号化器が元のメッセージを正しく再生することはほとんどありません。

たとえば、文末記号を次の文の先頭の単語の後に移動させて、段落を壊してしまったとします。新しい文は文末記号の後に開始されるという前提のままでそのような段落を読もうとすると、それぞれの文の先頭と末尾を誤認することになります。その結果、段落の内容を理解できなくなる可能性があります。

遅延の程度によって復号化器の性能がどのように影響されるかを見るために、Added Delay ブロックの [Delay] パラメーターと Error Rate Calculation ブロックの [Receive delay] パラメーターを変化させて、シミュレーションを再実行します。パラメーター値の組み合わせによって得られるエラー レートはその大半がほぼ 1/2 です。さらに、

[tx rx]

と MATLAB コマンド ラインに入力して送受信データの検証を行っても、送信データと受信データの間に相関関係が見つからない場合があります。

遅延の修正

いくつかのパラメーター値の組み合わせでは、遅延がシステムに適合するために、エラー レートがゼロになります。次に例を示します。

  • Added Delay ブロックで [Delay]6 に設定します。

  • Error Rate Calculation ブロックの [Receive delay]4 に設定します。

  • シミュレーションを実行します。

  • MATLAB コマンド ラインで [tx rx] と入力します。

Error Rate Display ブロックの上部の数字はエラー レートがゼロであることを示しています。復号化器はそれぞれの送信メッセージを正しく復元しました。ただし、Word ブロックと Displayed Word ブロックに表示された値は一致していません。符号化器出力と復号化器の入力が互いにどのように関連しているかは、すぐには明らかになりません。問題を明確にするために、MATLAB コマンド ウィンドウの出力を調べます。最初の列 (tx) のシーケンスが 2 番目の列 (rx) の 4 行下がった位置から表示されています。これを確認するには、

isequal(tx(1:end-4),rx(5:end))

と MATLAB コマンド ラインに入力して、結果が 1 (true) であることを確認します。この最後のコマンドで、最初の列と 2 番目の列のシフトされた値が一致するかどうかをテストします。4 行分の MATLAB ベクトル rx のシフトは Error Rate Calculation ブロックの [Receive delay] パラメーターが 4 に設定された場合の動きに相当します。

要約すると、[Delay] パラメーターと [Receive delay] パラメーターにこれらの特別な値が設定されている場合には、次の理由によりうまく動作します。

  • Inherent Delay ブロックと Added Delay ブロックが組み合わされたことにより、符号化された信号の遅延がコードワードの一部にとどまらず全体に及んでいます。つまり、コードワードの境界が入力フレームの先頭に位置するという復号化器の前提が満たされるため、ワードは正しく復号化されます。ただし、符号化された信号の遅延によって、復元されたメッセージは 1 ワード分、つまり 4 ビット遅れて表示されています。

  • Error Rate Calculation ブロックは、送信された信号の各ワードと受信された信号の 4 ビット後ろのデータを比較することによって、システムにおける 1 ワードの遅延を補正します。この方法によって、復号化器のエラー レートがゼロであることが正しく判断されます。

    メモ

    エラー レートをゼロにする要因はパラメーター値のみに限りません。このモデルの符号は (7, 4) ブロック符号で、固有の遅延値は 1 であるため、[Delay] パラメーターと [Receive delay] パラメーターには、それぞれ任意の正の整数 k をもつ 7k-1 と 4k を設定できます。重要なことは、固有の遅延 (1) と追加された遅延 (7k-1) の合計がコードワード長 (7) の倍数になることです。

ブロック符号のワードの整列.  ADSL の例のモデルの ADSL の例では、ブロック復号化器への入力データの各フレームにおいて、コードワード境界がそのフレームの先頭に整列されるようにモデルの遅延を操作する必要があることを示しています。それは、ブロック符号化器とブロック復号化器の間のパスに遅延の原因となる、畳み込みインターリーブ操作が含まれているためです。この節では、モデルが畳み込みデインターリーバーとブロック復号化器の間の遅延操作に Delay ブロックを使用する理由と、Delay ブロックが前述のように構成される理由について説明します。

コードワードの不整列

ADSL の例では、Convolutional Interleaver ブロックおよび Convolutional Deinterleaver ブロックはそれぞれ、Scrambler & FEC サブシステムの後、 Descrambler & FEC サブシステムの前に表示されます。これらの 2 つのサブシステムはリード・ソロモン符号化の実行ブロックを含み、この符号化ブロックでは、入力データの各フレームはワードの途中からではなく、新しいワードから始まることを前提としています。

インターリーブ データ用のパスで説明されているように、インターリーバーとデインターリーバーのペアにおける遅延は 40 サンプルです。ただし、Descrambler & FEC サブシステムに入力されるフレームのサイズは 840 であり、40 は 840 の倍数ではありません。その結果、Convolutional Deinterleaver ブロックから出る信号は、最初のエントリが新しいコードワードの先頭を "表さない" フレームになります。問題の観察で説明されているように、コードワードとそれを含むフレームにこうした不整列があると、復号化器は正しく復号化を実行できなくなります。

遅延の挿入による整列の修正

ADSL の例では、ワード境界を 840 サンプルのフレームの 41 番目のサンプルから後続フレームの最初のサンプルに移動することによって、問題を解決しています。ワード境界の移動は信号の遅延と等価です。この目的のために、例では Convolutional Deinterleaver ブロックと Descrambler & FEC サブシステムの間に Delay ブロックが配置されています。

Delay ブロックの [Delay] パラメーターは 800 です。これは、1 つの 840 サンプル フレームの 41 番目のサンプルを、次の 840 サンプルのフレームの先頭のサンプルに移動させるために必要な最小サンプル数です。つまり、(インターリーブ/デインターリーブのプロセスに由来する) 固有の 40 サンプルの遅延と人為的な 800 サンプルの遅延の合計は、データ フレームの一部ではなく全体と等しくなります。

この 800 サンプルの遅延は、モデルの他の部分、特にいずれかの Error Rate Calculation ブロックの [Receive delay] パラメーターにも影響します。遅延がこのパラメーターの値に与える影響に関する詳細については、インターリーブ データ用のパスを参照してください。

Find Delay ブロックの使用

前節では、コードワードとそれを含むフレームの不整列を修正するために、800 サンプルの遅延が必要な理由について説明しました。Descrambler & FEC サブシステムではフレーム境界がワード境界になければならないことを認識していれば、Find Delay ブロックを使用して、独自に 800 という数字に到達できたはずです。以下の手順を実行します。

  1. モデルに Find Delay ブロックと Display ブロックを挿入します。

  2. Convolutional Interleaver ブロックの入力を Find Delay ブロックの入力 sRef に接続する分岐線を作成します。

  3. Convolutional Deinterleaver ブロックの出力を Find Delay ブロックの入力 sDel に接続する別の分岐線を作成します。

  4. Find Delay ブロックの出力 delay を新しい Display ブロックに接続します。モデルの変更された部分は、次の図のようになります (変更部分が強調されるように、主要なブロックが影付きで表示されています)。

  5. モデルで各信号の次元を表示します。[デバッグ] タブで、[情報のオーバーレイ] を展開します。[信号] セクションで、[信号の次元] を選択します。

  6. シミュレーションを実行します。

新しい Display ブロックは、今度は値 40 を表示します。また、信号次元の画面には、Convolutional Deinterleaver ブロックからの出力が長さ 840 のフレームとして表示されています。これらの結果から、Convolutional Interleaver ブロックと Convolutional Deinterleaver ブロックの間のシーケンスによって、840 サンプルのフレームを 40 サンプル分遅延させていることがわかります。800 サンプル分の遅延を追加することによって、合計遅延は 840 になります。これで、遅延の合計がフレーム長の倍数になるため、デインターリーブされた遅延データを復号化できます。

インターリーブにおけるワードの整列.  この節では、デインターリーバーの前に遅延を操作する例について説明します。これはインターリーバーとデインターリーバーの間のパスが復調に起因する遅延を伴うためです。

モデルにはブロック符号化、ヘリカル インターリーブ、および GMSK 変調が含まれます。次の表は、モデル内のブロック単体における遅延の要約です。

ブロック遅延 (個々のブロックの出力サンプル数)参照
GMSK Demodulator Baseband 16 デジタル復調での遅延
Helical Deinterleaver 42 畳み込みインターリーバーの遅延
遅延 5 Delay リファレンス ページ

インターリーブされたワードの不整列

このモデルでは、復調処理によって、インターリーバーとデインターリーバーの間に遅延が発生します。デインターリーバーは、入力データの各フレームが新しいワードから開始されることを前提とするため、インターリーバーとデインターリーバーの間の合計遅延は不完全なフレームを含まず、1 つ以上の完全なフレームで構成されることが重要です。

復調器の遅延は、16 出力サンプルです。しかし、Helical Deinterleaver ブロックに入力されるフレームのサイズは 21 であり、16 は 21 の倍数ではありません。その結果、GMSK Demodulator Baseband ブロックから出る信号は、最初のエントリが新しい符号語の先頭を "表さない" フレームになります。問題の観察で説明されているように、ワードとこれを含むフレームとの間のこのような不整列はデインターリーバーの動作を妨げます。

遅延の挿入による整列の修正

このモデルでは、21 サンプルのフレームの 17 番目のサンプルから、次のフレームの最初のサンプルにワード境界を移動させます。このワード境界の移動は、5 サンプル分の信号遅延と等価です。GMSK Demodulator Baseband ブロックと Helical Deinterleaver ブロックの間に配置された Delay ブロックがそのような遅延を実現します。Delay ブロックでは、[Delay] パラメーターを 5 に設定します。

復調器と Delay ブロックの効果を組み合わせることによって、インターリーバーとデインターリーバーの間の合計遅延は完全な 21 サンプルのデータ フレームになり、部分フレームにはなりません。

ブロック コードワードの整列のチェック

インターリーバーとデインターリーバーによって、Helical Deinterleaver ブロックからの出力時には、全体で 42 サンプルの遅延が発生します。デインターリーバーからの遅延出力は次のリード・ソロモン復号化器に送信されますが、復号化器は入力データの各フレームが新しいワードから開始されることを前提とするため、符号化器と復号化器の間の合計遅延は不完全なフレームを含まず、1 つ以上の完全なフレームで構成されることが重要です。

この場合には、42 サンプルの遅延は正確に 2 フレームに相当します。そのため、Helical Deinterleaver ブロックと Binary-Output RS Decoder ブロックの間に Delay ブロックを挿入する必要はありません。

Error Rate Calculation ブロックを構成するための遅延の計算

モデルには 2 つの Error Rate Calculation ブロックがあり、Channel Error Rate と System Error Rate とラベル付けされています。それぞれのブロックには [Receive delay] パラメーターがあり、ブロックの Tx 信号と Rx 信号の間のパスで発生する遅延を反映していなければなりません。次の表は、2 つのブロックの [Receive delay] の値を示しています。

ブロック受信遅延値理由
Channel Error Rate 16 GMSK Demodulator Baseband ブロックの遅延 (サンプル単位)
System Error Rate 15*3 3 つの 15 サンプル フレーム: GMSK Demodulator Baseband ブロックと Delay ブロックからのフレームが 1 つ、インターリーバーとデインターリーバーのペアからのフレームが 2 つ

連結符号のワードの整列.  この節では、連結符号復号化器内の 2 つの部分の間の遅延を操作する例について説明します。これは、最初の部分でビタビ復号化による遅延が含まれるのに対し、2 番目の部分ではフレーム境界とワード境界の一致が前提とされているためです。地上デジタル ビデオ放送 (DVB-T)の例のブロックと畳み込み符号を使用しますが、設計全体が大幅に簡略化されます。

モデルには短縮ブロック符号とパンクチャされた畳み込み符号が含まれます。モデルのすべての信号およびブロックは、同一のフレーム周期を共有します。次の表は、モデル内のブロック単体における遅延の要約です。

ブロック遅延 (個々のブロックの出力サンプル数)
Viterbi Decoder 136
Delay 1496 (つまり、1632 - 136)

ブロック コードワードの不整列

このモデルでは、Viterbi 復号化処理によって、Integer to Bit Converter ブロックと Bit to Integer Converter ブロックの間で遅延が発生します。後者のブロックでは、入力データの各フレームは新しい 8 ビットのワードから開始されることを前提とするため、2 つのコンバーター ブロック間の合計遅延は不完全なフレームを含まず、1 つ以上の完全なフレームで構成されることが重要です。

Viterbi Decoder ブロックの遅延は、136 出力サンプルです。しかし、Bit to Integer Converter ブロックに入力されるフレームのサイズは 1632 です。その結果、Viterbi Decoder ブロックから出る信号は、最初のエントリが新しい符号語の先頭を "表さない" フレームになります。問題の観察で説明されているように、ワードとそれを含むフレームの不整列は、コンバーター ブロックの動作を妨げます。

メモ

このモデルの外部復号化器 (Integer-Output RS Decoder) でも、入力データの各フレームが新しいコードワードから開始されることを前提としています。そのため、このモデルに不整列の問題があると、2 値信号と整数値信号間の変換のみならず、多くの連結符号の設計にも影響します。

遅延の挿入による整列の修正

このモデルでは、1632 サンプルのフレームの 137 番目のサンプルから、次のフレームの最初のサンプルにワード境界を移動させます。このワード境界の移動は、1632-136 サンプル分の信号遅延と等価です。Viterbi Decoder ブロックと Bit to Integer Converter ブロックの間に配置された Delay ブロックがそのような遅延を実現します。Delay ブロックでは、[Delay] パラメーターを 1496 に設定します。

Viterbi Decoder ブロックと Delay ブロックの効果を組み合わせることによって、インターリーバーとデインターリーバーの間の合計遅延は完全な 1632 サンプルのデータ フレームになり、部分フレームにはなりません。

Error Rate Calculation ブロックを構成するための遅延の計算

モデルには 2 つの Error Rate Calculation ブロックがあり、Inner Error Rate と Outer Error Rate とラベル付けされています。それぞれのブロックには [Receive delay] パラメーターがあり、ブロックの Tx 信号と Rx 信号の間のパスで発生する遅延を反映していなければなりません。次の表は、2 つのブロックの [Receive delay] の値を説明しています。

ブロック受信遅延値理由
Inner Error Rate 136 Viterbi Decoder ブロックの遅延 (サンプル単位)
Outer Error Rate 1504 (188*8 bits)1 つの 188 サンプルのフレーム (Viterbi Decorder ブロックの固有の遅延と Delay ブロックで追加された遅延の合計)

非線形デジタル復調におけるワードの整列.  この例では、復調が行われる前にシンボルの境界が正しく整列されるように、信号の正しいシンボル同期を得るために遅延を操作します。

このモデルには CPFSK 変調方式とパルス整形フィルターが含まれます。復調が正しく行われるには、CPFSK 復調器ブロックに対する入力信号が正しく整列されていなければなりません。このモデルではさまざまなブロックで処理の遅延が発生します。これらの遅延により、CPFSK 復調器ブロックへの入力信号が正しく整列されません。

遅延は、Raised Cosine Transmit ブロックと Receive Filter ブロックの両方に発生します。遅延は次の式で定義されます。GroupDelayTs

ここで、Ts は Raised Cosine Transmit Filter ブロックの入力サンプル時間を表します。

Raised Cosine Transmit Filter ブロックの入力サンプル時間は、Raised Cosine Receive Filter ブロックの出力サンプル時間と等しくなります。そのため、Raised Cosine Receive Filter の出力時における合計遅延は、次のようになります。

2GroupDelayTs

または 8Ts

ここで GroupDelay = 4

CPFSK 復調器ブロックはこの遅延した信号を受信して、シンボルあたり 8 サンプルのそれぞれの集合を処理して、1 出力シンボルを計算します。CPFSK 復調器が、正しいサンプルの集合から、入力サンプルを受信するようにしなければなりません。[Modulation index] が 1/2 に設定されたバイナリ CPFSK では、復調器の入力がシンボルの偶数番に整列されていなければなりません。この要件は、変調指数が 1/2 のバイナリ CPFSK にのみ適用されることに注意してください。異なる M-ary 値および変調指数が設定された別の CPM 方式には、異なる要件が適用されます。

このモデルの CPFSK 復調器が、正しく整列された適切な入力サンプルの集合を確実に受信できるように、8 サンプルの遅延を挿入します (この例では、8Ts)。CPFSK 復調器の入力における合計遅延は 16Ts になり、2 つのシンボルの遅延に相当します (2.T、ここで T はシンボルの周期)。

サンプルベース モードでは、CPFSK 復調器は、出力時に [Traceback length] + 1 サンプルの遅延を挿入します。この例では [Traceback length] は 16 になります。そのため、Error Rate Calculation ブロックにおける [Receiver delay] の合計は 17+2 つまり 19 になります。詳細については、デジタル復調での遅延を参照してください。