In this chapter we examine how the concepts in Chapter 6 can be used to build some of the logic circuits that make up a CPU, Memory, and other devices. We will not describe an entire unit, only a few small parts. The goal is to provide an introductory overview of the concepts. There are many excellent books that cover the details. For example, see [A.1.8], [A.1.11], or [A.1.12] for circuit design details and [A.1.13], [A.1.14], [A.1.16] for CPU architecture design concepts.
Logic circuits can be classified as either:
The output(s) depend only on the input(s) at any specific time and not on any previous input(s).
The output(s) depend both on previous and current input(s).
An example of the two concepts is a television remote control. You can enter a number and the output (a particular television channel) depends only on the number entered. It does not matter what channels been viewed previously. So the relationship between the input (a number) and the output is combinational.
The remote control also has inputs for stepping either up or down one channel. When using this input method, the channel selected depends on what channel has been previously selected and the sequence of up/down button pushes. The channel up/down buttons illustrate a sequential input/output relationship.
A more formal definition will be given in Section 7.3, but this television example also illustrates the concept of state. My television remote control has a button I can push that will show the current channel setting. If I make a note of the beginning channel setting, and keep track of the sequence of channel up and down button pushes, I will know the ending channel setting. It does not matter how I originally got to the beginning channel setting. The channel setting is the state of the channel selection mechanism because it tells me everything I need to know in order to know which channel will be selected by my inputs from this starting state—a sequence of channel up and down button pushes. And this new channel defines the new state, effectively summarizing all the channel button pushes I have done in the past.