HOW COMPUTERS WORK
A knowledge of binary notation and binary arithmetic is required.
This write up uses the following logic circuits from the 74LS logic family. There are many more but all are made from 3 functions “and” “or” and ‘invert”. There are also many other logic families.
D type latch 74LS74
and lots more
1) The Power supply
Five volts was the traditional voltage chosen to operate the early circuits used in computers This value
is still used in many cases. It is required for the 74LS logic family .
Two voltages levels have been assigned to represent values of one and zero. Zero to one
half volts was assigned a logic value of zero. Or a logic low. 2.0 to 5 volts was assigned to the
value one or a logic high. Voltage levels between one half volt and 2.0 volts are not allowed.
This is shown in figure one.
Once these levels have been defined we will not need to refer to volts or current again. We can
concern ourselves only with the logic states of 1 ( high) or 0 ( low)
There are three basic gates that others are derived from. They are “and” “or” gate, and “invert” gate. These three circuits can be used to build computers of amazing complexity.
The function of the inverter gate is simply to invert the input and present it to the output.
Thus a signal of 1 or logic high on the input will cause a signal level of 0 or logic low on the output. This
is shown on the following truth table. Also the symbol for an “inverter” is shown.
The “and” gate is a transistor circuit with 2 inputs and one output. The signal levels for the “and” gate
and it’s symbol are shown.
The “or” gate also has 2 inputs and one output but the inputs are treated differently as shown here.
The “or” gate symbol is shown also. There is also a variation on the “or” gate called the “exclusive or” this differs from the ordarny “or” in that if A and B are both high the output is low.
In practice it is found useful to combine the “and” and the “invert” functions to create a “Nand” or negative “and”
gate. It is made by inverting the output. It is shown below with it’s truth table.
Likewise the “or” gate is combined with an “invert” function to create “nor” or negative “or” gate. Small circles are
added to the symbols of the “and” and “or” gates to indicate an inverted output. The nor gate is shown below.
There is one more device to look at. it is called a pull up resistor and it is used to keep selected inputs high.
Here is the symbol for a pull up resistor It’s value is 1000 ohms.
One resistor can pull up from 1 to 25 gates. One gate output can drive up to 10 gates with a high
or a low signal
Before we start the latch below has a illegal state. This is that both A and B inputs are low. These inputs are normally high and to change the state of the latch low going short pluses are used. These pulses cannot be applied at the same time to both the A and the B inputs. They must be applied at seperate times. A latch is made from 2 “nand” gates. It is shown below.
The normal state of a latch is with both inputs ( A and B ) high. The output however is not yet specified. We
only know that C and D will be opposite but do not know which will be high. It requires a short negative pulse on
one input to set either state.
Let A go low for an instant and then go high. Lets follow the results. If A goes low then C must go
high by the nand truth table. B was already high so with both C and B high D will go low. The low on
D is present on the 2nd input of the upper gate and this preserves the output of the upper gate so C will stay high.
This means the latch detects the momentary low on A and latches on it. The latch remembers this
state and it continues until we place a short low on B. Then the state of the latch will switch and it will
stay switched until the A input goes low again.
We have just built a one bit memory.
THE D TYPE LATCH
Below is a D type flip flop. It is made from 4 Nand gates and one
inverter gate. The shortcut way of defining a 2 input nand gate is that
the output is low if both inputs are high. Also any low input on a nand gate produces a high on the output.
If the D input is high and a clock pulse is placed on C then when the clock pulse goes high A has two high inputs. This produces a low
on the upper gate of Latch X, Y and Q goes high.
Now if the D input is low and a clock pulse is placed on C both inputs
of B go high. Therefore the output of B goes low. The low output of
B produces a low on he lower gate of latch XY so (Q) goes high
and Q is low. Thus we have a gate where whatever state is placed
on D it is transfered to the Q output.
We still have not addressed the preset and clear pins they can be added by replacing the X,Y latch with a latch made from a 3 input nand gate as shown below.
Below is the symbol and a truth table.
From the truth table we can deduce the following.
PR ( preset) should be high most of the time and may pulse low to set a high on Q
CLR ( clear) should be high most of the time and may pulse low to set a low on Q
PR and CLR should not be low at the same time.
The (Q) pin is always the inverse of the Q pin.
And most importantly either a high or a low signal may be placed on D and this signal will be clocked through
to Q on the rising edge of the clock pulse.
DIVIDE BY 2
Now lets describe a divide by two circuit made with the D type flip flop.
All that is required is a single wire as shown.
The resistor is a pull up and it’s function is to pull both inputs to a high state. If it were omitted both inputs would normally float high anyway but would be susceptible to noise.
For an input to this circuit we apply a 1000 hertz logic square wave to C as shown. Then lets look at each rising
edge. On every rising edge the D input will be transferred to the Q output. This is shown below.
So now we have built a circuit that will divide the frequency of a square wave input pulse in half.
COUNTER MADE FROM D TYPE FLOP FLOPS
If we connect 4 d type flip-flops together as shown and reset them with a clear pulse we will get a counter circuit.
The schematic is:
Now the A, B, C and D outputs will step from a binary count of zero to a count of 15 and then back to zero. A is the
LSB ( least significant bit) B is next, C is next, and D is the MSB ( most significant bit)
The first three input pulses are numbered. before thsy occur A B C and D are all zero and the output is zero as shown
at the bottom of the drawing. After the first pluse A is high and all others are low so the count is 1 After the second
pluse B is high but A C D are all low B is 2nd bit so the count is 2 ( 2 + 0 + 0 +0 ) C is the 4 bit and D is the 8 bit .
So for example
1 = 1000
2 = 0100
4 = 0010
8 = 0001
15 = 1111 = 1 + 2 + 4+ 8
Although we have only shown counts from 0 to 9 the 4 bit counter counts from 0 to 15. or 2 ^4 -1 If we had used
8 flip flops we could count to 255. If we had used 16 we could count to 64,000 or so and 32 would bring us to
about 4 billion.
The counter is one of the circuits used in a computer.
D type flip flops may be wired to produce a register. A register is a circuit that stores a 4 (or more) bit number.
It is shown below.
Here is a 4 bit register circuit. 4 bit data word is placed on the 4 input lines and a clock pulse locks it in the register.
A pulse on the clear line can be used to clear the register. As before the size of the register can be expanded to
8, 16, 32 or even 64 bits. An accumliater is a special type of register that keeps track of arithmetic sums during
an adding process.
other types of registers are shift register where data bits may be shifted either left or right There are
also rotate registers where in the case of a right shift the data at the right end is stored back in the
extreme left register.
If the data in a register represents a binary count then a right shift multiples the number by 2 and a left shift divides the number by two.
There is also a device called a adder. This makes it possible to keep a running total of an addition by adding new numbers one at a time. It is used for b oth data and control functions.
Counters, registers, shift registers, adders are trhe main circuits used in a microprocessor. They are connected
to two groups of wires. The first is termed a data bus and the second is a address bus. The Z80 microprocessor
has a 8 wire data bus and a 16 wire address bus. The data and address bus connect the microprocessor to the
memory. Timing signals as well as single bit flags used to insure correct data is obtained.
In practice the design of the microprocessor results in a set of instructions to accomplish specific tasks. All these
tasks involve moving words composed of ones and zeros in and out of both memory and the various registers.
Tasks like add to data in the accumulator, jump to a specific address, clear a register, or many others. The
process of writing these instructions may be done in binary code but it is usually done in assembly language.
These instructions are placed in memory. When the program is run the instructions are carried out one at a time.
One of the more interesting aspects is the Von Neuman architecture that is used. This allows both data and
instructions to be mixed in memory. It is up to the instructions to know how many following addresses are data
and to interpret the code following the data as an instruction.
Many times multiplexers are used. One example of a multiplexer is to pass 16 bits of data on a 8 bit bus. It is done
with 2 cycles where the lower 8 bits are transmitted first followed by the upper 8 bits. The multiplexer is sometimes termed a ‘mux”.
For an example of a microprocessor see the Z80 programming manual. Beware it is not simple.