Design of Digital Circuits and Systems