Intel® Quartus® Prime Pro Edition用户指南: 设计建议

ID 683082
日期 9/28/2020
Public

本文档可提供新的版本。客户应 单击此处 前往查看最新版本。

文档目录

1.3.2. 推导乘法累加器和乘法加法器功能

综合工具检测乘法累加器或乘法加法器功能,并将它们实现为Intel FPGA IP core或将它们直接映射到device atom。 在布局布线期间, Intel® Quartus® Prime软件将乘法累加器和乘法加法器功能布局在DSP模块中。
注: 仅当Intel器件系列具有支持乘法累加器和乘法加法器功能的专用DSP模块时,综合工具才推断乘法累加器和乘法加法器功能。

一个简单的乘法累加器由一个馈送(feeding)加法运算符的乘法器组成。加法运算符馈送一组寄存器,然后将第二个输入馈送到加法运算符。一个简单的乘法加法器由两到四个乘法器组成,这些乘法器提供一个或两个层级的加法,减法或加法/减法运算符。如果使用加法,那么加法始终是第二级运算符。除了乘法累加器和乘法加法器以外, Intel® Quartus® Prime Fitter还将输入和输出寄存器布局在DSP模块中,以封装寄存器并提高性能和区域利用率。

某些器件系列还提供其他高级乘法加法器和累加器功能,例如复数乘法,输入移位寄存器或更大的乘法。

Verilog HDL和VHDL代码样本通过输入,输出和流水线寄存器以及一个可选的异步的clear信号来推断乘法累加器和乘法加法器功能。使用这三组寄存器可以通过此功能(延迟为三)提供最佳性能。要减少延迟,需删除设计中的寄存器。
注: 为了在DSP设计中获得高性能,请使用寄存器流水线操作,并避免使用未寄存的DSP功能。

Verilog HDL乘法累加器

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