Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

Convolutional Encoder

バイナリ データからの畳み込み符号の作成

ライブラリ

Error Detection and Correction の Convolutional サブライブラリ

  • Convolutional Encoder block

説明

Convolutional Encoder ブロックはバイナリ入力ベクトルのシーケンスを符号化して、バイナリ出力ベクトルのシーケンスを生成します。このブロックは一度に複数のシンボルを処理できます。

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

入力および出力サイズ

符号化器が k 入力ビット ストリームを取る (つまり、2k の可能な入力シンボルを受信できる) 場合、ブロックの入力ベクトルの長さは一部の正の整数 L に対して L*k になります。同様に、符号化器が n 出力ビット ストリームを生成する (つまり、2n の可能な出力シンボルを生成できる) 場合、ブロックの出力ベクトルの長さは L*n になります。

このブロックは L に正の整数をもつ列ベクトル入力信号を受け入れます。可変サイズの入力の場合、L はシミュレーション中に変わる可能性があります。ブロックの操作は、[Operation mode] パラメーターによって管理されます。

データ端子の入力と出力の両方で、ブロックは doublesinglebooleanint8uint8int16uint16int32uint32、および ufix1 をサポートします。端子データ型は、ブロックを駆動する信号から継承されます。入力リセット端子は double および boolean 型信号をサポートします。

符号化器の指定

畳み込み符号化器の定義には、[Trellis structure] パラメーターを使用します。このパラメーターは MATLAB® 構造体であり、この形式は畳み込み符号のトレリス表現に記載されています。このパラメーター フィールドは次の 2 つの方法で使用できます。

  • トレリス構造体を含む MATLAB ワークスペースに変数がある場合、その変数の名前を [Trellis structure] パラメーターに入力します。この方法は、次に説明する使い方に比べて、各シミュレーションの開始時に Simulink® でダイアグラムの更新にかかる時間が短くなるため、推奨される方法です。

  • 拘束長、生成多項式、および可能なフィードバック接続多項式を使用して符号化器を指定する場合は、[Trellis structure] パラメーターで poly2trellis コマンドを使用します。たとえば、符号化器を拘束長 7 で使用し、符号生成多項式を 171 と 133 (8 進数)、フィードバック接続多項式を 171 (8 進数) とするには、[Trellis structure] パラメーターを次のように設定します。

    poly2trellis(7,[171 133],171)

符号化器レジスタは、すべて 0 の状態で開始されます。シミュレーション中にすべての符号化器レジスタをすべて 0 の状態にリセットするには、[Operation mode] パラメーターを [Reset on nonzero input via port] に設定します。この選択により、スカラー値の入力信号を受け入れる Rst というラベルの 2 番目の入力端子が開きます。入力端子が 0 以外の場合、ブロックは 1 番目の入力端子でデータを処理する前にリセットします。1 番目の入力端子でデータを処理した後にブロックをリセットするには、[Delay reset action to next time step] を選択します。

パラメーター

Trellis structure

畳み込み符号化器のトレリス表現を含む MATLAB 構造体です。

Operation mode

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

[Truncated (reset every frame)] モードでは、ブロックは各入力を個別に処理します。各入力の開始時に符号化器の状態はすべて 0 の状態にリセットされます。

メモ

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

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

メモ

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

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

Delay reset action to next time step

[Delay reset action to next time step] を選択すると、Convolutional Encoder ブロックは符号化したデータの計算後にリセットします。このチェック ボックスは [Operation mode] パラメーターを [Reset on nonzero input via port] に設定するときにのみ表示されます。

リセット操作の遅延により、このブロックは HDL コード生成をブロックできます。HDL コードを生成するには、HDL Coder™ のライセンスが必要です。

Output final state

[Output final state] を選択すると、2 番目の出力端子信号によってこのブロックの出力状態が指定されます。出力信号はスカラー、整数値です。[Terminate trellis by appending bits] を除くすべての操作モードで [Output final state] を選択できます。

Specify initial state via input port

[Specify initial state via input port] を選択した場合、2 番目の入力端子信号でブロック内のすべてのフレームの開始状態が指定されます。入力信号は、スカラー、整数値でなければなりません。[Specify initial state via input port] は、[Truncated] 操作モードでのみ表示されます。

Puncture code

このオプションを選択すると、[Puncture vector] フィールドが表示されます。

Puncture vector

符号化されたデータをパンクチャするために使用されるベクトル。パンクチャ ベクトルは 10 のパターンで、0 はパンクチャド ビットを示します。このフィールドは、[Punctured code] を選択する場合にのみ、表示されます。

パンクチャ パターンの例

特定のレートや多項式で一般的に使用するパンクチャ パターンについては、このページにリストされている最後の 3 つのリファレンスを参照してください。

参考文献

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

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

[3] Yasuda, Y., et. al., “High rate punctured convolutional codes for soft decision Viterbi decoding,” IEEE Transactions on Communications, Vol. COM-32, No. 3, pp 315–319, March 1984.

[4] Haccoun, D., and Begin, G., “High-rate punctured convolutional codes for Viterbi and Sequential decoding,” IEEE Transactions on Communications, Vol. 37, No. 11, pp 1113–1125, Nov. 1989.

[5] Begin, G., et.al., “Further results on high-rate punctured convolutional codes for Viterbi and sequential decoding,” IEEE Transactions on Communications, Vol. 38, No. 11, pp 1922–1928, Nov. 1990.

拡張機能

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

R2006a より前に導入