Versal ACAP のブロック RAM プリミティブを次に示します。
プリミティブ | サポートされているアスペクト比 | サポートされているモード |
---|---|---|
RAMB36E5 |
1Kx36 2Kx18 4Kx9 |
シンプル デュアル ポート (SDP) モードで動作している場合は x72 モード |
RAMB18E5 |
1Kx18 2Kx9 |
SDP モードで動作している場合は x36 モード |
SDP モードでは、一方のアドレスが RAM を読み出し、もう一方のアドレスが RAM に書き込みます。読み出しと書き込みには異なるクロックを使用できますが、アドレス ラインは別々にする必要があります。次の図に、例を示します。
リセット
ブロック RAM のリセットの種類を次に示します。
- ブロック RAM 出力の同期リセット (RESETRAMA または RESETRAMB ピンを使用)
- ブロック RAM 出力の非同期リセット (ARST_A または ARST_B ピンを使用)注記: ARST_A または ARST_B ピンが使用されている場合、RESETRAMA、RESETRAMB、RSTREGA、および RSTREGB ピンは無視されます。
- ブロック RAM のオプションの出力レジスタを制御する同期リセット (RSTREGA または RSTREGB ピンを使用)
非同期リセットを使用する場合は、次のようになります。
- RAM とオプションの出力レジスタの両方で、同じ非同期リセットを使用する必要がある。注記: オプションの出力レジスタが同じリセットを使用しない場合、ブロック RAM は推論されません。
- 出力は有効で、SRVAL プロパティは無視される。
- 非同期リセットでは、0 値にのみリセット可能。
書き込みモード
Versal ACAP のブロック RAM は、 UltraScale™ デバイスと同じ書き込みモードをサポートし、同じ RTL コーディング スタイルを使用します。
- WRITE_FIRST は、新しく書き込まれたデータを出力バスに出力します。
- READ_FIRST は、前に書き込まれたデータを出力バスに出力します。
- NO_CHANGE は、出力バスの前の値を保持します。
バイト ライト イネーブル
バイト ライト イネーブルの制御ポートは、用途によって WEA ピンと WEB ピンのいずれかになります。
- RAMB36E5
- 非 SDP モードの場合、WEA および WEB [3:0] ピンは、サイズ 8 または 9 の 4 バイトを制御します。
- SDP モードの場合、WEA および WEB [7:0] ピンは、サイズ 8 または 9 の 8 バイトを制御します。
- RAMB18E5
- 非 SDP モードの場合、WEA および WEB [1:0] ピンは、サイズ 8 または 9 の 2 バイトを制御します。
- SDP モードの場合、WEA および WEB [3:0] ピンは 8 または 9 の 4 バイトを制御します。
現在、Vivado 合成では、サイズ 8 または 9 が使用される場合に、バイト ライト RAM のみを推論します。また、Vivado 合成では、イネーブルでワンホット ステート エンコーディングが使用される場合、バイト ライト イネーブル RAM のみを推論します。たとえば、データ幅が 36 の真のデュアル ポートとして構成されているバイト ライト イネーブル RAM では、4 つの異なるバイトがありますが、一度に書き込むことができるのは 1 バイトのみです。ブロック RAM を推論するには、RTL がこれらの制限に従うことを確認してください。
非対称 RAM
Versal ACAP の非対称ブロック RAM には、UltraScale デバイスの非対称ブロック RAM に使用するのと同じコーディング スタイルと制約を使用します。非対称ブロック RAM のセットアップについては、 『Vivado Design Suite ユーザー ガイド: 合成』 (UG901) を参照してください。
XPM の使用
ブロック RAM は、XPM を使用して推論することもできます。このアプローチを使用する利点は、どのタイプの RAM に対しても XPM のコーディング スタイルが常に正しいものとなるということです。XPM の詳細は、 『Vivado Design Suite ユーザー ガイド: システム レベル デザイン入力』 (UG895) を参照してください。