在fpga中有很多时序电路,状态按照一定规律进行转换。稍微复杂一点的电路逻辑就容易乱,代码就会很难写。为了理清逻辑,我们常常就会用到状态机,状态机通过控制各个状态的跳转来控制流程,使得整个代码看上去更加清晰易懂,在控制复杂流程的时候,状态机优势明显。
一、状态机的分类
(1)Mealy状态机
组合逻辑的输出不仅取决于当前状态,还取决于输入状态。
(2)Moore状态机
组合逻辑的输出只取决于当前状态。
(3)三段式状态机
三段式分三种形式:一段式、二段式、三段式。
实际应用时基本都是三段式,一般由三个always构成,基本格式如下:
第一个always 语句实现同步状态跳转;
第二个always 语句采用组合逻辑判断状态转移条件;
第三个always 语句描述状态输出(可以用组合电路输出,也可以时序电路输出)。