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

Early Read from Synchronous RAM

MediumLogic CircuitDebug

A FIFO controller interfaces with a synchronous RAM block to buffer data transfers. It asserts rd_en and provides rd_addr to fetch data, passing the RAM output ram_rdata to the bus as bus_wdata.

Expected behavior:

When rd_en is asserted on clock cycle N, the synchronous RAM returns data on cycle N+1. The controller must assert bus_wvalid and drive bus_wdata on cycle N+1 to match the RAM read latency.

Simulation shows bus_wdata presenting the previous cycle's data when bus_wvalid is asserted. The valid signal is being driven high on cycle N instead of cycle N+1. Inspect the circuit and correct the fault.

Constraints

  • Only modify the controller logic.
  • Do not alter the synchronous RAM macro.
  • Do not add extra wait states that reduce sequential read throughput.

Topics

fifodebuglatencymemory-interface

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