ブロック RAM のライブラリ プリミティブ

Versal ACAP メモリ リソース アーキテクチャ マニュアル (AM007)

Document ID
AM007
Release Date
2020-11-24
Revision
1.1 日本語

次の表に、ブロック RAM のプリミティブを示します。

表 1. ブロック RAM
プリミティブ 説明

RAMB36E5

RAMB18E5

  • Versal デバイスには、分散 RAM および高速 SelectIO™ メモリ インターフェイスだけでなく、多数の 36Kb ブロック RAM が備わっています。
  • 各 36Kb ブロック RAM には独立して制御される 2 つの 18Kb RAM が含まれ、いずれの形でも使用できます。
  • ブロック RAM はカラムに配置され、ブロック RAM の総数は Versal デバイスのサイズによって異なります。
  • デュアル ポートまたはシングル ポートのエンベデッド RAM モジュール、ROM モジュール、データ幅コンバーターは、ザイリンクス CORE Generator™ のブロック メモリ モジュールを使用して実装できます。

ブロック RAM のライブラリ プリミティブ、RAMB18E5 および RAMB36E5 はすべてのブロック RAM コンフィギュレーションの基本構築ブロックです。その他のブロック RAM のプリミティブおよびマクロは、このプリミティブを基にしています。ブロック RAM の属性によっては、1 つのプリミティブでのみ設定できます (パイプライン レジスタ、カスケードなど)。

9 ビット幅 (8+1)、18 ビット幅 (16+2)、36 ビット幅 (32+4) のコンフィギュレーションでは、入力および出力データ バスは 2 つのバスで表されます。各バイトに関連付けられている 9 番目のビットにはパリティ ビット (エラー訂正ビット) を保存するか、追加のデータ ビットとして使用できます。この 9 番目のビットには、特定の機能はありません。パリティ ビット用に別のバスを使用した方が良いデザインもありますが、たいていの場合は、通常のデータ バスとパリティ バスを一緒にして、9 ビット、18 ビット、または 36 ビット バスを使用しても問題ありません。読み出し/書き込み、および保存はパリティ ビットを含めてすべてのビットで同様に実行されます。

次の図に、36Kb の TDP のブロック RAM プリミティブ (RAMB36) の I/O ポートを示します。次の表に、これらのプリミティブを示します。

注記: この図には ECC 関連のピンは示していません。詳細は、ビルトイン エラー訂正 を参照してください。
図 1. ブロック RAM ポート信号 (RAMB36E5)

表 2. ブロック RAM プリミティブ
プリミティブ 説明
RAMB36E5
  • TDP メモリとして使用した場合、x9、x18、x36 のポート幅をサポートします。
  • SDP メモリとして使用した場合、読み出し/書き込みポート幅は x64 または x72 で、もう一方のポート幅は x9、x18、x36、x72 です。ECC モードでは、64 ビット ECC エンコード/デコードをサポートします。
RAMB18E5
  • TDP メモリとして使用した場合、x9、x18 のポート幅をサポートします。
  • SDP メモリとして使用した場合、読み出し/書き込みポート幅は x32 または x36 で、もう一方のポート幅は x9、x18、x36 です。

次に、上の表で示したプリミティブのポート名と説明を示します。ECC ポートについては、ビルトイン エラー訂正 で説明します。

表 3. RAMB36E5 および RAMB18E5 のポート名と説明
ポート名 説明
DINADIN[31:0] ポート A データ入力。アドレスは ADDRARDADDR で指定します。SDP メモリとして使用する場合のポート名マッピングは、表 5 を参照してください。
DINPADINP[3:0] ポート A データ パリティ入力。アドレスは ADDRARDADDR で指定します。SDP メモリとして使用する場合のポート名マッピングは、表 5 を参照してください。
DINBDIN[31:0] ポート B データ入力。アドレスは ADDRBWRADDR で指定します。SDP メモリとして使用する場合のポート名マッピングは、表 5 を参照してください。
DINPBDINP[3:0] ポート A データ パリティ入力。アドレスは ADDRBWRADDR で指定します。SDP メモリとして使用する場合のポート名マッピングは、表 5 を参照してください。
ADDRARDADDR[11:0] ポート A アドレス入力バス。SDP メモリとして使用する場合は RDADDR バスとなります。
ADDRARDADDR[10:0] (RAMB18E5 のみ) ポート A アドレス入力バス。SDP メモリとして使用する場合は RDADDR バスとなります。
ADDRBWRADDR[11:0] ポート B アドレス入力バス。SDP メモリとして使用する場合は WRADDR バスとなります。
ADDRBWRADDR[10:0] (RAMB18E5 のみ) ポート B アドレス入力バス。SDP メモリとして使用する場合は WRADDR バスとなります。
ARST_A ポート A の出力レジスタの値をすべて 0 にリセットする非同期リセット。
ARST_B ポート B の出力レジスタの値をすべて 0 にリセットする非同期リセット。
WEA[3:0] ポート A バイト ライト イネーブル。SDP メモリとする場合は使用しません。
WEBWE[8:0] ポート B バイト ライト イネーブル。SDP モードでは、バイト ライト イネーブルとなります。
ENARDEN ポート A イネーブル。SDP メモリとして使用する場合は RDEN となります。
ENBWREN ポート B イネーブル。SDP メモリとして使用する場合は WREN となります。
RSTREGARSTREG 同期出力レジスタのセット/リセット。SRVAL_A (DOA_REG = 1) で初期化します。REGCE よりも優先するかどうかは RSTREG_PRIORITY_A で設定します。SDP メモリとして使用する場合は RSTREG となります。
RSTREGB 同期出力レジスタのセット/リセット。SRVAL_B (DOA_REG = 1) で初期化します。REGCE よりも優先するかどうかは、RSTREG_PRIORITY_B で設定します。
RSTRAMARSTRAM 同期出力ラッチのセット/リセット。SRVAL_A (DOA_REG = 0) で初期化します。SDP メモリとして使用する場合は RSTRAM となります。
RSTRAMB 同期出力ラッチのセット/リセット。SRVAL_B (DOB_REG = 0) で初期化します。
CLKARDCLK ポート A クロック入力。SDP メモリとして使用する場合は RDCLK となります。
CLKBWRCLK ポート B クロック入力。SDP メモリとして使用する場合は WRCLK となります。
REGCEAREGCE ポート A 出力レジスタ クロック イネーブル (DOA_REG = 1)。SDP メモリとして使用する場合は REGCE となります。
REGCEB ポート B 出力レジスタ クロック イネーブル (DOB_REG = 1)。
CASDINA[31:0] ポート A カスケード データ入力。下段のブロック RAM のデータ出力から接続されます。RAMB18E5 の場合: CASDINA[15:0] です。
CASDINPA[3:0] ポート A カスケード パリティ データ入力。下段のブロック RAM のパリティ データ出力から接続されます。RAMB18E5 の場合: CASDINPA[1:0] です。
CASDINB[31:0] ポート B カスケード データ入力。下段のブロック RAM のデータ出力から接続されます。RAMB18E5 の場合: CASDINB[15:0] です。
CASDINPB[3:0] ポート B カスケード パリティ データ入力。下段のブロック RAM のパリティ データ出力から接続されます。

RAMB18E5 の場合: CASDINPB[1:0] です。

CASDOUTA[31:0] ポート A カスケード データ出力。上段のブロック RAM の CASDINA[31:0] に接続します。RAMB18E5 の場合: CASDOUTA[15:0] です。
CASDOUTPA[3:0] ポート A カスケード パリティ データ出力。上段のブロック RAM の CASDINPA[3:0] に接続します。RAMB18E5 の場合: CASDOUTPA[1:0] です。
CASDOUTB[31:0] ポート B カスケード データ出力。上段のブロック RAM の CASDINB[31:0] に接続します。RAMB18E5 の場合: CASDOUTB[15:0] です。
CASDOUTPB[3:0] ポート B カスケード パリティ データ出力。上段のブロック RAM の CASDINPB[3:0] に接続します。RAMB18E5 の場合: CASDOUTPB[1:0] です。
CASDOMUXA ポート A のデータ カスケード出力マルチプレクサーを制御する入力を選択します。
CASDOMUXEN_A CASDOMUXA レジスタの制御を有効にします。
CASDOMUXB ポート B のデータ カスケード出力マルチプレクサーを制御する入力を選択します。
CASDOMUXEN_B CASDOMUXB レジスタの制御を有効にします。SDP メモリとする場合は使用しません。
CASOREGIMUXA ポート A の出力レジスタの前のカスケード マルチプレクサーを制御する入力を選択します。
CASOREGIMUXEN_A CASOREGIMUXA レジスタの制御を有効にします。
CASOREGIMUXB ポート B の出力レジスタの前のカスケード マルチプレクサーを制御する入力を選択します。SDP メモリとする場合は使用しません。
CASOREGIMUXEN_B CASOREGIMUXB レジスタの制御を有効にします。SDP メモリとする場合は使用しません。
DOUTADOUT[31:0] ポート A データ出力バス。アドレスは ADDRARDADDR で指定します。SDP メモリとして使用する場合のポート名マッピングは、表 5 を参照してください。RAMB18E5: DOUTADOUT[15:0] です。
DOUTPADOUTP[3:0] ポート A パリティ出力バス。アドレスは ADDRARDADDR で指定します。SDP メモリとして使用する場合のポート名マッピングは、表 5 を参照してください。RAMB18E5: DOUTPADOUTP[1:0] です。
DOUTBDOUT[31:0] ポート B データ出力バス。アドレスは ADDRBWRADDR で指定します。SDP メモリとして使用する場合のポート名マッピングは、表 5 を参照してください。RAMB18E5: DOUTBDOUT[15:0] です。
DOUTPBDOUTP[3:0] ポート B パリティ出力バス。アドレスは ADDRBWRADDR で指定します。SDP メモリとして使用する場合のポート名マッピングは、表 5 を参照してください。RAMB18E5: DOUTPBDOUTP[1:0] です。
SLEEP 動的パワー ゲーティング。