## The Johnson Counter

August 20, 2007

Johnson counters, or Möbius counters (sometimes referred to with that name because of the abstract similarity to the famous Möbius strip) are extremely useful.
The Johnson counter is made of a simple shift register with an inverted feedback – as can be seen below.

Johnson counters have 2N states (where N is the number of flip-flops) compared to 2^N states for a normal binary counter.
Since each time only a single bit is changing – Johnson counter states form a sort of a Gray code. The next picture shows the 12 states of a 6 bit Johnson counter as an example.

Johnson counters are extremely useful in modeling, since by using any of the taps one could generate a clock like pattern with many different phases. You could easily see that by looking at the columns in the picture above, they all have 6 consecutive “1”s followed by 6 consecutive “0”s, but all in a different phase.

Decoding the state of the counter is extremely easy. A single 2 input gate which detects the border between the “1”s and the “0”s is enough. One needs not compare the entire length of the counter to some value.

One can also generate an odd length “sort-of” Johnson counter. The easiest way is by using a NOR feedback from the last two stages of the shift register as shown below.

The last picture shows the 11 states of the modified 6 flip-flop Johnson counter. Looking at the states sequence it is immediately noticeable that the 11…11 stage is skipped. We also lose the Gray property of the counter like that, since on a single case both the last and first bits will change simultaneously. But looking at the columns, which represent the different taps, we see that we kept the same behavior on each column (with respect to the signal shape) but the duty cycle is not 50% anymore – that is obvious because we no longer have an even amount of states.

This post is becoming a bit too long to present all the cool things that can be done with Johnson counters, but a very important issue is robustness. In a future post we will see that serious designers do not use just a simple inverter for the feedback path, but also include some sort of self correction mechanism. This is necessary, because if a forbidden state creeps in (wrong reset behavior, crosstalk, etc) it will stay forever in the counter – sort of like the same problem we had in one of the previous posts on the ring counter. There are ways to get over this problem, and I will try to analyze them in a future post. Stay tuned…

1. Just wanted to say I really enjoy your blog, always looking forward for the next post.
Keep the good work.

2. Thanks for the kind words…
I just try to contribute from my experience – Stay tuned for the more robust Johnson counter design, that will be really neat.
oh and if you got technical topics you want me to write about, drop me a line.

3. […] Length LFSR Sequences Johnson Counter Recovery Circuits February 25, 2008 In a previous post I discussed the Johnson counter (diagram below). It was mentioned that if a bit accidentally flips […]

4. Hey Nir,

I just came across your blog while randomly browsing for digital topics and let me congratulate you for the top notch work !!

I have been readin them since morning and getting all those good info that I always wanted to know but never found with good explainations !!

Great Work !!!

5. i have problem identifying the sequence of johnson counter. For example, what would the sequence looks like if the XNOR is used instead of NOR gate in the secong diagram.

6. The Johnson counter is meant to rotate 2n states through the flip flops. The second circuit describes a way to use a trick for generating an “almost” Johnson counter with an odd amount of states.
changing the gate to a XNOR will not result in a Johnson counter but will possibly even circulate through (2^n)-1 states – similar to an LFSR counter.

7. “Decoding the state of the counter is extremely easy. A single 2 input gate which detects the border between the “1″s and the “0″s is enough. ”

what this mean? can you give an example?

8. OK, I got it.
http://www.play-hookey.com/digital/johnson_counter.html
Here is an example

9. Great work!! Looking forward to your posts….