当我们已得到时序机的最小化状态表后,就应该给每个状态分配一个记忆元件的编码来表征该状态。通常我们用寄存器(二值元件)作为记忆元件,因此是用寄存器所构成的二进制编码代表状态。设时序机的状态总数为n, 寄存器长度为m,必须满足以下关系:
      2 m ≥ n
  例如,当n = 5时,必须 m ≥ 3 。假定我们选用长度为3的寄存器,则其二进制编码共
      2 3 = 8
种。从8种编码中选其中的5个,可有
      
种方案可供选择。当从这56种方案中选定某一种方案之后,又存在新的选择:哪一个二进制代码和哪一个状态相对应,这里又有
      
种方案可供选择。对本例来说,要求我们在6720种方案中择一最佳者。一般说来,可供选择的方案总数为
      
从这么多种方案中选择最佳方案绝非易事! 现在还没有很好的方法,我们的目标暂定为选择一个较佳的方案。
  如果把最佳方案理解为成本最低,那就是要求记忆元件的成本和组合逻辑部分的总体成本最低。
  (1)寄存器长度最短:
  若满足 2 m ≥ n ≥ 2 m -1
则可获得寄存器长度最短的一个方案。但是在某些情况下,当m增大时,却可获得组合逻辑电路成本的降低。所以这个要求只能导致局部最佳,并不一定导致总体最佳。
  (2)组合逻辑电路成本最低:
  如图4.15所示,组合逻辑电路的功能是实现次态函数和输出函数,如果状态分配能使得这两个函数的布尔表达式比较简单,就可以降低组合逻辑电路的成本。借用卡诺图中相邻的概念,可以建立起某些启发性算法,实现较好的状态分配。

  状态分配的目标是成本最低,成本由寄存器和组合逻辑两部分构成,这两部分互有影响。一般说来,寄存器长度增加可能导致组合逻辑电路的减少。多数情况下寄存器的造价要高一些,所以第一目标是降低寄存器的长度,然后在寄存器长度最短的情况下考虑状态编码。本书介绍的算法属于这种考虑。
  上述考虑不是任何情况下都正确,例如在现场可编程门阵列FPGA电路中,寄存器资源相对丰富一些,这时候就不一定要求寄存器长度最短,甚至使用"1热态位编码",即寄存器长度和有限状态机的状态数相等。
  由此可知,要根据集成电路资源状况选择状态分配算法。