インテルのみ表示可能 — GUID: mwh1409959577109
Ixiasoft
1.4.1.1. 同期メモリーブロックの使用
1.4.1.2. サポートされないリセットおよびコントロール条件の回避
1.4.1.3. Read-During-Write動作の確認
1.4.1.4. RAMの推論と実装の制御
1.4.1.5. シングルクロック同期RAM (古いデータでのRead-During-Write動作)
1.4.1.6. シングルクロック同期RAM (新しいデータでのRead-During-Write動作)
1.4.1.7. シンプル・デュアルポート、デュアルクロック同期RAM
1.4.1.8. トゥルー・デュアルポート同期RAM
1.4.1.9. 混合幅デュアルポートRAM
1.4.1.10. バイト・イネーブル信号を備えるRAM
1.4.1.11. 電源投入時の初期のメモリーコンテンツの指定
インテルのみ表示可能 — GUID: mwh1409959577109
Ixiasoft
1.3.1. 乗算器の推論
乗算器の機能を推論する際に、合成ツールは乗算器ロジックを検出し、これをインテル FPGA IPコアに実装する、もしくはロジックをデバイスアトムに直接マッピングします。
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 宣言は、Verilog 2001規格の機能です。
Verilog HDL入力および出力レジスターを備える符号付き乗算器 (パイプライン = 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入力および出力レジスターを備える符号なし乗算器 (パイプライン = 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符号付き乗算器
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;