3 Arria ® 10 デバイスにおける可変精度 DSP ブロック
3.5 動作モードの説明
3.5.1 固定小数点演算の動作モード
3.5.1.1 独立乗算器モード
独立した入力および出力乗算器モードでは、可変精度 DSP ブロックは汎用乗算器の個別の乗算演算 を実行します。
コンフィグレーション ブロックごとの乗算器数
18 ( 符号あり ) x 19 ( 符号あり ) 2
18 ( 符号なし ) x 18 ( 符号なし ) 2
27 ( 符号ありまたは符号なし ) x 27 ( 符号ありまたは符号なし ) 1
3.5.1.1.1 18 x 18または18 x 19独立乗算器
図 -30: Arria 10デバイスの各可変精度 DSP ブロックにおける 2 つの18 x 18または18 x 19独立乗 算器
変数は、下の図で次のように定義されます。
• 18 x 19オペランドの場合、n = 19およびm = 37
• 18 x 18オペランドの場合、n = 18およびm = 36
[(m-1)..0]
Multiplier
x
Multiplier
x
Input Register Bank
data_b1[(n-1)..0]
data_a1[17..0]
n
18
Variable-Precision DSP Block
data_b0[(n-1)..0]
data_a0[17..0]
n
18
m
[(m-1)..0]
m
Output Register Bank
Pipeline Register
3.5.1.1.2 27 x 27独立乗算器
図 -31: Arria 10デバイスの各可変精度 DSP ブロックにおける 1 つの27 x 27独立乗算器モード
このモードでは、チェーンアウト加算器またはアキュムレーターと組み合わせた場合、resultは最大64 ビットになり得ます。
Input Register Bank
Multiplier
x Result[53..0]
dataa_b0[26..0]
dataa_a0[26..0]
27
27
54 Variable-Precision DSP Block
Output Register Bank
Pipeline Register
3.5.1.2 独立複素数乗算器
Arria 10デバイスは、2 つの固定小数点演算 Multiplier Adder Sum モードを使用して18 x 19複 素数乗算器モードをサポートします。
図 -32: 複素数乗算式のサンプル
虚部の [(a × d) + (b × c)] は 1 番目の可変精度 DSP ブロックに実装され、実部の [(a × c) - (b
× d)] は 2 番目の可変精度 DSP ブロックに実装されます。
3.5.1.2.1 18 x 19複素数乗算
図 -33: Arria 10デバイスの 2 つの可変精度 DSP ブロックを有する 1 つの18 x 19複素数乗算器
Variable-Precision DSP Block 1
Variable-Precision DSP Block 2
Input Register Bank
Imaginary Part (ad+bc) Multiplier
c[18..0]
b[17..0]
19
18
Multiplier d[18..0]
a[17..0]
19
18
38 Adder
+
x x
Output Register Bank
Input Register Bank
Real Part (ac-bd) d[18..0]
b[17..0]
19
18
c[18..0]
a[17..0]
19
18
38
Output Register Bank
Multiplier
Multiplier
Adder
-x x
Pipeline RegisterPipeline Register
3.5.1.3 Multiplier Adder Sum モード
図 -34: Arria 10デバイスの 1 つの可変精度 DSP ブロックと 2 つの18 x 19乗算器の和
Input Register Bank
Result[37..0]
dataa_y0[18..0]
dataa_x0[17..0]
19
18
Variable-Precision DSP Block
datab_y1[18..0]
datab_x1[17..0]
19
18
38 Multiplier
Multiplier
Adder +/-SUB_COMPLEX
Output Register Bank
x
x
Pipeline Register
3.5.1.4 36 ビット入力に加算する18 x 19乗算モード
Arria 10の可変精度 DSP ブロックは、1 つの18 x 19乗算を36 ビット入力に加算することができ
ます。
下部の乗算器がバイパスされている間は、上位の乗算器を使用して18 x 19乗算への入力を提供しま す。 datab_y1[17..0]信号とdatab_y1[35..18]信号は、36 ビット入力を生成するために連 結されます。
図 -35: Arria 10デバイスの36 ビット入力に加算する18 x 19乗算モード
Input Register Bank
Result[37..0]
dataa_y0[17..0]
dataa_x0[17..0]
19
18
Variable-Precision DSP Block
datab_y1[35..18]
datab_y1[17..0]
18
18
37 Multiplier
Adder SUB_COMPLEX
Output Register Bank
x
+/-Pipeline Register
3.5.1.5 シストリック FIR モード
FIR フィルターの基本構造は、加算による一連の乗算で構成されています。
図 -36: 基本的な FIR フィルターの式
タップの数や入力の容量により、多数の加算器のチェーンを介する遅延が非常に大きくなる場合があり ます。遅延性能の問題を解決するには、遅延は増加しますが、タップごとに配置される追加の遅延要素で シストリック形式を使用して、増加するレイテンシーを代償に性能を向上させます。
図 -37: シストリック FIR フィルターの等価回路
1
− c k ]
[ n x
] [ n y
c1 c 2 ck
] 1 n[
w w2 n[ ] w k−1 n[ ] w k[ n]
Arria 10の可変精度 DSP ブロックは、次のシストリック FIR 構造をサポートします。
• 18 ビット
• 27 ビット
シストリック FIR モードでは、乗算器の入力はソースの 4 つの異なるセットから供給できます。
• 2 つのダイナミック入力
• 1 つのダイナミック入力と 1 つの係数入力
• 1 つの係数入力と 1 つのプリアダー出力
• 1 つのダイナミック入力と 1 つのプリアダー出力
3.5.1.5.1 可変精度ブロック・アーキテクチャー・ビューへのシストリック・モード・ユーザー・ビューのマッピング 次の図は、レジスターをリタイミングし、加算器を再構築することで、Arria 10の可変精度 DSP ブロッ
ク (d) を使用して、シストリック FIR フィルター (a) のユーザービューを実装できることを図示したも
のです。レジスター B は、(b) に示すようにチェーンイン、ataa_y0 および dataa_x0 入力パスでシス トリック・レジスターにリタイミングができます。レジスターのリタイミングの最終結果は (c) に示されて います。加算器の入力と位置の再構築による 2 つの乗算器の加算結果は、(d) に示すようにチェーンア ウト加算器によってチェーンイン入力に加算されます。
図 -38: 可変精度ブロック・アーキテクチャー・ビューへのシストリック・モード・ユーザー・ビューのマッピング
x[n]
c1
(a) Systolic FIR Filter
User View (b) Variable Precision Block Architecture View (Before Retiming)
Second DSP Block dataa_y0 x[n]
dataa_x0 c1 datab_y1 x[n-2]
datab_x1 c2 w1[n]
w2[n]
dataa_y0 x[n-4]
dataa_x0 c3 w3[n]
Register B datab_y1 x[n-6]
datab_x1 c4 w4[n]
Register C
y[n]
Register A Multiplier
Multiplier
Adder Output Register Bank Result First DSP Block
Result Output Register Bank
Retiming Chainout Adder Chainin from Previous DSP Block
(c) Variable Precision Block Architecture View (After Retiming)
Second DSP Block dataa_y0 x[n]
dataa_x0 c1 datab_y1 x[n-2]
datab_x1 c2 w1[n]
w2[n]
dataa_y0 x[n-4]
dataa_x0 c3
w3[n]
Register B
datab_y1 x[n-6]
datab_x1 c4 w4[n]
Register C
y[n]
Register A Multiplier
Multiplier
Adder Output Register Bank Result First DSP Block
Result Output Register Bank
Chainout Adder Chainin from Previous DSP Block
Systolic Register Systolic
Registers
(d) Variable Precision Block Architecture View (Adder Restructured)
Second DSP Block dataa_y0 x[n]
dataa_x0 c1 datab_y1 x[n-2]
datab_x1 c2 w1[n]
w2[n]
dataa_y0 x[n-4]
dataa_x0 c3
w3[n]
Register B
datab_y1 x[n-6]
datab_x1 c4 w4[n]
Register C
y[n]
Register A Multiplier
Multiplier
Adder Output Register Bank Result First DSP Block
Result Output Register Bank
Chainout Adder Chainin from Previous DSP Block
Systolic Register Systolic
Registers
Adder x[n-2]
c2 w1[n]
w2[n]
x[n-4]
c3 w3[n]
x[n-6]
c4 w4[n]
y[n]
Register B
Register A Register A
3.5.1.5.2 18 ビットのシストリック FIR モード
18 ビットのシストリック FIR モードでは、加算器はデュアル44 ビット加算器としてコンフィグレーシ
ョンされます。そのため、18 x 19動作モードを使用する際にオーバーヘッドの7 ビットとなり、結果的 に37 ビットとなります。これにより、合計 16 個の 18 x 19 乗算器あるいはシストリック FIR ストラ クチャーとしてカスケード化できる 8 個の Arria 10可変精度 DSP ブロックが使用可能となります。
図 -39: Arria 10デバイスでの18 ビット・シストリック FIR モード
Input Register Bank
dataa_y0[17..0]
dataa_z0[17..0]
dataa_x0[17..0]
COEFSELA[2..0]
datab_y1[17..0]
datab_z1[17..0]
datab_x1[17..0]
COEFSELB[2..0]
+/-Pre-Adder
+/-Pre-Adder
+/-Internal Coefficient
Internal Coefficient
Multiplier
Multiplier Adder
+/-Systolic
Registers
Systolic Register
Chainout adder or accumulator
+
Output Register Bank
chainin[43..0]
chainout[43..0]
Result[43..0]
18-bit Systolic FIR x
x 18
18 18 18 18 18
3
3
44 44 44
Pipeline Register
イネーブルされると、シストリック・レジスターは 出力レジスターバンクとして同じクロックソースで クロックされます。
3.5.1.5.3 27 ビットのシストリック FIR モード
27 ビットのシストリック FIR モードでは、チェーンアウト加算器やアキュムレーターは64 ビットで動
作するようコンフィグレーションされます。このため、27 ビットのデータ (54 ビット積 ) を使用する際、
オーバーヘッドの10 ビットとなります。これにより、合計 11 個の 27 x 27 乗算器あるいはシストリッ ク FIR ストラクチャーとしてカスケード化が可能な 11 個の Arria 10の可変精度 DSP ブロックが使 用可能となります。
27 ビット・シストリック FIR モードでは、DSP ブロックごとに 1 ステージのシストリック・フィルターを 実装することができます。なお、このモードではシストリック・レジスターは不要です。
図 -40: Arria 10デバイスでの27 ビット・シストリック FIR モード
Input Register Bank
dataa_y0[25..0]
dataa_z0[25..0]
dataa_x0[26..0]
COEFSELA[2..0]
Pre-Adder
+/-Internal Coefficient
Multiplier
Adder
+/-Chainout adder or accumulator
+ chainin[63..0]
chainout[63..0]
27-bit Systolic FIR
27 x
Output Register Bank
26
3 27 26
64 64
Pipeline Register