Overrun Error Detector
Serial communication interfaces drop data if the host processor fails to service the receive buffer in time. The overrun error detector flags this condition to prevent silent data corruption.
The circuit tracks the availability of unread data using a data_valid register and catches missed reads using an overrun_err register. The behavior follows these exact rules:
- When
rx_doneasserts,data_validgoes high. - When
read_ackasserts,data_validgoes low. - If
rx_doneasserts whiledata_validis already high andread_ackis low,overrun_errgoes high. - The
overrun_errflag is sticky: once asserted, it remains high until a reset occurs. - If
rx_doneandread_ackassert on the same clock cycle,data_validremains high and no overrun occurs. rstis a synchronous active-high reset that clears both registers.
Constraints
- Implement synchronous active-high reset logic.
- Use only D flip-flops for state elements.
- Do not use latches.
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.