2

I am novice in Xilinx HLS. I am following tutorial ug871-vivado-high-level-synthesis-tutorial.pdf(page 77).

The code is

#define N 32

void array_io (dout_t d_o[N], din_t d_i[N])     
{   
   //..do something
}

After synthesis, I got report like

enter image description here

I am confused that how the width of the address port has been automatically sized match to the number of addresses that must be accessed (5-bit for 32 addresses)?

Please help.

4

2 回答 2

0

从 UG871 来看,数组的大小似乎是从 0 到 16 个样本,因此您需要 32 个地址来访问所有值(参见图 69)。我猜数字 N 被限制在小于 32(或正好是 16)的某个地方。这意味着 Vivado 知道这一限制,并且只生成所需数量的地址位。大多数综合工具会检查大小限制并优化不必要的代码。

于 2015-02-12T10:05:59.897 回答
0

当您合成一个函数时,您还创建了一些寄存器来存储变量。这意味着您输入的地址是您同时写入 d_o 或 d_in 的数据之一。

在您的情况下,N=32,您有32 个不同的变量(在输入和输出中)。要处理 32 个不同的变量,您需要 32 个不同的位组合(指向一个特定的,没有歧义)。使用 5 位,您有 2^5=32 个不同的地址组合:寻址所有数据的最小位数。例如,如果你有 32在此处输入图像描述

地址位数是数据大小的INDIPENDENT(即可以是int、float、char、short、double、任意精度等)

于 2016-07-12T10:56:01.643 回答