FIFO Full and Empty Flag Generation
Asynchronous and synchronous FIFOs rely on pointer comparisons to safely route data between domains or pipeline stages. The most critical failure point in any queue is misinterpreting the pointer match condition, leading to overwritten valid data or duplicated reads.
The circuit receives a 4-bit write pointer wr_ptr and a 4-bit read pointer rd_ptr. The lower 3 bits represent the actual memory address, while the most significant bit acts as a phase indicator. Generate the full and empty status flags based on these pointers.
The empty flag asserts when the read pointer catches up to the write pointer. Both the address bits and the phase bit must match exactly.
The full flag asserts when the write pointer wraps around and catches the read pointer from behind. The address bits must match, but the phase bits must be opposite.
Constraints
- Implement strictly combinational logic for the flag generation.
- Do not use sequential elements.
- Drive the outputs continuously based on the current pointer states.
Topics
Solve this problem
Place the gates, wire them up and watch the signals settle. Every submission runs on the same simulation engine that grades it.
This problem is part of Codiode Pro. The statement above is free to read.
The circuit builder and code editor need a desktop screen. On a phone, read the problem here and open it on a laptop to solve.