Opmode - 2022.1 日本語

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

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

ザイリンクス 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 乗算器出力をネゲート