TPC Decoder
ターボ積符号 (TPC) 復号化器

ライブラリ:
Communications Toolbox /
Error Detection and Correction /
Block
説明
TPC Decoder ブロックは、Chase-Pyndiah アルゴリズムを使用して、積符号に対応する軟入力 LLR の 2 次元ターボ積符号 (TPC) 復号化を実行します。積符号は線形ブロック符号の 2 次元の連結です。線形ブロック符号は、2 つの誤りを訂正できるパリティ チェック符号、ハミング符号、または BCH 符号の可能性があります。拡張符号と短縮符号は、各次元で独立して適用することができます。2 次元 TPC 復号化の詳細については、ターボ積符号の復号化を参照してください。
有効な符号ペアと各符号ペアの誤り訂正能力の詳細については、コンポーネント符号ペアを参照してください。
例
TPC 符号化および復号化された伝送信号のエラー レートの計算を実行します。
ランダムな信号は、TPC 符号化、QPSK 変調、AWGN チャネル経由でのフィルター処理、および QPSK 復調が行われます。バイポーラ マッピングは、負から正にマッピングが変換され、信号は TPC 復号化されます。エラー レートの計算は、元のメッセージを復元したメッセージと比較します。
モデル例を開きその内容を調べる
いくつかの設定は、互いに揃えて、メッセージの符号化と復号化を同期させなければなりません。最初に、符号化率を決定し、TPC Encoder
と TPC Decoder
の 2 次元の [N,K] ペアを整列させます。この例では、既定の設定に [Nr,Kr] = [15,11] および [Nc,Kc] = [32,26] が使用されます。
Bernoulli Binary Generator
ブロックによって使用されたフレームあたりのサンプル数とサンプル時間は、メッセージ長のパラメーター Number of rows in message, Kr
と Number of columns in message, Kc
に基づいて決定されます。
フレームあたりのサンプル数 = (Kr*Kc) = 286
サンプル時間 = 1/(Kr*Kc) = 0.0035。
SNR 設定が符号化率、変調次数、および Eb/N0 に基づいて計算されているホワイト ガウス ノイズ。
変調次数、M = 2
Eb/N0 = -11
rate = (Kr*Kc)/((Nr-Kr)*(Nc-Kc)) = 14.3
snr = 10*log10(M*rate*10^(ebn0/10)) = 3.5637
QPSK Demodulator Baseband
ブロックで使用されたノイズ変数は SNR に基づいて計算されます。
ノイズ分散 = 1/10^(snr/10) = 1/10^(3.5637/10) = 0.4402
モデルを実行し、エラー レートの計算を観察します。結果は、ランダムな入力データを使用するための実行状況によって異なります。
Bit error rate: 0.00042
その他の調査
モデルを自分で実行するには、表示されているボタンを使用するか、MATLAB® コマンド プロンプトで open slex_tpc_err_rate_calc
と入力することによって例を開きます。モデルを変更して S/N 比を変更してみることを考えます。TPC Decoder
、Bernoulli Binary Generator
、AWGN Channel
、および QPSK Demodulator Baseband
で必ず設定を揃えるために TPC Encoder
設定を調整する場合。
端子
入力
対数尤度比。列ベクトルとして指定します。
短縮形の入力メッセージでは、列ベクトルの長さは、(NR–KR+SR) および (NC–KC+SC) の積です。ここで、
NR は 符号の行数、Nr の値です。
KR は メッセージの行数、Kr の値です。
SR は 短縮メッセージの行数、Sr の値です。
NC は 符号の列数、Nc の値です。
KC は メッセージの列数、Kc の値です。
SC は 短縮メッセージの列数、Sc の値です。
データ型: double
| single
出力
TPC 符号化されたメッセージ。バイナリ値の列ベクトルとして返されます。
フルレングスの入力メッセージでは、列ベクトルの長さは、メッセージの行数、Kr と メッセージの列数、Kc の積です。
短縮形の入力メッセージでは、列ベクトルの長さは、短縮メッセージの行数、Sr と 短縮メッセージの列数、Sc の積です。
データ型: Boolean
データ型: double
パラメーター
ブロック パラメーターを対話的に編集するには、プロパティ インスペクターを使用します。Simulink® ツールストリップの [シミュレーション] タブの [準備] ギャラリーで [プロパティ インスペクター] を選択します。
行の TPC パラメーター
拡張符号 を選択すると、符号の行数、Nr と メッセージの行数、Kr の一覧には、拡張された個々の符号ペア (NR,KR) の有効な値が含まれます。
拡張符号 をクリアすると、符号の行数、Nr と メッセージの行数、Kr の一覧には、拡張されていない個々の符号ペア (NR,KR) の有効な値が含まれます。
積の符号行列 NR の行数。整数値の一覧は、拡張符号 の設定によって異なります。
[Specify shortened message length] を選択して、短縮メッセージの行数、Sr の値を指定します。
短縮メッセージ行列 SR の行数。KR 以下の整数として指定します。このパラメーターを指定する場合は、フルレングスの NR および KR の値を入力して (NR,KR) 符号ペアを指定します。この符号ペアは、(NR–KR+SR,SR) 符号ペアに短縮されます。ここで、
NR は 符号の行数、Nr の値です。
KR は メッセージの行数、Kr の値です。
SR は 短縮メッセージの行数、Sr の値です。
依存関係
このパラメーターを有効にするには、短縮メッセージ長の指定 を選択します。
列の TPC パラメーター
拡張符号 を選択すると、符号の列数、Nc と メッセージの列数、Kc の一覧には、拡張された個々の符号ペア (NC,KC) の有効な値が含まれます。
拡張符号 をクリアすると、符号の列数、Nc と メッセージの列数、Kc の一覧には、拡張されていない個々の符号ペア (NC,KC) の有効な値が含まれます。
積の符号行列 NC の列数。整数値の一覧は、拡張符号 の設定によって異なります。
[Specify shortened message length] を選択して、短縮メッセージの列数、Sc の値を指定します。
短縮メッセージ行列 SC の列数。整数として指定します。このパラメーターを指定する場合は、フルレングスの NC および KC の値を入力して (NC,KC) 符号ペアを指定します。この符号ペアは、(NC–KC+SC, SC) 符号ペアに短縮されます。ここで、
NC は 符号の列数、Nc の値です。
KC は メッセージの列数、Kc の値です。
SC は 短縮メッセージの列数、Sc の値です。
依存関係
このパラメーターを有効にするには、短縮メッセージ長の指定 を選択します。
復号化の最大反復回数。正の整数を指定します。
最大反復回数 の前にコンポーネント符号の計算されたシンドロームまたはパリティ チェックがゼロと評価された場合に復号化を終了するには、[Stop iterating when code converges] を選択します。
Iter
出力端子を追加して、実行された TPC 復号化の実際の反復回数を出力するには、このパラメーターを選択します。
実行するシミュレーションのタイプ。[コード生成]
または [インタープリター型実行]
として指定します。
コード生成
— 生成された C コードを使用してモデルをシミュレートします。シミュレーションの初回実行時、Simulink は対象ブロックの C コードを生成します。このモデルは、モデルが変更されない限り以降のシミュレーションで C コードを再利用します。このオプションを使用すると、シミュレーションの起動時間は長くなりますが、以降のシミュレーションの速度は[インタープリター型実行]
オプションを使用した場合よりも速くなります。インタープリター型実行
— MATLAB® インタープリターを使用してモデルをシミュレートします。このオプションを使用すると、起動時間が短縮されますが、以降のシミュレーションの速度は[コード生成]
オプションを使用した場合よりも遅くなります。このモードで、ブロックのソース コードをデバッグできます。
詳細については、インタープリター型実行とコード生成 (Simulink)を参照してください。
ブロックの特性
データ型 |
|
多次元信号 |
|
可変サイズの信号 |
|
詳細
次の表に、行 (NR,KR) パラメーターおよび列 (NC,KC) パラメーターの、サポートされているコンポーネント符号のペアを示します。
NR と KR は、それぞれ積符号行列とメッセージ行列の行数を表します。
NC と KC は、それぞれ積符号行列とメッセージ行列の列数を表します。
各符号タイプ内で、任意の 2 つのコンポーネント符号のペアで 2 次元 TPC 符号を作成できます。この表には、各符号ペアの誤り訂正能力も含まれています。
コード タイプ | コンポーネント符号ペア (NR,KR) および (NC,KC) | 誤り訂正能力 (T) |
ハミング符号 | (255,247) | 1 |
(127,120) | 1 | |
(63,57) | 1 | |
(31,26) | 1 | |
(15,11) | 1 | |
(7,4) | 1 | |
拡張ハミング符号 | (256,247) | 1 |
(128,120) | 1 | |
(64,57) | 1 | |
(32,26) | 1 | |
(16,11) | 1 | |
(8,4) | 1 | |
BCH 符号 | (255,239) | 2 |
(127,113) | 2 | |
(63,51) | 2 | |
(31,21) | 2 | |
(15,7) | 2 | |
拡張 BCH 符号 | (256,239) | 2 |
(128,113) | 2 | |
(64,51) | 2 | |
(32,21) | 2 | |
(16,7) | 2 | |
パリティ チェック コード | (256,255) | - |
(128,127) | - | |
(64,63) | - | |
(32,31) | - | |
(16,15) | - | |
(8,7) | - | |
(4,3) | - |
ターボ積符号 (TPC) は、前方誤り訂正 (FEC) コードとして使用される連結コードの形式です。組織線形ブロック符号などの 2 つ以上のコンポーネント ブロック コードは、TPC を構築するために使用されます。TPC 復号化器は、反復軟入力、軟出力復号化を実行する Chase 復号化と Pyndiah アルゴリズムを使用して積符号のほぼ最適な復号化を実現します。詳細については、[1]および[2]を参照してください。この復号化器は、2 つの線形ブロック符号を使用して、[2]で説明されている反復軟入力、軟出力 2 次元積符号の復号化を実装します。復号化器は、入力信号として、デジタル復調から得られた軟ビット対数尤度比 (LLR) を予期しています。
TPC 復号化器は、フルレングスの符号または短縮符号のいずれかを受け入れます。
TPC 符号化されたフルレングスの入力メッセージは、指定された 2 次元 TPC 符号ペアを使用して復号化されます。行方向の復号化では (NC, KC) 符号ペアを使用し、列方向の復号化では (NR, KR) 符号ペアを使用します。入力ベクトル長は、NR × NC でなければなりません。2 次元 TPC 復号化を実行するために、メッセージとパリティ ビットで構成される入力 LLR の列ベクトルは、NR 行 NC 列の行列に調整されます。
TPC 復号化器は、反復軟入力、軟出力復号化を実行する Chase 復号化と Pyndiah アルゴリズムを使用して積符号のほぼ最適な復号化を実現します。Chase 復号化では、各列または各行で可能な一連のコードワードを作成します。Pyndiah アルゴリズムでは、次の復号化ステップで必要な軟情報を計算します。
反復軟入力、軟出力復号化
反復軟入力、軟出力復号化は、ブロック線図に示すように、反復ごとに 2 つの復号化ステップを実行します。
復号化の軟入力は、R(m) = R + α(m)W(m) です。
反復のループ カウンター i は、i = 1 から指定された反復数までインクリメントします。
m =
2
i –1
は、復号化ステップのインデックスです。R は、受信 LLR 行列です。
R(m) は、m 番目の復号化ステップの軟入力です。
W(m) は、m 番目の復号化ステップの入力外部情報です。
α(m) = [0,0.2,0.3,0.5,0.7,0.9,1,1, ...] で、α は復号化ステップのインデックスに基づいて適用される重み付けの係数です。高次の復号化ステップでは、α = 1 です。
β(m) = [0.2,0.4,0.6,0.8,1,1, ...] で、β は復号化ステップのインデックスに基づいて適用される信頼性の係数です。高次の復号化ステップでは、β = 1 です。
D は復号化されたメッセージ ビットを含みます。–1 を 0 に、+1 を 1 にマッピングしてからメッセージ ブロックを列ベクトルに形状変更することで、出力メッセージ ビットが D から求められます。
出力メッセージ ビットは、指定された反復回数が反復された後に求められるか、早期終了が有効になっている場合は符号の収束後に求められます。
TPC 復号化の早期終了
早期終了が有効になっている場合は、行方向および列方向の各復号化ステップで、軟入力の硬判定に対して符号の収束チェックが実行されます。早期終了は、行方向復号化または列方向復号化が収束した後にトリガーされる可能性があります。
すべての行またはすべての列で次の場合に、符号が収束します。
シンドロームが、符号 (ハミング符号、拡張ハミング符号、BCH 符号、または拡張 BCH 符号) でゼロと評価される。
パリティ チェックが、パリティ チェック コードでゼロと評価される。
報告される反復回数は、現在進行中の反復の値として評価されます。たとえば、3 回目の反復での行方向復号化の後に (2.5 回目の復号化ステップの後に) 符号の収束チェックが満たされた場合、返される反復回数は 3 になります。
TPC 符号化された短縮形の入力メッセージは、指定された 2 次元 TPC 符号ペアを使用して復号化されます。行方向の復号化では (NC – KC + SC, SC) 符号ペアを使用し、列方向の復号化では (NR – KR + SR, SR) 符号ペアを使用します。入力ベクトル長は、(NR – KR + SR) × (NC– KC + SC) でなければなりません。短縮メッセージの 2 次元 TPC 復号化を実行するために、短縮メッセージとパリティ ビットで構成される入力 LLR の列ベクトルは、(NR – KR + SR) 行 (NC – KC + SC) 列の行列に調整されます。
TPC 復号化器は、受信した短縮メッセージ LLR をフル レングスのコードと同様に処理しますが、次が異なります。
短縮形の受信コードワード内のビット位置は、-1 に設定されます。
Chase アルゴリズムは、最も信頼性の低いビットを選択している間、短縮形のビット位置を考慮しません。
参照
[1] Chase, D. "Class of Algorithms for Decoding Block Codes with Channel Measurement Information." IEEE Transactions on Information Theory, Volume 18, Number 1, January 1972, pp. 170–182.
[2] Pyndiah, R. M. "Near-Optimum Decoding of Product Codes: Block Turbo Codes." IEEE Transactions on Communications. Vol. 46, Number 8, August 1998, pp. 1003–1010.
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
バージョン履歴
R2018b で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)