数组可以通过resource这个directive精确指定当前使用的memory。比如是分布式RAM还是Block RAM,采用单端口或者双端口。提高数据的吞吐率。
#include"ap_int.h"
#define W 4
#define N 10
typedef ap_int<W> di_t;
typedef ap_int<W> do_t;
void array(di_t a[N],do_t sum[N+2]);
#include"array_mem.h"
void array(di_t a[N],do_t sum[N-2])
{
int i;
loop:
for(i=2;i<N;i++)
{
sum[i-2]=a[i]+a[i-1]+a[i-2];
}
}
数组大小为6
分割方式:
1.Block/Factor=3
0 |
1 |
2 |
3 |
4 |
5 |
2.cyclic/Factor=3
0 |
3 |
1 |
4 |
2 |
5 |
3.register:完全分割
0 |
1 |
2 |
3 |
4 |
5 |
对于多维数组,展开方式如下: