Stratix® V、Arria® V、Cyclone® V を含むすべての 28nm デバイスファミリーは、3 つの可変精度 DSP ブロックを使用して、25x18 の複素乗算器構造をサポートできます。
4 つの DSP ブロックを使用してこの構造を実装する Megacore® を使用する場合、Quartus® II ソフトウェアには制限があります。
この制限を回避するには、Quartus® II ソフトウェア・テンプレートにある Complex 25x18 Multiply コードテンプレートを使用して、複雑な乗算器を推論してください。 このコードテンプレートを使用するには、まず新しいデザインファイルを開き、Quartus® II ソフトウェアで利用可能なテンプレートからこのテンプレートを選択する必要があります。 このテンプレートは、演算> DSP 機能 (Stratix-V、Arria-V、Cyclone-V) >フルデザインの Verilog または VHDL テンプレートにあります。
利便性のために、この Verilog 用のコードテンプレートは以下のとおりです。
Quartus® II Verilog テンプレート
複素数 25x18 乗算
Stratix V、Arria-V、Cyclone-V およびそれ以降のデバイスファミリーでの使用向け
モジュール complex_25x18 (x_r, x_i, y_r, y_i, クロック, ena1, ena0, リセット, p_r, p_i);
このテンプレートは、Stratix-V の複雑な 25x18 モードに適用できます。
入力 [24:0] x_r。
入力 [24:0] x_i。
入力 [17:0] y_r。
入力 [17:0] y_i;
Stratix-V DSP は、最大 3 つのクロック / ena ペアと 2 つの非同期リセット信号をサポート
入力クロック。
input ena1;
入力 ena0。
入力リセット。
出力 [43:0] p_r;
出力 [43:0] p_i;
すべての入力 / 出力に署名が必要です。
すべての入力レジスターが同じ {clock, ena, reset} を使用する必要があります
すべての出力レジスターが同じ {clock, ena, reset} を使用する必要があります
reg 署名 [24:0] x_r_reg、x_i_reg;
reg 署名 [17:0] y_r_reg、y_i_reg;
reg 署名 [43:0] p_r、p_i;
ワイヤーサイン [25:0] a1;
ワイヤーサイン [18:0] a2。
ワイヤーサイン [18:0] a3。
ワイヤーサイン [43:0] p1;
ワイヤーサイン [43:0] p2;
ワイヤーサイン [43:0] p3。
a1 = x_r_reg - x_i_regを割り当てます。
p1 = a1 * y_i_regを割り当てます。
a2 = y_r_reg - y_i_regを割り当てます。
p2 = a2 * x_r_regを割り当てます。
a3 = y_r_reg y_i_regを割り当てます。
p3 = a3 * x_i_regを割り当てます。
常に @(posedge clock または posedge reset)
開始
if (reset == 1\'b1)
開始
x_r_reg < = 0。
x_i_reg < = 0。
y_r_reg < = 0。
y_i_reg < = 0。
p_r < = 0。
p_i < = 0。
終わり
他
開始
if (ena0 == 1\'b1)
開始
x_r_reg < = x_r。
x_i_reg < = x_i。
y_r_reg < = y_r。
y_i_reg < = y_i。
終わり
if (ena1 == 1\'b1)
開始
p_r < = p1 p2;
p_i < = p1 p3;
終わり
終わり
終わり
エンドモジュール