Designing Digital Computer Systems with Verilog