PARTITIONING MACHINES BY SPLITTING FLOW TABLES OR STATE DIAGRAMS

Ref. Randy Katz book Contemporary Logic Design, p. 479.  He refers to

Altera Applications Handbook, Santa Clara, Ca, 1988.

This is about a different method for realizing a sequential machine as a network of two or more smaller machines.  Unlike the methods based on partitions or covers, it can be applied to any machine, not just to those with special properties, such as having closed partitions.

The idea is to partition the states of the machine into, several subsets (we illustrate with two), and to realize each subset of states with a different smaller machine.  Each component machine has an extra state, and the machines must communicate with each other.

The method is illustrated via a very simple example.  The 4-state machine, M, below is to be realized by an interconnection of two sub-machines, M1 and M2.  M1 is active when M is supposed to be in states 1 or 2, and M2 is active when M is supposed to be in states 3 or 4.  While M1 is active, M2 is in a special, "resting" state, R2, and when M2 is active, M1 is in "resting" state R1.  Assume that the system is initially in state-1.  Then M1 is active and M2 is in state R2.  As long as the input transitions keep M in state-1 or state-2, M2 remains in state-R2.  When M1 is in state-1 and X=1 occurs, there is supposed to be a transition to state-3, which is a state where M2 takes over.  So M1 goes to its rest state, R1, and, as a result of a signal from M1 to M2 (V1), M2 sees that it must transit from R2 to state-3.

Example 1.

X                                                 X                                        X

0   1                                           0     1                                   0    1

-----                                           ---------    y1  y2                 --------      y3  y4

1   2   3                                   1     2     R1      0   0               3   4    3       0   0

2   1   2                                    2    1     2        0   1               4   4    R2     0   1

3   4   3                                   R1   R1 V4/2   1   1              R2  R2  V1/3 1   1

4   4   2                                                V4'/R1                                  V1'/R2

-----                                           ----------                              ----------

M                                                  M1                                     M2

When interpreting the flow table for M1, note that the column-1 entry for R1, the third row, is complex.  It has two components, written on two lines.  The top component indicates that if the signal V4=1, then the NS should be 2.  The lower component specifies that if V4=0, then the NS should be R1.  The V4-signal is generated by M2 and sent to M1.  It is set to 1 whenever M2 is in state-4, a state from which (see the table for M) there is a transition, when X=1, out of M2-territory to state-2, in M1-territory.  Similarly, M1 generates a V1 signal indicating whether or not it is in state-1, and this signal goes to M2.  As shown in row-R2 of the M2-table, when M2, in the R2-state, sees V1=1 at the same time that X=1, it "wakes up" and goes to state-3.  If, while in R2 (the rest state) with X=1 it sees V1=0, it remains there.

Logic expressions for Y1, Y2, and V1, which describe the logic implemented in M1, are shown below, followed by expressions for Y3, Y4, and V4, which describe the logic implemented in M2.  Use is made of don't cares resulting form the unused 10-y-state, so, for example, the first term in the expression for Y1 below is X'y1 rather than X'y1y2.

Y1 = X'y1 + Xy2'+ XV4'y1,  Y2 = X + y2' + y1,   V1 = y2'

Y3 = X'y3 + Xy3'y4 + V1'y3,  Y4 = X' + y3'y4 + V1'y3,  V4 = y3'y4

---------------    y1, y2

-------->|       M1       |--------       ------------

|             |                   |          |      |              |

|            ---------------            |---- |     L       |

|             V1 |      ^                        |     O       |

X  ------+-------------|-----|------------------|     G       |---------Z

|                   |      |   V4                |      I        |

|            ----V----|-----          |-----      C       |

|            |                   |          |       |               |

------->|       M2       |---------       -------------

|                   | y3, y4

---------------

Next is a more substantial example.

Example 2.  States 1, 2, and 3 are assigned to M1 and states 4, 5, and 6 are assigned to M2.  This is a reasonable way to make the partition, since there are only two transitions out of the 123-region and only one transition out of the 456-region.  Out-of-region transitions tend to complicate the logic, and so it is good to minimize the number of them.

X                   X                                  X

0   1              0     1                            0     1

-----              -------    y1   y2            --------     y3  y4

1   1   2        1   1     2     0   0         4  R2    5        0   0

2   3   4        2   3     R1   0   1         5   4     6        0   1

3   2   5        3   2     R1   1   1         6   5     6        1   1

4   1   5     R1  V4/1 R1  1   0        R2  R2  V2/4  1   0

5   4   6           V4'/R1                                 V3/5

6   5   6            --------                             (V2+V3)'/R2

-----               M1                            -----------

M                                                    M2

Note how transitions from the set of states assigned to M1 to states assigned to M2 (4 and 5) lead to the NS entries of R1 in the corresponding positions in the M1 flow table.  Corresponding to these are exits from R2 state of M2 when X=1 and V2 + V3 =1.

The logic  expressions are:

M1:  Y1 = y1'y3 + Xy1 + V4'y1y2',  Y2 = X'y2 + Xy1'y2',  V2 = y1'y2, V3 = y1y2.

M2:  Y3 = X'y4' + Xy4,   Y4 = y3y4 + Xy3' + XV3y3,  V4 = y3'y4'

ŠŠŠŠŠŠŠ