2.4.2.1. 高速クロック・ドメイン
2.4.2.2. ループの再構築
2.4.2.3. コントロール信号のバックプレッシャー
2.4.2.4. FIFOステータス信号によるフロー・コントロール
2.4.2.5. スキッドバッファーを使用したフロー制御
2.4.2.6. リードモディファイライトメモリー
2.4.2.7. カウンターとアキュムレーター
2.4.2.8. ステートマシン
2.4.2.9. メモリー
2.4.2.10. DSPブロック
2.4.2.11. 一般ロジック
2.4.2.12. モジュラスと除算
2.4.2.13. リセット
2.4.2.14. ハードウェアの再利用
2.4.2.15. アルゴリズム要件
2.4.2.16. FIFO
2.4.2.17. 三進加算器
三進加算器RTLコード
2.4.2.17. 三進加算器
三進加算器を実装すると、 インテル® Hyperflex™ アーキーテクチャーFPGAのリソース使用量が増加する可能性があります。 ただし、デザインが三進加算器構造に大きく依存していない限り、最上位のデザインレベルで追加のリソース使用量が目立たない場合があります。ただし、三進加算器構造を追加するデザインレベルを確認すると、LUTカウントが増加していることがわかります。さらに、リソースの増加量は加算器のサイズに直接相関します。小さな幅の加算器(サイズ<16ビット)は、リソースの大きな違いを引き起こしません。ただし、加算器のサイズを大きくすると、古いFPGAテクノロジーと比較して、リソースカウントの差が大きくなります。
三進加算器RTLコード
module ternary_adder (CLK, A, B, C, OUT);
parameter WIDTH = 16;
input [WIDTH-1:0] A, B, C;
input CLK;
output [WIDTH-1:0] OUT;
wire [WIDTH-1:0] sum1;
reg [WIDTH-1:0] sumreg1;
// 3-bit additions
assign sum1 = A + B + C;
assign OUT = sumreg1;
// Registers
always @ (posedge CLK)
begin
sumreg1 <= sum1;
end
endmodule
このデバイスリソース使用の増加は、 インテル® Hyperflex™ アーキテクチャーALMには、以前のFPGAテクノロジーにあった共有演算モードがありません。共有演算モードのALMは、ALMに3入力加算を実装できます。対照的に、 インテル® Hyperflex™ アーキテクチャーALMは、ALMで2入力アドのみを実装できます。
図 77. インテル® Arria® 10対 インテル® Hyperflex™ アーキテクチャーFPGAのRTLビューで、3つの8ビット入力加算器から2 LSBの追加
共有演算モードでは、 インテル® Arria® 10 ALMを使用すると、3入力加算器でCIN、SHAREIN、COUT、SUMOUT、およびSHAREOUTの 3つの適応LUT(ALUT)入力を使用できます。共有算術モードがないため、2つのALUT入力CIN、COUT、およびSUMOUTのみでALMの使用が制限されます。次の図は、 インテル® Arria® 10および インテル® Hyperflex™ アーキテクチャFPGAの両方での3項加算器の実装結果を示しています。
図 78. インテル® Arria® 10:3つの8ビット入力加算器から2つのLSBを追加するために使用されるALM
図 79. インテル® Hyperflex™ アーキテクチャーFPGA:3つの8ビット入力加算器から2つのLSBを追加するために使用されるALM