タイミング解析とCDC
深さ16語の非同期FIFOで、書き込みポインタと読み出しポインタをアドレスより1ビット多い5ビットにする理由として正しいものはどれか。
- A16語のアドレスを表すのに、5ビットが必要だから
- Bポインタが一致したとき、同じ周回なら空、1周の差なら満杯と区別できるようにするため
- C余分なビットをパリティとして使い、ポインタの誤りを検出するため
答えと解説を見る
正解:B. ポインタが一致したとき、同じ周回なら空、1周の差なら満杯と区別できるようにするため
16語のアドレスは4ビットで表せますが、4ビットのポインタだけでは、読み出しと書き込みのアドレスが一致したときに、全部読み終えた空の状態なのか、1周分書いて追いついた満杯の状態なのかを区別できません。5ビット目を周回を表すビットとして加えると、バイナリで比べた場合、5ビットすべてが一致すれば空、最上位ビットだけが違えば満杯と判定できます。グレイコードのポインタでは、満杯の判定の比べ方が少し変わります。パリティとして使うわけではありません。