ザイリンクス 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_re
、a_im
ポートから直接取るか、カスケードされたacin_re
、acin_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_re
をc_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_re
をc_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_im
をc_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
-
opmode
、alumode
、carry_in
、carry_in_sel
、inmode
、および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_re
、a_im
のパイプライン レジスタがリセットされます。 - [Reset port for b/bcin]
-
rstb_re
およびrstb_im
ポートを有効にします。1 に設定すると、ポートb_re
、b_im
のパイプライン レジスタがリセットされます。 - [Reset port for c]
-
rstc_re
およびrstc_im
ポートを有効にします。1 に設定すると、ポートc_re
、c_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] タブには、次のパラメーターがあります。
このブロックで使用されるその他のパラメーターについては、[Block Parameters] ダイアログ ボックスの共通オプション を参照してください。