デザインのメモリ使用率の詳細がわかっている場合、XPE のスプレッドシートでブロック RAM の使用モードを指定できます。Mode 列は、異なるプリミティブやブロック RAM モードを選択できるドロップダウン リストになっています。リストされる内容は、ターゲット ファミリによって異なります。
- BRAM
- シンプルなデュアル ポート ブロック RAM、または完全なデュアル ポート ブロック RAM。
- FIFO
- 専用のビルトイン FIFO。
- CASC (ペア) (7 シリーズ のみ)
- カスケード接続されたブロック RAM ブロック (2 つの RAM ブロックで構築)。
- ECC
- ブロック RAM を ECC モードでコンフィギュレーションする場合に使用。
完全なデュアル ポート (TDP) モードの場合、次のようなデータ書き込みモード オプションがあります。
- WRITE_FIRST
- ロケーションにデータを書き込み、その新しく書き込んだデータを読み出します。
- READ_FIRST
- 古いデータが最初に読み出されて、次に新しいデータが書き込まれます。このモードの場合、古いデータの読み出しと新しいデータへの置き換えが各ポートの同一クロック サイクルで行われるため、1 つのクロック サイクルで 4 つの動作を実行できます (電力とリソースを節約)。ただし、READ_FIRST モードで電力効率が向上するのは、新しいデータの書き込みと同時にメモリ内のデータが使用され、データを取得するために別々の読み出し操作と書き込み操作を必要としない場合のみであることに注意してください。それ以外の場合、TDP モードでは READ_FIRST モードの電力効率は一般的に NO_CHANGE モードよりも低くなります。READ_FIRST 機能が不要な場合は、ブロック RAM を WRITE_FIRST または NO_CHANGE に設定した方が消費電力を削減できます。
- NO_CHANGE
- ブロック RAM に書き込みが実行されても、出力は変化しません。
シンプルなデュアル ポート (SDP) モードの場合、次のようなデータ書き込みモード オプションがあります。
- WRITE_FIRST
- ロケーションにデータを書き込み、その新しく書き込んだデータを読み出します。
- READ_FIRST
- 古いデータが最初に読み出されて、次に新しいデータが書き込まれます。このモードの場合、古いデータの読み出しと新しいデータへの置き換えが各ポートの同一クロック サイクルで行われるため、1 つのクロック サイクルで 2 つの動作を実行できます (電力とリソースを節約)。ただし、READ_FIRST モードで電力効率が向上するのは、新しいデータの書き込みと同時にメモリ内のデータが使用され、データを取得するために別々の読み出し操作と書き込み操作を必要としない場合のみであることに注意してください。それ以外の場合、SDP モードでは READ_FIRST モードの電力効率は一般的に WRITE_FIRST モードよりも低くなります。READ_FIRST 機能が不要な場合は、ブロック RAM を WRITE_FIRST に設定した方が消費電力を削減できます。
- NO_CHANGE
- SDP モードでは WRITE_FIRST モードの動作と同じになるため使用できません。