仅对英特尔可见 — GUID: cus1508935720693
Ixiasoft
7.2. 实例:覆盖Banked存储器架构
在代码中以各种组合方式使用存储器属性,可允许覆盖 Intel® HLS Compiler Pro Edition针对组件推断的存储器架构。
以下代码实例演示如何使用存储器架构覆盖banked存储器,以节省FPGA上的存储器block:
- hls_bankwidth(N)
- hls_numbanks(N)
- hls_singlepump
- hls_doublepump
原始代码创建的两个bank的single-pumped片上存储器块为16位宽:
component unsigned short mem_banked(unsigned short raddr, unsigned short waddr, unsigned short wdata){ unsigned short data[1024]; data[2*waddr] = wdata; data[2*waddr + 9] = wdata +1; unsigned short rdata = data[2*raddr] + data[2*raddr + 9]; return rdata; }
为节省banked存储器,可通过先添加以下属性然后声明data[1024]来实现一个bank的double-pumped(双泵)32-bit宽片上存储器块。这些属性将两个已使用一半的存储bank折叠成一个double-pumped的完全使用的存储bank,以便可以像访问两个已使用一半的存储bank一样迅速。
hls_bankwidth(2) hls_numbanks(1)hls_doublepump unsigned short data[1024];
或者,可在声明data[1024]前先添加以下属性来实现一个bank的single-pumped片上存储块从而避免double-pumped存储器的双时钟要求。但是,在该实例中,这些属性会将可停机仲裁添加到组件存储器中,这样会损害组件属性。
hls_bankwidth(2) hls_numbanks(1)hls_singlepump unsigned short data[1024];