有限状态机功能强大,但是不代表提倡;借助综合工具实现电路功能,对状态转移图或者verilog描述过程产生错误或者错误理解的话可能会出问题。
对状态转移图充分理解
有限状态机的状态不能太多,要尽可能小。
设计一个
三大方程:输出方程、状态转移方程、激励方程;
moore型速度快,仅受限于输出逻辑决定,mealy受输入信号和输出逻辑影响。
有限状态机是唯一可以不用知道相关的电路结构,
编码方式:二进制编码(功耗大,还存在竞争冒险,最简化);格雷码(相邻状态跳转时仅有一个bit发生变化);one-hot编码(任意状态跳转只有2个bit变化)
写法:两段式 (状态转移方程,输出方程&激励方程),三段式(状态转移方程,输出方程,激励方程)
因为仅有状态转移方程在存储电路中进行
使用case将状态隔离,
不建议,电路中可能会出问题,即使语法没问题:next_state=x 初始化,使得系统进入正确状态;
在if-else或者case语句中,状态一定要写完整,即使状态没有发生变化也要写上,分支一定要写全,每个分枝条件下状态和输出都要进行赋值,即使转态没有发生变化
两段式状态机
优点:把状态码的指定与状态机控制的输出联系起来,把状态的变化直接用作输出,可以提高输出信号的开关速度,并节省电路器件。
缺点:输出开关的维持时间必须与状态的维持时间一致。