Reed-Solomon Decoder 9.0 - 2022.1 日本語

Vitis Model Composer ユーザー ガイド (UG1483)

Document ID
UG1483
Release Date
2022-05-26
Version
2022.1 日本語
注記: このブロックはライセンス付きのコアで、FPGA ファブリックにインプリメントされます。適切なコア ライセンスを購入するには、ザイリンクス ウェブサイトにアクセスしてください。

リード ソロモン (RS) 符号は、デジタル通信およびストレージの広範なアプリケーションにおけるブロック ベースのエラー訂正符号です。

デジタル ストレージ機器、ワイヤレス/モバイル通信、デジタル ビデオ放送など、多くのシステムでエラー訂正に使用されます。

Reed-Solomon Decoder は、Reed-Solomon Encoder で生成されたブロックを処理し、エラーを訂正して、情報シンボルの復元を試みます。訂正可能なエラーの数およびタイプは、符号の特性によって異なります。

リード ソロモン符号は BCH (Bose-Chaudhuri-Hocquenghem) 符号であるため、線形ブロック符号でもあります。(n,k) 線形ブロック符号は、有限体上の n 次元ベクター空間の k 次元サブ空間です。有限体の要素はシンボルと呼ばれます。リード ソロモン符号では、n は通常 2 -1 です (s は各シンボルのビット幅)。符号を短縮すると、n は小さくなります。デコーダーは、全長符号と短縮符号の両方を処理します。また、エラーが含まれている可能性が高いことがわかっているシンボルの消去も処理します。

デコーダーがブロックを処理するとき、次の 3 つの可能性があります。

  1. 情報シンボルが復元されます。これは、2p+r <= n-k の場合です (p はエラーの数、r は消去の数)。
  2. デコーダーは、情報シンボルを復元できないことをレポートします。
  3. デコーダーは、情報シンボルを復元できず、エラーもレポートしません。

これらの確率は、符号と通信チャネルの状態によります。 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_cntUFIX_b_0 型である必要があります (b は n-k を表現するのに必要なビット数)。
stat_tdata_err_found
output_tdata_data_out がブロックの最終シンボルを表示するときの値を示します。デコーダーがデコード中にエラーまたは消去を検出した場合の値は 1 です。err_foundUFIX_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
メモリ スタイルを DistributedBlockAutomatic から選択します。
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)