このドキュメントの新しいバージョンが利用できます。お客様は次のことを行ってください。 こちらをクリック 最新バージョンに移行する。
インテルのみ表示可能 — GUID: mwh1409959577109
Ixiasoft
インテルのみ表示可能 — GUID: mwh1409959577109
Ixiasoft
1.3.1. 乗数の推測
DSPブロックを備えたデバイスの場合、 インテル® Quartus® Prime合成では、デバイスの使用率に応じて、ロジックではなくDSPブロックに機能を実装できます。 インテル® Quartus® Primeフィッターは、DSPブロックに入力および出力レジスターを配置(つまり、レジスター・パッキングを実行)して、パフォーマンスと領域の使用率を向上させることもできます。
次のVerilog HDLおよびVHDLコード例は、合成ツールが符号付きおよび符号なし乗算器をIPコアまたはDSPブロックアトムとして推論できることを示しています。各例は1つのDSPブロック要素に収まります。さらに、レジスターの一覧ーのパッキングが発生すると、レジスターの追加のロジックセルは不要です。
Verilog HDL符号なし乗算器
module unsigned_mult (out, a, b); output [15:0] out; input [7:0] a; input [7:0] b; assign out = a * b; endmodule
Verilog HDL Signed Multiplier with Input and Output Registers (Pipelining = 2)
module signed_mult (out, clk, a, b); output [15:0] out; input clk; input signed [7:0] a; input signed [7:0] b; reg signed [7:0] a_reg; reg signed [7:0] b_reg; reg signed [15:0] out; wire signed [15:0] mult_out; assign mult_out = a_reg * b_reg; always @ (posedge clk) begin a_reg <= a; b_reg <= b; out <= mult_out; end endmodule
VHDL Unsigned Multiplier with Input and Output Registers (Pipelining = 2)
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.numeric_std.all; ENTITY unsigned_mult IS PORT ( a: IN UNSIGNED (7 DOWNTO 0); b: IN UNSIGNED (7 DOWNTO 0); clk: IN STD_LOGIC; aclr: IN STD_LOGIC; result: OUT UNSIGNED (15 DOWNTO 0) ); END unsigned_mult; ARCHITECTURE rtl OF unsigned_mult IS SIGNAL a_reg, b_reg: UNSIGNED (7 DOWNTO 0); BEGIN PROCESS (clk, aclr) BEGIN IF (aclr ='1') THEN a_reg <= (OTHERS => '0'); b_reg <= (OTHERS => '0'); result <= (OTHERS => '0'); ELSIF (rising_edge(clk)) THEN a_reg <= a; b_reg <= b; result <= a_reg * b_reg; END IF; END PROCESS; END rtl;
VHDL Signed Multiplier
LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.numeric_std.all; ENTITY signed_mult IS PORT ( a: IN SIGNED (7 DOWNTO 0); b: IN SIGNED (7 DOWNTO 0); result: OUT SIGNED (15 DOWNTO 0) ); END signed_mult; ARCHITECTURE rtl OF signed_mult IS BEGIN result <= a * b; END rtl;