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