Main Content

APP Decoder

事後確率 (APP) 法を使用して畳み込み符号を復号化する

ライブラリ

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

  • APP Decoder block

説明

APP Decoder ブロックは、畳み込み符号の事後確率 (APP) 復号化を実行します。

入力信号と出力信号

入力 L(u) は符号化器入力ビットの対数尤度シーケンスを表し、入力 L(c) はコード ビットの対数尤度シーケンスを表します。出力 L(u) と L(c) は、符号化器に関する情報に基づいた、これらのシーケンスの更新バージョンです。

畳み込み符号が 2n シンボル候補のアルファベットを使用する場合、このブロックの L(c) ベクトルはある正の整数 Q の長さ Q*n になります。同様に、復号化されたデータが 2k 出力シンボル候補のアルファベットを使用する場合、このブロックの L(u) ベクトルは長さが Q*k になります。

このブロックは、Q の正の整数をもつ列ベクトルの入力信号を受け入れます。

入力 L(c) と出力 L(u) のみ必要な場合、Simulink Ground (Simulink) ブロックを入力 L(u) に、Simulink® Terminator (Simulink) ブロックを出力 L(c) に追加できます。

このブロックは singledouble のデータ型を受け入れます。ただし、どちらの入力も、同じデータ型でなければなりません。出力のデータ型は、入力のデータ型と同じです。

符号化器の指定

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

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

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

    poly2trellis(7,[171 133],171)

各フレームの最初と最後のトレリスを符号化器が取り扱う方法を示すには、[Termination method] パラメーターを [Truncated] または [Terminated] のいずれかに設定します。[Truncated] オプションは、符号化器が各フレームの最初にすべて 0 の状態にリセットすることです。[Terminated] オプションは、符号化器がトレリスに対して各フレームをすべて 0 の状態で強制的に終了させることです。[Operation mode] パラメーターを [Truncated (reset every frame)] に設定している Convolutional Encoder ブロックを使用する場合、このブロックでは [Truncated] オプションを使用します。[Operation mode] パラメーターを [Terminate trellis by appending bits] に設定している Convolutional Encoder ブロックを使用する場合、このブロックでは [Terminated] オプションを使用します。

アルゴリズムの詳細指定

[アルゴリズム] パラメーターを使用してアルゴリズムの復号化の部分を制御できます。[True APP] オプションは、[1]のセクション V にある式 20 ~ 23 に従って事後確率復号化を実装します。速度を得るために、[Max*] オプションと [Max] オプションの両方は次のような式を、

logiexp(ai)

他の量で近似します。[Max] オプションが max(ai) を近似として使用するのに対して、[Max*] オプションは max(ai) と ln(1+exp(|ai1ai|))[3]によって提供される補正項を加えて使用します。

[Max*] オプションによって、ダイアログ ボックスの [Scaling bits] パラメーターが有効になります。このパラメーターは、ブロックが内部で処理するデータ (入力と (2^numScalingBits) を乗算し、同じ係数で事前出力を除算する) をスケーリングするビット数です。このパラメーターを使用すると、計算中の精度低下を避けることができます。

パラメーター

Trellis structure

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

Termination method

[Truncated][Terminated] のいずれか。このパラメーターは、畳み込み符号化器がフレームの最初と最後にトレリスを扱う方法を示します。

Algorithm

[True APP][Max*]、または [Max] のいずれかを指定します。

Number of scaling bits

精度の低下を避けるために復号化器がデータをスケーリングするビット数によって指定する 0 から 8 までの整数。このフィールドは、[アルゴリズム][Max*] に設定されているときにだけアクティブになります。

Disable L(c) output port

2 次ブロック出力 L(c) を無効にする場合は、このチェック ボックスをオンにします。

参考文献

[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,” JPL TDA Progress Report, Vol. 42-127, November 1996.

[2] Benedetto, Sergio and Guido Montorsi, “Performance of Continuous and Blockwise Decoded Turbo Codes.” IEEE Communications Letters, Vol. 1, May 1997, 77–79.

[3] Viterbi, Andrew J., “An Intuitive Justification and a Simplified Implementation of the MAP Decoder for Convolutional Codes,” IEEE Journal on Selected Areas in Communications, Vol. 16, February 1998, 260–264.

拡張機能

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

バージョン履歴

R2006a より前に導入