三段式状态机设计 (三段式状态机verilog)

本文目录导航:

三段式状态机设计

有限状态机采用三段式风格,即三个always块描述状态机. 优点:书写清晰,组合与时序分离设计,易于综合,且在一定程度上避免了状态转移和输出等组合逻辑中的毛刺. 主要目的是为了提高状态机的可读性,为分析逻辑功 能提供方便,也可以是cstate or nstate. 建议使用的独热码,电路的速度和可靠性有显著的提高,但注意:存在多余的状态,就有一些不可到达的状态,需要在case语句的最后,加default分支,以确保能回到IDLE状态。

三段式状态机设计 (三段式状态机verilog)

基于FPGA的贪吃蛇游戏设计(八)——状态机设计

Verilog语言通过不同的always语句块实现硬件电路的并行执行,但在实际工程中,除了并行执行电路外,有时也需要串行执行的电路。

这时,可以选择有限状态机FSM(Finite State Machine)来实现。

状态机由状态寄存器和组合逻辑电路构成,可以根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的控制中心。

有限状态机主要分为两大类:Mealy状态机:时序逻辑的输出不仅取决于当前状态,还与输入有关;Moore状态机:时序逻辑的输出只与当前状态有关。

贪吃蛇游戏采用的是Mealy状态机模型。

根据代码的设计方式,状态机可以分为一段式、二段式和三段式。

一段式写法是把所有的逻辑(输入、输出和状态)都放在一个always语句块中,这种后期不易维护。

在简单的状态机可以使用。

二段式写法就是有两个always块,把时序逻辑和组合逻辑分隔开来。

时序逻辑里进行当前状态和下一状态的切换,组合逻辑实现各个输入、输出以及状态判断。

这种写法不仅便于阅读、理解、维护,而且有利于综合器优化代码,有利于用户添加合适的时序约束条件,有利于布局布线器实现设计。

在两段式描述中,当前状态的输出用组合逻辑实现,可能存在竞争和冒险,产生毛刺。

要求对状态机的输出用寄存器打一拍,但很多情况下不允许插入寄存器节拍,此时使用三段式描述。

其优势在于能够根据状态转移规律,在上一状态根据输入条件判断出当前状态的输出,从而不需要额外插入时钟节拍。

三段式写法就是有三个always块,一个时序逻辑采用同步时序的方式描述状态转移,一个采用组合逻辑的方式判断状态转移条件、描述状态转移规律,第三个模块使用同步时序的方式描述每个状态的输出。

三段式代码容易维护,时序逻辑的输出解决了两段式组合逻辑的毛刺问题,但是从资源消耗的角度上看,三段式的资源消耗多一些。

这里用一段式状态机来完成游戏的控制过程:关于这四个状态的描述请参考第一篇(整体描述):友晶科技FPGA:基于FPGA的贪吃蛇游戏设计(一)2个设计点提醒:这个cnt_clk计数器这里不能写成cnt_clk=,因为第6秒的时间只有一瞬间,当这个时候没有拨动SW时,其他时刻它就不再去判断SW的情况了。

当游戏结束时,按任意键触发游戏重新开始,cnt_clk和flash_cnt两个计数器清零,不然重新开始的时候会跳过欢迎界面,以及再次游戏结束时蛇不会闪烁。

其实就是要确保在重启状态下,所有的条件要回到与复位时一样。

蛇身方向控制用一个三段式的4状态的状态机来实现。

四个状态分别是上、下、左、右。

状态机第一段:完成初始化状态,以及完成当前状态转换到下一状态的时序逻辑:首先方向一定要初始化,否则方向就会错乱,虽然这里初始化方向是向右,但实际上运行时起步方向的判断是根据key值来判断。

状态机第二段:在当前状态下,根据当前的输入转换为下一状态的组合逻辑。

根据按键进行三个方向的选择,这里是按键按下的时候,信号传导Direct_next,然后由Direct_next送给Direct_r:状态机第三段:根据当前状态和当前输入产生当前输出的时序逻辑:上面这段代码解释如下:

verilog语法学习2:完全掌握有限状态机的写法

有限状态机(FSM)是Verilog中一个核心概念。

本文将对这一概念进行梳理。

一、使用状态机的目的使用状态机是为了实现有序的逻辑操作。

由于Verilog编程通常在硬件平台上运行,而硬件平台支持并行执行。

然而,并非所有任务都适合并行执行,如泡茶过程就需要按顺序进行,因此,状态机通过状态转换来执行特定的顺序逻辑。

二、状态机的结构与分类状态机的四个要素包括:当前输入、当前状态、下一状态、当前输出值。

状态转换由外部输入(如时钟和当前输入)驱动。

根据输入不同,可分为Moore型和Mealy型两种状态机。

Moore型状态机的输出仅与当前状态有关,而Mealy型状态机的输出与当前状态和输入有关。

仿真结果显示,两者均可实现相同功能,但Mealy型状态机的输出与输入变化同步,而Moore型状态机的输出比输入晚一个时钟周期。

三、状态机的书写流程与要点在了解状态机结构和分类后,我们需要掌握其书写流程。

一般步骤包括:设计状态转移图、编写代码、仿真测试。

其中,格雷码和独热码编码方法需要特别注意。

四、状态机的书写方法常用的状态机书写方法包括一段式、两段式、三段式和特殊状态机。

三段式状态机最为推荐,其资源消耗适中,易于维护。

特殊状态机适用于高速状态机。

你可能想看:
« 上一篇
下一篇 »

相关推荐

FreeBasic:强大免费开源的64位basic编译器及应用优势

2025年05月10日

82阅读

脊柱侧弯矫正方法大盘点:运动康复、支具矫正等多种方式

2025年05月09日

88阅读

如何在winForm标题栏去掉标题文字且任务栏图标正常显示

2025年05月09日

86阅读

十一黄金周促销广告词大全,国庆购物狂欢等你来

2025年05月09日

78阅读

关闭快速编辑模式及插入模式,设置控制台指定文字颜色举例

2025年05月09日

63阅读

黄金搭档低糖高钙饮品包装及成分功效全解析,适合人群要知晓

2025年05月09日

91阅读