AXI4-Stream のインプリメント方法 - 2023.2 日本語

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

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

デザインにストリーミング インターフェイスが必要な場合は、まず Vitis HLShls::stream などのストリーミング データ構造を定義して使用します。この単純なオブジェクトにより、ストリーミングの要件とそのストリーミング インターフェイスがカプセル化され、RTL で FIFO インターフェイス (ap_fifo) としてインプリメントされますが、ハンドシェイク インターフェイス (ap_hs) または AXI-Stream インターフェイス (axis) としてもインプリメントすることもできます。ストリーミング インターフェイスの別の例は、GitHub の Vitis-HLS-Introductory-Examples/Interface/Streaming を参照してください。

AXI4-Stream インターフェイス (axis) がインターフェイス プラグマ モード オプションで指定される場合、インターフェイス インプリメンテーションは TDATA、TVALID、および TREADY 信号を定義することで、AXIS インターフェイスの形式を模倣します。

より正式な AXIS インプリメンテーションが必要な場合、Vitis HLSAXI4-Stream プロトコルの要件をカプセル化し、特殊なデータ型 (ap_axi_sdata.h で定義された hls::axis) を使用して、このインターフェイスに必要な特別な RTL 信号をインプリメントする必要があります。

Vitis HLS では、AXI4-Stream インターフェイスは構造体としてインプリメントされ、次のシグネチャ (ap_axi_sdata.h で定義) を持ちます。

template <typename T, size_t WUser, size_t WId, size_t WDest> struct axis { .. };

説明:

T
ストリーミングされるデータ型。
ヒント: これは、ap_fixed を含むすべてのデータ型をサポートできます。
WUser
TUSER 信号の幅
WId
TID 信号の幅
WDest
TDest 信号の幅

ストリーム データ型 (T) が単純な整数型の場合、次の 2 つの定義済みタイプの AXI4-Stream インプリメンテーションを使用できます。

  • AXI4-Stream クラスの符号付きインプリメンテーション (ap_axis<Wdata, WUser, WId, WDest>)
    hls::axis<ap_int<WData>, WUser, WId, WDest>
  • AXI4-Stream クラスの符号なしインプリメンテーション (ap_axiu<WData, WUser, WId, WDest>)
    hls::axis<ap_uint<WData>, WUser, WId, WDest>

WUserWId、および WDest テンプレート パラメーターに指定された値は、AXI4-Stream インターフェイスのサイドチャネル信号の使用を制御します。

hls::axis クラスを使用すると、生成された RTL に実際のデータ信号 TDATA と、追加の信号 (TVALIDTREADYTKEEPTSTRBTLASTTUSERTID、および TDEST) が含まれるのが一般的です。

TVALIDTREADY、および TLAST は、AXI4-Stream プロトコルに必要な制御信号です。TKEEPTSTRBTUSERTID、および TDEST 信号は、追加のブックキーピング データを渡すために使用可能なオプションの特別な信号です。

ヒント: WUserWId、および WDest を 0 に設定すると、生成される RTL のインターフェイスにオプションで TUSERTID、および TDEST 信号が含まれます。