DSPCPLX - 2022.1 日本語

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

Document ID
UG1483
Release Date
2022-05-26
Version
2022.1 日本語

ザイリンクス DSPCPLX ブロックは、 Versal® アーキテクチャ DSP によって提供される高度な機能の 1 つで、18 x 18 複素乗算の後に 58 + 58 累積演算を処理するための最適化されたソリューションです。

Versal アーキテクチャの DSP では、同じタイル ペアで 2 つの連続する DSP58 を持つ 8 ビットの複素乗算器がサポートされます。DSP_MODE 属性が CINT18 に設定された 2 つの連続する DSP58 は 1 つの複素演算ユニットになります。右側の DSP58 は実数結果 P_RE を計算し、左側の DSP58 は虚数結果 P_IM を計算します。次の図に、この機能の開発に使用される UNISIM DSPCPLX プリミティブを示します。

図 1. UNISIM DSPCPLX プリミティブ

ブロック パラメーター

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

[Basic] タブ
[Basic] タブには、次のパラメーターがあります。
[Input Configuration]
A or ACIN input
A 入力を a_rea_im ポートから直接取るか、カスケードされた acin_reacin_im ポートから取るかを指定します。acin_re および acin_im ポートは別の DSPCPLX ブロックにのみ接続可能です。
B or BCIN input
B 入力を b_re、b_im ポートから直接取るか、カスケードされた bcin_re、bcin_im ポートから取るかを指定します。bcin_re および bcin_im ポートは別の DSPCPLX ブロックにのみ接続可能です。
[Pattern Detection on Real Output]
Reset p_re register on pattern detection
pattern_re が検出されたときに次のサイクルで p_re レジスタをリセットします。
[AUTO RESET PRIORITY RE]
上記のオプションを選択した場合にイネーブルになり、[RESET] (デフォルト) または CEP (P_RE (出力) レジスタのクロック イネーブル) を選択します。
[Pattern Input RE]
[Pattern Input from c_re port]
実数出力のパターン検出に使用する pattern_rec_re ポートから読み出します。
[Using Pattern Attribute RE (58-bit hex value)]
この値はパターン検出ロジックで使用されます。これは、加算/減算/論理ユニットの出力に対する同一性チェックです。
[Using Pattern Attribute RE (58-bit hex value)]
パターン検出器で使用される 58 ビット値を入力します。
[Mask Input RE]
[Mask input from c_re port]
パターン検出に使用する mask_rec_re ポートから読み出します。
[Using Mask Attribute RE (58-bit hex value)]
実数出力のパターン検出中に、特定のビットをマスクするために使用する 58 ビット値を入力します。
[MODE1]
rounding_mode 1 (C_RE バーを左に 1 シフト) を選択します。
[MODE2]
rounding_mode 2 (C_RE バーを左に 2 シフト) を選択します。
[Pattern Detection on Imaginary Output]
[Reset p_im register on pattern detection]
pattern_im が検出されたときに次のサイクルで p レジスタをリセットします。
[AUTO RESET PRIORITY IM]
上記のオプションを選択した場合にイネーブルになり、[RESET] (デフォルト) または CEP (P_IM (出力) レジスタのクロック イネーブル) を選択します。
[Mask Input IM]
[Mask input from c_im port]
虚数出力のパターン検出に使用する mask_imc_im ポートから読み出します。
[Using Mask Attribute RE (58-bit hex value)]
虚数出力のパターン検出中に、特定のビットをマスクするために使用する 58 ビット値を入力します。
[MODE1]
rounding_mode 1 (C_IM バーを左に 1 シフト) を選択します。
[MODE2]
rounding_mode 2 (C_IM バーを左に 2 シフト) を選択します。
[Optional Ports] タブ
[Optional Ports] タブには、次のパラメーターがあります。
入力ポート
Consolidate control port
opmodealumodecarry_incarry_in_selinmode、および conjugate を 1 つの 18 ビット ポートに統合します。ビット 0 ~ 8 は opmode ポート、ビット 9 ~ 12 は alumode ポート、ビット 13 は carry_in ポート、ビット 14 ~ 16 は carry_in_sel ポート、ビット 17 は Conjugate_A 入力ポート、ビット 18 は Conjugate_B ポートになります。Opmode ブロックを使用して DSPCPLX 命令を生成する場合は、このオプションを使用する必要があります。
注記: このオプションを選択すると、左右両方の DSP58 タイルが同じコンフィギュレーションで駆動されます。
Provide c port
c_re および c_im ポートを有効にします。このオプションを選択しない場合、c_re および c_im ポートは 0 に接続されます。
[Provide global reset port]
rst_all ポートを有効にします。このポートは、パイプライン選択に基づいて、使用可能なすべてのリセット ポートに接続されます。
[Provide global enable port]
オプションの en_all ポートを有効にします。このポートは、パイプライン選択に基づいて、使用可能なすべてのイネーブル ポートに接続されます。
[Cascadable Ports]
[Provide pcin port]
pcin_re および pcin_im ポートを有効にします。pcin_re および pcin_im ポートは、別の DSPCPLX ブロックの pcout_re および pcout_im ポートに接続する必要があります。
[Provide carry cascade in port]
carrycascin_re および carrycascin_im ポートを有効にします。これらのポートは、別の DSPCPLX ブロックのキャリー カスケード アウト ポートにのみ接続できます。
[Provide multiplier sign cascade in port]
multsignin_re および multsignin_im ポートを有効にします。これらのポートは、別の DSPCPLX ブロックの乗算器符号カスケード アウト ポートにのみ接続できます。
[Output Ports]
[Provide carryout port]
carryout_re および carryout_im 出力ポートを有効にします。
[Provide pattern detect port]
patterndetect_re および patterndetect_out ポートを有効にします。mask_re/mask_im または c_re/c_im レジスタからの pattern_re/pattern_im が一致すると、対応する patterndetect_re/patterndetect_im が 1 に設定されます。
[Provide pattern bar detect port]
patternbdetect_re および patternbdetect_im ポートを有効にします。 mask_re/mask_im または c_re/c_im レジスタからの pattern_re/pattern_im の反転が一致すると、patternbdetect_re/patternbdetect_im port は 1 に設定されます。
[Provide overflow port]
overflow_re および overflow_im ポートを有効にします。これらのポートは、DSPCPLX での演算がビット P_RE[N]/P_IM[N] (N には 0 ~ 56 の値が入る) を超えてオーバーフローしたことを示します。N は、GUI のマスク フィールドまたは c_re/c_im ポート入力で設定された mask_re/mask_im の 1 の数により決まります。
[Provide underflow port]
underflow_re および underflow_im ポートを有効にします。これらのポートは、DSPCPLX での演算でアンダーフローが発生したことを示します。アンダーフローは、-P_RE[N]/P_IM[N] 未満になると発生します。N は、GUI のマスク フィールドまたは c_re/c_im ポート入力で設定された mask_re/mask_im の 1 の数により決定されます。
[Cascadable Ports]
[Provide acout port]
acout_re および acout_im 出力ポートを有効にします。acout_re/acout_im ポートは、別の DSPCPLX ブロックの acin_re/acin_im ポートに接続する必要があります。
[Provide bcout port]
bcout_re および bcout_im 出力ポートを有効にします。bcout_re/bcout_im ポートは、別の DSPCPLX ブロックの bcin_re/bcin_im ポートに接続する必要があります。
[Provide pcout port
pcout_re および pcout_im 出力ポートを有効にします。pcout_re/pcout_im ポートは、別の DSPCPLX ブロックの pcin_re/pcin_im ポートに接続する必要があります。
[Provide multiplier sign cascade out port]
multsignout_re および multsignout_im ポートを有効にします。これらのポートは、それぞれ別の DSPCPLX ブロックの multsignin_re および multsignin_im 入力ポートにのみ接続でき、2 つの DSPCPLX から構築される 116 ビット アキュムレータ/加算器および減算器をサポートするために使用します。
[Provide carry cascade out port]
carrycascout_re および carrycascout_im ポートを有効にします。これらのポートは、それぞれ別の DSPCPLX ブロックの carrycascin_re および carrycascin_im ポートにのみ接続できます。
[Pipelining] タブ
[Pipelining] タブには、次のパラメーターがあります。
[Length of a_re/acin_re pipeline]
入力レジスタ A_RE のパイプラインの長さを指定します。パイプラインの長さを 0 にすると、入力上のレジスタが削除されます。
[Length of a_im/acin_im pipeline]
入力レジスタ A_IM のパイプラインの長さを指定します。パイプラインの長さを 0 にすると、入力上のレジスタが削除されます。
[Length of b_re/bcin_re pipeline]
b_re または bcin_re から読み出される b_re 入力のパイプラインの長さを指定します。
[Length of b_im/bcin_im pipeline]
b_im または bcin_im から読み出される b_im 入力のパイプラインの長さを指定します。
[Length of acout_re pipeline]
a_re/acin_re 入力と acout_re 出力ポート間のパイプラインの長さを指定します。パイプラインの長さを 0 にすると、acout_re パイプラインの長さからレジスタが削除されます。a_re/acin_re パイプラインの長さ以下にする必要があります。
[Length of acout_im pipeline]
a_im/acin_im 入力と acout_im 出力ポート間のパイプラインの長さを指定します。パイプラインの長さを 0 にすると、acout_im パイプラインの長さからレジスタが削除されます。a_im/acin_im パイプラインの長さ以下にする必要があります。
[Length of bcout_re pipeline]
b_re/bcin_re 入力と bcout_re 出力ポート間のパイプラインの長さを指定します。パイプラインの長さを 0 にすると、bcout_re パイプラインの長さからレジスタが削除されます。b_re/bcin_re パイプラインの長さ以下にする必要があります。
[Length of bcout_im pipeline]
b_im/bcin_im 入力と bcout_im 出力ポート間のパイプラインの長さを指定します。パイプラインの長さを 0 にすると、bcout_im パイプラインの長さからレジスタが削除されます。b_im/bcin_im パイプラインの長さ以下にする必要があります。
[Pipeline c_re]
c_re ポートからの入力にレジスタを付けるかどうかを示します。
[Pipeline c_im]
c_im ポートからの入力にレジスタを付けるかどうかを示します。
[Pipeline p_re]
p_re および pcout_re 出力にレジスタを付けるかどうかを示します。
[Pipeline p_im]
p_im および pcout_im 出力にレジスタを付けるかどうかを示します。
[Pipeline multiplier_re]
内部 multiplier_re の出力にレジスタを付けるかどうかを指定します。
[Pipeline multiplier_im]
内部 multiplier_im の出力にレジスタを付けるかどうかを指定します。
[Pipeline opmode_re]
opmode_re ポートにレジスタを付けるかどうかを示します。
[Pipeline opmode_im]
opmode_im ポートにレジスタを付けるかどうかを示します。
[Pipeline alumode_re]
alumode_re ポートにレジスタを付けるかどうかを示します。
[Pipeline alumode_im]
alumode_im ポートにレジスタを付けるかどうかを示します。
[Pipeline carry in Re]
carryin_re ポートにレジスタを付けるかどうかを示します。
[Pipeline carry in Im]
carryin_im ポートにレジスタを付けるかどうかを示します。
[Pipeline carry in select Re]
carryinsel_re ポートにレジスタを付けるかどうかを示します。
[Pipeline carry in select Im]
carryinsel_im ポートにレジスタを付けるかどうかを示します。
[Pipeline preadder output register ad]
ad 出力にパイプライン レジスタを追加します。
[Pipeline Conjugate register A]
Conjugate_A 入力にパイプライン レジスタを追加します。
[Pipeline Conjugate register B]
Conjugate_B 入力にパイプライン レジスタを追加します。
[Reset/Enable Ports] タブ
[Reset/Enable Ports] タブには、次のパラメーターがあります。
[Provide Reset Ports]
Reset port for a/acin

rsta_re および rsta_im ポートを有効にします。1 に設定すると、ポート a_rea_im のパイプライン レジスタがリセットされます。

[Reset port for b/bcin]
rstb_re および rstb_im ポートを有効にします。1 に設定すると、ポート b_reb_im のパイプライン レジスタがリセットされます。
[Reset port for c]
rstc_re および rstc_im ポートを有効にします。1 に設定すると、ポート c_rec_im のパイプライン レジスタがリセットされます。
[Reset port for multiplier]
rstm_re および rstm_im ポートを有効にします。1 に設定すると、内部乗算器のパイプライン レジスタがリセットされます。
[Reset port for P]
rstp_re および rstp_im ポートを有効にします。1 に設定すると、出力の p_re および p_im レジスタがリセットされます。
[Reset port for carry in]
rstallcarryin_re および rstallcarryin_im ポートを有効にします。1 に設定すると、carryin_re および carryin_im ポートのパイプライン レジスタがリセットされます。
[Reset port for alumode]
rstalumode_re および rstalumode_im ポートを有効にします。1 に設定すると、alumode_re および alumode_im ポートのパイプライン レジスタがリセットされます。
[Reset port for controls (opmode and carry_in_sel)]
rstctrl_re および rstctrl_im ポートを有効にします。1 に設定すると、opmode_re/opmode_im レジスタ (使用可能な場合) および carryinsel_re/carryinsel_im レジスタ (使用可能な場合) のパイプライン レジスタがリセットされます。
[Reset port for ad]
ポート rstad を有効にします。1 に設定すると、ad レジスタのパイプライン レジスタがリセットされます。
[Reset port for Conjugate_a]
ポート rstconjugate_a を有効にします。1 に設定すると Conjugate_a ポートのパイプライン レジスタがリセットされます。
[Reset port for Conjugate_b]
ポート rstconjugate_b を有効にします。1 に設定すると Conjugate_b ポートのパイプライン レジスタがリセットされます。
[Provide Enable Ports]
[Enable port for first a/acin register]
最初の a_re および a_im パイプライン レジスタのイネーブル ポート cea1_re および cea1_im を有効にします。
[Enable port for second a/acin register]
2 番目の a_re および a_im パイプライン レジスタのイネーブル ポート cea2_re および cea2_im を有効にします。
[Enable port for first b/bcin register]
最初の b_re および b_im パイプライン レジスタのイネーブル ポート ceb1_re および ceb1_im を有効にします。
[Enable port for second b/bcin register]
2 番目の b_re および b_im パイプライン レジスタのイネーブル ポート ceb2_re および ceb2_im を有効にします。
[Enable port for c]
最初の C_re および C_im パイプライン レジスタのイネーブル ポート cec_re および cec_im を有効にします。
[Enable port for multiplier]
実数および虚数の乗算器レジスタのイネーブル ポート cem_re および cem_im を有効にします。
[Enable port for p]
最初の P_re および P_im 出力レジスタのイネーブル ポート cep_re および cep_im を有効にします。
[Enable port for carry in]
実数および虚数のキャリー イン レジスタのイネーブル ポート cecarryin_re および cecarryin_im を有効にします。
[Enable port for alumode]
実数および虚数の alumode レジスタのイネーブル ポート cealumode_re および cealumode_im を有効にします。
[Enable port for controls (opmode and carry_in_sel)]
イネーブル ポート cectrl_re および cectrl_im を有効にします。ポート cectrl_re および cectrl_im は、実数および虚数の opmode およびキャリー イン セレクト レジスタを制御します。
[Enable port for ad]
前置加算器出力レジスタ ad 用に enable ポートを作成します。
[Enable port for Conjugate_a]
Conjugate_A レジスタにイネーブル ポート conjugate_a を追加します。
[Enable port for Conjugate_b]
Conjugate_B レジスタにイネーブル ポート conjugate_b を追加します。
[Inversion Options] タブ
このタブのチェック ボックスをオンにすると、その信号が反転されます。
[Implementation] タブ
[Implementation] タブには、次のパラメーターがあります。
[Use synthesizable model]
DSPCPLX を RTL 記述からインプリメントします。DSP58 ハードウェアには直接マップされない可能性があります。これは、DSPCPLX ブロックを使用するデザインを DSP58 ハードウェア プリミティブを含まないデバイス ファミリにインプリメントする場合に便利です。

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