メインコンテンツ

Integer-Output RS Decoder

リード・ソロモン符号の復号化による整数ベクトルデータの復元

  • Integer-Output RS Decoder block

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

説明

Integer-Output RS Decoder ブロックは、メッセージ ベクトルをリード・ソロモン コードワード ベクトルから復元します。適切に復号化するには、このブロックにあるパラメーター値が対応する Integer-Input RS Encoder ブロックのパラメーター値と一致しなければなりません。

リード・ソロモン符号は、メッセージ長が K でコードワード長が Nnumber of punctures です。NK はブロック ダイアログに直接指定します。符号のシンボルは、範囲 [0, 2M-1] の整数で、有限体 GF(2M) の要素を示します。MN に関する制限事項については、以下のM およびコードワード長 N に関する制限事項を参照してください。

このアイコンには、オプションの端子が表示されています。

入力と出力は、コードワードとメッセージをそれぞれ示す整数値信号です。詳細については、RS ブロックの入力および出力信号長を参照してください。このブロックは出力データ型を入力データ型から継承します。各ブロック端子でサポートされるデータ型については、サポートされているデータ型を参照してください。

リード・ソロモン符号のデータ表現の詳細については、整数形式 (リード・ソロモンのみ)の節を参照してください。

復号化器がフレームごとに複数のコードワードを処理する場合は、同じパンクチャ パターンがすべてのコードワードに適用されます。

M の既定値は ceil(log2(N+1)) であり、これは log2(N+1) 以上で最も小さい整数です。原始多項式の指定に後述されているように、GF(2M) の原始多項式を指定することにより、M の値を既定値から変更できます。

また、生成多項式の指定の記載のように、リード・ソロモン符号に生成多項式を指定することもできます。

(N,K) リード・ソロモン符号は、各コードワードで floor((N-K)/2) までのシンボル エラー (ビット エラー "ではない") を訂正します。

復号化失敗の場合、復号化器入力のメッセージ部が変更されずにそのまま復号化器出力として返されます。

入力信号と出力信号のサンプル時間は同じになります。

端子

入力

すべて展開する

リード・ソロモン コードワード。(NC×(NK + SP) 行 1 列の整数列ベクトルとして指定します。NC はコードワードの数、N[Codeword length N]K[Message length K]S[Shortened message length S]P はコードワードあたりのパンクチャの数です。

詳細については、RS ブロックの入力および出力信号長を参照してください。

データ型: single | double | integer

消去ベクトル。入力のリード・ソロモン コードワードと同じサイズのバイナリ列ベクトルの入力信号として指定します。

1 の消去値は、コードワードの同じ位置で消去されたビットに対応します。0 の値は消去されていない値に対応します。詳細については、パンクチャおよび消去を参照してください。

依存関係

この端子を有効にするには、[Enable erasures input port] を選択します。

データ型: double | Boolean

出力

すべて展開する

復号化されたメッセージ。次のいずれかとして返されます。

  • メッセージの短縮化を行わない場合は、(NC×K) 行 1 列の整数列ベクトル。

  • メッセージの短縮化を行う場合は、(NC×S) 行 1 列の整数列ベクトル。

NC はメッセージ語の数、K[Message length K (symbols)]S[Shortened message length S (symbols)] です。

メモ

復号化されたメッセージ語の数は、コードワードの数と等しくなります。

詳細については、RS ブロックの入力および出力信号長を参照してください。

シンボル復号化誤り。NC 個の要素をもつ整数ベクトルとして返されます。ここで、NC はコードワードの数です。この端子は、各コードワードの復号化時に検出されたシンボル エラー数を示します。負の整数は、ブロックが指定された符号化スキームを使用して訂正できるよりも多くの誤りを検出したことを示します。

メモ

(N,K) リード・ソロモン符号は、各コードワードで floor((N-K)/2) までのシンボル エラー (ビット エラーではない) を訂正します。受信コードワードに (N-K)/2 より多いシンボル エラーがある場合、復号化失敗が発生します。

依存関係

この端子を有効にするには、[Output number of corrected symbol errors] を選択します。

データ型: double

詳細については、サポートされているデータ型を参照してください。

パラメーター

すべて展開する

ブロック パラメーターを対話的に編集するには、プロパティ インスペクターを使用します。Simulink® ツールストリップの [シミュレーション] タブの [準備] ギャラリーで [プロパティ インスペクター] を選択します。

コードワード長。整数で指定します。

詳細については、M およびコードワード長 N に関する制限事項RS ブロックの入力および出力信号長を参照してください。

メッセージ語長。範囲 [1, N–2] の整数として指定します。ここで N はコードワード長です。

短縮メッセージ語長。SK となる整数として指定します。[Shortened message length S] < [Message length K] の場合、リード・ソロモン符号は短縮されます。

フルレングス (N, K) の符号で N および K の値を指定しても、復号化は (NK+S, S) 符号に短縮されます。

依存関係

このパラメーターを有効にするには、次を選択します。 [Specify shortened message length]

降べきの順に並べた、値の範囲が [0, 2M–1] の生成多項式。次のいずれかとして指定します。

  • 多項式の文字ベクトル。詳細については、Communications Toolbox での多項式の表現を参照してください。

  • 整数行ベクトル。降べきの順に並べた生成多項式の係数を表します。

  • 整数ガロア行ベクトル。降べきの順に並べた生成多項式の係数を表します。

各係数は、原始多項式で定義されるガロア体の要素です。詳細については、生成多項式の指定を参照してください。

例: [1 3 1 2 3] は、rsgenpoly(7,3) と等価です。

依存関係

このパラメーターを有効にするには、次を選択します。 [Specify generator polynomial]

降べきの順に並べた原始多項式。この多項式は M 次で、メッセージ語とコードワードを形成する整数に対応する有限ガロア体 GF(2M) を定義します。原始多項式を次のいずれかとして指定します。

詳細については、原始多項式の指定を参照してください。

例: 'X^3 + X + 1' は、(7,3) 符号 ppoly = primpoly(3,'nodisplay'); int2bit(ppoly,ceil(log2(max(ppoly))))' に使用される原始多項式です

依存関係

このパラメーターを有効にするには、次を選択します。 [Specify primitive polynomial]

パンクチャ ベクトル。(NK) 行 1 列のバイナリ列ベクトルとして指定します。1 を含む要素インデックスは、ブロックを変更せずに通過するデータ "シンボル" インデックスを表します。0 を含む要素インデックスは、データ ストリームからパンクチャされる、つまり削除されるデータ "シンボル" インデックスを表します。詳細については、パンクチャおよび消去を参照してください。

メモ

符号化器がフレームごとに複数のコードワードを処理する場合は、同じパンクチャ パターンがすべてのコードワードに適用されます。

依存関係

このパラメーターを有効にするには、次を選択します。 [Puncture code]

このチェック ボックスをオンにすると、消去端子 [Era] が有効になります。詳細については、パンクチャおよび消去を参照してください。

このチェック ボックスをオンにすると、追加の出力端子 [Err] が有効になります。この端子は入力コードワードで訂正されたブロックのシンボル エラー数を示します。

ブロックの特性

データ型

double | integer | single

多次元信号

なし

可変サイズの信号

なし

詳細

すべて展開する

アルゴリズム

このブロックは、Berlekamp-Massey 復号化アルゴリズムを使用します。このアルゴリズムについての詳細については、BCH と RS の誤りのみの復号化のアルゴリズムを参照してください。

参照

[1] Blahut, Richard E. Algebraic Codes for Data Transmission. Cambridge University Press, 2003.

[2] Wicker, Stephen B. Error Control Systems for Digital Communication and Storage. Upper Saddle River, NJ: Prentice Hall, 1995.

[3] Clark, George C., and J. Bibb Cain. Error-Correction Coding for Digital Communications. Applications of Communications Theory. New York: Plenum Press, 1981.

[4] Berlekamp, Elwyn R., Algebraic Coding Theory, New York, McGraw-Hill, 1968.

拡張機能

すべて展開する

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

バージョン履歴

R2006a より前に導入