インテル® Quartus® Primeプロ・エディションのユーザーガイド: デザイン上の推奨事項

ID 683082
日付 4/13/2020
Public

このドキュメントの新しいバージョンが利用できます。お客様は次のことを行ってください。 こちらをクリック 最新バージョンに移行する。

ドキュメント目次

1.3.2. 積和関数と積和関数の推論

合成ツールは積和または積和関数を検出し、それらを次のように実装します。 Intel FPGA IPコアまたはデバイスアトムに直接マップします。 配置および配線中に、 インテル® Quartus® Primeソフトウェアは、乗算累算および乗算加算機能をDSPブロックに配置します。 
注: 合成ツールは、次の場合にのみ積和および積和関数を推測します。 Intelデバイス・ファミリーには、これらの機能をサポートする専用のDSPブロックがあります。

単純な積和演算器は、加算演算子に供給する乗算器で構成されています。加算演算子はレジスターのセットを供給し、その後、2番目の入力を加算演算子に供給します。単純な乗加算器は、1〜2レベルの加算、減算、または加算/減算演算子を供給する2〜4個の乗算器で構成されます。加算は、使用される場合、常に第2レベルの演算子です。乗累算器と乗加算器に加えて、 また、 インテル® Quartus® Prime Fitterは、入力および出力レジスターをDSPブロックに配置して、レジスターをパックし、パフォーマンスとエリア使用率を向上させます。

一部のデバイスファミリーは、複素乗算、入力シフトレジスター、またはより大きな乗算など、追加の高度な乗算加算器およびアキュムレータ機能を提供します。

Verilog HDLおよびVHDLコードサンプルは、入力、出力、およびパイプライン・レジスター、およびオプションの非同期clear信号を備えた積和および積和関数を推測します。 3セットのレジスターを使用すると、3のレイテンシで関数全体で最高のパフォーマンスが得られます。レイテンシーを削減するには、デザインのレジスターを削除します。
注: DSPデザインで高いパフォーマンスを得るには、レジスターパイプライン処理を使用し、レジスターされていないDSP関数を避けます。

Verilog HDL Multiply-Accumulator

module sum_of_four_multiply_accumulate
   #(parameter INPUT_WIDTH=18, parameter OUTPUT_WIDTH=44)
   (
      input clk, ena,
      input [INPUT_WIDTH-1:0] dataa, datab, datac, datad,
      input [INPUT_WIDTH-1:0] datae, dataf, datag, datah,
      output reg [OUTPUT_WIDTH-1:0] dataout
   );
   // Each product can be up to 2*INPUT_WIDTH bits wide.
   // The sum of four of these products can be up to 2 bits wider.
   wire [2*INPUT_WIDTH+1:0] mult_sum;

   // Store the results of the operations on the current inputs
   assign mult_sum = (dataa * datab + datac * datad) +
                     (datae * dataf + datag * datah);

   // Store the value of the accumulation
   always @ (posedge clk)
   begin
      if (ena == 1)
         begin
            dataout <= dataout + mult_sum;
         end
   end
endmodule