By reducing or minimising the total number of states, the number of flip-flops required for a design is also reduced. For example if a finite
state machine drops from 8 states to 4 states, only two flip-flops are required rather than three. The total number of states is reduced by eliminating the equivalent states.
Two states are equivalent if they have the same output for all inputs, and if they transition to equivalent states on all inputs.
Comparing states a and b [a,b], we can see that the outputs are the same 0->0 and the next states when X=0 is d->d (d=d), when X=1 is c->c (c=c). Therefore the states a and b are equivalent and one is redundant and can be eliminated.
Comparing states a and c [a,c], we can see that the outputs are the same 0->0 and the next states when X=0 is d->d (d=d), when X=1 is c->a. For c->a, as the states are referring to each other (we are comparing states a and c), we can ignore this. Therefore the states a and c are equivalent and one can be eliminated.
Comparing state a and d [a,d], we can see that the outputs are different 0->1. Therefore we can conclude that the states a and d are NOT equivalent. No further checks are required.
In the end, the 4 states a,b,c,d can be reduced to 2 a,d and the number of flip flops required for this design is reduced from 2 to 1.
State Reduction using the Implication Table
One method to eliminate the redundant states is to use an implication table. Using the implication table involves the following steps:
First we need the next state table.
fig 1: Next State Table
This is an interactive Implication Table. You can change the Next State and Present Output of the Next State Table. Press the Calculate button to re-evaluate the Implication Table using your modified values
Draw the blank implication table so that it contains a square for each pair of states in the next state table. For the rows' labels, use the last n-1 states (b to h) where n (8) is the number of states. For the columns' labels, use the first n-1 states (a to g).
Goto every square in the implication table so that you compare each pair of rows in the state table (up to 3 examples are shown)
If any of the outputs for the rows being compared differ, place an X in the square.
If the outputs are the same, list the implied pairs in the square. Any implied pair that is identical (eg c=c) or the states themselves is omitted.
If the outputs are the same and if both the implied pairs are identical and/or the states themselves (eg [a,g] g=a), then place a ✓ in the square.
For all squares in the table with implied pairs, examine the square of each implied pair. If any of the implied pair squares has an X, then put an X in this square
If any Xs were added in step 4, repeat the step 4 until no more Xs are added. Use the left/right arrows on the implication table to observe the steps.
Upon completion of the previous step, squares without X's indicate equivalent states.