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

ID 683082
日付 8/03/2023
Public
ドキュメント目次

1.6.8. カウンターに関するHDLガイドライン

インテル® Quartus® Primeの合成エンジンは、HDLコードのカウンターを加算器として実装し、それにレジスターを続けることで、イネーブル (ena)、同期クリア (sclr)、および同期ロード (sload) などのレジスター・コントロール信号を利用できるようにします。最良の領域使用率を実現するには、アップダウン・コントロールを2つの個別の加算演算子ではなく1つの加算演算子で表現していることを確認します。
次のコーディング・スタイルを使用すると、合成エンジンでは、2つの個別のキャリーチェーンを実装して加算を行う場合があります。
out <= count_up ? out + 1 : out - 1;

シンプルなデザインの場合、合成エンジンはこのコーディング・スタイルを識別し、ロジックを最適化します。ただし、複雑なデザイン、または保持プラグマのあるデザインでは、コンパイラーですべてのロジックを最適化することはできません。よって、より注意深いコーディングが必要になります。

次のコーディング・スタイルでは、他のロジックの他には1つの加算器のみが必要になります。
out <= out + (count_up ? 1 : -1);

このスタイルでは、リソースと面積がより効率的に使用されます。この場合、キャリーチェーン加算器を1つのみ使用します。また、加算器の前にLUTで-1定数ロジックが実装されます。