【问题标题】:passing array of pointers to function in Vivado HLS (SDSoC 2018)将指针数组传递给 Vivado HLS (SDSoC 2018) 中的函数
【发布时间】:2020-01-01 08:25:55
【问题描述】:

我正在使用 SDSoC 2018.3 Vivado HLS 加速 C++ 函数。这个函数只需要一个指针数组(在 PS 中使用 sds_alloc 分配)。然后,它遍历这个数组,提取其中的每个元素(这是 DDR 内存的地址),并读取位于该地址中的数据。

这是一个演示这个想法的简单函数:

float get_data_from_DDR(float *data_addresses_array[10], unsigned int size)

{

    float * address;

    float sum = 0;

    for(unsigned int i = 0; i< 10; i++)

    {

         address = data_addresses_array[i];

         for(unsigned int j = 0; j<size; j++ ) {

            sum += address[j];

        }

    }

   return sum;

}

问题是,如果我将指针数组作为顶级函数的参数传递,SDSoC 会引发错误。

在Vivado的“ug902”手册中挖掘后发现:

“Vivado HLS 支持指向综合指针的指针,但不支持在顶级接口上使用它们,即作为顶级函数的参数。如果在多个函数中使用指向指针的指针,Vivado HLS 会内联所有使用指向指针的函数。内联多个函数可以增加运行时间。”

我不知道如何解决这个问题。

感谢任何帮助。

【问题讨论】:

    标签: c++ fpga xilinx vivado vivado-hls


    【解决方案1】:

    我不确定有没有办法直接克服这个限制,但也许你可以传递一个偏移量数组,然后将这些偏移量用作放置在 DDR 内存中的数组的索引。

    【讨论】:

      猜你喜欢
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-29
      • 2016-03-27
      • 1970-01-01
      相关资源
      最近更新 更多