三段式状态机_基于FPGA的有限状态机设计

本文详细介绍了有限状态机的概念、优点、一般结构,并着重讲解了三段式状态机的设计,包括Moore型和Mealy型状态机的差异,以及不同编码方式如二进制、独热码和格雷码的应用场景。同时,对比了一段式、二段式和三段式FSM的优缺点,指出三段式在FPGA设计中的广泛应用。
摘要由CSDN通过智能技术生成
58885282bc4a783fde6c41e0787faedb.png

一、什么是有限状态机

有限状态机(简称状态机)相当于一个控制器,它将一项功能的完成分解为若干步,每一步对应于二进制的一个状态,通过预先设计的顺序在各状态之间进行转换,状态转换的过程就是实现逻辑功能的过程。

二、为什么使用状态机

使用状态机有以下好处:

1、有限状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点。

2、设计方案相对固定,结构模式简单,可定义符号化枚举类型的状态。

3、状态机的HDL描述层次分明,结构清晰,易读易懂。

4、状态机容易构成性能良好的同步时序逻辑模块。

5、在高速运算和控制方面,状态机更有其巨大的优势。基于有限状态机技术设计的控制器其工作速度大大优于CPU。

6、就可靠性而言,状态机的优势也是十分明显的。基于有限状态机技术设计的控制器其可靠性也优于CPU

三、状态机的一般结构

FSM用来解决一般时序逻辑电路问题,包括

1、同步/异步时序逻辑

2、状态寄存器

–当前状态(现态)寄存器

3、组合逻辑电路

–下一状态(次态)组合逻辑

–输出组合逻辑

cb238bba8f638bac99306e813f223e4d.png

四、常用的状态机

1、Moore型:输出信号仅与现态相关

da99d10d1f17f9a7c74d05816c091e8a.png

2、Mealy型:输出信号与现态和输入相关

fd1c16a45193af8c0de9d6372ed6e83e.png

3、mealy 状态机example

7c1ad72182bb7eb461798fc294cd954e.png

mealy 状态机example

4、moore 状态机example

7341b48e695c48c8f0a0dcfd5354a19f.png

moore 状态机example

五、状态机常用编码

1、二进制编码。是用N位二进制数,表示M个工作状态,当然必须满足2N大于等于M。

2、独热码编码方案。用N位二进制数表示N个状态,每一位编码对应一个触发器,状态机中的每个状态都由其中一个触发器的状态来表示。

Parameter Idle = 4’b1000,

Start = 4’b0100,

Stop = 4’b0010,

Clear = 4’b0001;

3、gray-code。每次状态跳转只有1bit发生变化。

二进制编码、gray-code 编码使用最少的触发器,较多的组合逻辑。而one-hot编码反之。由于CPLD 更多的提供组合逻辑资源,而FPGA 更多的提供触发器资源,所以CPLD多使用gray-code,而FPGA多使用one-hot 编码。另一方面,对于小型设计使用gray-code和binary 编码更有效,而大型状态机使用one-hot 更高效。

六、FSM 描述风格

用Verilog 语言描述有限状态机可使用多种风格,不同的风格会极大地影响电路性能。通常有3种描述方式:一段式、二段式和三段式。

一段式FSM把组合逻辑和时序逻辑用同一个时序always块描述,其输出是寄存器输出,无毛刺。但是这种方式会产生多余的触发器,代码难于修改和调试,应该尽量避免使用。

二段式FSM大多用于描述Mealy状态机和组合输出的Moore状态机,时序always块描述当前状态逻辑,组合逻辑always块描述次态逻辑并给输出赋值。这种方式结构清晰,综合后的面积和时间性能好。但组合逻辑输出往往会有毛刺,当输出向量作为时钟信号时,这些毛刺会对电路产生致命的影响。

三段式FSM大多用于同步Mealy状态机,两个时序always块分别用来描述现态逻辑和对输出赋值,组合always块用于产生下一状态。这种方式的状态机也是寄存器输出,输出无毛刺,并且代码比单always块清晰易读,但是面积大于二段式FSM。随着芯片资源和速度的提高,目前这种方式得到了广泛应用,但资源有限的话推荐二段式FSM。

4829df26274c3f68b73a579bdc897091.png

三段式FSM 例子

状态机设计是FPGA设计中常用的设计,希望对FPGA初学者有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值