AR# 13126

|

CORE Generator - Dual Port Block Memory コアを生成すると、ブロック RAM が予定より多く必要になる

説明

キーワード : CORE, CORE Generator, COREGen, BRAM, RAMB16, asymetric, Virtex-II, Spartan-3, Virtex-4, 非対称

CORE Generator を使用して Dual-Port Block Memory コアを生成すると、予定より多くのブロック RAM が必要となります。 これはなぜですか。

例 :
次の設定で Dual-Port Block Memory コアを生成します。

Port A:
Width: 18
Depth: 2048
Configuration: Write Only

Port B:
Width: 36
Depth: 1024
Configuration: Read Only
Enable Pin

メモ : Port A と Port B は非対称であるため、ポート幅は異なります。

各 Virtex-II ブロック RAM がデュアル ポート モードの場合のコンフィギュレーション例の詳細は、データシート、『Virtex-II プラットフォーム FPGA : 概要』の表 15 - デュアル ポート モード コンフィギュレーションを参照してください (日本語版では 31 ページ)。
http://www.xilinx.co.jp/xlnx/xweb/xil_publications_index.jsp
FPGA デバイス ファミリ -> Virtex-II -> 「Virtex-II 完全なデータシート (全 4 モジュール)」 を参照してください。

この表によると、必要なブロック RAM は次の 2 つのみです。

- 1つ目のブロック RAM :
Port A : 2048 x 9
Port B : 1024 x 18

- 2 つ目のブロック RAM :
Port A : 2048 x 9
Port B : 1024 x 18

ところが、CORE Generator では次の 3 つが必要とされています。

- 1 つ目のブロック RAM = RAMB16_S9_S18 :
Port A : 2048 x 8
Port B : 1024 x 16

- 2 つ目のブロック RAM = RAMB16_S9_S18 :
Port A : 2048 x 8
Port B : 1024 x 16

- 3 つ目のブロック RAM = RAMB16_S2_S4 :
Port A : 8192 x 2 (2048 x 2 のみ使用)
Port B : 4096 x 4 (1024 x 4 のみ使用)

ソリューション

これは、対称および非対称のコアをインプリメントするのに使用されるアルゴリズムが異なるためです。 メモリが対称の場合、アルゴリズムはブロック メモリのパリティ ビットを使用します。 メモリが非対称の場合、アルゴリズムはブロック メモリのパリティ ビットを使用しません。 これは、パリティ ビットを使用すると、非対称ポートのジェネリック アリゴリズムのインプリメンテーションが複雑になってしまうためです。

このため、非対称ポートが使用されると、アリゴリズムはそのプリミティブに対してパリティ ビットを使用しません。 この結果、RAMB16_S9_S18 はポート A が 2048 x 8 でポート B が 1024 x 16 のプリミティブになり、 3 つ目のブロック RAM はこのようなメモリを作成する場合に必要となります。

Dual-Port Block Memory コアのアルゴリズムを変更する予定はありませんが、新しい Block Memory Generator コアの改善に努めています。 新しいコアには、既に改善されたアルゴリズムが使用されます。

選択可能なメモリのアルゴリズム
Block Memory Generator コアでは、最小エリアのアルゴリズムか、または選択可能なプリミティブのアルゴリズムかのいずれかに従って、ブロック RAM プリミティブが配置されます。 最小エリアのアルゴリズムでは、ブロック RAM の使用を最小限にするよう最適化され、パリティ ビットが使用できる場合は、コアでパリティ ビットが使用されます。
AR# 13126
日付 12/15/2012
ステータス アクティブ
種類 一般
People Also Viewed