サイドチャネルなしの AXI4-Stream インターフェイス - 2023.2 日本語

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

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

関数引数 ap_axis または ap_axiu 型に AXI4 サイドチャネル エレメントが含まれない場合 (WUserWId、および WDest パラメーターが 0)、AXI4-Stream はサイドチャネルなしで使用されます。次の例では、両方のインターフェイスが AXI4-Stream を使用してインプリメントされます。

#include "ap_axi_sdata.h"
#include "hls_stream.h"

typedef ap_axiu<32, 0, 0, 0> trans_pkt;

void example(hls::stream< trans_pkt > &A, hls::stream< trans_pkt > &B)
{
#pragma HLS INTERFACE mode=axis port=A
#pragma HLS INTERFACE mode=axis port=B
    trans_pkt tmp;
    A.read(tmp);
    tmp.data += 5;
    B.write(tmp);
}

合成後は、次の図に示すように、どちらの引数もデータ ポート (TDATA) と標準 AXI4-Stream プロトコル ポート (TVALIDTREADYTKEEPTLAST、および TSTRB) を使用してインプリメントされます。

図 1. サイドチャネルなしの AXI4-Stream インターフェイス
ヒント: hls::stream オブジェクトを ap_axis または ap_axiu 以外のデータ型で指定すると、AXI4-Stream インターフェイスは TLAST 信号またはサイドチャネル信号なしで推論されます。AXI4-Stream インターフェイスのこのインプリメンテーションでは使用されるデバイス リソースは少なくなりますが、ストリームがいつ終了するかは示されません。

構造体を使用して複数の変数を 1 つの AXI4-Stream インターフェイスにまとめることができます。Vitis HLS では、デフォルトで集約されます。構造体の要素を 1 つの幅の広いベクターに統合すると、構造体のすべての要素を同じ AXI4-Stream インターフェイスにインプリメントできます。