Digital circuits implement core functionality of the architecture. They implement the Instruction Set Architecture (ISA) in hardware, and also implement storage and control functionality throughout the system. Designing digital circuits involves applying multiple levels of abstraction: circuits implementing large functionality are built from smaller circuits that implement partial functionality, which are built from even smaller functionality circuits, and so on down to the basic logic gate building blocks of all digital circuits. Figure 1 illustrates a circuit abstracted from its implementation. The circuit is represented as a black box labeled with its functionality or name and with only its input and outputs shown, hiding the details of its internal implementation.
There are three main categories of circuits building blocks: Arithmetic/Logic, Control, and Storage circuits. A processor integrated circuit, for example, contains all three types of sub-circuits: its register set uses storage circuits; its core functionality for implementing arithmetic and logic functions uses arithmetic and logic circuits; and control circuits are used throughout the processor to drive the execution of instructions and to control loading and storing values in its registers.
In this section we discuss circuits of these three types, showing how to design a basic circuit from logic gates, and then how to build larger circuits from basic circuits and logic gates.