© 2003 by Charles C. Lin. All rights reserved.
Introduction
- Digital logic circuits can be divided into two categories: combinational logic and sequential logic.
Combinational logic devices implement Boolean functions. A Boolean function has k bits of input and m bits of output, where k >= 0 and m >= 1.
Any combinational logic device can be constructed out of AND gates, OR gates, and NOT gates. However, they can also be completely constructed using only NAND gates, or using only NOR gates.
You can describe the behavior of a combinational logic device using a truth table.
Control vs. Data Inputs
- We can often divide the inputs of a combinational logic device into two categories: data inputs and control inputs.
Control inputs let you control what the device does. For example, if you have a blender, there are often several buttons to let you decide how you want to chop the food. Or a washing machine has several choices you can pick depending on the kind of clothes you are going to wash. It lets you select temperature, time, and the amount of agitation.
If you have N choices for the different operations that a combinational logic device can perform, then you need ceil( lg N ) control bits to specify the operation. This result should be familiar, because we discussed it in a previous set of notes.
Some combinational logic devices do not have control inputs. They only have data inputs. However, many of the ones we consider do have them. The combinational logic device doesn't really distinguish between data and control inputs. To the device, it's all just inputs.
However, as humans who use these devices, it's useful to think of these two categories.
Changing the Inputs
- If you change the values of the inputs to a combinational logic device, there is some short, but finite delay before the output changes. The output can't change instantaneously.
Notice that this behavior is different from a register. A register is a sequential logic device, which can only change its value at a clock edge. A combinational logic device can change its outputs as soon as the inputs change (plus a little delay from input to output).
Again, it's useful to think that values are continuously being fed to a combinational logic device and the outputs change as the inputs change.
Here's another useful analogy. Suppose you have a flashlight that can shine red light or green light. There's a switch on the flashlight that allows you to switch between red and green.
Suppose you have a light sensor. If the light sensor detects green light, it plays the musical note of "A". If it detects red light, it plays the musical note of "C". If it detects no light, then it doesn't play anything.
So, you shine green light onto the sensor, and it begins to play the note "A". Then, you switch it to red light, and there is a small delay, before it starts to play the note "C".
Then, you switch it back to green light, and, after a tiny delay, it goes back to playing "A".
Finally, you turn the flashlight off, and after a small delay, it stops playing. Notice that as long as the flashlight was shining on the sensor, it played something, but when it was turned off, it stopped playing. The flashlight had to continuously emit red or green light for the sensor device to play a note.
This is one way to think about how circuits work. There is a continuous flow of current into the device. The current's voltage is either interpreted as 0 or 1, and can be changed. If the input changes, then after a small delay, the output current is updated to the new value.
Diagram of a Generic Combinational Logic Device
As you can see, there are k bits of data input, n bits of control inputs, and m bits of output.
When the inputs change, then there is a small delay before the output changes. We see this in the next section.
An Example with XOR
- Suppose we have a XOR2 which is a 2-input XOR gate.
Initially, we have two inputs, x and y, whose value are both 0. The output z is 0, as well. Then we change x to 1, and the output z, after some delay becomes 1. Then, we change y to 1, and after some delay, the output z becomes 0.
Here's a timing diagram to illustrate the behavior.
As you can see, at time (1), x changes to 1. However, it takes until time (2) for z to change to 1. Then, at time (3), y changes to 1, but it takes until time (4) for z to change back to 0.
The amount of time for z to change is called the circuit delay, and we write it as "delta" T. This time is usually very short. Nevertheless, it's not zero.
Because it's not zero, it affects the way circuits are designed. The smaller the value of delta T, the quicker we can make the circuit.
Summary
- Unlike a sequential logic device (such as a register), a combinational logic device does not use a clock. Once the input value changes, the output values of a combinational logic device changes, after a small circuit delay. Of course, sometimes the output value doesn't change at all even if the input changes.
For example, suppose you have an AND gate. If both inputs are 0, then one input is changed to 1, then the output is still 0. However. in those cases where the output changes, there is a delay.
A combinational logic device can be specified by using a truth table, and is an implementation of a Boolean function. Any Boolean function can be implemented using a combination of AND, OR, and NOT gates (or only using NAND gates, or only using NOR gates).
posted on 2007-01-23 18:15
Charles 阅读(403)
评论(0) 编辑 收藏 引用 所属分类:
拿来主义