Measures your reaction time in milliseconds. Built on a Basys 3 board for a digital design course.
- Press center button to start
- Watch the decimal points count down (don't press early or you get "Err")
- When the dots turn off, press as fast as you can
- Your time shows on the 7-segment display
Stores your last 3 attempts and calculates min/max/average. The random delay after countdown prevents anticipation cheating.
Written in VHDL. Uses a simple state machine:
- WAITING → COUNTDOWN → RANDOM_DELAY → TIMING → RESULT
The millisecond counter runs off a divided clock. Display multiplexing handled by a separate module since the Basys 3 only has one set of segment pins for all 4 digits.
Most annoying bug: the countdown decimal points were active-low but I wrote the logic as active-high. Spent two hours wondering why everything was inverted.
