タイミング解析とCDC
5ビットのグレイコードのポインタを使う深さ16語の非同期FIFOで、書き込み側で満杯(full)を判定する条件として正しいものはどれか。
- A書き込みポインタと、同期化した読み出しポインタの上位2ビットがそれぞれ逆で、下位3ビットが一致している
- B書き込みポインタと、同期化した読み出しポインタの5ビットすべてが一致している
- C書き込みポインタと、同期化した読み出しポインタの最上位ビットだけが逆で、下位4ビットがすべて一致している
答えと解説を見る
正解:A. 書き込みポインタと、同期化した読み出しポインタの上位2ビットがそれぞれ逆で、下位3ビットが一致している
バイナリでは、満杯は書き込みポインタが読み出しポインタのちょうど16先にある状態で、最上位ビットだけが違います。これをグレイコードに直すと、最上位ビットはそのまま反転し、2番目のビットは最上位ビットとのXORで作られるので一緒に反転し、下位3ビットは同じになります。例えば読み出しが 00000 なら、満杯のときの書き込みは 11000 です。最上位ビットだけが逆というのはバイナリの場合の条件で、5ビットすべての一致は空(empty)の条件です。