|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Counter |
|
|
|
|
|
|
|
Consider what it means to
count in binary: |
|
|
|
x2 |
x1 |
x0 |
value |
|
|
|
|
0 |
0 |
0 |
0 |
|
|
|
|
0 |
0 |
1 |
1 |
|
|
|
|
|
0 |
1 |
0 |
2 |
|
|
|
|
|
0 |
1 |
1 |
3 |
|
|
|
|
|
1 |
0 |
0 |
4 |
|
|
|
|
1 |
0 |
1 |
5 |
|
|
|
|
1 |
1 |
0 |
6 |
|
|
|
|
1 |
1 |
1 |
7 |
|
|
|
|
The sequence of x0
values looks like a clock with period 1: 0 1 0 1 0 1
0 1 |
|
|
|
The sequence of x1
values looks like a clock with period 2: 0 0 1 1 0 0
1 1 |
|
|
|
The sequence of x2
values looks like a clock with period 4: 0 0 0 0 1 1
1 1 |
|
|
|
However, notice when x1
changes relative to x0: |
|
|
|
|
x1 goes from 0 to 1 (for example, value 1 to 2) when x0
goes from 1 to 0 |
|
|
|
x1 goes from 1 to 0 (for example, value 3 to 4) when x0
goes from 1 to 0 |
|
|
|
This means that we need
to toggle x1 when x0 is on a negative edge, |
|
|
|
but we want to use
positive-edge flip-flops. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|