fundamentals of digital logic with verilog design