Combinatorial vs. Multi-Cycle 回路
C-to-Hardware Compiler は、エクスポートした関数のための C ソースコードから2つの回路タイプを生成できます。 – Combinatorial
と Multi-cycle
。C Code Symbol 用の 'interface mode' と呼ばれる、回路のタイプは C Code Symbol の属性、または 特に '関数特性' (C ソース関数を C Code Symbol に '関連つける' ために使用したインターフェース定義)の一部として指定されます。
2つの相違については以下になります。:
Combinatorial – どんな時でも出力するロジックゲートからなるこのタイプの回路は、入力の値によってのみ定義されます。このインターフェースモードで、エクスポートした関数のパラメータのみが C Code Symbol(一般的に 'Parameter' エントリと呼ばれます。)上で C Code Enries として表示されます。
図 2. Combinatorial インターフェースでの C Code Symbol
Combinatorial 回路は、保存された状態(メモリ、以前の実行等)に依存しない簡単な C 関数を生成できます。要求があった場合、C-to-Hardware Compiler は、組み合わせ回路を作成しようとします。しかし、これが不可能な場合エラーは編集中に出力され、インターフェースモードを Multi-cycle に変更する必要があります。もし、関数がグローバル変数にアクセスする場合、これは保存された状態を示します。そして、そのため、combinatorial 回路は生成できないことに注意してください。
Multi-cycle – このタイプの回路は、完了するには1つのクロックサイクル以上を必要とします。このインターフェースモードを選択する時、
図 3. Multi-cycle インターフェースでの C Code SymbolSTART
,DONE
やCLOCK
C Code Entries は自動で C Code Symbol(一般的に 'Control' エントリと呼ばれます。)に追加されます。これらのエントリは、エクスポートされた C 関数の一部ではありません。
START
信号が High である時、回路は動作し始めます。入力は有効であると想定されます。回路が動作終了する時、DONE
信号は High でドライブします。出力は1つのクロックサイクルのために有効になります。有効な出力が短いために、外部の出力のラッチはよくあります。
タブの Variables 領域で Enable reset logic オプションが有効な場合、reset ロジックはシンボル内に構築されます。そして、2つの追加のControl-type C Code Entries はシンボル(RESET
やRESET_DONE
)に追加されることに注意してください。
詳細について
C を使用してカスタム FPGA ロジックを作成するためのチュートリアルについては、Tutorial - Designing Custom FPGA Logic using C を参照してください。