首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >16位数组如何需要5位地址(Xilinx Vivado HLS)?

16位数组如何需要5位地址(Xilinx Vivado HLS)?
EN

Stack Overflow用户
提问于 2015-02-11 15:56:15
回答 2查看 606关注 0票数 2

我是Xilinx的新手。下面是教程ug871-vivado-high-level-synthesis-tutorial.pdf(page 77)。

代码是

代码语言:javascript
复制
#define N 32

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

在合成之后,我得到了报告

我感到困惑的是,地址端口的宽度如何自动与必须访问的地址数(32个地址的5位)相匹配?

请帮帮忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-12 10:05:59

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

票数 0
EN

Stack Overflow用户

发布于 2016-07-12 10:56:01

当您合成创建的函数时,也会有一些寄存器来存储变量。这意味着您输入的地址是您正在以d_o或d_in并发写入的数据之一。

在您的例子中,在N=32中,您有32个不同的变量(包括输入和输出)。要插入32个不同的变量,您需要32种不同的位组合(指向一个特定的位,没有歧义)。有了5位,您就有了2^5=32不同的地址组合:,最小位数来处理您所有的数据。例如,如果你有32

位的地址数取决于数据的大小(例如,它们可以是int、float、char、短、双、任意精度等等)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28458713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档