CodiodeCodiode
Home
Problem Solving
Skill Tracks
My Assignments
Contests
Leaderboard
Community
Settings
Codiode/Problems/Sequential Logic

FIFO Full and Empty Flag Generation

HardLogic CircuitBuild

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

fifomemorydatapathpointers

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.

Sign in to solveSee what Pro unlocks

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.

Related problems

  • 3-bit Ripple Counter from Toggle Flip-FlopsEasy
  • D Latch from a 2:1 MUXEasy
  • 2-bit Ring CounterEasy
  • T Flip-Flop from a D Flip-FlopEasy
  • Handshake Deadlock Due to Early ResetHard
  • Reconvergence of Individually Synchronized BitsHard
  • Debug: Asynchronous Clear GlitchHard
  • Clock Gate Enable Crossing DomainsHard

Browse all problems · Learning tracks