通过参数传递3D数组,执行操作并返回C ++

时间:2019-03-07 10:52:59

标签: c++ arrays embedded vivado

我试图将存储在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;”。具有读写功能,并且不能将输入设置为轴。对此非常新,不胜感激!

谢谢!

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]);