Main Content

Turbo Decoder

並列連結復号化スキームを使用した入力信号の復号化

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

  • Turbo Decoder block

説明

Turbo Decoder ブロックは、並列連結復号化スキームを使用して入力信号を復号化します。反復復号化スキームは、"事後" 確率 (APP) 復号化器を、構成復号化器、インターリーバー、およびデインターリーバーとして使用します。2 つの構成復号化器は、同じトレリス構造体と復号化アルゴリズムを使用します。詳細については、並列連結畳み込み復号化スキームAPP 復号化器を参照してください。

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

Turbo Decoder block with optional ports (IntrInd and InInd) enabled

端子

入力

すべて展開する

並列連結符号語。長さ M の列ベクトルとして指定します。ここで、M は並列連結符号語の長さです。

データ型: double | single

インターリーバー インデックス。整数の列ベクトルとして指定します。ベクトルの長さは L でなければなりません。ベクトルの各要素は、範囲 [1, L] の整数で一意でなければなりません。L は復号化されたバイナリ出力メッセージ Out の長さです。インターリーバー インデックスは、復号化器で入力ビットを並べ替えるために使用されるマッピングを定義します。

依存関係

この端子を有効にするには、[Source of interleaver indices] パラメーターを Input port に設定します。

データ型: double

完全に符号化されたデータで使用されるビット順序およびパンクチャ用の入力インデックス。整数の列ベクトルとして指定します。InInd のベクトルの長さは、入力データのベクトル In の長さと等しくなければなりません。ベクトルの要素の値は、すべてのストリームのテール ビットを含む、符号化方式に応じて完全に符号化されたデータを基準とする必要があります。

依存関係

この端子を有効にするには、[Source of input indices] パラメーターを Input port に設定します。

データ型: double

出力

すべて展開する

復号化されたメッセージ。長さ L のバイナリ列ベクトルとして返されます。ここで L は復号化されたバイナリ出力メッセージの長さです。この出力のデータ型は、In 入力から継承されます。

パラメーター

すべて展開する

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

メモ

ターボ符号化器の K は 1 でなければなりません。詳細については、符号化率を参照してください。

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

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

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

データ型: double

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

データ型: double

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

データ型: double

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

データ型: double

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

データ型: double

インターリーバー インデックスのソースを [Property] または [Input port] として指定します。

  • このパラメーターを [Property] に設定すると、ブロックは [Interleaver indices] パラメーターを使用してインターリーバー インデックスを指定します。

  • このパラメーターを [Input port] に設定すると、ブロックは IntrInd 入力端子を使用してインターリーバー インデックスを指定します。

復号化器への符号語ビット入力の置換に使用されるマッピングを定義するインターリーバー インデックスを整数の列ベクトルとして指定します。ベクトルの長さは L でなければなりません。ベクトルの各要素は、範囲 [1, L] の整数で一意でなければなりません。L は復号化されたバイナリ出力メッセージの長さです。

依存関係

このパラメーターを有効にするには、[Source of interleaver indices] パラメーターを [Property] に設定します。

入力インデックスのソースを [Auto][Property]、または [Input port] として指定します。

  • このパラメーターを [Auto] に設定すると、ブロックは 2 番目の組織ストリームがパンクチャされてすべてのテール ビットが入力に含まれると仮定する入力インデックスを計算します。

  • このパラメーターを [Property] に設定すると、ブロックは [Input indices] パラメーターに指定された入力インデックスを使用します。

  • このパラメーターを [Input port] に設定すると、ブロックは [InInd] 入力端子を使用して入力インデックスを指定します。入力インデックスのベクトルの長さと値および符号化された入力信号は、ブロックを実行するたびに変わる可能性があります。

完全に符号化されたデータで使用されるビット順序およびパンクチャ用の入力インデックスを整数の列ベクトルとして指定します。このパラメーターのベクトルの長さは、入力データのベクトル In の長さと等しくなければなりません。

依存関係

このパラメーターを有効にするには、[Source of input indices] パラメーターを [Property] に設定します。

構成 APP 復号化器が入力信号を復号化するために使用する復号化アルゴリズムを [True APP][Max*][Max] として指定します。このパラメーターを [True APP] に設定すると、ブロックは真の "事後" 確率復号化を実装します。このパラメーターを [Max*] または [Max] に設定すると、ブロックは近似を使用して計算速度を向上させます。詳細については、APP 復号化器を参照してください。

計算中に精度が低下するのを避けるために、構成 APP 復号化器が入力データのスケーリングに使用しなければならないビット数を範囲 [0, 8] の整数として指定します。構成復号化器は入力に 2k を掛けて、同じ係数で事前出力を割ります。k は [Number of scaling bits] パラメーターの値です。詳細については、APP 復号化器を参照してください。

依存関係

このパラメーターを有効にするには、[Decoding algorithm] パラメーターを [Max*] に設定します。

ブロックが使用する復号化反復回数を正の整数として指定します。ブロックは、符号化されていない出力ビットの対数尤度比 (LLR) への更新を反復して提供します。ブロックの出力は最終 LLR 更新の硬判定出力です。

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

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

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

ブロックの特性

データ型

double | single

多次元信号

なし

可変サイズの信号

あり

詳細

すべて展開する

参照

[1] Benedetto, S., G. Montorsi, D. Divsalar, and F. Pollara. "A Soft-Input Soft-Output Maximum A Posterior (MAP) Module to Decode Parallel and Serial Concatenated Codes." Jet Propulsion Lab TDA Progress Report, 42–127, (November 1996).

[2] Viterbi, A.J. “An Intuitive Justification and a Simplified Implementation of the MAP Decoder for Convolutional Codes.” IEEE Journal on Selected Areas in Communications 16, no. 2 (February 1998): 260–64. https://doi.org/10.1109/49.661114.

[3] Berrou, C., A. Glavieux, and P. Thitimajshima. “Near Shannon Limit Error-Correcting Coding and Decoding: Turbo-Codes.” Proceedings of ICC 93 - IEEE International Conference on Communications, Geneva, Switzerland, May 1993, 1064–70. https://doi.org/10.1109/icc.1993.397441.

[4] Schlegel, Christian, and Lance Perez. Trellis and Turbo Coding. IEEE Press Series on Digital & Mobile Communication. Piscataway, NJ ; Hoboken, NJ: IEEE Press ; Wiley-Interscience, 2004.

[5] 3GPP TS 36.212. "Multiplexing and channel coding." 3rd Generation Partnership Project; Technical Specification Group Radio Access Network; Evolved Universal Terrestrial Radio Access (E-UTRA). https://www.3gpp.org.

拡張機能

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

バージョン履歴

R2011b で導入