‘SHIT’上最全有限状态机设计研究(一)-状态机介绍

本系列主要针对有限状态机进行分析和设计,其中主要包括两部分:时钟同步状态机的分析和时钟同步状态机的设计,预计会有五篇文章进行展开,其中介绍一篇,分析和设计分别有两篇,每一部分都会有相应的实例。



‘SHIT’上最全有限状态机设计研究(一)-状态机介绍

‘SHIT’上最全有限状态机设计研究(二)-时钟同步状态机分析1

‘SHIT’上最全有限状态机设计研究(三)-时钟同步状态机分析2

‘SHIT’上最全有限状态机设计研究(四)-时钟同步状态机设计1

‘SHIT’上最全有限状态机设计研究(五)-时钟同步状态机设计2


FSM介绍

  有限状态机(FSM,Finite State Mechine),顾名思义,就是一系列数量有限的状态组成的一个循环机制。
在这里插入图片描述
        图1 时序电路基本结构
  时序电路如图1所示:组合逻辑接收电路输入信号并输出结果,时序逻辑将组合逻辑的输出存储并反馈回组合逻辑,以此来形成电路的当前状态(current state),当前状态和电路输入信号经过组合逻辑作用形成电路的下一状态(next state)传递给时序电路。
  时序电路如图1所示:组合逻辑接收电路输入信号并输出结果,时序逻辑将组合逻辑的输出存储并反馈回组合逻辑,以此来形成电路的当前状态(current state),当前状态和电路输入信号经过组合逻辑作用形成电路的下一状态(next state)传递给时序电路。
  对于同步时序电路,根据输入端情况可分为两种电路结构:一是没有输入端的同步时序电路,比如计数器、分频器等;另外一种是有输入端控制的电路,称之为有限状态机。有限状态机由组合逻辑电路和若干寄存器组成,根据电路的输入和电路当前状态决定电路的输出。
  状态机按是否和现态有关分为输出是现态的函数的 Moore 型状态机和输出是现态和输入的函数的 Mealy 型状态机。具体如图2和图3所示。
在这里插入图片描述
        图2 摩尔型(Moore)状态机
在这里插入图片描述
          图3 米里型(Mealy)状态机
  Mealy机属于同步输出状态机,它的输出是当前状态和所有输入信号的函数,其输出会在输入变化后立即发生,不依赖于时钟的同步。
  Moore机属于异步输出状态机,它的输出仅为当前状态的函数,与当前输入信号无关。当然,当前状态是和上一时刻的输入信号相关的,当前输入的变化必须等待下一时钟到来使状态发生变化时才能导致输出的变化。因此,Moore机比Mealy机多等待一个时钟周期才会引起输出的变化。
  对于状态机另一个需要考虑的就是状态机编码,在表1.1中,列出了几个状态机编码的编码方式,其中二进制码和格雷码是压缩码形式,具体优缺点如下:(1)独热编码。其是使用 N 位寄存器来对 N 个状态进行编码的方式,由表中可知,其在任意时刻只有一位有效位。这种编码方式优点就是状态编码简单,由于是利用面积换取速度的典型应用,所以速度较快,缺点就是占用资源较多,尤其较多的触发器;(2)格雷编码。其是利用一个状态位的变化来表示相邻状态的变化。优点就是不仅降低了误码的概率,还较少了多条状态线的竞争和冒险。缺点就是占用较多的组合逻辑;(3)二进制编码。其是利用二进制数表示相邻的状态变化,其码原值是连续变化的。缺点也是占用较多的组合逻辑。

在这里插入图片描述

  综上,各种编码各有优缺点,针对各自的特点,总结如下:一般的,二进制编码用于小型设计(状态数小于4)使用,当状态数在4到24之间时,独热码编码是首选的,而大型状态机(状态数大于24)设计时使用格雷码编码更高效。
  FSM进行设计优点:
  1)有限状态机能够按照输入信号的控制和预先设定的执行顺序在各个状态间顺畅地切换,具有明显的顺序特征,能够很好地执行顺序逻辑;
  2)有限状态机设计方法非常规范,设计方案相对固定,并能被多数综合工具支持;
  3)采用有限状态机设计,易于构成性能良好的同步时序逻辑,有利于消除大规模逻辑电路中常见的竞争冒险现象;
  4)使用Verilog硬件语言进行有限状态机设计,程序层次分明、结构清晰、易读好懂。模块的修改、优化和移植也非常方便;
  5)在高速运算与控制方面,和CPU相比,状态机具有明显的速度优势。


欢迎大家订阅我的公众号,关于FPGA相关资料和新闻我会第一时间更新到公众号中,谢谢大家!

在这里插入图片描述




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OpenFPGA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值