状态机(state machine)

本文详细解析了Mealy和Moore两种状态机的区别,介绍了三段式状态机的编写方法,包括状态空间定义、状态跳转、下个状态判断及各状态下的动作,并探讨了如何通过增加寄存器实现更优的时序逻辑输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、状态机分类

Mealy状态机:输出取决于输入和当前状态

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

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

状态机的输出是由输出组合逻辑G提供的,G也是当前状态和输入信号的函数。

 

Moore 状态机:输出只取决于当前状态,可以看成Mealy的一种

 

二、如何写状态机

三段式状态机:

1、状态空间定义:罗列所有状态

独热码:适合写条件复杂但是状态少的状态机,译码逻辑简单,虽然占用较多位数,但是组合电路会简单很多

格雷码:适合写条件不复杂但是状态多的状态机。

2、状态跳转(时序逻辑)(一段)

3、下个状态判断(组合逻辑)(二段)

latch(锁存器):电平触发,组合逻辑中会产生,尽量避免,会产生毛刺。if语句中缺少else,case中多余情况未default。

触发器:电平触发。

4、各个状态下的动作(三段)

 

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

    1、可以有效地滤去组合逻辑输出的毛刺;

    2、可以有效地进行时序计算与约束;

    3、另外对于总线形式的输出信号来说,容易使总线数据对齐,从而减小总线数据间  的偏移,减小接收端数据采样出错的频率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值