リード ソロモン (RS) 符号は、デジタル通信およびストレージの広範なアプリケーションにおけるブロック ベースのエラー訂正符号です。
デジタル ストレージ機器、ワイヤレス/モバイル通信、デジタル ビデオ放送など、多くのシステムでエラー訂正に使用されます。
Reed-Solomon Decoder は、Reed-Solomon Encoder で生成されたブロックを処理し、エラーを訂正して、情報シンボルの復元を試みます。訂正可能なエラーの数およびタイプは、符号の特性によって異なります。
リード ソロモン符号は BCH (Bose-Chaudhuri-Hocquenghem) 符号であるため、線形ブロック符号でもあります。(n,k) 線形ブロック符号は、有限体上の n 次元ベクター空間の k 次元サブ空間です。有限体の要素はシンボルと呼ばれます。リード ソロモン符号では、n は通常 2
-1
です (s は各シンボルのビット幅)。符号を短縮すると、n は小さくなります。デコーダーは、全長符号と短縮符号の両方を処理します。また、エラーが含まれている可能性が高いことがわかっているシンボルの消去も処理します。
デコーダーがブロックを処理するとき、次の 3 つの可能性があります。
- 情報シンボルが復元されます。これは、
2p+r <= n-k
の場合です (p
はエラーの数、r
は消去の数)。 - デコーダーは、情報シンボルを復元できないことをレポートします。
- デコーダーは、情報シンボルを復元できず、エラーもレポートしません。
これらの確率は、符号と通信チャネルの状態によります。 Simulink® はチャネルをモデリングし、これらの可能性を予測するのに適したツールです。
ブロック インターフェイスのチャネルおよびピン
このザイリンクス Reed-Solomon Decoder ブロックは AXI4 に準拠しています。インターフェイスの標準 AXI チャネルは次のとおりです。
- input チャネル
-
-
input_tvalid
- input チャネルの TVALID。
-
input_tdata_erase
-
Optional Pins タブで Erase を選択すると、チャンネルに追加されます。
data_in
に現在あるシンボルを消去として処理する必要があることを示します。このピンを駆動する信号は、Bool
型である必要があります。 -
input_tdata_data_in
- デコードする
n
シンボルのブロックを入力します。この信号はUFIX_s_0
型である必要があります (s
は各シンボルのビット幅)。 -
input_tlast
- 入力ブロックの最終シンボルを示します。イベント出力を生成する場合にのみ使用します。イベント出力が使用されない場合は、Low または High に接続できます。
-
input_tready
- input チャネルの TREADY。
-
input_tuser_mark_in
- data_in 上のデータを区別するためのマーカー ビット。Optional Pins タブで Marker Bits を選択すると、チャンネルに追加されます。
-
- output チャネル
-
-
output_tready
- 出力チャネルの TREADY。
-
output_tvalid
- 出力チャネルの TVALID。
-
output_tdata_data_out
- デコードした結果の情報シンボルとパリティ シンボルを生成します。
data_out
のデータ型は、data_in
のデータ型と同じです。 -
output_tlast
-
tdata_data_out
に最後のブロックの最後のシンボルが現れると High になります。output_tlast
は、UFIX_1_0
型の信号を生成します。 -
output_tuser_mark_out
- mark_in とタグ付けされたビットは、 LogiCORE™ のレイテンシ分遅延されます。Optional Pins タブで Marker Bits を選択すると、チャンネルに追加されます。
-
output_tdata_info
-
Optional Pins タブで Info を選択すると、チャンネルに追加されます。この信号は、
tdata_data_out
のブロックの最終情報シンボルを示します。 -
output_tdata_data_del
-
Optional Pins タブで Original Delayed Data を選択すると、チャンネルに追加されます。この信号は、
tdata_data_out
のブロックの最終情報シンボルを示します。
-
- stat チャネル
-
-
stat_tready
- stat チャネルの TREADY。
-
stat_tvalid
- stat チャネルの TVALID。ダウンストリームのスレーブが常にデータを受け入れることができる状態にある場合、または stat チャネルが使用されていない場合は、この信号を High にする必要があります。
-
stat_tdata_err_cnt
-
data_out
がブロックの最終シンボルを表示するときの値を示します。この値は、訂正されたエラーの数です。err_cnt
はUFIX_b_0
型である必要があります (b
は n-k を表現するのに必要なビット数)。 -
stat_tdata_err_found
-
output_tdata_data_out
がブロックの最終シンボルを表示するときの値を示します。デコーダーがデコード中にエラーまたは消去を検出した場合の値は 1 です。err_found
はUFIX_1_0
型である必要があります。 -
stat_tdata_fail
-
output_tdata_data_out
がブロックの最終シンボルを表示するときの値を示します。デコーダーが情報シンボルを復元できなかった場合は 1、そうでない場合は 0 になります。この信号は、UFIX_1_0
型である必要があります。 -
stat_tdata_erase_cnt
- 消去デコードを有効にした場合のみ使用可能です。
UFIX_b_0
型である必要があります (b
は n を表現するのに必要なビット数)。Optional Pins タブで Erase を選択すると、チャンネルに追加されます。 -
stat_tdata_bit_err_1_to_0
- 受信されたビット数 1 が 0 に訂正されたことを示します。Optional Pins タブで Error Statistics を選択すると、チャンネルに追加されます。要素の幅は、((n-k) * Symbol_Width) を表すのに必要な 2 進ビットの数です。
-
stat_tdata_bit_err_0_to_1
- 受信されたビット数 0 が 1 に訂正されたことを示します。Optional Pins タブで Error Statistics を選択すると、チャンネルに追加されます。要素の幅は、((n-k) * Symbol_Width) を表すのに必要な 2 進ビットの数です。
-
stat_tlast
- [Number of Channels] が 1 よりも大きい場合に追加されます。最終チャネルのステータス情報が
output_tdata
にあることを示します。
-
- event チャネル
-
-
event_s_input_tlast_missing
-
input_tlast
がアサートされるべきときにアサートされなかったことを示します。このピンが不要な場合は、未接続のままにしてください。 -
event_s_input_tlast_unexpected
-
input_tlast
がアサートされるべきでないときにアサートされたことを示します。このピンが不要な場合は、未接続のままにしてください。 -
event_s_ctrl_tdata_invalid
-
ctrl_tdata
の値が無効であることを示します。これがアサートされる場合は、ブロックをリセットする必要があります。このピンが不要な場合は、未接続のままにしてください。
-
- ctrl チャネル
- このチャネルは、ブロックの長さやチェック シンボルの数を変更可能にするか、またはパンクチャを選択した場合のみ使用できます。
-
ctrl_tready
- 制御チャネルの TREADY。
-
ctrl_tvalid_r_in
- 制御チャネルの TVALID。
-
ctrl_tdata
- この入力には、ブロックの長さ、チェック シンボル数、パンクチャの選択 (該当する場合) が含まれます。
-
- Other Optional Pins
-
-
aresetn
-
デコーダーをリセットします。このピンは、Optional Pins タブで Synchronous Reset を指定するとブロックに追加されます。
rst
を駆動する信号は、Bool
型である必要があります。デコーダーでコード シンボルのデコードを開始するには、
aresetn
を 1 サンプル周期以上 Low にアサートする必要があります。 -
aclken
- デコーダーのクロック イネーブル信号を送信します。
aclken
を駆動する信号は、Bool
型である必要があります。Clock Enable オプション ピンを選択するとブロックに追加されます。
-
ブロック パラメーター
Simulink® モデルでブロックのアイコンをダブルクリックすると、Block Parameters ダイアログ ボックスが開きます。
- Attributes 1 タブ
-
Attributes
1 タブには、次のパラメーターがあります。
- Code Block Specification
-
- Code specification
- 必要な Reed Solomon Decoder のタイプを指定します。選択肢には次のものがあります。
- Custom
- ブロック パラメーターをすべて設定できます。
- DVB
- DVB (デジタル ビデオ放送) 規格 (204、188) 短縮 RS 符号をインプリメントします。
- ATSC
- ATSC (Advanced Television Systems Committee) 規格 (207、187) 短縮 RS 符号をインプリメントします。
- G.709
- G.709 光伝送ネットワーク (OTN) 規格をインプリメントします。
- CCSDS
- CCSDS (Consultative Committee for Space Data Systems) 規格 (255、223) 全長 RS 符号をインプリメントします。
- IESS-308 (All)
- IESS-308 (INTELSAT Earth Station Standard) 仕様 (すべて) 短縮 RS 符号をインプリメントします。
- IESS-308 (126)
- IESS (INTELSAT Earth Station Standard) 仕様 (126、112) 短縮 RS 符号をインプリメントします。
- IESS-308 (194)
- IESS-308 規格 (194、178) 短縮 RS 符号をインプリメントします。
- IESS-308 (208)
- IESS-308 規格 (208、192) 短縮 RS 符号をインプリメントします。
- IESS-308 (219)
- IESS-308 規格 (219、201) 短縮 RS 符号をインプリメントします。
- IESS-308 (225)
- IESS-308 規格 (225、205) 短縮 RS 符号をインプリメントします。
- IEEE-802.16
- IEEE-802.16 仕様 (255、239) 全長 RS 符号をインプリメントします。
- Symbol width
- 符号のシンボルのビット幅を指定します。エンコーダーでは、3 ~ 12 の幅がサポートされています (デフォルトは 8)。
- Field polynomial
- シンボル フィールドの元となる多項式を指定します。10 進数値として指定する必要があります。この多項式は、原始多項式である必要があります。値 0 はデフォルトの多項式を使用する必要があることを示します。次の表に、デフォルトの多項式を示します。
表 1. [Field Polynomial] のデフォルトの多項式 シンボル幅 デフォルト多項式 配列表現 3 x3 + x + 1 11 4 x4 + x + 1 19 5 x5 + x2 + 1 37 6 x6 + x + 1 67 7 x7 + x3 + 1 137 8 x8 + x4 + x3 + x2 + 1 285 9 x9 + x4+ 1 529 10 x10 + x3 + 1 1033 11 x11 + x2 + 1 2053 12 x12 + x6 + x4 + x + 1 4179 - Scaling Factor (h)
- (前の式の h) は、符号のスケーリング係数を指定します。通常 h は 1 ですが、2S - 1 (s はシンボル幅) までの値を指定できます。α h が原始となる値を指定する必要があります。つまり、h は 2S - 1 と互いに素である必要があります。
- Generator Start
- 生成多項式の最初の根 r を指定します。生成多項式 g(x) は次のとおりです。
α
はシンボル体の原始元で、スケーリング係数は次のように説明されます。- Variable Block Length
- オンにすると、ブロックに
ctrl
入力チャネルが追加されます。 - Symbols Per Block(n)
- エンコーダーが生成するブロックのシンボル数を指定します。有効な値は 3 ~ 2S -1 (s はシンボル幅) です。
- Data Symbols(k)
- 各ブロックに含まれる情報シンボルの数を指定します。有効な値は max(n - 256, 1) ~ n - 2. です。
- Variable Check Symbol Options
-
- Variable Number of Check Symbols (r)
- Define Supported R_IN Values
-
R_IN でサンプリングされる可能性のある値のサブセットのみが必要な場合、コアのサイズを削減することが可能です。たとえば Intelsat 規格の場合、R_IN 入力は 5 ビット幅ですが、14、16、18、20 の r 値のみが必要です。これら 4 つの値のみがサポートされるように定義すると、コアのサイズを多少削減できることがあります。R_IN でこれ以外の値がサンプリングされた場合、コアでデータが正しくデコードされません。
- Number of Supported R_IN Values
- サポートされる R_IN 値の数を指定します。
- Supported R_IN Definition File
- サポートされる R 値を定義する COE ファイルです。フォーマットは「radix=10; legal_r_vector=14,16,18,20;」です。legal_r_vector の要素数は、Number of Supported R_IN Values で指定した数と同じである必要があります。
- Attributes 2 タブ
-
- Implementation
-
- State Machine
-
- Self Recovering
- ブロックが無効なステートに遷移したときに、ブロックが同期リセットします。
- Memory Style
- メモリ スタイルを Distributed、Block、Automatic から選択します。
- Number Of Channels
- エンコーダーで処理される時分割多重化チャネルの数を指定します。最大 128 チャネルまでサポートされます。
- Output check symbols
- 選択している場合は、各ブロックの n 個のシンボルすべてが出力チャネルに出力されます。選択していない場合は、k 個の情報シンボルのみが出力されます。
- Puncture Options
-
- Number of Puncture Patterns
- LogiCORE で処理する必要のあるパンクチャ パターンの数を指定します。パンクチャリングが不要な場合は、0 に設定します。
- Puncture Definition File
- パンクチャ パターンの定義に使用するファイルのパス名を指定します。
現在の作業ディレクトリにある COE ファイルの場合は、相対パスを指定できます。たとえば、「[cwd '/ieee802_16d_puncturing.coe']」のように指定します。
- Optional pins タブ
-
- Clock Enable
- ブロックに aclken ピンを追加します。この信号はクロック イネーブルとなるので、ブール型である必要があります。
- Info
- output_tdata_info ピンを追加します。tdata_data_out 上のブロックの最終情報シンボルをマークします。
- Synchronous Reset
- ブロックに aresetn ピンを追加します。この信号はブロックをリセットし、ブール型である必要があります。この信号は 2 クロック サイクル以上アサートする必要がありますが、デコーダーがデコードを開始する前にアサートする必要はありません。
- Original Delayed Data
- オンにすると、ブロックに
tdata_data_del
出力が追加されます。output_tdata 出力に DAT_DEL があることを示します。 - Erase
- オンにすると、ブロックに
input_tdata_erase
入力ピンが追加されます。 - Error Statistics
- 次のエラー統計出力を追加します。
- bit_err_0_to_1
- 受信されたビット数 1 が 0 に訂正されたことを示します。
- bit_err_1_to_0
- 受信されたビット数 0 が 1 に訂正されたことを示します。
- Marker Bits
- ブロックに次のピンを追加します。
- input_tuser_mark_in
-
input_tdata_ data_in
のデータにタグ付けするためのマーカー ビットを示します。 - output_tuser_mark_out
- mark_in とタグ付けされたビットは、LogiCORE のレイテンシ分遅延されます。
- Number of Marker Bits
- マーカー ビットの数を指定します。
このブロックで使用されるその他のパラメーターについては、[Block Parameters] ダイアログ ボックスの共通オプション を参照してください。
LogiCORE 資料
『Reed-Solomon Decoder LogiCORE IP 製品ガイド』 (PG107)