Fundamental Digital Circuit Design