Reed-Solomon Encoder 9.0 - 2022.1 日本語

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

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

リード ソロモン (RS) 符号は、デジタル通信およびストレージの広範なアプリケーションにおけるブロック ベースのエラー訂正符号です。このブロックは、 AMBA® AXI4-Stream 規格に準拠しています。

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

Reed-Solomon Encoder は、データ ブロックに冗長シンボルを追加し、伝送中に発生したエラーを訂正できるようにします。エラーはさまざまな理由で発生します (ノイズ、干渉、CD の傷など)。Reed-Solomon Decoder は、エラーの訂正と元のデータの復元を試みます。訂正可能なエラーの数およびタイプは、符号の特性によって異なります。

次に、典型的なシステムを示します。

図 1. 典型的なシステム

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

エンコーダーは体系的であり、長さ n の符号ブロックは、長さ k の情報ブロックから n-k 個のパリティ シンボルを追加して構築されます。

図 2. 体系的なエンコーダー

リード ソロモン符号は、そのフィールドと生成多項式によって特徴付けられます。フィールド多項式はシンボル フィールドの構築に使用され、生成多項式はパリティ シンボルの算出に使用されます。エンコーダーでは、どちらの多項式にも設定できます。生成多項式の形式は次のとおりです。

g(x)=(x-αj)(x-αj+1...(x-αi+n-k-1)

ここで、α は n + 1 個の要素を持つ有限体の原始元です。

ブロック インターフェイスのチャネルおよびピン

ザイリンクス Reed-Solomon Decoder 8.0 ブロックは、AXI4 に準拠しています。インターフェイスの標準 AXI チャネルは次のとおりです。

input チャネル
input_tvalid
input チャネルの TVALID。
input_tdata_data_in
デコードする n シンボルのブロックを入力します。この信号は UFIX_s_0 型である必要があります (s は各シンボルのビット幅)。
input_tlast
入力ブロックの最後のシンボルを示します。event 出力の生成にのみ使用されます。event 出力を使用しない場合は、Low または High に接続できます。
input_tready
input チャネルの TREADY。
input_tuser_marker
input_tdata_data_in のデータにタグ付けするためのマーカー ビット。Detailed Implementation タブで Marker Bits を選択すると、チャンネルに追加されます。
output チャネル
output_tready
output チャネルの TREADY。Optional Pins タブで Output TREADY を選択すると、チャンネルに追加されます。
output_tvalid
output チャネルの TVALID。
output_tdata_data_out
デコード結果の情報およびパリティ シンボルを生成します。data_out のデータ型は、data_in のデータ型と同じです。
output_tlast
tdata_data_out に最後のブロックの最後のシンボルが現れると High になります。output_tlast は、UFIX_1_0 型の信号を生成します。
output_tuser_maker
Detailed Implementation タブから Marker Bits を選択すると使用できるようになります。
event チャネル
event_s_input_tlast_missing
input_tlast がアサートされるべきときにアサートされなかったことを示します。このピンが不要な場合は、未接続のままにしてください。
event_s_input_tlast_unexpected
input_tlast がアサートされるべきでないときにアサートされたことを示します。このピンが不要な場合は、未接続のままにしてください。
event_s_ctrl_tdata_invalid
ctrl_tdata の値が無効であることを示します。このピンは、GUI で Variable Block Length または Variable Number of Check Symbols を選択すると使用できるようになります。
ctrl チャネル
このチャネルは、ブロック パラメーターとして可変ブロック長またはチェック シンボル数を選択した場合のみ存在します。
ctrl_tvalid
ctrl チャネルの TVALID。
ctrl_tdata_n_in
この信号は、GUI で Variable Block Length を選択した場合にのみ存在します。これにより、ブロック長をブロックごとに変更できます。ctrl_tdata_n_in 信号は UFIX_s_0 型である必要があります (s は各シンボルのビット幅)。R_IN フィールドがなければ、チェック シンボルの数は固定されるので、n を変化させると k も自動的に変化します。
ctrl_tdata_r_in
このフィールドは、GUI で Variable Number of Check Symbols を選択した場合にのみ存在します。これにより、チェック シンボルの数をブロックごとに変更できます。新しいブロックの長さ r_block は、サンプリングされた ctrl_tdata_r_in に設定されます。ctrl_tdata_r_in 信号は UFIX_p_0 型にする必要があります (p はデフォルト符号ワードのパリティ ビットを表すのに必要なビット数 (n-k)、n は Symbols Per Block、k は Data Symbols)。この入力を選択すると、符号のサイズが大幅に増加します。

その他のオプション ピン

aresetn
エンコーダーをリセットします。このピンは、Detailed Implementation タブで ARESETn を指定するとブロックに追加されます。ARESETn を駆動する信号は、Bool 型である必要があります。

デコーダーでコード シンボルのデコードを開始するには、aresetn を 2 クロック周期以上、1 サンプル周期以上 Low にアサートする必要があります。

aclken
エンコーダーのクロック イネーブル信号。aclken を駆動する信号は、Bool 型である必要があります。ACLKEN オプション ピンを選択するとブロックに追加されます。

ブロック パラメーター

Simulink® モデルでブロックのアイコンをダブルクリックすると、Block Parameters ダイアログ ボックスが開きます。

Attributes
Attributes タブには、次のパラメーターがあります。
Code Block Specification
Code specification
エンコーダーのタイプを指定します。選択肢は次のとおりです。
Custom
すべてのブロック パラメーターを設定できるようにします。
DVB
DVB (デジタル ビデオ放送) 規格 (204、188) 短縮 RS 符号をインプリメントします。
ATSC
ATSC (Advanced Television Systems Committee) 規格 (207、187) 短縮 RS 符号をインプリメントします。
G_709
G.709 光伝送ネットワーク (OTN) 規格をインプリメントします。
ETSI_BRAN
BRAN (Broadband Radio Access Networks) の ETSI プロジェクト規格をインプリメントします。
CCSDS
CCSDS (Consultative Committee for Space Data Systems) 規格 (255、223) 全長 RS 符号をインプリメントします。
ITU_J_83_Annex_B
国際電気通信連合 (ITU)-J.83 Annex B 仕様 (128、122) 拡張 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 符号をインプリメントします。
Variable Number of Check Symbols (r)
False、True。オンにすると、ctrl_tdata_r_in および ctrl_tdata_n_in ピンがブロックで使用できるようになります。
Variable Block Length
False、True。オンにすると、ctrl_tdata_n_in ピンがブロックで使用できるようになります。
Symbol width
符号のシンボルのビット幅を指定します。サポートされる幅は 3 ~ 12 で、デフォルト値は 8 です。
Field polynomial
シンボル フィールドの元となる多項式を指定します。10 進数値として指定する必要があります。この多項式は、原始多項式である必要があります。値 0 はデフォルトの多項式を使用する必要があることを示します。次の表に、デフォルトの多項式を示します。
表 1. フィールド多項式
シンボル幅 デフォルト多項式 配列表現
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) は次のとおりです。

α はシンボル体の原始元で、スケーリング係数は次のように説明されます。

Symbols Per Block(n)
エンコーダーが生成するブロックのシンボル数を指定します。有効な値は 3 ~ 2S -1 (s はシンボル幅) です。
Data Symbols(k)
各ブロックに含まれる情報シンボルの数を指定します。有効な値は max(n - 256, 1) ~ n - 2. です。
Detailed Implementation タブ
Implementation
Check Symbol Generator Optimization
このオプションは、GUI で [Variable Number of Check Symbols] を選択すると使用できるようになります。
Fixed Architecture
チェック シンボル ジェネレーターは、効率の高い固定アーキテクチャを使用してインプリメントされます。
Area
チェック シンボル ジェネレーターのインプリメンテーションは、エリアと速度を効率的にするよう最適化されます。入力の範囲 ctrl_tdata_n_in は削減されます。
Flexibility
チェック シンボル ジェネレーターのインプリメンテーションは、ctrl_tdata_n_in の入力の範囲を最大にするよう最適化されます。
Memory Style
メモリ スタイルを DistributedBlockAutomatic から選択します。このオプションは、CCSDS 符号でのみ設定可能です。
Number Of Channels
エンコーダーで処理される時分割多重化チャネルの数を指定します。エンコーダーでは、128 本までのチャネルがサポートされます。
Optional Pins
ACLKEN
ブロックに aclken ピンを追加します。この信号はクロック イネーブルとなるので、Bool 型である必要があります。
Output TREADY
output チャンネルで TREADY を有効にし、固有のバック プレッシャーのある AXI4 ハンドシェイク プロトコルをサポートします。
ARESETn
ブロックに aresetn ピンを追加します。この信号はブロックをリセットし、Bool 型である必要があります。デコーダーでコード シンボルのデコードを開始するには、aresetn を 2 クロック周期以上、1 サンプル周期以上 Low にアサートする必要があります。
Info bit
output_tdata_info ピンを追加します。tdata_data_out 上のブロックの最終情報シンボルをマークします。
Marker Bits
ブロックに次のピンを追加します。
input_tuser_user
input_tdata_ data_in のデータにタグ付けするためのマーカー ビットを示します。
output_tuser_user
LogiCORE のレイテンシにより遅延された mark_in タグ付けビット。
Number of Marker Bits
マーカー ビット数を選択します。

このブロックで使用されるその他のパラメーターについては、[Block Parameters] ダイアログ ボックスの共通オプション を参照してください。

LogiCORE 資料

『Reed-Solomon Encoder LogiCORE IP 製品ガイド』 (PG025)