void foo (...) {
int my_array[10][6][4];
...
}
上述中:
my_array表示0维;
my_array[10]表示1维,有10个bank;
my_array[10][6]表示2维,有6个bank;
my_array[10][6][4]表示3维,有4个bank;
一、关于一维数组使用array_reshape & array_map & array_partition
二、关于多维数组使用array_reshape & array_map & array_partition
三、使用array_partition实现乒乓buffer
static ap_uint<I_DW*TAP> line_buff[2][COLS/TAP];
// 1. 将两个 Bank 完全分开,成为独立的 RAM
#pragma HLS ARRAY_PARTITION variable=line_buff dim=1 complete
// 2. 对每个 Bank 在列方向进行分区,以匹配并行访问需要
// 例如:若要每个周期同时读/写 2 个 ap_uint<I_DW*TAP> 字(即 2*TAP 像素),
// 可将 dim=2 按 cycle factor=N 分区,N 为并行字数量。
#pragma HLS ARRAY_PARTITION variable=line_buff dim=2 cyclic factor=2