前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >状态机的概念与设计

状态机的概念与设计

作者头像
timerring
发布2023-02-24 08:52:05
5410
发布2023-02-24 08:52:05
举报
文章被收录于专栏:TechBlog

⭐本专栏针对FPGA进行入门学习,从数电中常见的逻辑代数讲起,结合Verilog HDL语言学习与仿真,主要对组合逻辑电路与时序逻辑电路进行分析与设计,对状态机FSM进行剖析与建模。 🔥文章和代码已归档至【Github仓库:hardware-tutorial】,需要的朋友们自取。或者公众号【AIShareLab】回复 FPGA 也可获取。

文章目录

状态机的基本结构及类型

有限状态机的标准模型如图所示,它主要由三部分组成:

  1. 下一状态的逻辑电路(组合电路);
  2. 存储状态机当前状态的时序逻辑电路(时序电路);
  3. 输出组合逻辑电路(组合电路)。

一般情况下,状态触发器的数量是有限的,其状态数也是有限的,故称为有限状态机(Finite State Machine,简称为FSM)。状态机中所有触发器的时钟输入端被连接到一个公共时钟脉冲源上,其状态的转换是在同一时钟源的同一脉冲边沿同步进行的,所以它也被称作时钟同步状态机。

一般来说,状态机的基本操作主要有以下两种:

  1. 状态机的内部状态转换。
  2. 产生输出信号序列。

根据电路的输出信号是否与电路的输入有关,可以将状态机分为两种类型:一类是米利型(Mealy)状态机,电路的输出信号不仅与电路当前的状态有关,还与电路的输入有关;另一类是穆尔型(Moore)状态机,电路输出仅仅取决于各触发器的状态,而不受电路当时的输入信号影响或没有输入变量。

状态机的状态图表示法

Mealy型

上图是米利型状态图的一个例子。在状态图中,每个状态用一个圆圈表示,圆圈内有指示状态的符号。用带箭头的方向线指示状态转换的方向,当方向线的起点和终点都在同一个圆圈上时,则表示状态不变。

一般来说,状态机中的状态转移有两种方式:无条件转移和有条件转移。在图中,从状态A转移到状态B为无条件转移,其它状态之间的转移都是有条件要求的。

Moore型

需要强调指出,米利型状态图中,输出值的表示方法容易引起读者的误解。当状态机处于所在的状态,并且在所示的输入的作用下,就会产生输出值,并非在状态机转移到下一状态时才出现输出。由于穆尔型电路的输出只依赖于状态机的当前状态,其状态图的表示方法略有不同,通常将输出变量写在表示状态的圆圈内部,图是穆尔型状态图表示的例子。

状态机的设计步骤

一般来说,状态机的设计步骤如下所示:

  1. 依据具体的设计原则,确定采用状态机类型:穆尔型状态机还是米利型状态机。
  2. 分析设计要求,列出状态机的所有状态,并对每一个状态进行状态编码。
  3. 根据状态转移关系和输出函数,画出状态图(状态表)。
  4. 根据所画的状态图,采用硬件描述语言对状态机进行描述。

第3步是最困难也是最有创造性的一步。状态图直观地反映了状态机各个状态之间的转换关系以及转换条件,但要求设计的状态个数不能太多。状态个数较多,采用状态表的方法列出状态机的转移条件。输出信号较多,可采用输出逻辑真值表进行表示。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 状态机的基本结构及类型
  • 状态机的状态图表示法
    • Mealy型
      • Moore型
      • 状态机的设计步骤
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档