| 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. | |||||||||||||