Computer Principles and Design in Verilog HDL