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

ID 683082
日期 9/28/2020
Public

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

文档目录

1.6.3.1. 自适应逻辑模块中具有6-Input LUT的体系结构

在包括基本逻辑结构中6-input LUT的Intel FPGA器件系列中,ALM可以同时添加三个比特。 通过重组代码来利用此功能,以获得更佳性能。
尽管用于4-input LUT体系结构的代码可以对6-input LUT器件成功地编译,但实现效率可能很低。例如,要利用6-input自适应ALUT,必须对专为4-input LUT体系结构设计的大型流水线二进制加法器树进行重写。通过将此树重构为三进制树,设计变得更加高效,显著提高了密度利用率。

Verilog HDL流水线化的三进制树

该示例显示了一个流水线化的加法器,但是对加法运算进行分区也可以帮助您在非流水线化的加法器中获得更好的结果。如果设计没有被流水线化,那么三进制树的性能要比二进制树好得多。例如,根据综合工具,与不带括号的代码相比,HDL代码sum = (A + B + C) + (D + E)更有可能为A + B + C创建一个3-input加法器的最佳实现,然后为sum1 + D + E创建一个3-input加法器的最佳实现。如果不添加括号,那么综合工具对加法进行分区(partition the addition)的方式可能对体系结构而言并非最佳。

module ternary_adder_tree (a, b, c, d, e, clk, out);
    parameter width = 16;
	input [width-1:0] a, b, c, d, e;
	input	clk;
	output [width-1:0] out;

	wire [width-1:0] sum1, sum2;
	reg [width-1:0] sumreg1, sumreg2;
	// registers

	always @ (posedge clk)
		begin
			sumreg1 <= sum1;
			sumreg2 <= sum2;
		end

	// 3-bit additions
	assign sum1 = a + b + c;
	assign sum2 = sumreg1 + d + e;
	assign out = sumreg2;
endmodule