アドレス競合

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

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

アドレス競合とは、ブロック RAM の両方のポートが同じクロック サイクルで 1 つのアドレスにアクセスした場合をいいます。基本的なクロック タイプには、共通クロックと独立クロックの 2 種類があります。共通 (同期) クロックは、共通のクロック バッファー ドライバーで駆動します。CLKA と CLKB をそれ以外の接続とした場合は、独立 (非同期) クロックとなります。CLOCK_DOMAINS 属性も適切に設定する必要があります。有効な値およびデフォルト値は、表 1 を参照してください。アドレス競合が発生する可能性のない場合 (SDP 構成)、消費電力を削減するために書き込みモードを NO_CHANGE に設定することを推奨します。READ_FIRST モードは NO_CHANGE モードよりも消費電力が増えるため、アドレス競合を軽減する場合など、機能上の必要がある場合のみ使用してください。

  • 両方のポートが読み出しを実行した場合、動作は正しく完了します。
  • 両方のポートが異なるデータを書き込んだ場合、このメモリ アドレスに書き込まれるデータは確定できません。
  • 片方のポートが書き込みを実行し、もう一方のポートが読み出しを実行した場合、書き込みは常に正しく完了しますが、メモリの読み出し値は条件によって異なります。次の表を参照してください。
表 1. 共通クロック
クロック タイプ 書き込みモード ポート A 書き込みモード ポート B ライト イネーブル ポート A (データ) ライト イネーブル ポート B (データ) ポート A からの出力データ ポート B からの出力データ 最終的なメモリの値
共通 RF/WF/NC RF/WF/NC 0 0 古いメモリ データ 古いメモリ データ 変更なし
共通 RF RF/WF/NC 1 (DIA) 0 古いメモリ データ 古いメモリ データ DIA
共通 WF RF/WF/NC 1 (DIA) 0 DIA X DIA
共通 NC RF/WF/NC 1 (DIA) 0 変更なし X DIA
共通 RF/WF/NC RF 0 1 (DIB) 古いメモリ データ 古いメモリ データ DIB
共通 RF/WF/NC WF 0 1 (DIB) X DIB DIB
共通 RF/WF/NC NC 0 1 (DIB) X 変更なし DIB
共通 RF/WF/NC RF/WF/NC 1 1 X X X
  1. 共通クロックのアドレス競合とは、同じクロック サイクルでポート アドレスが同じ場合をいいます。
表 2. 独立クロック
クロック タイプ 書き込みモード ポート A 書き込みモード ポート B ライト イネーブル ポート A (データ) ライト イネーブル ポート B (データ) ポート A からの出力データ ポート B からの出力データ 最終的なメモリの値
独立 RF/WF/NC RF/WF/NC 0 0 古いメモリ データ 古いメモリ データ 変更なし
独立 RF RF/WF/NC 1 (DIA) 0 古いメモリ データ X DIA
独立 WF RF/WF/NC 1 (DIA) 0 DIA X DIA
独立 NC RF/WF/NC 1 (DIA) 0 変更なし X DIA
独立 RF/WF/NC RF 0 1 (DIB) X 古いメモリ データ DIB
独立 RF/WF/NC WF 0 1 (DIB) X DIB DIB
独立 RF/WF/NC NC 0 1 (DIB) X 変更なし DIB
独立 RF/WF/NC RF/WF/NC 1 1 X X X
  1. 独立クロックのアクセス競合は、ポート アドレスが同じで、2 つのポートのクロック エッジが同じクロック サイクル内にある場合に発生する可能性があります。SIM_COLLISION_CHECK 属性を ALL (デフォルト値) に設定すると、シミュレーション中にアドレス競合が発生した場合、UNISIM でエラーを報告できます。

表 1 および表 2 について説明します。

  • ライト イネーブルはアクティブ High です (1 = 書き込み、0 = 読み出し)。
  • RF = READ_FIRST、WF = WRITE_FIRST、NC = NO_CHANGE
  • X = 不定値
  • DIA = ポート A データ入力、DIB = ポート B データ入力