インターフェイス モード ap_hs
には、データ ポートの付いた 2 方向のハンドシェイク信号が含まれます。業界標準の有効 (valid) と承認 (acknowledge) ハンドシェイクに使用されます。ap_vld
モードの場合は valid ポートしかなく、ap_ack
モードの場合は acknowledge ポートしかありません。
入出力引数には、ap_ovld
モードを使用します。入出力が入力ポートと出力ポートに分割される場合は、ap_none
モードが入力ポートに、ap_vld
モードが出力ポートに使用されます。これが、読み出しと書き込みの両方に使用されるポインター引数のデフォルトです。
ap_hs
モードは、順に読み出しまたは書き込みが実行される配列に使用できます。Vitis HLS では読み出しまたは書き込みアクセスが順に実行されない場合はそれが検出され、エラー メッセージが表示されて合成が停止します。アクセス順が決定できない場合は、Vitis HLS で警告メッセージが表示されます。
ap_hs (ap_ack、ap_vld、および ap_ovld)
ap_hs
ポート レベル I/O プロトコルを使用すると、開発プロセス中の柔軟性が最大となり、ボトムアップおよびトップダウン デザイン フローの両方が可能になります。2 方向ハンドシェイクによりすべてのブロック間の通信が安全に実行されるので、正しい動作に手動の介入や想定は必要ありません。ap_hs
ポート レベル I/O プロトコルには、次の信号が含まれます。
- データ ポート
- データ信号が有効で読み出すことができることを示す Valid 信号
- データが読み出されたことを示す肯定応答 (ACK) 信号
次の図に、入力ポートと出力ポートでの ap_hs
インターフェイスの動作を示します。この例では、入力ポート名は in
、出力ポート名は out
です。
in
の valid
ポート名は in_vld
です。入力では、次のようになります。
- ap_start が High になると、ブロックが通常の動作を開始します。
- デザインが入力データを読み出す準備ができても、入力
valid
が Low の場合、デザインは停止し、入力valid
が High になって新しい入力値が有効であることが示されるまで待機します。注記: 前の図は、この動作を示しています。この例では、デザインはクロック サイクル 4 でデータ入力in
を読み出す準備ができ、データを読み出す前に入力valid
を待ちます。 - 入力
valid
が High になると、出力 ACK 信号が High になり、データが読み出されたことが示されます。
出力では、次のようになります。
- ap_start が High になると、ブロックが通常の動作を開始します。
- 出力ポートへの書き込みが実行されると、同時に出力
valid
信号が High になり、ポートに有効なデータが存在することが示されます。 - in_ack 入力が Low の場合、デザインが停止し、in_ack 入力が High になるまで待機します。
- 入力 ACK 信号が High になってデータが読みされてたことが示されると、次のクロック エッジで出力
valid
が Low になります。
ap_ack
ap_ack
ポート レベル I/O プロトコルは ap_hs
インターフェイス タイプのサブセットです。ap_ack
ポート レベル I/O プロトコルには、次の信号が含まれます。
- データ ポート
- データが受信されたことを示す肯定応答 (ACK) 信号
- 入力引数に対しては、出力 ACK ポートが生成され、入力が読み出されるサイクルで High になります。
- 出力引数に対しては、Vitis HLS で入力 ACK ポートがインプリメントされ、出力が読み出されたことが確認されます。
注記: 書き込み操作後、デザインが停止し、入力 ACK が High になって出力がコンシューマー ブロックにより読み出されたことが示されるまで待機します。ただし、データが使用可能であることを示す出力ポートはありません。
ap_ack
を使用するデザインは検証できません。ap_vld
ap_vld
は ap_hs
インターフェイス タイプのサブセットです。ap_vld
ポート レベル I/O プロトコルには、次の信号が含まれます。
- データ ポート
- データ信号が有効で読み出すことができることを示す Valid 信号
- 入力引数に対しては、デザインは
valid
信号が High になった直後にデータ ポートを読み出します。デザインが新しいデータを読み出す準備ができていなくても、データ ポートがサンプリングされ、必要になるまでデータが内部で保持されます。 - 出力引数に対しては、Vitis HLS で出力
valid
ポートがインプリメントされ、出力ポートのデータが有効になったことが示されます。
- 入力引数に対しては、デザインは
ap_ovld
ap_ovld
は ap_hs
インターフェイス タイプのサブセットです。ap_ovld
ポート レベル I/O プロトコルには、次の信号が含まれます。
- データ ポート
- データ信号が有効で読み出すことができることを示す Valid 信号
- 入力引数と、入出力引数の入力部分に対しては、デザインはデフォルトで
ap_none
タイプになります。 - 出力引数と、入出力引数の出力部分に対しては、デザインは
ap_vld
タイプをインプリメントします。
- 入力引数と、入出力引数の入力部分に対しては、デザインはデフォルトで