有限状态机的设计的一般步骤:
(1)逻辑抽象,得出状态转换图。 就是把给出的一个实际逻辑关系表示为时序逻辑函数,可以用状态转换表来描述,也可以用状态转换图来描述。这就需要:
1)分析给定的逻辑问题,确定输入变量、输出变量以及电路的状态数。通常是取原因(或条件)作为输入变量,取结果作为输出变量。
2)定义输入、输出逻辑状态的含意,并将电路状态顺序编号。
3)按照要求列出电路的状态转化表或画出状态图。
这样,就把给定的逻辑问题抽象到一个时序逻辑函数了。
(2)状态简化。 如果在状态转换图中出现这样两个状态,它们在相同的的输入下转换到同一状态去,并得到一样的输出,则称为等价状态。显然等价状态是重复的,可以合并为一个。电路的状态数越少,存储电路也就越简单。状态化简的目的就在于将等价状态尽可能地合并,以得到最简状态图。
(3)状态分配。 状态分配又称状态编码。通常有很多编码方法,编码方案选择得当,设计的电路可以简单,反之,选择的不好,则设计的电路就会复杂的多。在实际设计中,须综合考虑电路的复杂度与电路性能之间的折衷。在触发器资源丰富的FPGA设计中,采用独热码既可以使电路性能得到保障又可以充分利用其触发器数量多的优势,也可以采用输出编码的状态指定来简化电路结构,并提高状态机的运行速度。
(4)选定触发器的类型并求出状态方程、驱动方程和输出方程。
(5)按照方程得出逻辑图。 用Verilog来描述有限状态机,可以充分发挥硬件描述语言的抽象建模能力,使用always块语句和case(if)等条件语句及赋值语句即可方便实现。