Vitis HLS 学习笔记--hls::stream(理解串流:基础)

目录

1. 介绍

2. 示例

2.1 代码解析

2.2 定义串流

2.3 串流的综合报告

3. 总结


1. 介绍

在 Vitis HLS 中,hls::stream 是一个用于在 C/C++ 中进行高级合成的关键数据结构。它类似于C++ 标准库中的 std::stream,但是专门设计用于硬件描述语言(如 Verilog 或 VHDL)中的数据流。hls::stream 提供了一种方便的方法来处理数据流,使得在设计硬件加速器时更加灵活和可控。

hls::stream<> 类实现的串流具有如下属性:

  • hls::stream<> 的行为与无限深度的 FIFO 相似。
  • 按顺序对其执行读写操作。从 hls::stream<> 读取数据之后,无法再次对其进行读取
  • hls::stream<> 作为顶层接口上的实参时,impl 为:ap_fifo or AXIS。
  • hls::stream<> 作为局部或全局变量时,impl 为:fifo。

常见有两种串流声明方法:

  • hls::stream:指定串流的数据类型。设计内部的 hls::stream<> 作为 FIFO 来实现,默认深度为 2。STREAM 编译指示或指令可用于更改深度。
  • hls::stream:指定串流的数据类型和 FIFO 深度。设置深度以防止停滞。如果设计中的任意任务生产或使用样本的速度大于指定深度,那么 FIFO 可能因无法读取(或写入)而变为空(或满),从而导致停滞。

2. 示例

2.1 代码解析

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

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

struct data {
    ap_int<64> data_filed;
    ap_int<1>  last;
};


void example(hls::stream & inStreamTop,
		     hls::stream&

你可能感兴趣的:(Vitis,HLS,学习,笔记,c++,fpga开发,HLS)