深入浅出玩转FPGA——笔记8 漫谈状态机设计

1 状态机的基本概念

硬件的并行性决定了用不同verilog描述的硬件实现(比如不同的always语句)都是并行执行的,那么如果希望分多个时间完成一个任务,怎么办?
方法1 可以用多个使能信号赖衔接多个不同的模块,但是这样做多少显得有些繁琐。
方法2 状态机应运而生

1.1 构成状态机基本要素

构成状态机的基本要素是状态机的输入、输出和状态。输入就是一些引起状态变化的条件
输出就是状态变化后引起的结果变化
状态就是各个状态

1.2 状态机分类

状态机根据其状态变化是否和输入条件相关分成两类:
moore型状态机:状态变化仅和当前状态有关,而与输入条件无关
mealy型状态机:状态变化不仅与当前的状态有关,还取决于当前的输入条件

1.3 状态机的写法

一段式:
把所有的逻辑(包括输入、输出、状态)都在一个always块解决。看上去简单,实际上不利于维护。如果状态机非常简单可以使用;

二段式:
把时序逻辑和组合逻辑分来来,时序逻辑里面进行当前状态和下一个状态的切换,组合逻辑里实现各个输入、输出以及状态判断;

三段式:
时序逻辑的输出解决了两段式中组合逻辑的毛刺问题(组合逻辑产生的毛刺)但是从资源上面将三段式的资源消耗多一些;而且三段式从输入到输出比一段式和两段式会延时一个时钟周期;

你可能感兴趣的:(深入浅出玩转FPGA,单片机,stm32,嵌入式硬件,fpga开发)