不含旁路的 AXI4-Stream 接口 - 2021.2 Chinese

Vitis 高层次综合用户指南 (UG1399)

Document ID
UG1399
Release Date
2021-12-15
Version
2021.2 Chinese

如果数据类型为 ap_axisap_axiu 的函数实参不包含任何 AXI4 旁路元素(即 WUserWIdWDest 参数设置为 0),则使用不含旁路的 AXI4-Stream。在以下示例中,2 种接口均使用 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);
}

综合后,2 个实参均使用数据端口 (TDATA) 和标准 AXI4-Stream 协议端口(TVALIDTREADYTKEEPTLASTTSTRB)来实现,如下图所示。

图 1. 不含旁路的 AXI4-Stream 接口
提示: 如果指定的 hls::stream 对象的数据类型并非 ap_axisap_axiu,那么该工具会推断不含 TLAST 信号或任何旁路信号的 AXI4-Stream 接口。此 AXI4-Stream 接口实现耗用的器件资源较少,但无法查看串流何时结束。

通过使用结构体可将多个变量组合到同一个 AXI4-Stream 接口中,此结构体默认是由 Vitis HLS 聚合而成的。将单个结构体的多个元素聚合到单宽矢量中即可在同一个 AXI4-Stream 接口中实现该结构体的所有元素。