Logic Design - Finite-State Machines in Verilog