三段式,四段式状态机设计方法是什么(状态机设计注意事项)

控制/MCU

1882人已加入

描述

一、状态机的概述

有限状态机,简称状态机,通俗的说,就是把全部的情况分成几个场景,这些场景的工作方式明显不同。简单来说就是如下所示的状态转移图

有限状态机

二、状态机的结构

1、状态寄存器:记忆当前状态机所处的状态

2、产生下一状态的组合逻辑:根据输入信号和当前状态,决定下一个状态

3、输出逻辑:由当前状态和输入信号,决定当前状态的输出

三、好的状态机的标准

四、三段式、四段式状态机设计方法

常见状态机分为一段,二段,三段,推荐使用三段(包含当前状态,下一状态,和输出,后续分析后推荐四段式

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

有限状态机

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

有限状态机

3、第三个进程,同步时序always模块,格式化描述次态寄存器输出,其它always(个数与输出信号个数有关)使用同步时序电路设计每一个状态的输出

有限状态机

4、代码设计注意事项:

1)三段always中,第一,三个always是同步时序,采用非阻塞赋值,第二个always是组合逻辑,采用阻塞赋值

2)第二个是组合逻辑always块,命案列表采用always@(*),组合逻辑条件一定要完备

3)第二个组合逻辑always块里的判断条件需包含所有情况

4)第二部分case中的条件应为当前态

5)三段式不是三个always,而是三步的意思,与输出信号个数有关

6)三段式的好处,即可用state_c作为条件,也可用state_n作为条件。用state_c作为条件,会比state_n做条件晚一个时钟周期

5、进一步总结,归纳,提出使用四段式状态机(每次只考虑一件事),四段不是四个always,而是四个部分内容

1)第一段:与三段式第一段相同,同步时序的always模块,格式化描述次态迁移到现态寄存器

有限状态机

2)第二段:组合逻辑的always块,描述状态转移条件

注:第二段里只需要判断信号名即可,名字规范2-->to,如下所示什么到什么的条件,else条件下应为state_n = state_c; 如果是state_n = state_n,那和if-else条件没补全一样(相当于没写else begin,组合逻辑需要补全条件)

有限状态机

             

有限状态机

3)第三段,定义状态转移条件

有限状态机

4)第四段,设计输出,此处可以规定一个always设计一个信号,因此有多少个输出信号,就有多少个always,如果没有输出就没有第四段

有限状态机

状态机设计规范

1、四段式状态机

2、第二段转移条件

1)判断条件用信号名表示,不需要去做判断,判断是在第三段的时候去做,符合之前所说的一次只做一件事的要求,也不需要来回修改信号名。只需要在第三段修改判断条件即可

3、状态不变处理

第二段使用state_n = state_c表示状态不变

1)避免拷贝时出错

2)避免组合逻辑没补齐情况,要有唯一结果输出

3)避免写出state_n = state_n,本质上还是保持不变,与第二点没补齐一样,会生成锁存器

4、转移条件命名

状态转移条件,用assign的形式写成XX2XX_start的形式,前面XX为当前状态,后面XX为下一状态。如idle2read_start,idle2write_start,方便检查沟通

5、转移条件定义

状态转移的一般格式为

assign xx2yy_start = state_c ==XXXX && zzzz;

XXXX现在状态,zzzz跳转条件

有限状态机

状态机设计注意事项

1、IDLE只是名字,并不是必须的,不需要专门为复位设置一个状态

2、状态机的划分依据,依据是划分的状态方便产生输出信号

3、状态对齐的对象,状态机与din(输入信号)对齐,来产生dout(输出),即din-->状态机-->dout流程

4、状态机架构八步法(需要用计数器)

1)明确功能

有限状态机

有限状态机

2)输出分析

有限状态机

               

有限状态机

3)状态合并

有限状态机

4)状态转移条件

有限状态机

5)转移条件

有限状态机

有限状态机

6)完整性检查

有限状态机

有限状态机

7)状态机代码(四段式)

有限状态机

有限状态机

有限状态机

8)功能代码

有限状态机

有限状态机

    

有限状态机

有限状态机

编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分