我试图将存储在PYNQ板上的3D数组传递给Direct Memory Access,执行简单的功能,然后作为输出返回DMA。这是我目前拥有的功能:
#include <ap_int.h>
#define BLOCKS 4
#define LENGTH 8
void multiplyArray(volatile ap_uint<32> * input[BLOCKS][LENGTH][LENGTH], volatile ap_uint<32> * output[BLOCKS][LENGTH][LENGTH]){
#pragma HLS INTERFACE axis PORT = input
#pragma HLS INTERFACE axis PORT = output
int x;
int j;
int i;
for(x = 0; x < BLOCKS; x++){
for(j = 0; j < LENGTH; j++){
for(i = 0; i < LENGTH; i++){
output[x][j][i] = input[x][j][i] + 1;
}
}
}
它返回了多个错误,包括对输入的不支持的内存访问,“ output [x] [j] [i] = input [x] [j] [i] + 1;”。具有读写功能,并且不能将输入设置为轴。对此非常新,不胜感激!
谢谢!
答案 0 :(得分:0)
简单地说,这部分volatile ap_uint<32> *
需要与数组项类型相对应。如果该数组是类型为ap_uint<32>
的3D数组,则参数应为ap_uint<32> input[BLOCKS][LENGTH][LENGTH]
。示例:
void multiplyArray (ap_uint<32> input [BLOCKS][LENGTH][LENGTH],
ap_uint<32> output [BLOCKS][LENGTH][LENGTH]);