We looked at the Binary system, and basic computer logic elements, in previous articles, "It's a binary world - how computers count" and "How computers add - a logical approach".
Now we can combine two parts of these articles to look at a counter. Another common logic element in a computer is a counter or timer. This can b to count items going past a sensor on an assembly line, or possibly a count-down timer. For example, if you have a late model washing machine it will have a simple computer using a count down timer to give 10 minute wash cycle, etc.
There are several types of counter, nearly all of which use a basic element of electronics, the Flip-Flop. And you thought they were rubber shoes English people wear to the shower or the beach. (At this point Australians say "I thought they were called thongs").
OK back on topic. The flip-flop is as old as electronics, and is a classic example of the binary system. It has two possible stable states, A or B, and can be 'toggled' from one state to the other, just like a 'push-on, push-off' switch. It was originally made with two vacuum tubes (or one, for example a double triode).
It normally has two outputs, one being the complement of the other. That is,if one output(A) is a logic 0, the other(B) is a logic 1, and vice-versa. The input, or Toggle(T) is at logic 0 until a pulse from a sensor, for example, comes along. This pulse takes the logic state to 1, then back to 0. The toggle effect, causing the Flip-Flop to flip, is actually the CHANGE from 0 to 1.
In logic terms the flip-flop is made up using AND and OR gates, in logic cicuitry it is just a 'black box' labelled FF. Several FFs may be grouped into yet another black box, a counter, timer, or multivibrator.
We can make up a Truth Table, which we have used before. If you recall, a truth table tells you what the Output will be for all possible Inputs.
TRUTH TABLE for Flip Flop - Toggle (C)hange,- Outputs A and B.
INITIAL STATE
T B A
0 1 0 'A' output is 0
PULSE #1
T B A
C 0 1 'A' output is 1
PULSE #2
T B A
C 1 0 'A' output is 0
Now we string some flip-flops together to make a counter. Say we have a sensor on a beer bottling machine, which has to count 5 bottles before switching the feed, we need to count up to 5, or 101 in Binary. We will need 3 flip-flops, for binary bits 0,1 and 2, corresponding to decimal bit value of 1,2 and 4.
We will take the A output of the 3 flip-flops to a decoder black box, which we can use to detect when we get to 5, then switch the feed. The B output of flip-flop 0 is passed to the toggle input of flip-flop 1 via an AND gate, so the next pulse from the sensor (which goes to all 3 flip-flops) at this AND gate will toggle the flip-flop, depending on the value of the B output, 0 or 1. Similarly the B output of flip-flop 1 goes to the toggle of flip-flop 3 via an AND gate.
Our 3 Flip-Flops now come up with a truth table like this:-
INITIAL STATE
FF2 FF1 FF0
TBA TBA TBA
010 010 010 'A' outputs 000 - 0
PULSE #1
FF2 FF1 FF0
TBA TBA TBA
C10 C10 C01 'A' outputs 001 - 1
[The (C)hange flips FF0 (always). FF1 & FF2 are blocked by the AND gate which needs a 0 input from the previous FF 'B' output AND the pulse change.]
PULSE #2
FF2 FF1 FF0
TBA TBA TBA
C10 C01 C10 'A' outputs 010 - 2
[The (C)hange flips FF0 (always). FF1 flips beacause the 'B' output from FF0 is a 0 when the Pulse arrives. FF2 is blocked as before.]
PULSE #3
FF2 FF1 FF0
TBA TBA TBA
C10 C01 C01 'A' outputs 011 - 3
[FF0 flips, FF1 is blocked again,as is FF2.]
PULSE #4
FF2 FF1 FF0
TBA TBA TBA
C01 C10 C10 'A' outputs 100 - 4
(FF0 flips, FF1 flips, FF2 flips.)
PULSE #5
FF2 FF1 FF0
TBA TBA TBA
C01 C10 C01 'A' outputs 101 - 5 count complete!
[FF0 flips, FF1 and FF2 are blocked.]
This counter can count up to 111, 7 decimal, it then resets to 0. A couple of interesting points to note are:-
1. FF0 flips every pulse. FF1 flips every 2 pulses. FF2 flips every 4 pulses etc. These facts can be used to make up a divider, which can be cascaded. For example the 4 pulse output can go to a second counter which also gives a 4 pulse output, totalling 16. This can be expanded to make up a decadic counter by decoding a count of 1010 (10 decimal) and using this to toggle the next counter, etc. What about 60 and 12 for your digital watch?
2. Look at the 'B' outputs from the counter. In sequence the values are:- 111, 110, 101, 100, 011, 010 (7,6,5,4,3,2 decimal). See the pattern? That's right - a countdown timer! We'll be using this in a later article.
Tony is an experienced computer engineer. He is currently webmaster and contributer to http://www.what-why-wisdom.com. A set of diagrams accompanying these articles may be seen at http://www.what-why-wisdom.com/history-of-the-computer-0.html.