Digital Systems Design and Practice: Using Verilog HDL and FPGAs