インテル® Quartus® Primeプロ・エディションのユーザーガイド: デザイン上の推奨事項

ID 683082
日付 4/13/2020
Public

このドキュメントの新しいバージョンが利用できます。お客様は次のことを行ってください。 こちらをクリック 最新バージョンに移行する。

ドキュメント目次

1.6.3.1. アダプティブ・ロジック・モジュールの6入力LUTを使用したアーキテクチャー

基本的な論理構造に6入力LUTを備えたIntel FPGAデバイスファミリーでは、ALMは同時に3ビットを追加できます。 コードを再構築してパフォーマンスを向上させることにより、この機能を活用してください。
4入力LUTアーキテクチャーをターゲットとするコードは6入力LUTデバイスに対して正常にコンパイルされますが、実装は非効率的です。たとえば、6入力適応ALUTを使用するには、4入力LUTアーキテクチャー用にデザインされた大規模なパイプラインバイナリ加算器ツリーを書き換える必要があります。ツリーを3進ツリーとして再構築することにより、デザインの効率が大幅に向上し、密度の使用率が大幅に向上します。

Verilog HDL Pipelined Ternary Tree

この例はパイプライン化された加算器を示していますが、加算演算を分割すると、パイプライン化されていない加算器でもより良い結果を得ることができます。デザインがパイプライン化されていない場合、三分木は二分木よりもはるかに優れたパフォーマンスを提供します。たとえば、合成ツールによっては、HDLコードのsum = (A + B + C) + (D + E)により、 A + B + Cに続く3入力加算器、そして括弧なしのコードよりもsum1 + D + Eの 3入力加算器の最適な実装が作成される可能性が高くなります。括弧を追加しない場合、合成ツールは、アーキテクチャーに最適でない方法で追加を分割する場合があります。

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