ストリーミング インターフェイス - 2022.1 日本語

Vitis 統合ソフトウェア プラットフォームの資料: アプリケーション アクセラレーション開発 (UG1393)

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 日本語

データに順番にアクセスする場合は、ストリーミング インターフェイスを使用してターゲット プラットフォーム上のデバイス I/O との間でデータを転送できます。その際、データを中間段階としてグローバル メモリを介して移行する必要はありません。この転送も、グローバル メモリを使用せずに直接実行されます。

ストリーミング パラダイムを使用するデザインは C で記述するのが困難な場合があります。複数の読み出しおよび書き込みを実行するためにポインターを使用すると、型修飾子が記述されるので、問題が発生する可能性があります。Vitis HLS には、ストリーミング データ構造を記述するための C++ テンプレート クラスの hls::stream<ap_axis<N>> が含まれます。ハードウェアでは、ストリーミング インターフェイスが AXI4-Stream インターフェイス (axis) としてインプリメントされます。Vitis コンパイラは、hls::stream データ型の AXI4-Stream インターフェイスを推論します。

ヒント: ストリーミング データ型を手動で AXI4-Stream インターフェイスにマップするには、まずストリーミング データ型を hls::stream<ap_axis<N>> として定義し、次に INTERFACE プラグマを使用してこのデータ型を AXI4-Stream インターフェイスにマップする必要があります。

AXI4-Stream および Vitis HLS には、次のシグネチャがあります (ap_axi_sdata.h で定義)。

template <typename T, size_t WUser, size_t WId, size_t WDest> struct axis { .. };
 interface is implemented
      as a struct type in 

説明:

  • T はストリーム データ型です。
  • WUser インターフェイスが TUSER 信号の幅でインプリメントされます。
  • WId: TID 信号の幅
  • WDest: TDest 信号の幅

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

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

WUserWId、および WDest テンプレート パラメーターに指定された値は、AXI4-Stream インターフェイスのサイドチャネル信号の使用を制御します。TVALID、TREADY、および TLAST は、AXI4-Stream プロトコルに必要な制御信号です。TKEEP、TSTRB、TUSER、TID、および TDEST 信号は、追加のブックキーピング データを渡すために使用可能な特別信号です。詳細は、 『Vitis HLS ユーザー ガイド』 (UG1399) の HLS ストリーム インターフェイス を参照してください。