このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
Binary-Output RS Decoder
バイナリ ベクトル データを復元するためのリード・ソロモン符号の復号化
ライブラリ:
Communications Toolbox /
Error Detection and Correction /
Block
説明
Binary-Output RS Decoder ブロックは、バイナリ リード・ソロモン コードワード ベクトルからバイナリ メッセージ ベクトルを復元します。適切に復号化するには、このブロックにあるパラメーター値が対応する Binary-Input RS Encoder ブロックのパラメーター値と一致しなければなりません。
この符号のシンボルは長さ M の 2 進シーケンスで、ガロア体の要素 GF(2M) に対応します。各シンボルの 1 番目のビットは、最上位のビットです。
次の図は、コードワード長 N=7、メッセージ語長 K=2 の場合の復号化器の入出力語長を示しています。N=2M–1 であることから、N=7 であるとき、シンボル長 M=3 です。
各入力コードワードは 7 つの 3 ビット整数を表す長さ 21 のバイナリ ベクトルです。対応する各出力メッセージ語は 2 つの 3 ビット整数を表す長さ 6 のバイナリ ベクトルです。詳細については、RS ブロックの入力および出力信号長を参照してください。
このアイコンには、オプションの端子を含むすべての端子が表示されています。
例
リード・ソロモンで符号化した信号の BER の計算
リード・ソロモン (RS) 符号化と 2-FSK 変調を整数値信号に適用し、変調後の信号を AWGN チャネルに渡します。2-FSK 復調とバイナリ出力の RS 復号化を適用した後の信号のビット エラー レート (BER) を計算します。
cm_binary_input_rs_encoder_output_decoder
モデルには次のものが含まれています。
Random Integer Generatorブロック — 整数値信号を生成する
Data Type Conversion (Simulink)ブロック — データ型をエラー レートの計算に必要な型に変換する
Binary-Input RS Encoderブロック — 信号を RS 符号化する
M-FSK Modulator Basebandブロック — 信号を 2-FSK 変調する
AWGN Channelブロック — 信号にガウス ホワイト ノイズを付加する
M-FSK Demodulator Basebandブロック — 信号を 2-FSK 復調する
Binary-Output RS Decoderブロック — 信号を RS 復号化する
2 つの別個のError Rate Calculationブロック — RS 復号化前後の信号の誤り統計を計算する
復号化後および符号化後の誤り統計を比較し、受信信号に対する RS 符号化の誤り訂正の効果を示します。
For an AWGN channel with SNR = -2 dB, the computed error rates are: Decoded Encoded ________ _______ BER 0.000375 0.00235 Number of errors 18 141 Number of bits transmitted 48000 60000
端子
入力
In — リード・ソロモン コードワード
バイナリ列ベクトル
リード・ソロモン コードワード (ビット単位)。(NC×(N – K + S – P)×M) 行 1 列のバイナリ列ベクトルとして指定します。NC はコードワードの数、N は [Codeword length N (symbols)]、K は [Message length K (symbols)]、S は [Shortened message length S (symbols)]、P はコードワードあたりのパンクチャ数、M はシンボルあたりのビット数です。
詳細については、RS ブロックの入力および出力信号長を参照してください。
データ型: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| Boolean
| ufix(1)
Era — 消去ベクトル
バイナリ列ベクトル
消去ベクトル (シンボル単位)。(NC×(N – K + S – P)) 行 1 列のバイナリ列ベクトルとして指定します。NC はコードワードの数、N は [Codeword length N (symbols)]、K は [Message length K (symbols)]、S は [Shortened message length S (symbols)]、P はコードワードあたりのパンクチャ数、M はシンボルあたりのビット数です。
1 の消去値は、コードワードの同じ位置で消去されたビットに対応します。0 の値は消去されていない値に対応します。詳細については、パンクチャおよび消去を参照してください。
依存関係
この端子を有効にするには、[Enable erasures input port] を選択します。
データ型: double
| Boolean
出力
Out — 復号化されたメッセージ
バイナリ列ベクトル
ビット単位の復号化されたメッセージ。次のいずれかとして返されます。
メッセージの短縮化を行わない場合は、(NC×K×M) 行 1 列のバイナリ列ベクトル。
メッセージの短縮化を行う場合は、(NC×S×M) 行 1 列のバイナリ列ベクトル。
NC はメッセージ語の数、K は [Message length K (symbols)]、M はシンボルあたりのビット数、S は [Shortened message length S (symbols)] です。
メモ
復号化されたメッセージ語の数は、コードワードの数と等しくなります。
詳細については、RS ブロックの入力および出力信号長を参照してください。
データ型: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| Boolean
| ufix(1)
Err — 復号化誤り
整数ベクトル
シンボル復号化誤り。NC 個の要素をもつ整数ベクトルとして返されます。ここで、NC はコードワードの数です。この端子は、各コードワードの復号化時に検出されたシンボル誤り数を示します。負の整数は、ブロックが指定された符号化スキームを使用して訂正できるよりも多くの誤りを検出したことを示します。
メモ
(N,K) リード・ソロモン符号は、各コードワードで floor((N-K)/2)
までのシンボル誤り (ビット エラーではない) を訂正します。受信コードワードに (N-K)/2 より多いシンボル誤りがある場合、復号化失敗が発生します。
依存関係
この端子を有効にするには、[Output number of corrected symbol errors] を選択します。
データ型: double
詳細については、サポートされているデータ型を参照してください。
パラメーター
ブロック パラメーターを対話的に編集するには、プロパティ インスペクターを使用します。Simulink® ツールストリップの [シミュレーション] タブの [準備] ギャラリーで [プロパティ インスペクター] を選択します。
Codeword length N (symbols) — コードワード長
7
(既定値) | 整数
シンボル内のコードワード長。整数として指定します。
詳細については、M とコードワード長 N の制限とRS ブロックの入力および出力信号長を参照してください。
Message length K (symbols) — メッセージ語長
3
(既定値) | 整数
シンボル内のメッセージ語長。範囲 [1, N–2] の整数として指定します。ここで N はコードワード長です。
Shortened message length S (symbols) — 短縮メッセージ語長
3
(既定値) | 整数
シンボル内の短縮メッセージ語長。S ≤ K となる整数として指定します。[Shortened message length S (symbols)] < [Message length K (symbols)] の場合、リード・ソロモン符号は短縮されます。
フルレングス (N, K) の符号で N および K の値を指定しても、復号化は (N–K+S, S) 符号に短縮されます。
依存関係
このパラメーターを有効にするには、[Specify shortened message length] を選択します。
Generator polynomial — 生成多項式
rsgenpoly(7, 3, [], [], 'double')
(既定値) | 多項式の文字ベクトル | バイナリ行ベクトル | バイナリ ガロア行ベクトル
降べきの順に並べた、値が 0 ~ 2M–1 の生成多項式。次のいずれかとして指定します。
多項式の文字ベクトル。詳細については、Communications Toolbox での多項式の表現を参照してください。
整数行ベクトル。降べきの順に並べた生成多項式の係数を表します。
整数ガロア行ベクトル。降べきの順に並べた生成多項式の係数を表します。
各係数は、原始多項式で定義されるガロア体の要素です。詳細については、生成多項式の指定を参照してください。
例: [1 3 1 2 3]
は、rsgenpoly(7,3)
と等価です。
依存関係
このパラメーターを有効にするには、[Specify generator polynomial] を選択します。
Primitive polynomial — 原始多項式
'X^3 + X + 1'
(既定値) | 多項式の文字ベクトル | バイナリ行ベクトル
降べきの順に並べた原始多項式。この多項式は M 次で、メッセージ語とコードワードを形成する整数に対応する有限ガロア体 GF(2M) を定義します。原始多項式を次のいずれかとして指定します。
多項式の文字ベクトル。詳細については、Communications Toolbox での多項式の表現を参照してください。
バイナリ行ベクトル。生成多項式の係数を表します。
詳細については、M とコードワード長 N の制限を参照してください。
例: 'X^3 + X + 1'
は、(7,3) 符号 ppoly = primpoly(3,'nodisplay'); int2bit(ppoly,ceil(log2(max(ppoly))))'
に使用される原始多項式です
依存関係
このパラメーターを有効にするには、[Specify primitive polynomial] を選択します。
Puncture vector — パンクチャ ベクトル
[ones(2,1); zeros(2,1)]
(既定値) | バイナリ列ベクトル
パンクチャ ベクトル。(N–K) 行 1 列のバイナリ列ベクトルとして指定します。1
を含む要素インデックスは、ブロックを変更せずに通過するデータ "シンボル" インデックスを表します。0
を含む要素インデックスは、データ ストリームからパンクチャされる、つまり削除されるデータ "シンボル" インデックスを表します。詳細については、パンクチャおよび消去を参照してください。
依存関係
このパラメーターを有効にするには、[Punctured code] を選択します。
Enable erasures input port — Enable erasures input port
off (既定値) | on
このチェック ボックスをオンにすると、消去端子 [Era] が有効になります。詳細については、パンクチャおよび消去を参照してください。
Output number of corrected symbol errors — 訂正されたシンボル誤り数を出力する端子の有効化
off (既定値) | on
このチェック ボックスをオンにすると、追加の出力端子 [Err] が有効になります。この端子は入力コードワードで訂正されたブロックのシンボル誤り数を示します。
出力データ型 — ブロックの出力型
Same as input
(既定値) | boolean
| double
ブロックの出力型。[Same as input]
、[boolean]
または [double]
として指定します。
詳細
RS ブロックの入力および出力信号長
リード・ソロモン符号は、メッセージ語長が K、または短縮メッセージ語長が S です。コードワード長は N – K + S – P で、N はフル コードワード長、P はコードワードあたりのパンクチャの数です。メッセージの短縮化を行わない場合は、K = S であるため、コードワード長の式は N – P に短縮されます。復号化器がフレームごとに複数のコードワードを処理する場合は、同じパンクチャ パターンがすべてのコードワードに適用されます。
この表では、リード・ソロモン符号化器および復号化器の入力および出力信号長の式を示します。
表記 y = NC × x は、y が x の整数倍であることを表します。
入力、消去、および出力ベクトル長 | ||
---|---|---|
RS ブロック コーダー | メッセージの短縮化の使用なし | メッセージの短縮化の使用あり |
Binary-Input RS Encoder | 入力長 (ビット): NC × K × M 出力長 (ビット): NC × (N–P) × M | 入力長 (ビット): NC × S × M 出力長 (ビット): NC × (N–K+S–P) × M |
Binary-Output RS Decoder | 入力長 (ビット): NC × (N–P) × M 消去長 (シンボル): NC × (N–P) 出力長 (ビット): NC × K × M | 入力長 (ビット): NC × (N–K+S–P) × M 消去長 (シンボル): NC × (N–K+S–P) 出力長 (ビット): NC × S × M |
N はコードワード長です。
K はメッセージ語長です。
S は短縮メッセージ語長です。
NC はコードワード (およびメッセージ語) の数です。
P はコードワードあたりのパンクチャの数で、パンクチャ ベクトルの 0 の数と等しくなります。
M は原始多項式の次数です。M ビットの各グループは、有限ガロア体
GF(2M)
に属する0
と2M–1
の間の整数を表します。
リード・ソロモン符号のデータ表現の詳細については、整数形式 (リード・ソロモンのみ)を参照してください。
M とコードワード長 N の制限も参照してください。
M とコードワード長 N の制限
[Specify primitive polynomial] を選択しない場合、コードワード長 N の有効な値は 7 ~ 65535 です。この場合、ブロックは次数
M = ceil(log2(N+1))
の既定の原始多項式を使用します。primpoly(ceil(log2(N+1)))
を実行することにより、既定の原始多項式を表示することができます。[Specify primitive polynomial] を選択する場合、原始多項式の次数 M の有効な値は 3 ~ 16 です。この場合の N の有効な値は 7 ~ 2M–1 です。[Specify primitive polynomial] を選択すると、メッセージ語とコードワードを形成する値に対応して、有限体 GF(2M) を定義する原始多項式を指定できます。
生成多項式の指定
リード・ソロモン符号の生成多項式を指定するには、[Specify generator polynomial] を選択して、[Generator polynomial] パラメーターを有効にします。0 から 2M-1 までの要素値をもつ整数行ベクトルを入力します。このベクトルは、係数が整数形式で表される GF(2M) の要素である多項式を降べきの順に表します。整数とバイナリ形式の詳細については、整数形式 (リード・ソロモンのみ)を参照してください。生成多項式は、次の因数分解形式で示される多項式と等しくなければなりません。
g(x) = (x+αb)(x+αb+1)(x+αb+2)...(x+αb+N-K-1)
α は入力メッセージが定義されるガロア体の原始元で、b は整数です。
[Specify generator polynomial] を選択しない場合、ブロックは、b= 1 に対応するリード・ソロモン符号化の既定の生成多項式を使用します。rsgenpoly
を実行することにより、既定の生成多項式を表示することができます。
既定の原始多項式を使用する ([Specify primitive polynomial] を選択しない) 場合、既定の生成多項式は
rsgenpoly(N,K)
で、ここではN = 2M-1
です。既定の原始多項式を使用しないで ([Specify primitive polynomial] を選択して) 原始多項式を
poly
として指定した場合、生成多項式はrsgenpoly(N,K,poly)
です。
メモ
生成多項式の次数は N − K で、ここで N はコードワード長、K はメッセージ語長です。
パンクチャおよび消去
1
と 0
はパンクチャ ベクトルと消去ベクトルでは正反対の意味になります。
パンクチャ ベクトルでは、
1
は、データ シンボルがブロックを変更せずに通過することを意味します。0
は、データ シンボルがデータ ストリームからパンクチャ、つまり削除されることを意味します。
消去ベクトルでは、
1
は、データ シンボルが消去シンボルで置き換えられることを意味します。0
は、データ シンボルがブロックを変更せずに通過することを意味します。
これらの規則は符号化器と復号化器の両方に適用されます。詳細については、短縮、パンクチャ、および消去を参照してください。
サポートされているデータ型
端子 | サポートされているデータ型 |
---|---|
In |
|
Out | |
Era |
|
Err |
|
アルゴリズム
このブロックは、Berlekamp-Massey 復号化アルゴリズムを使用します。このアルゴリズムについての詳細については、BCH と RS の誤りのみの復号化のアルゴリズムを参照してください。
参照
[1] Wicker, Stephen B. Error Control Systems for Digital Communication and Storage. Upper Saddle River, NJ: Prentice Hall, 1995.
[2] Berlekamp, Elwyn R. Algebraic Coding Theory. New York: McGraw-Hill, 1968.
[3] Clark, George C., Jr., and J. Bibb Cain. Error-Correction Coding for Digital Communications. New York: Plenum Press, 1981.
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
バージョン履歴
R2006a より前に導入
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)