Skip to the selected question
ASIC.FYI

ASIC Question Bank

1,000+ hardware interview questions
DescriptionQ372
Page ↗
Q372DesignASIC interview problem

Debounce a noisy active-low button

TechniquesDebouncerSynchronizerCounterOne-shot pulse
DifficultyMedium
TopicFSMs
LanguageSystemVerilog
Requirements4 checkpoints
01

Problem

Design a robust active-low push-button debouncer. Emit exactly one clock-wide btn_pressed_tick per physical press, tolerate fast bounce and slow release jitter, and re-arm only after a stable release.

Example input and output

Use this case to check your interpretation
Input
STABILITY_CYCLES=3; synchronized active-low samples=[0,0,1,0,0,0,0,1,1,1]
Output
one btn_pressed_tick on the third consecutive low; rearmed only on the third consecutive high
Explanation

Early bounce resets the press counter, the extra low cannot retrigger, and stable release completes re-arming.

02

Requirements (4)

  • Synchronize the asynchronous button before using it in the FSM.
  • Require STABILITY_CYCLES consecutive samples for both press and release.
  • Pulse once after a stable press and never retrigger until a stable release completes.
  • Support STABILITY_CYCLES = 1 without a zero-width counter.