When power comes on, a counter's flip-flops can wake up holding any pattern, including unused codes that the normal sequence never visits. A counter is self-starting if, from every possible code, it reaches the main sequence after some number of edges.
To check:
- Take the final next-state equations (after the don't-cares have been decided).
- Substitute each unused code and find its next state.
- Follow the arrows. If every path ends up in the main loop, it's self-starting. If any unused code loops back to unused codes forever, the counter has a lock up state.
Drawing a state diagram that includes the unused codes makes this easy to see.
Some counters are not self-starting as built. A plain ring counter started at 0000 stays there. A plain johnson counter with a wrong starting pattern runs round a second, invalid loop. The usual fixes are a reset or preset at power-up, or extra logic that steers bad codes back into the sequence.