Consider a machine with the reduced flow table shown below. State Stabes
are shown in UPPER CASE letters and transit states in lower case.
| INPUT COMBINATIONS | ||||
| STATES | 00 | 01 | 11 | 10 |
| A | A | e | - | c |
| B | a | B | B | d |
| C | a | - | b | C |
| D | a | D | D | D |
| E | a | E | d | - |
| - | - | - | - | - |
| - | - | - | - | - |
| - | - | - | - | - |
| INPUT COMBINATIONS | ||||
| STATES | 00 | 01 | 11 | 10 |
| A=000 | A=000 | e=001 | - | c |
| B | a | B | B | d |
| C | a | - | b | C |
| D | a | D | D | D |
| E=001 | a=000 | E=001 | d | - |
| - | - | - | - | - |
| - | - | - | - | - |
| - | - | - | - | - |
With A and E as assigned above, there is no race in the 01 column. The
next most critical column is the 11 column. We assign states based on it
next.
| INPUT COMBINATIONS | ||||
| STATES | 00 | 01 | 11 | 10 |
| A=000 | A=000 | e=001 | - | c |
| B=010 | a=000 | B=010 | B=010 | d=011 |
| C | a | - | b | C |
| D=011 | a=000 | D=011 | D=011 | D=011 |
| E=001 | a=000 | E=001 | d=011 | - |
| - | - | - | - | - |
| - | - | - | - | - |
| - | - | - | - | - |
| INPUT COMBINATIONS | ||||
| STATES | 00 | 01 | 11 | 10 |
| A=000 | A=000 | e=001 | - | c=100 |
| B=010 | a=000 | B=010 | B=010 | d=011 |
| C=100 | a=000 | - | b=??? | C=100 |
| D=011 | a=000 | D=011 | D=011 | D=011 |
| E=001 | a=000 | E=001 | d=011 | - |
| - | - | - | - | - |
| - | - | - | - | - |
| - | - | - | - | - |
The possible transitions are 100 to 000 to 010; 100 to 110 to 010; and (not likely) 100 to 010.
Now 000 is state A, 110 has not been used. Both have don't cares in the 11 column. We have three possible solutions.
Does it make any difference? As far as races are concerned, no! But
there is something we have not yet considered.
| INPUT COMBINATIONS | OUT | ||||
| STATES | 00 | 01 | 11 | 10 | Z |
| A=000 | A=000 | e=001 | - | c=100 | 0 |
| B=010 | a=000 | B=010 | B=010 | d=011 | 1 |
| C=100 | a=000 | - | b=??? | C=100 | 1 |
| D=011 | a=000 | D=011 | D=011 | D=011 | 0 |
| E=001 | a=000 | E=001 | d=011 | - | 0 |
| - | - | - | - | - | |
| - | - | - | - | - | |
| - | - | - | - | - | |
| INPUT COMBINATIONS | OUT | ||||
| STATES | 00 | 01 | 11 | 10 | Z |
| A=000 | A=000 | e=001 | - | c=100 | 0 |
| B=010 | a=000 | B=010 | B=010 | d=011 | 1 |
| C=100 | a=000 | - | b=110 | C=100 | 1 |
| D=011 | a=000 | D=011 | D=011 | D=011 | 0 |
| E=001 | a=000 | E=001 | d=011 | - | 0 |
| - = 110 | - | - | -=010 | - | 1 |
| - | - | - | - | - | |
| - | - | - | - | - | |
The moral is to (a) attempt an all unit-distance assignment when possible, (b) if not possible, start with the most critical columns first and (c) don't forget to check what the output(s) will do. Note that, in many cases, the remainder of the don't cares in the table should be change so as to direct the machine to some specific state if the machine ever gets into that unused state.