Verilog语言介绍状态机

状态机概念

  • 有限状态机(FSM)
    在有限个状态之间按一定规律转换的时序电路

状态机模型

  • Meail状态机
    在这里插入图片描述
    输出不仅与当前状态有关,还与输入有关。

状态寄存器由一组触发器组成,用来记忆状态机当前所处的状态,状态的改变只发生在时钟的跳变沿。

状态是否改变、如何改变,取决于组合逻辑F的输出,F是当前状态和输入信号的函数。状态机的输出是由输出组合逻辑G提供的,G也是当前状态和输入信号的函数。

  • Moore状态机
    在这里插入图片描述
    输出至于当前状态有关,与输入信号无关。

状态机设计

状态机设计方法:

  • 四段论
    1. 状态空间定义
    2. 状态跳转
    3. 下个状态判断
    4. 各个状态下的动作

状态空间定义

假设一天的生活有4个状态——睡觉、学习、吃饭、娱乐。即每天在这四个状态之间转换。这四个状态的集合即为状态空间
因为Verilog只能处理二进制数,所以我们要对这四个状态进行编码。如下图:
(右侧为独热码,即每个状态只有一个寄存器置位,译码逻辑简单。)
在这里插入图片描述
使用parameter定义参数
使用reg定义寄存器类型变量(位宽要求与参数位宽保持一致),current_state表示当前状态、next_state表示下一个状态。

状态跳转(时序逻辑)

在这里插入图片描述
每当复位的时候,把SLEEP值赋给当前状态,当时钟上升沿的时候,把下一个状态赋值给当前状态(时序逻辑,注意使用非阻塞赋值)

下个状态判断(组合逻辑)

在这里插入图片描述
上图代码为判断当前状态及时间,判断下个状态

各个状态的动作

在这里插入图片描述

在这里插入图片描述

三段式可以在组合逻辑后再增加一级寄存器来实现时序逻辑输出

  1. 可以有效地滤去组合逻辑输出的毛刺
  2. 可以有效地进行时序计算与约東
  3. 另外对于总线形式的输出信号来说,容易使总线数据对齐,从而减小总线数据间的偏移,减小接收端数据采样出错的频率。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值