LDPC Decoder
バイナリ低密度パリティ チェック (LDPC) コードの復号化
ライブラリ:
Communications Toolbox /
Error Detection and Correction /
Block
説明
LDPC Decoder ブロックは、確率伝播アルゴリズムを使用してバイナリ LDPC 符号を復号化します。この符号は、復調からの軟判定出力 (受信ビットの対数尤度比) として、ブロックに入力されます。このブロックは、パリティ チェック行列でパターンを想定しない一般バイナリ LDPC 符号を復号化します。詳細については、確率伝播復号化を参照してください。
入力と出力は離散時間信号です。出力サンプル時間と入力サンプル時間の比は、次のようになります。
コードワードの情報部分のみを復号化する場合は N/K
コードワード全体を復号化する場合は 1
N は受信信号の長さで、(0, 231) の範囲でなければなりません。K は符号化されていないメッセージの長さで、N 未満でなければなりません。
このアイコンには、LDPC Decoder ブロックのオプションの端子を含むすべての端子が表示されています。
例
Simulink の QPSK 変調信号の LDPC 符号化および復号化
LDPC 符号化され、QPSK 変調されたビット ストリームを AWGN チャネル経由で送信します。受信信号を復調および復号化します。誤り統計を計算します。
snr
変数は、[Model Properties]、[Callbacks] で InitFcn
コールバックを使用して初期化されます。AWGN Channel ブロックの SNR dB
パラメーターと QPSK Demodulator Baseband ブロックの Variance
パラメーターは、snr
変数を使用して設定を初期化します。
このシミュレーションはデータの 1 つの入力フレームを処理するように構成されています。Error Rate Calculation ブロックは、送信されたバイナリ データ ストリームと LDPC Decoder ブロックによって出力された情報データ ビットを比較します。
For SNR = 1 dB, the error rate is 0.
端子
入力
In — 対数尤度比
列ベクトル
対数尤度比。復調からの軟判定出力を含む N 行 1 列の列ベクトルとして指定します。N は変調前の LDPC コードワードのビット数です。各要素は受信ビットの対数尤度比であり、対数尤度比が正であれば、多くの場合、その値は 0
です。先頭 K 要素は、入力メッセージの情報部分に対応します。
データ型: double
出力
Out — 復号化されたデータ
列ベクトル
復号化されたデータ。列ベクトルとして返されます。[Decision type] パラメーターは、ブロックが硬判定を出力するか軟判定 (対数尤度比) を出力するかを指定します。
[Output format] パラメーターが
Information part
に設定されている場合、出力には受信コードワードの情報部分のみが含まれます。[Output format] パラメーターが
Whole codeword
に設定されている場合、出力には対数尤度比ベクトル全体が含まれます。
データ型: double
| Boolean
Iter — 実行した復号化の反復回数
正の整数
実行した復号化の反復回数。正の整数として返されます。
依存関係
この端子を有効にするには、[Output number of iterations executed] パラメーターを選択します。
データ型: double
ParChk — 最終パリティ チェック
列ベクトル
入力 LDPC 符号を復号化した後の最終パリティ チェック。(N-K) 行 1 列の列ベクトルとして返されます。N は変調前の LDPC コードワードのビット数です。K は符号化されていないメッセージの長さです。
依存関係
この端子を有効にするには、[Output final parity checks] パラメーターを選択します。
パラメーター
ブロック パラメーターを対話的に編集するには、プロパティ インスペクターを使用します。Simulink® ツールストリップの [シミュレーション] タブの [準備] ギャラリーで [プロパティ インスペクター] を選択します。
Parity-check matrix (sparse binary (N-K)-by-N matrix) — Parity-check matrix
dvbs2ldpc(1/2)
(既定値) | スパース バイナリ行列 | 非スパース インデックス行列
パリティ チェック行列。スパースの (N – K) 行 N 列のバイナリ値行列として指定します。N は受信信号の長さで、(0, 231) の範囲でなければなりません。K は符号化されていないメッセージの長さで、N 未満でなければなりません。パリティ チェック行列の最後の (N – K) 列は、2 次のガロア体 gf
(2) 内の可逆行列でなければなりません。
sparse(I(:,1),I(:,2),1)
のように、パリティ チェック行列の要素 1
の行インデックスと列インデックスを定義する 2 列の非スパース インデックス行列 I
としてパリティ チェック行列を指定することもできます。
このパラメーターは数値データ型を受け入れます。このパラメーターをスパース バイナリ行列に設定すると、このパラメーターは Boolean
データ型も受け入れます。
既定値では、関数 dvbs2ldpc
を使用して、DVB-S.2 規格に規定されている、ハーフ レート LDPC 符号化のスパース パリティ チェック行列を構成します。
例: dvbs2ldpc(R,'indices')
は、DVB-S.2 規格のインデックス行列を構成します。ここで、R
は符号化率であり、'indices'
は、パリティ チェック行列の要素 1
の行インデックスと列インデックスを定義する 2 列の倍精度行列として dvbs2ldpc
の出力形式を指定します。
Output format — 出力値の形式
Information part
(既定値) | Whole codeword
出力値の形式。以下のいずれかの値として指定します。
Information part
— ブロックは、受信した対数尤度比ベクトルの情報部分のみを含む K 行 1 列の列ベクトルを出力します。K は符号化されていないメッセージの長さです。Whole codeword
— ブロックは、対数尤度比ベクトル全体を含む N 行 1 列の列ベクトルを出力します。N は受信信号の長さです。N と K は、(N–K) 行 K 列のパリティ チェック行列の次元と一致しなければなりません。
Decision type — 判定方法
Hard Decision
(既定値) | Soft decision
復号化に使用する判定方法。以下のいずれかの値として指定します。
Hard decision
— ブロックは、データ型double
またはboolean
の復号化されたデータを出力します。[Output data type] パラメーターを使用して、このデータ型を指定します。Soft decision
— ブロックは、データ型double
の対数尤度比を出力します。
出力データ型 — 出力値のデータ型
double
(既定値) | boolean
出力値のデータ型。[double]
または [boolean]
として指定します。
依存関係
このパラメーターを有効にするには、[Decision type] パラメーターを [Hard decision]
に設定します。
反復回数 — 復号化反復の最大数
50
(既定値) | 正の整数
復号化の最大反復回数。正の整数を指定します。
Stop iterating when all parity-checks are satisfied — 反復終了条件
off
(既定値) | on
すべてのパリティ チェックが満たされた後、復号化を終了するには、このパラメーターを選択します。一部のパリティ チェックが満たされない場合、[Number of iterations] パラメーターで指定された反復回数後に、復号化が終了します。
Output number of iterations executed — Output number of iterations executed
off
(既定値) | on
[Iter] 出力端子を有効にするには、このパラメーターを選択します。
Output final parity-checks — Output number of iterations executed
off
(既定値) | on
[ParChk] 出力端子を有効にするには、このパラメーターを選択します。
ブロックの特性
データ型 |
|
多次元信号 |
|
可変サイズの信号 |
|
アルゴリズム
このブロックは、メッセージ伝達アルゴリズムとも呼ばれる確率伝播アルゴリズムを使用して、LDPC 復号化を実行します。
確率伝播復号化
確率伝播アルゴリズムの実装は、Gallager によって提示された復号化アルゴリズムに基づいています [2]。
LDPC 符号化されて送信されたコードワード c = c0、c1、...、cn-1 に対して、LDPC 復号化器への入力は、対数尤度比 (LLR) の値 になります。
各反復で、アルゴリズムの主なコンポーネントが以下の式に基づいて更新されます。
,
(最初の反復の前に として初期化される)、および
.
それぞれの反復の最後で、L(Qi) には、送信ビット ci に対する LLR 値の更新された推定値が含まれます。値 L(Qi) は ci の軟判定出力です。L(Qi) ≤ 0 の場合、ci の硬判定出力は 1 です。それ以外の場合、ci の硬判定出力は 0 です。
すべてのパリティ チェックが満たされた場合に停止するように復号化が設定されている場合、アルゴリズムは、各反復の終わりにパリティ チェック式 (H c' = 0) を検証します。すべてのパリティ チェックが満たされた場合、または最大反復回数に到達した場合、復号化は停止します。
インデックス集合 と は、パリティ チェック行列 (PCM) に基づいています。インデックス集合 Ci と Vj はそれぞれ、PCM の列 i と行 j のすべての非ゼロ要素に対応します。
次の図は、与えられた PCM の i = 5 と j = 3 に対するインデックス集合の計算を示しています。
無限数がアルゴリズム式で使用されないように、atanh(1) は 19.07 に、atanh(–1) は –19.07 に設定されます。有限値で演算を行うために、MATLAB® は tanh(19.07) に対して 1 を、tanh(-19.07) に対して –1 を返します。
参照
[1] Gallager, Robert G. Low-Density Parity-Check Codes. Cambridge, MA: MIT Press, 1963.
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
バージョン履歴
R2007a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)