Olin gave a pretty good practical answer but let's look at what it takes to do this using gates (it's been a while). What you want to do is build the boolean function for the next state of every bit given the current state of the three bits, let's just take a few states an an example:
000 -> 011
011 -> 110
110 -> 001
I am going to convert those into a sum of products represenation. So let look at the rightmost bit position, I'll use the notation bn
for the next state and an
for the current state:
- First state transition:
b0_1 = (!a2) & (!a1) & (!a0)
(So if all a bits are zero, b0 is 1)
- Second state
b0
is zero so I won't write a rule for it (since by default if no bit will be set to 1 the sum will be zero).
- Third state
b0_3 = a2 & a1 & (!a0)
.
- Do this for all your 8 transitions.
Now b0 = b0_1 | b0_3 | ...
You'll do this for b0, b1 and b2 and you end up with all the logic you need. Next step you can simpify it (e.g. with Karnaugh maps or a computer). You current state is the output of your (three) flip-flops, going into the logic, and then back to the input of the flip flop. Then you can build it!