Main Content

Convolutional Encoder

畳み込み符号化スキームを使用したバイナリ データの符号化

  • ライブラリ:
  • Communications Toolbox / Error Detection and Correction / Convolutional

    Communications Toolbox HDL Support / Error Detection and Correction / Convolutional

  • Convolutional Encoder block

説明

Convolutional Encoder ブロックは、トレリス構造体で指定された畳み込み符号化スキームを使用して、入力バイナリ メッセージを符号化します。詳細については、畳み込み符号化を参照してください。

このブロックは、シミュレーション中に長さが変化する入力を受け入れることができます。可変サイズ信号の詳細については、可変サイズの信号の基礎 (Simulink)のトピックを参照してください。

以下のアイコンには、有効にしたオプションのブロック端子が表示されています。

Convolutional Encoder block with optional initial state and final state ports enabled

Convolutional Encoder block with optional reset and final state ports enabled

端子

入力

すべて展開する

入力メッセージ。バイナリ列ベクトルとして指定します。この端子は 2 番目の入力端子が有効になるまでは名前なしになります。符号化器が K 入力ビット ストリームを取る (つまり、2K の入力シンボル候補を受信できる) 場合、ブロックの入力ベクトルの長さはある正の整数 L に対して L×K になります。

例: [1 1 0 1 0 0 1 1] はメッセージを 8 要素のバイナリ行ベクトルとして指定します。

データ型: double | single | Boolean | int8 | int16 | int32 | uint8 | uint16 | uint32 | ufix1

ブロックへのフレーム入力ごとの符号化器レジスタの初期状態。非負の整数として指定します。

依存関係

この端子を有効にするには、[Operation mode] パラメーターを [Truncated (reset every frame)] に設定し、[Specify initial state via input port] を選択します。

データ型: double | uint32

符号化器レジスタの状態のリセット。スカラー値として指定します。任意の非ゼロ値により、符号化器レジスタのリセットが強制されます。

依存関係

この端子を有効にするには、[Operation mode] パラメーターを [Reset on nonzero input via port] に設定します。

データ型: double | Boolean

出力

すべて展開する

畳み込み符号化されたコードワード。バイナリ列ベクトルとして返されます。この端子はブロック アイコンで名前なしになります。符号化器が N 個の出力ビット ストリームを生成する (つまり、2N 個の出力シンボル候補を生成できる) 場合、ブロックの出力ベクトルの長さはある正の整数 L に対して L×N になります。この出力のデータ型は、In 入力から継承されます。

データ型: double | single | Boolean | int8 | int16 | int32 | uint8 | uint16 | uint32 | ufix1

ブロックから出力される各フレームの符号化器レジスタの最終状態。非負の整数として返されます。

依存関係

このパラメーターは、[Operation mode] パラメーターを [Continuous][Truncated (reset every frame)]、または [Reset on nonzero input via port] に設定し、[Output final state] パラメーターを選択したときにのみ表示されます。

データ型: double

パラメーター

すべて展開する

畳み込み符号のトレリス表現。符号化率 K / N の符号に対するトレリス表現を含む構造体として指定します。K は入力ビット ストリーム数を表し、N は出力ビット ストリーム数を表します。

トレリス構造体は、関数 poly2trellis を使用して作成するか、手動で作成することができます。この構造体の詳細については、畳み込み符号のトレリス表現および関数 istrellis を参照してください。

トレリス構造体には次のフィールドがあります。

符号化器への入力シンボルの数。2K と等しい整数として指定します。ここで、K は入力ビット ストリームの数です。

データ型: double

符号化器からの出力シンボルの数。2N と等しい整数として指定します。ここで、N は出力ビット ストリームの数です。

データ型: double

符号化器内の状態の数。2 のべき乗として指定します。

データ型: double

現在の状態と現在の入力のすべての組み合わせの次の状態。整数の行列として指定します。行列のサイズは numStates 行 2K 列でなければなりません。

データ型: double

現在の状態と現在の入力のすべての組み合わせの出力。8 進数の行列として指定します。行列のサイズは numStates 行 2K 列でなければなりません。

データ型: double

符号化フレームの終了方法。以下のいずれかのモードの値を指定します。

  • Continuous — ブロックは各入力の終わりの符号化器の状態を次のフレームで使用するために保持します。

  • Truncated (reset every frame) — ブロックは各入力を個別に処理します。各入力フレームの開始時に、符号化器の状態はすべて 0 の状態にリセットされます。または、[Specify initial state via input port] を選択した場合は、ISt 端子で指定された状態にリセットされます。

  • Terminate trellis by appending bits — ブロックは各入力を個別に処理します。個々の入力フレームごとに追加のビットを使用することで、符号化器の状態を各フレームの終了時にすべて 0 の状態にリセットします。出力の長さは、y = N × (x + s) / K で与えられます。ここで x は入力ビットの数、s = constraint length – 1 (複数の拘束長の場合は s =sum(constraint length(i) – 1)) です。

    メモ

    このブロックは K ≥ 1 の場合に機能します。ここで、ブロックは各入力ストリームで拘束長に同じ値を取ります。たとえば、拘束長 [2 2] または [7 7] は機能しますが、[5 4] は機能しません。

  • Reset on nonzero input via port — ブロックに Rst とラベル付けされた追加の入力端子が表示されます。この Rst の入力が非ゼロ値となると、符号化器はすべてゼロの状態にリセットします。

メモ

このブロックがシミュレーション中に長さが変わるシーケンスを出力し、[Operation mode][Truncated (reset every frame)] または [Terminate trellis by appending bits] に設定した場合、ブロックの状態は入力タイム ステップごとにリセットされます。

符号化データの計算後にブロックをリセットするには、このパラメーターを選択します。リセット アクションの遅延により、このブロックは HDL コード生成をサポートできます。HDL コードを生成するには、HDL Coder™ ソフトウェアが必要です。

依存関係

このパラメーターは、[Operation mode] パラメーターを [Reset on nonzero input via port] に設定したときにのみ表示されます。

ブロックに ISt 入力端子を追加するには、このパラメーターを選択します。

依存関係

このパラメーターは、[Operation mode] パラメーターを [Truncated (reset every frame)] に設定したときにのみ表示されます。

ブロックに FSt 出力端子を追加するには、このパラメーターを選択します。

依存関係

このパラメーターは、[Operation mode] パラメーターを [Continuous][Truncated (reset every frame)]、または [Reset on nonzero input via port] に設定したときにのみ表示されます。

[Puncture vector] 端子を表示して有効にするには、このパラメーターを選択します。

パンクチャ パターン。ベクトルとして指定します。パンクチャ ベクトルは 10 のパターンで、0 は出力符号化データ内のパンクチャされたビットを示します。ベクトルの長さは、入力メッセージ ベクトルの長さ length(In) の整数の除数でなければなりません。

特定のレートや多項式で一般的に使用するパンクチャ パターンについては、Yasuda[3]、Haccoun[4]、および Begin[5]の各参考文献を参照してください。

依存関係

このパラメーターは、[Puncture code] パラメーターを選択した場合にのみ表示されます。

ブロックの特性

データ型

Boolean | double | fixed pointa | integer | single

多次元信号

なし

可変サイズの信号

あり

a ufix(1) のみ。

詳細

すべて展開する

参照

[1] Clark, George C., and J. Bibb Cain. Error-Correction Coding for Digital Communications. Applications of Communications Theory. New York: Plenum Press, 1981.

[2] Gitlin, Richard D., Jeremiah F. Hayes, and Stephen B. Weinstein. Data Communications Principles. Applications of Communications Theory. New York: Plenum Press, 1992.

[3] Yasuda, Y., K. Kashiki, and Y. Hirata. “High-Rate Punctured Convolutional Codes for Soft Decision Viterbi Decoding.” IEEE Transactions on Communications 32, no. 3 (March 1984): 315–19. https://doi.org/10.1109/TCOM.1984.1096047.

[4] Haccoun, D., and G. Begin. “High-Rate Punctured Convolutional Codes for Viterbi and Sequential Decoding.” IEEE Transactions on Communications 37, no. 11 (November 1989): 1113–25. https://doi.org/10.1109/26.46505.

[5] Begin, G., D. Haccoun, and C. Paquin. “Further Results on High-Rate Punctured Convolutional Codes for Viterbi and Sequential Decoding.” IEEE Transactions on Communications 38, no. 11 (November 1990): 1922–28. https://doi.org/10.1109/26.61470.

拡張機能

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

バージョン履歴

R2006a より前に導入