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