如何在Vivado HLS中用数据流输出数组
时间: 2024-02-27 11:55:30 浏览: 167
在 Vivado HLS 中,可以使用数据流的方式输出数组,具体步骤如下:
1. 在函数原型中定义输出数组的指针类型和数组大小,例如:
```c++
void function_name(data_type* output_array, int array_size);
```
2. 在函数内部,使用 `#pragma HLS INTERFACE s_axilite port=output_array bundle=control` 指令将输出数组标记为数据流接口,并指定它属于哪个 AXI4-Lite 控制总线。
3. 在输出结果之前,使用 `#pragma HLS STREAM variable=output_array depth=depth_value` 指令将输出数组标记为数据流变量,并设置数据流深度。
4. 在函数结束前,使用 `#pragma HLS INTERFACE ap_ctrl_none port=return` 指令将函数返回值标记为无控制端口。
下面是一个示例代码:
```c++
#include <hls_stream.h>
void function_name(data_type* output_array, int array_size) {
#pragma HLS INTERFACE s_axilite port=output_array bundle=control
#pragma HLS INTERFACE s_axilite port=array_size bundle=control
#pragma HLS INTERFACE ap_ctrl_none port=return
#pragma HLS STREAM variable=output_array depth=10
hls::stream<data_type> output_stream("output_stream");
// 数据流逻辑
for (int i = 0; i < array_size; i++) {
data_type output_data = ...;
output_stream.write(output_data);
}
// 从数据流中读取数据到输出数组
for (int i = 0; i < array_size; i++) {
output_array[i] = output_stream.read();
}
}
```
在这个示例代码中,我们使用了 `hls::stream` 类型来实现数据流输出。我们首先将输出数组标记为数据流接口,并使用 `#pragma HLS STREAM` 指令将其标记为数据流变量。然后,我们使用 `hls::stream` 类型创建了一个输出数据流 `output_stream`,并在数据流逻辑中将计算结果写入数据流。最后,我们从数据流中读取数据到输出数组中,并将函数返回值标记为无控制端口。
阅读全文