有限状态机(FSM)写法的总结(一段式,二段式,三段式)

匿名 (未验证) 提交于 2019-12-02 23:26:52

一段式:整个状态机写到一个always模块里面,在该模块中既描述状态转移,又描述状态的输入和输出;

二段式:用两个always模块来描述状态机,其中一个always模块采用同步时序描述状态转移;另一个模块采用组合逻辑判断状态转移条件,描述状态转移规律以及输出;

三段式:在两个always模块描述方法基础上,使用三个always模块,一个always模块采用同步时序描述状态转移,一个always采用组合逻辑判断状态转移条件,描述状态转移规律,另一个always模块描述状态输出(可以用组合电路输出,也可以时序电路输出)。

三段式状态机示例模板:

//第一个进程,同步时序always模块,格式化描述次态寄存器迁移到现态寄存器

//异步复位

if(!rst_n)

else

//注意,使用的是非阻塞赋值

//第二个进程,组合逻辑always模块,描述状态转移条件判断

//电平触发,现存状态为敏感信号

begin

case(current_state)

//阻塞赋值

//阻塞赋值

...

endcase

end

//第三个进程,同步时序always模块,格式化描述次态寄存器输出

always @ (posedge clk or negedge rst_n)

begin

...//初始化

case(next_state)

//注意是非阻塞逻辑

//default的作用是免除综合工具综合出锁存器

endcase

end

文章来源: https://blog.csdn.net/ffdia/article/details/88773747
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!