美文网首页
三段式状态机设计

三段式状态机设计

作者: 喜欢萝莉的逗逼青年 | 来源:发表于2016-07-16 09:36 被阅读637次

状态机设计需满足的几个要求:


1. 三段式要求

有限状态机采用三段式风格,即三个always块描述状态机.

     第一个组合逻辑always块用来描述下一状态的转移(next state logic)  

     第二个时序逻辑always块用来描述当前状态.(current state) 寄存器的复位和变化.       

     第三个always块用来描述输出.(output logic)  组合or时序 均可.       

优点:书写清晰,组合与时序分离设计,易于综合,且在一定程度上避免了状态转移和输出等组合逻辑中的毛刺.


2. 状态机状态信号命名方法

    当前状态命名为current_state,下一状态命名为next_state.

主要目的是为了提高状态机的可读性,为分析逻辑功 能提供方便,也可以是cstate or nstate.


3.编码方式

  准则:使用参数赋值状态
  两种常用的编码方式:二进制编码及独热码编码
  二进制编码占用的位数少,但其状态跳变需要额外的译码电路,这样的编码方式会对状态机的运行速度有所限制,可以满足一般的设计要求。
  独热码编码,以n bit表示n个 状态,这样编码的译码部分可以做到最简,工作频率可以做到较高,相对于二进制而言,需要更多的位。

建议使用的独热码,电路的速度和可靠性有显著的提高,但注意:存在多余的状态,就有一些不可到达的状态,需要在case语句的最后,加default分支,以确保能回到IDLE状态。


4.状态机设计的注意事项

    设计的状态跳转条件是否充分
    状态跳转条件都不满足的情况下,状态机如何工作
    未定义的状态应如何设计
    状态机跳转设计中,是否受外部信号的影响

5.三段式的写法

    组合逻辑always块:(负责状态的跳转)、

  always@(current_state or else signal)(敏感列表中存放对状态跳转有影响的信号)

     begin
     next_state=x;    (初始化,使得系统复位进入正确的状态)

     case(current_state)
     s1: if(.....)
 next_state=s2
     .
     .
     .......
     endcase
     end

    时序逻辑always块:
        always@(posedge clk or negedge rst)
         if(!rst)
         current_state<=IDLE;
         else
         current_state<=next_state;

  描述输出的always块可以是组合的也可以是时序的;

6.典型的序列检测状态机写法:


IMG_0141.JPG

相关文章

  • 三段式状态机设计

    状态机设计需满足的几个要求: 1. 三段式要求 有限状态机采用三段式风格,即三个always块描述状态机. 优点:...

  • 必修:VSF的事件驱动

    设计上,VSF的底层核心是一个参照UML设计的状态机构架。不过,我这里先不准备讲状态机,因为VSF里的状态机构架从...

  • 架构师之路2-有限状态机和行为树

    【关键字】架构师 软件设计 行为树 状态机 有限状态机,也称为FSM(Finite State Machine) ...

  • 服务端指南 | 状态机设计

    原文地址:服务端指南 | 状态机设计博客地址:http://blog.720ui.com/ 状态机中,每个状态有着...

  • 状态机

    有限状态机 finite-state machine FSM 有限状态机在设计交易订单系统时,会存在正向状态(待...

  • 浅谈游戏AI设计--有限状态机

    游戏AI设计中,常用的方法有有限状态机,行为树等,最基本的也就是状态机了,下面用一个实例来记录下有限状态机的实现。...

  • 带你认识这些近年来火爆的概念手机

    如今的手机同质化越来越严重,外形上越来越没有曾经功能机时代的那种百花齐放的美感设计了。你用三段式设计,我也用三段式...

  • Hermez zkEVM

    本文主要对Hermez 2.0 zkEVM设计思路进行简单介绍。 Fibonacci 状态机 先从Fibonacc...

  • MVC

    状态机控制 性能 人脑性能 程序性能 质量需求 程序设计方式 自下而上 自上而下 自下而上 在程序整体没有设计完成...

  • 源码|并发一枝花之ConcurrentLinkedQueue【伪

    首先声明,本文是伪源码分析。主要是基于状态机自己实现一个简化的并发队列,有助于读者掌握并发程序设计的核心——状态机...

网友评论

      本文标题:三段式状态机设计

      本文链接:https://www.haomeiwen.com/subject/alakrttx.html