0

下面是我的简单代码:

void MyFunc(float input[10], float output[10])
{
#pragma HLS INTERFACE s_axilite port=input bundle=BUS_INPUT

const float temp[10]={
0.0f,0.1f,0.2f,0.3f,0.4f,0.5f,0.6f,0.7f,0.8f,0.9f
};


for(int i=0;i<10;i++)
{
output[i]=input[i]+temp[i];
}
}

综合后资源利用率如下图,

合成结果:

在此处输入图像描述

从这个图中,我惊讶地发现使用了两个 BRAM_18K 块。这是正常的吗?为什么Axi lite总线可以占用两个BRAM_18K?

我检查了生成的verilog代码,仍然找不到原因。生成的verilog代码放在 https://drive.google.com/file/d/1iP6JQGbv6pShGuCF62G21isRHkjJhn3I/view?usp=sharing

谢谢。

4

1 回答 1

0

您的硬件将处理一个数据块,产生第二个数据块。两个块都必须存储在某个地方,并且该存储是块 ram 单元,正如编译器所推断的那样。

于 2019-02-19T15:15:31.307 回答