インテルのみ表示可能 — GUID: mwh1409959578039
Ixiasoft
インテルのみ表示可能 — GUID: mwh1409959578039
Ixiasoft
1.3.2. 乗累および積和関数の推論
単純な乗累演算器は、加算演算子に供給される乗算器で構成されます。加算演算子は一連のレジスターに供給され、その後、2番目の入力を加算演算子に供給します。単純な積和演算器は2から4個の乗算器で構成され、1から2レベルの加算、減算、または加算/減算演算子に供給されます。加算は、使用されている場合は常に第2レベルの演算子です。乗累演算器と積和演算器の他にも、 インテル® Quartus® Primeのフィッターは、入力および出力レジスターを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