Understanding Microelectronics: A Top-Down Approach