アドレス競合とは、ブロック 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 |
- 共通クロックのアドレス競合とは、同じクロック サイクルでポート アドレスが同じ場合をいいます。
|
表 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 |
- 独立クロックのアクセス競合は、ポート アドレスが同じで、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 データ入力