たたみ込みエンコーダーでエンコードされたデータは、ザイリンクス Viterbi Decoder ブロックを使用してデコードできます。このブロックは、 AXI4-Stream 規格に準拠しています。
デコード プロセスには 2 つの段階があります。まず、入力データのコストを可能なすべてのデータ入力の組み合わせと比較します。コストは、ハミングまたはユークリッド メトリックのいずれかを使用できます。次にトレリスをトレースして、最適なパスを決定します。トレリスを介したトレースの長さは、トレースバック長パラメーターで制御できます。
最適なたたみ込みコードを使用すると、デコーダーで最小のエラー レートを達成できます。次の表に、さまざまな最適コードを示します。正しく動作させるため、エンコード用のたたみ込みコードはデコード用のものと一致している必要があります。
制約の長さ | 1/2 レート (8 進数) の最適なたたみ込みコード | 1/3 レート (8 進数) の最適なたたみ込みコード |
---|---|---|
3 | [7 5] | [7 7 5] |
4 | [17 13] | [17 13 15] |
5 | [37 33] | [37 33 25] |
6 | 57 65] | [57 65 71] |
7 | [117 127] | [117 127 155] |
8 | [357 233] | [357 233 251] |
9 | [755 633] | [755 633 447] |
ブロックのインターフェイス
ザイリンクス Viterbi Decoder 9.1 ブロックは AXI4 に準拠しています。インターフェイスの標準 AXI チャネルは次のとおりです。
- S_AXIS_DATA チャネル
-
-
s_axis_data_tvalid
- S_AXIS_DATA チャネルの TVALID。入力ピンで、常に使用可能です。このポートは、入力データ ポートの値が有効であることを示します。
-
s_axis_data_tready
- S_AXIS_DATA の TREADY。出力ピンで、常に使用可能です。このポートは、コアがデータを受信できる状態であることを示します。
-
s_axis_data_tdata
- 入力 TDATA。Block Parameters ダイアログ ボックスの Page1 タブで選択されている [Viterbi Type] によって、異なる入力データ ポートを使用できます。
-
- M_AXIS_DATA チャネル
-
-
m_axis_data_tvalid
- M_AXIS_DATA チャネルの TVALID。出力ピンで、常に使用可能です。出力データが有効かどうかを示します。
-
m_axis_data_tready
- M_AXIS_DATA チャネルの TREADY。ダウンストリームのスレーブが常にデータを受信できる場合は、イネーブルまたは High にしないでください。Page 5 タブで TREADY を選択すると、このポートが有効になります。
-
m_axis_data_tdata
- 出力データ チャネル用にデコードされた TDATA。
-
m_axis_data_tdata_data
- デコードされた出力データを示します。常に 1 ビット幅です。
-
m_axis_data_tdata_sector
- [Trellis Mode] を選択すると、このポートが有効になります。このポートは常に 4 ビット幅です。出力 SECTOR は入力 SECTOR の遅延バージョンです。バス幅はどちらも 4 ビットに固定されています。この遅延は、[Trellis Mode] デコーダーを介した遅延と等しくなります。
-
-
m_axis_data_tuser
- M_AXIS_DATA チャネルの TUSER。これらのポートは、[Dual Decoder] を選択している場合、正規化信号がある場合、または [Block Balid] オプションがオンの場合にのみ表示されます。
-
m_axis_data_tuser_sel
- [Dual Decoder] を選択すると、このポートが有効になります。この信号は入力
s_axis_data_tuser_sel
信号の遅延バージョンです。この遅延は、[Dual Decoder] デコーダーを介した遅延と等しくなります。 -
m_axis_data_tuser_norm
- Page 5 タブで [NORM] オプションを選択すると、このポートが有効になります。このポートは、コア内で正規化がいつ実行されたかを示します。チャネルのエラー レートを即座に表示します。
-
m_axis_data_tuser_block_out
-
Page 5 タブで Block
Valid を選択すると、このポートが有効になります。この信号は入力
s_axis_data_tuser_block_in
信号の遅延バージョンです。BLOCK_OUT 信号は、元の BLOCK_IN のデータ ポイント セットに対応するデコードされたデータを示します。この遅延は、デコーダーを介した遅延と等しくなります。
-
-
- S_AXIS_DSTAT チャネル
-
注記: Page 5 タブで Use BER Symbol Count を選択すると、このポートが有効になります。
-
s_axis_dstat_tvalid
- S_AXIS_DSTAT チャネルの TVALID。
-
s_axis_dstat_tready
- S_AXIS_DSTAT チャネルの TREADY。コアがデータを受信できる状態になったことを示します。出力に TREADY がない場合のリセットの後を除き、常に High になります。
-
s_axis_dstat_tdata_ber_range
- S_AXIS_DSTAT チャネルの TDATA。BER ブロックでエラーがカウントされたシンボルの数を示します。
-
- M_AXIS_DSTAT チャネル
-
注記: Page 5 タブで Use BER Symbol Count を選択すると、このポートが有効になります。
-
m_axis_dstat_tvalid
- M_AXIS_DSTAT チャネルの TVALID。
-
m_axis_dstat_tready
- M_AXIS_DSTAT チャネルの TREADY。ダウンストリームのスレーブが常にデータを受信できる場合は、イネーブルまたは High にしないでください。Page 5 タブで TREADY を選択すると、このポートが有効になります。
-
m_axis_dstat_tdata_ber
- M_AXIS_DSTAT チャネルの TDATA。ビット エラー レート (BER) バス出力 (固定幅 16) は、再エンコードされた DATA_OUT とデコーダーへの遅延 DATA_IN との差をカウントすることにより、チャネル ビット エラー レートを計測します。
-
- その他のオプション ピン
-
-
aresetn
- 同期リセット (
aresetn
) 入力は、aclken
信号のステートに関係なく、コアを再初期化するためにいつでも使用できます。回路を初期化するため、aresetn は 2 クロック サイクル以上 Low にアサートする必要があります。Page 5 タブで ARESETN を選択すると、このピンが有効になります。ブール型である必要があります。このピンが選択されていない場合、Model Composer によりコアの非アクティブ (High) に接続されます。 -
aclken
- デコーダーのクロック イネーブル信号を送信します。
aclken
を駆動する信号は、ブール型である必要があります。Page 5 タブで ACLKEN を選択すると、このピンが有効になります。
-
ブロック パラメーター
- Page1 タブ
-
Page1 タブには、次のパラメーターがあります。
- Viterbi Type
-
- Number of Channels
- [Multi-Channel] を選択した場合に、デコードするチャネルの数 (2 ~ 32) を指定します。
- Standard
- 基本的な Viterbi デコーダーです。
- Multi-Channel
- 複数のインターレースされたチャネルのデータを 1 つの Viterbi デコーダーを使用してデコードします。
- Trellis Mode
- TCM および SECTOR_IN 入力を使用したトレリス モードのデコーダーです。
- Dual Decoder
- ブロックが 2 セットのたたみ込みコードを使用したデュアル デコーダーとして動作するよう設定します。sel ポートが有効になります。
- Decoder Options
-
- Use Reduced Latency
- ブロックのレイテンシは、トレースの長さと制約の長さによって異なります。このオプションを選択すると、ブロックのレイテンシが約 1/2 になり、トレースの長さの 2 倍にしかなりません。
- Constraint length
- n+1 に等しい値になります (n はエンコーダー内の制約レジスタの長さ)。
- Traceback length
- Viterbi トレリスを介したトレースバックの長さ。最適な長さは制約の長さの 5 ~ 7 倍です。
- Page2 タブ
-
- Architecture
-
- Parallel
- 大型ですが高速な Viterbi デコーダーになります。
- Serial
- 小型ですが、入力データをシリアルに処理します。入力シンボルの各セットの処理に必要なクロック サイクル数は、出力レートおよびデータのソフト幅によって異なります。
- Best State
-
- Use Best State
- 詳細にパンクチャされたデータ用に改善された BER パフォーマンスにします。
- Best State Width
- 最適なステートを決定するため使用されるコストを節約する際に、無視する最下位ビット数を示します。
- Puncturing
-
- None
- 入力データはパンクチャされていません。
- External (Erased Symbols)
- ブロックに消去ポートを追加します。消去入力を使用して、ヌル シンボル (チャネル上で伝送される前に消去されたシンボル) があることを示します。
- Coding
-
- Soft Width
- ソフト コードされたデータの入力幅を指定します。有効な値は 3 ~ 5 です。幅を広くする場合はさらにロジックが必要です。ブロックがシリアル モードでインプリメントされている場合は、ソフト幅を広くすると、シリアル処理時間も長くなります。
- Soft Coding
- ユークリッド メトリックを使用し、入力データのコストを Viterbi トレリスの分岐と比較します。
- Hard Coding
- ハミング メトリックを使用し、入力データ ビットと Viterbi トレリスの分岐との差を比較します。ハード コーディングは標準の並列ブロックに対してのみ使用可能です。
- Data Format
-
- Signed Magnitude
- Offset Binary (available for soft coding only)
ソフト幅 3 の符号絶対値とオフセットバイナリのデータ フォーマットについては、関連の LogiCORE™ 製品仕様の表 1 を参照してください。
- Page3 タブ
-
- Convolution 0
-
- Output Rate 0
- 有効な値は 2 ~ 7 です。
- Convolution Code 0 Radix
- たたみ込みコードは、2 進数、8 進数、または 10 進数で入力および確認できます。
- Convolution Code Array (0-6)
- たたみ込みコードの最初の配列です。出力レートは配列の長さから派生します。2 ~ 7 のコードを入力できます。デュアル デコーディングを使用する場合は、sel ポートの値 0 (Low) がこの配列に対応します。
- Page4 タブ
-
このタブのオプションは、Page1 タブの [Viterbi Type] に Dual Decoder を選択すると有効になります。
- Convolution 1
-
- Output Rate 1
- 有効な値は 2 ~ 7 です。[Dual Decoder] を選択している場合、これが使用される 2 番目の出力レートです。SEL 入力が High の場合、入力データはこのレートでデコードされます。[Dual Decoder] 以外を選択している場合、この出力レートは使用されません。
- Convolution Code 1 Radix
- たたみ込みコードは、2 進数、8 進数、または 10 進数で入力および確認できます。
- Page5 タブ
-
- BER Options
-
- Use BER Symbol Count
- 伝送チャネルのエラー レートをモニターします。
- Optional Pins
-
- NORM
- Add Compare Select モジュール内で正規化が実行されたときを示します。
- Block Valid
- BLOCK_IN および BLOCK_OUT 信号が必要な場合に、このチェック ボックスをオンにします。これらの信号は、デコーダーを通過するデータ ブロックの流れを追跡します。BLOCK_OUT はデコーダー レイテンシ分遅延された BLOCK_IN に対応します。
- TREADY
- m_axis_data_tready および m_axis_dstat_tready ピンがブロックで使用可能になります。
- ACLKEN
- ブロックのクロック イネーブル信号を送信します。aclken を駆動する信号は、ブール型である必要があります。
- ARESETN
- ブロックに aresetn を追加します。この信号はブロックをリセットし、ブール型である必要があります。デコーダーでコード シンボルのデコードを開始するには、aresetn を 2 クロック周期以上、1 サンプル周期以上 Low にアサートする必要があります。
Display shortened port names など、このブロックで使用される共通のパラメーターについては、[Block Parameters] ダイアログ ボックスの共通オプションを参照してください。
LogiCORE 資料
『Viterbi Decoder LogiCORE IP 製品ガイド』 (PG027)