ポート レベル I/O: ワイヤ ハンドシェイク - 2023.2 日本語

Vitis 高位合成ユーザー ガイド (UG1399)

Document ID
UG1399
Release Date
2023-12-18
Version
2023.2 日本語

インターフェイス モード 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 です。

注記: 制御信号名は、元のポート名に基づいています。たとえば、データ入力 invalid ポート名は in_vld です。
図 1. ap_hs インターフェイスの動作

入力では、次のようになります。

  • 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 になって出力がコンシューマー ブロックにより読み出されたことが示されるまで待機します。ただし、データが使用可能であることを示す出力ポートはありません。
注意:
C/RTL 協調シミュレーションでは、出力ポートに ap_ack を使用するデザインは検証できません。

ap_vld

ap_vldap_hs インターフェイス タイプのサブセットです。ap_vld ポート レベル I/O プロトコルには、次の信号が含まれます。

  • データ ポート
  • データ信号が有効で読み出すことができることを示す Valid 信号
    • 入力引数に対しては、デザインは valid 信号が High になった直後にデータ ポートを読み出します。デザインが新しいデータを読み出す準備ができていなくても、データ ポートがサンプリングされ、必要になるまでデータが内部で保持されます。
    • 出力引数に対しては、Vitis HLS で出力 valid ポートがインプリメントされ、出力ポートのデータが有効になったことが示されます。

ap_ovld

ap_ovldap_hs インターフェイス タイプのサブセットです。ap_ovld ポート レベル I/O プロトコルには、次の信号が含まれます。

  • データ ポート
  • データ信号が有効で読み出すことができることを示す Valid 信号
    • 入力引数と、入出力引数の入力部分に対しては、デザインはデフォルトで ap_none タイプになります。
    • 出力引数と、入出力引数の出力部分に対しては、デザインは ap_vld タイプをインプリメントします。