We're now in a position to define our what it means to be a digital processing element.
We say a device is a "combinational device" if it meets the following four criteria:
First, it should have digital inputs, by which we mean the device uses our signaling convention,
interpreting input voltages below V_L as the digital value 0, and voltages above V_H as
the digital value 1.
Second, the device's outputs should also be digital, producing outputs of 0 by generating
voltages less than or equal to V_L and outputs of 1 by generating voltages greater than or
equal to V_H.
With these two criteria, we should be able to hook the output of one combinational device
to the input of another and expect the signals passing between them to be interpreted correctly
as 0's and 1's.
Next, a combinational device is required to have a functional specification that details
the value of each output for every possible combination of digital values on the inputs.
In the example, the device has three digital inputs, and since each input can take on one
of two digital values, there are 2*2*2 or eight possible input configurations.
So the functional specification simply has to tell us the value of the output Y when
the inputs are 000, and the output when the inputs are 001, and so on, for all 8 input
patterns.
A simple table with eight rows would do the trick.
Finally, a combinational device has a timing specification that tells us how long it takes
for the output of the device to reflect changes in its input values.
At a minimum, there must a specification of the propagation delay, called t_PD, that is
an upper bound on the time from when the inputs reach stable and valid digital values, to
when the output is guaranteed to have a stable and valid output value.
Collectively, we call these four criteria the "static discipline," which must be satisfied
by all combinational devices.
In order to build larger combinational systems from combinational components, we'll follow
the composition rules set forth below.
First, each component of the system must itself be a combinational device.
Second, each input of each component must be connected a system input, or to exactly
one output of another device, or to a constant voltage representing the value 0 or the value
1.
Finally, the interconnected components cannot contain any directed cycles, i.e., paths through
the system from its inputs to its outputs will only visit a particular component at
most once.
Our claim is that systems built using these composition rules will themselves be combinational
devices.
In other words, we can build big combinational devices out of combinational components.
Unlike our flaky analog system from the start of the chapter, the system can be of any size
and still be expected to obey the static discipline.
Why is this true?
To see why the claim is true, consider the following system built from the combinational
devices A, B and C. Let's see if we can show that the overall
system, as indicated by the containing blue box, will itself be combinational.
We'll do this by showing that the overall system does, in fact, obey the static discipline.
First, does the overall system have digital inputs?
Yes!
The system's inputs are inputs to some of the component devices.
Since the components are combinational, and hence have digital inputs, the overall system
has digital inputs.
In this case, the system is inheriting its properties from the properties of its components.
Second, does the overall system have digital outputs?
Yes, by the same reasoning.
All the system's outputs are connected to one of the components and since the components
are combinational, the outputs are digital.
Third, can we derive a functional specification for the overall system, i.e., can we specify
the expected output values for each combination of digital input values?
Yes, we can by incrementally propagating information about the current input values through the
component modules.
In the example shown, since A is combinational, we can determine the value on its output given
the value on its inputs by using A's functional specification.
Now we know the values on all of B's inputs and can use its functional specification to
determine its output value.
Finally, since we've now determined the values on all of C's inputs, we can compute its output
value using C's functional specification.
In general, since there are no cycles in the circuit, we can determine the value of every
internal signal by evaluating the behavior of the combinational components in an order
that's determined by the circuit topology.
Finally, can we derive the system's propagation delay, t_PD, using the t_PDs of the components?
Again, since there are no cycles, we can enumerate the finite-length paths from system inputs
to system outputs.
Then, we can compute the t_PD along a particular path by summing the t_PDs of the components
along the path.
The t_PD of the overall system will be the maximum of the path t_PDs considering all
the possible paths from inputs to outputs, i.e, the t_PD of the longest such path.
So the overall system does in fact obey the static discipline and so it is indeed a combinational
device. Pretty neat!
We can use our composition rules to build combinational devices of arbitrary
complexity.