インテルのみ表示可能 — GUID: cus1508935720693
Ixiasoft
5.2. 例 : バンク・メモリー・アーキテクチャーのオーバーライド
メモリー属性をさまざまな組み合わせでコードに使用すると、メモリー・アーキテクチャーのオーバーライドができます。 インテル®HLSコンパイラー プロ・エディションでは、コンポーネントのメモリー・アーキテクチャーを推測します。
次のコード例で示しているのは、次のメモリー属性を使用してバンクメモリーをオーバーライドし、FPGA上のメモリーブロックを節約する方法です。
- hls_bankwidth(N)
- hls_numbanks(N)
- hls_singlepump
- hls_doublepump
元のコードでは、16ビット幅のシングル・ポンプ・オンチップ・メモリー・ブロックのバンクを2つ作成します。
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; }
バンクメモリーの節約のために、ダブルパンプ32ビット幅オンチップ・メモリー・ブロックのバンクを1つ実装します。このためには、次の属性の追加を data[1024] の宣言前に行います。この属性によって、半分使用したメモリーバンク2つを折りたたんで、完全に使用したメモリーバンク (ダブルパンプ済み) 1つにします。これにより、半分使用したメモリーバンク2つと同じ速さでのアクセスが可能になります。
hls_bankwidth(2) hls_numbanks(1)hls_doublepump unsigned short data[1024];
あるいは、ダブルパンプされたメモリーのダブルクロック要件を回避するために、シングルパンプ・オンチップ・メモリー・ブロックのバンクを1つ実装します。このためには、次の属性の追加を data[1024] の宣言前に行います。ただし、この例では、この属性によってストール可能なアービトレーションがコンポーネント・メモリーに追加され、コンポーネントのパフォーマンスが低下します。
hls_bankwidth(2) hls_numbanks(1)hls_singlepump unsigned short data[1024];