ザイリンクス Opmode ブロックは、DSP48E、DSP48E1、または DSP48E2 命令の定数を生成します。DSP48E では 15 ビットの命令、DSP48E1 では 20 ビットの命令、DSP48E2 では 22 ビットの命令です。命令は、opmode、キャリーイン、キャリーイン セレクト、alumode、および (DSP48E1 および DSP48E2 の場合) inmode ビットで構成されます。
Opmode ブロックは、DSP48E、DSP48E1、または DSP48E2 制御シーケンスを生成するのに便利です。次の図に例を示します。この例は、DSP48E ブロックの 4 つの命令シーケンスを使用して、35x35 ビットの乗算器をインプリメントしています。Opmode ブロックは、各命令を必要なシーケンスで選択するマルチプレクサーに必要な命令を供給します。
図 1. DSP48E ブロック
ブロック パラメーター
Simulink®
モデルでブロックのアイコンをダブルクリックすると、Block Parameters ダイアログ ボックスが開きます。
-
Opmode タブ
-
Opmode タブには、次のパラメーターがあります。
-
Instruction
-
-
Device
- DSP48E、DSP48E1、または DSP48E2 のどのデバイス用の命令を生成するかを指定します。
-
DSP
Instruction
-
-
Operation
- ブロックで生成された命令を表示します。この命令は、Simulink モデルのブロックにも表示されます。
-
Operation select
- 命令を選択します。
-
Preadder output
- DSP48E1 前置加算器の論理式を選択します。
-
DSP Primitive Configuration
-
- [Multiplier Output]
- DSP58 の乗算器出力を通常の出力にするか、ネゲートするかを選択します。
-
Preadder/Mult Function
- DSP48E2 前置加算器/乗算器で実行される関数を選択します。
-
PREADDINSEL
- Opmode ブロックで生成された命令の一部である PREADDINSEL スタティック制御ビットの設定を表示します。DSP48E2 スライスでは、PREADDDINSEL 設定 (A または B) により、前置加算器の D 入力に追加する入力が選択されます。
-
AMULTSEL
- Opmode ブロックで生成された命令の一部である AMULTSEL スタティック制御ビットの設定を表示します。DSP48E2 スライスでは、AMULTSEL 設定 (A または AD) により、乗算器の 27 ビット A 入力への入力が選択されます。
-
BMULTSEL
- Opmode ブロックで生成された命令の一部である BMULTSEL スタティック制御ビットの設定を表示します。DSP48E2 スライスでは、BMULTSEL 設定 (B または AD) により、乗算器の 18 ビット B 入力への入力が選択されます。
-
A
register configuration
- DSP48E2 の A レジスタの設定を選択します。[A1] または [A2] を選択します。
-
B
register configuration
- DSP48E1 または DSP48E2 の B レジスタの設定を選択します。[B1] または [B2] を選択します。
-
Custom
Instruction
-
注記:
Operation select に [Custom] を選択すると、[Custom Instruction] が有効になります。
-
Instruction
- DSP48E、DSP48E1、または DSP48E2 の命令を選択します。
-
Z
mux
- 加算/減算/論理ユニットへの Z ソースを [0]、[C]、[PCIN]、[P]、[C]、[PCIN>17]、[P>17] のいずれかに指定します。
-
XY
muxes
- DSP48 の加算器への XY ソースを [0]、[P]、[A:B]、[A*B]、[C]、[P+C]、[A:B+C] のいずれかに指定します。A:B は、A を B と連結し、加算/減算/論理ユニットの入力として使用される値を生成することを意味します。
-
W
mux
- DSP48E2 の加算器への W ソースを [0]、[P]、[RND]、[C] のいずれかに指定します。
-
Carry input
- DSP48 の加算/減算/論理ユニットへのキャリーソースを [0]、[1]、[CIN]、[Round PCIN towards infinity]、[Round PCIN towards zero]、[Round P toward infinity]、[Round P towards zero]、[Larger add/sub/acc (parallel operation)]、[Larger add/sub/acc (sequential operation)]、[Round A*B] のいずれかに指定します。
[Custom Instruction] オプションの説明は、次の資料を参照してください。
-
- DSP48E: 『Virtex-5 FPGA XtremeDSP ユーザー ガイド』 (UG193)
- DSP48E1:
『7 シリーズ FPGA DSP48E1 スライス ユーザー ガイド』 (UG479)
- DSP48E2:
『UltraScale アーキテクチャ DSP スライス ユーザー ガイド』 (UG579)
ザイリンクス LogiCORE
Opmode ブロックは、ザイリンクス
LogiCORE を使用しません。
DSP48E の制御命令のフォーマット
表 1. DSP48E の命令
[Operation select] |
注記 |
C + A*B |
|
PCIN + A*B |
|
P + A*B |
|
A* B |
|
C + A:B |
|
C - A:B |
|
C |
|
Custom |
[Custom Instruction] に記述された論理式を使用。 |
表 2. DSP48E のカスタム命令
命令フィールド名 |
場所 |
ニーモニック |
注記 |
XY muxes |
op[3:0] |
0 |
0 |
P |
DSP48 出力レジスタ |
A:B |
定数入力 A および B (A は MSB) |
A*B |
入力 A と B の乗算 |
C |
DSP48 入力 C |
P+C |
DSP48 入力 C と P |
A:B+C |
定数入力 A および B と C レジスタ |
Z mux |
op[6:4] |
0 |
0 |
PCIN |
PCOUT からの DSP48 カスケード入力 |
P |
DSP48 出力レジスタ |
C |
DSP48 C 入力 |
PCIN>>17 |
17 ダウンシフトされたカスケード入力 |
P>>17 |
17 ダウンシフトされた DSP48 出力レジスタ |
Alumode |
op[10:7] |
X+Z |
加算 |
Z-X |
減算 |
Carry input |
op[14:12] |
0 または 1 |
キャリー インを 0 または 1 に設定 |
CIN |
CIN をソースとして選択。Opmode ブロックに CIN ポートが追加され、その値がニーモニックのビット位置 11 に挿入されます。 |
Round PCIN toward infinity |
|
Round PCIN toward zero |
|
Round P toward infinity |
|
Round P toward zero |
|
Larger add/sub/acc (parallel operation) |
|
Larger add/sub/acc (sequential operation) |
|
Round A*B |
|
DSP48E1 の制御命令のフォーマット
表 3. DSP48E1 の命令
[Operation select] |
注記 |
C + A*B |
|
PCIN + A*B |
|
P + A*B |
|
A* B |
|
C + A:B |
|
C - A:B |
|
C |
|
Custom |
[Custom Instruction] に記述された論理式を使用。 |
[Preadder output] |
注記 |
zero |
|
A2 |
|
A1 |
|
D + A2 |
|
D + A1 |
|
D |
|
-A2 |
|
-A1 |
|
D - A2 |
|
D - A1 |
|
[B register configuration] |
注記 |
B1 |
|
B2 |
|
表 4. DSP48E1 のカスタム命令
命令フィールド名 |
場所 |
ニーモニック |
注記 |
Instruction |
X + Z |
|
X +NOT(Z) |
|
NOT(X+Z) |
|
Z - X |
|
X XOR Z |
|
X XNOR Z |
|
X AND Z |
|
X OR Z |
|
X AND NOT(Z) |
|
X OR NOT (Z) |
|
X NAND Z |
|
Z mux |
op[6:4] |
0 |
0 |
PCIN |
PCOUT からの DSP48 カスケード入力 |
P |
DSP48 出力レジスタ |
C |
DSP48 C 入力 |
PCIN>>17 |
17 ダウンシフトされたカスケード入力 |
P>>17 |
17 ダウンシフトされた DSP48 出力レジスタ |
Operand: (Alumode) |
op[10:7] |
X+Z |
加算 |
Z-X |
減算 |
XY muxes |
op[3:0] |
0 |
0 |
P |
DSP48 出力レジスタ |
A:B |
定数入力 A および B (A は MSB) |
A*B |
入力 A と B の乗算 |
C |
DSP48 入力 C |
P+C |
DSP48 入力 C と P |
A:B+C |
定数入力 A および B と C レジスタ |
Carry input |
op[14:12] |
0 または 1 |
キャリー インを 0 または 1 に設定 |
CIN |
CIN をソースとして選択。Opmode ブロックに CIN ポートが追加され、その値がニーモニックのビット位置 11 に挿入されます。 |
Round PCIN toward infinity |
|
Round PCIN toward zero |
|
Round P toward infinity |
|
Round P toward zero |
|
Larger add/sub/acc (parallel operation) |
|
Larger add/sub/acc (sequential operation) |
|
Round A*B |
|
DSP48E2 の制御命令のフォーマット
表 5. DSP48E2 の命令
[Operation select] |
注記 |
C + A*B |
|
PCIN + A*B |
|
P + A*B |
|
A* B |
|
C + A:B |
|
C - A:B |
|
C |
|
Custom |
[Custom Instruction] に記述された論理式を使用。 |
[Preadder/Mult Function] |
注記 |
zero |
|
A*B |
|
(D+A)*B |
|
(D-A)*B |
|
(D+A)**2 |
|
(D-A)**2 |
|
D**2 |
|
A**2 |
|
-(A**2) |
|
(D+A)*A |
|
(D-A)*A |
|
(D+B)*A |
|
(D-B)*A |
|
D*A |
|
B*A |
|
-B*A |
|
(D+B)**2 |
|
(D-B)**2 |
|
B**2 |
|
-(B**2) |
|
(D+B)*B |
|
(D-B)*B |
|
[A register configuration] |
注記 |
A1 |
|
A2 |
|
[B register configuration] |
注記 |
B1 |
|
B2 |
|
表 6. DSP48E2 のカスタム命令
命令フィールド名 |
場所 |
ニーモニック |
注記 |
XY muxes |
op[3:0] |
0 |
0 |
P |
DSP48 出力レジスタ |
A:B |
定数入力 A および B (A は MSB) |
A*B |
入力 A と B の乗算 |
C |
DSP48 入力 C |
P+C |
DSP48 入力 C と P |
A:B+C |
定数入力 A および B と C レジスタ |
Z mux |
op[6:4] |
0 |
0 |
PCIN |
PCOUT からの DSP48 カスケード入力 |
P |
DSP48 出力レジスタ |
C |
DSP48 C 入力 |
PCIN>>17 |
17 ダウンシフトされたカスケード入力 |
P>>17 |
17 ダウンシフトされた DSP48 出力レジスタ |
W mux |
op[8:7] |
0 |
|
P |
DSP48 出力レジスタ |
RND |
W mux への丸め定数 |
C |
DSP48 入力 C |
ALU mode (Instruction) |
op[12:9] |
X + W + Z |
|
X +W + NOT(Z) |
|
NOT(X + W + Z) |
|
Z - (X+W) |
|
X XOR Z |
|
X XNOR Z |
|
X AND Z |
|
X OR Z |
|
X AND NOT(Z) |
|
X OR NOT (Z) |
|
X NAND Z |
|
X NOR Z |
|
NOT (X) OR Z |
|
NOT (X) AND Z |
|
Carry input |
op[16:13] |
0 または 1 |
キャリー インを 0 または 1 に設定 |
CIN |
CIN をソースとして選択。Opmode ブロックに CIN ポートが追加され、その値がニーモニックのビット位置 11 に挿入されます。 |
Round PCIN toward infinity |
|
Round PCIN toward zero |
|
Round P toward infinity |
|
Round P toward zero |
|
Larger add/sub/acc (parallel operation) |
|
Larger add/sub/acc (sequential operation) |
|
Round A*B |
|
Pre-Adder/Mult Function |
op[21:17] |
zero |
|
A * B |
|
(D + A) * B |
|
(D - A) * B |
|
(D + A)**2 |
|
(D - A)**2 |
|
D**2 |
|
A**2 |
|
-(A**2) |
|
(D + A) * A |
|
(D - A) * A |
|
(D + B) * A |
|
(D - B) * A |
|
D * A |
|
B * A |
|
-B * A |
|
(D + B)**2 |
|
(D - B)**2 |
|
B**2 |
|
-(B**2) |
|
(D + B) * B |
|
(D - B) * B |
|
DSPCPLX の制御命令のフォーマット
Opmode ブロックは、DSPCPLX デバイスと共に構成されている場合、18 ビット幅のデータを出力し、DSPCPLX ブロックの統合された制御ポートを駆動します。DSPCPLX ブロックは、内部で同じ設定を対応する実数および虚数の制御入力ポートに送信します。
表 7. DSPCPLX の命令
[Operation select] |
注記 |
A*B |
|
Custom |
[Custom Instruction] に記述された論理式を使用。 |
表 8. DSPCPLX のカスタム命令
命令フィールド名 |
場所 |
ニーモニック |
注記 |
XY Muxes |
op[3:0] |
A*B |
入力 A と B の乗算 |
Z mux |
op[6:4] |
0 |
0 |
PCIN |
PCOUT からの DSPCPLX カスケード入力 |
P |
DSPCPLX 出力レジスタ |
C |
DSPCPLX C 入力 |
W mux |
op[8:7] |
0 |
|
|
|
RND |
W mux への丸め定数 |
ALU mode (Instruction) |
op[12:9] |
X + W + Z |
|
Carry input |
op[16:13] |
0 または 1 |
キャリー インを 0 または 1 に設定 |
CIN |
CIN をソースとして選択。Opmode ブロックに CIN ポートが追加され、その値がニーモニックのビット位置 11 に挿入されます。 |
Conjugate A Input |
op[17] |
0 または 1 |
入力 A 値を複素共役演算することを選択 |
Conjugate B Input |
op[18] |
0 または 1 |
入力 B 値を複素共役演算することを選択 |
DSP58 の制御命令のフォーマット
表 9. DSP58 の命令
[Operation select] |
注記 |
C + A*B |
|
PCIN + A*B |
|
P + A*B |
|
A* B |
|
C + A:B |
|
C - A:B |
|
C |
|
Custom |
[Custom Instruction] に記述された論理式を使用。 |
[Preadder/Mult Function] |
注記 |
zero |
|
±A*B |
|
±(D±A)*B |
|
±(D±A)**2 |
|
±(D)**2 |
|
±(A)**2 |
|
±(D±A)*A |
|
±(D±B)*A |
|
±D*A |
|
±(D±B)**2 |
|
±(B)**2 |
|
±(D±B)*B |
|
[A register configuration] |
注記 |
A1 |
|
A2 |
|
[B register configuration] |
注記 |
B1 |
|
B2 |
|
表 10. DSP58 のカスタム命令
命令フィールド名 |
場所 |
ニーモニック |
注記 |
XY muxes |
op[3:0] |
0 |
0 |
P |
DSP58 出力レジスタ |
A:B |
定数入力 A および B (A は MSB) |
A*B |
入力 A と B の乗算 |
C |
DSP58 入力 C |
P+C |
DSP58 入力 C と P |
A:B+C |
定数入力 A および B と C レジスタ |
Z mux |
op[6:4] |
0 |
0 |
PCIN |
PCOUT からの DSP58 カスケード入力 |
P |
DSP58 出力レジスタ |
C |
DSP58 C 入力 |
PCIN>>17 |
17 ダウンシフトされたカスケード入力 |
P>>17 |
17 ダウンシフトされた DSP58 出力レジスタ |
W mux |
op[8:7] |
0 |
|
P |
DSP58 出力レジスタ |
RND |
W mux への丸め定数 |
C |
DSP58 入力 C |
ALU mode (Instruction) |
op[12:9] |
X + W + Z |
|
X +W + NOT(Z) |
|
NOT(X + W + Z) |
|
Z - (X+W) |
|
X XOR Z |
|
X XNOR Z |
|
X AND Z |
|
X OR Z |
|
X AND NOT(Z) |
|
X OR NOT (Z) |
|
X NAND Z |
|
X NOR Z |
|
NOT (X) OR Z |
|
NOT (X) AND Z |
|
Carry input |
op[16:13] |
0 または 1 |
キャリー インを 0 または 1 に設定 |
CIN |
CIN をソースとして選択。Opmode ブロックに CIN ポートが追加され、その値がニーモニックのビット位置 11 に挿入されます。 |
Round PCIN toward infinity |
|
Round PCIN toward zero |
|
Round P toward infinity |
|
Round P toward zero |
|
Larger add/sub/acc (parallel operation) |
|
Larger add/sub/acc (sequential operation) |
|
Round A*B |
|
Pre-Adder/Mult Function |
op[21:17] |
zero |
|
±A*B |
|
±(D±A)*B |
|
±(D±A)**2 |
|
±(D)**2 |
|
±(A)**2 |
|
±(D±A)*A |
|
±(D±B)*A |
|
±D*A |
|
±(D±B)**2 |
|
±(B)**2 |
|
±(D±B)*B |
|
Negate |
op[24:22] |
0 または 1 |
乗算器出力をネゲート |