A counter is a
sequential circuit with 0 inputs and n
outputs. Thus, the value after the clock transition depends only on
old values of the outputs. For a counter, the values of the outputs
are interpreted as a sequence of binary digits.
We shall call the outputs o0, o1,
..., on-1. The value of the outputs for the
counter after a clock transition is a binary number which is one
plus the binary number of the outputs before the clock
transition.
We can explain this behavior more formally with a
state table. As an example, let us take a counter with n = 4.
The left side of the state table contains 4 columns,
labeled o0, o1, o2, and
o3. This means that the state table has 16 rows.
Here it is in full:
o3 o2 o1 o0 | o3' o2' o1' o0'
-----------------------------
0 0 0 0 | 0 0 0 1
0 0 0 1 | 0 0 1 0
0 0 1 0 | 0 0 1 1
0 0 1 1 | 0 1 0 0
0 1 0 0 | 0 1 0 1
0 1 0 1 | 0 1 1 0
0 1 1 0 | 0 1 1 1
0 1 1 1 | 1 0 0 0
1 0 0 0 | 1 0 0 1
1 0 0 1 | 1 0 1 0
1 0 1 0 | 1 0 1 1
1 0 1 1 | 1 1 0 0
1 1 0 0 | 1 1 0 1
1 1 0 1 | 1 1 1 0
1 1 1 0 | 1 1 1 1
1 1 1 1 | 0 0 0 0
As you can see, the right hand side of the table is always one
plus the value of the left hand side of the table, except for the
last line, where the value is 0 for all the outputs. We
say that the counter wraps around.
Counters (with some variations) play an important role in
computers. Some of them are visible to the programmer, such as the
program counter (PC). Some of them are hidden to the programmer, and
are used to hold values that are internal to the central processing
unit, but nevertheless important.
Important variations include:
-
The ability to count up or down according to the value of an
additional input
-
The ability to count or not according the the value of an
additional input
-
The ability to clear the contents of the counter if some
additional input is 1
-
The ability to act as a register as well, so that a
predetermined value is loaded when some additional input is
1
-
The ability to count using a different representation of
numbers from the normal (such as Gray-codes, 7-segment codes, etc)
-
The ability to count with different increments that 1
|