A Johnson counter is a ring counter with a twist: the serial input is fed the complement of the last output. For a shift-right register, SI = .
Starting from 0000, 1s fill in from the left, then 0s do:
0000 → 1000 → 1100 → 1110 → 1111 → 0111 → 0011 → 0001 → 0000 …
Key facts:
- An n-bit Johnson counter has 2n states: twice as many as a ring counter with the same flip-flops.
- Each step changes exactly one bit, like a Gray code, which avoids glitches when the outputs are decoded.
- Each state can be recognized with a single 2-input AND gate looking at two neighboring bits.
- It starts naturally from
0000, which a power on reset clear provides.
Tracing rule: look at the old Q0 at each edge. If it was 0, a 1 enters on the left; if it was 1, a 0 enters.
The remaining 2ⁿ − 2n patterns form one or more separate, unused cycles. If noise ever puts the counter in one, it stays there, so robust designs add logic to steer it back.
Flip-flops needed: for N states, N/2 flip-flops (N even). A binary counter needs fewer; a ring counter needs more.