有关状态机的文章,事实上已经写过很多了,可是即使如此,真的懂了吗?真的能熟练应用吗?未必吧。这篇博文来源是《FPGA之道》,认真下看去收货颇丰!

借这个主题来梳理下状态机:

状态机简介

状态机是FPGA设计中一种非常重要、非常根基的设计思想,堪称FPGA的灵魂,贯穿FPGA设计的始终。

简单地说,状态机就是一副描绘着状态变迁的状态转移图,它体现着系统对外界事件的反应和行为。

FPGA中的状态机是指有限状态机,简称为FSM,是指状态节点数和输入、输出范围皆有限的状态机。需要说明的是,虽然有限状态机的状态节点和输入、输出皆为有限的,但这并不意味着它仅能进行有限次的处理,这是因为有限状态机可以形成闭环系统,所以可以用有限个状态处理无限的事件,从而到达化有限为无穷的境界。

例如,宇宙中物资的三种最基本的状态:固态,液态和气态,它们之间的状态转移图如下:

从上图可以看出,虽然该状态机仅有三个状态,输入(六个触发条件)、输出(状态本身即为输出)也是有限的,但是它却永远不会结束,因为宇宙中的物理转换永远也不会停止。。。至少可预见的未来不会停止。


状态机的组成六要素:

(1)状态集合:

状态集合是组成状态机的必备要素,该集合里包含了状态机所能达到的所有状态,例如上例中的{固态,液态,气态}。

(2)初态:

初态是状态机的第二必备要素,它是整个状态机开始工作的起点。它的功能类似于一个参考系,它为状态机的其他状态提供参考与标准。

例如上例中,任何一个状态都可以作为初态。

(3)终态

终态是状态机的结束状态,即若状态机达到终态,它的使命也将完成,不再工作。

与初态不同,终态不是状态机的必备要素,大部分运行在FPGA上的状态机是没有终态的,因为它们都需要用有限的状态来处理无限的事件。

(4)输入符号集

输入符号集是驱动状态机进行状态转换的主要因素,不过状态机的状态转换其实并不一定需要外界的事件触发,因此,输入符号集也不是组成状态机的必备要素,但是大部分运行在FPGA上的状态机是需要输入符号集的,至少大多数情况下,需要一个复位信号来让FPGA进入初态。

例如,上例中的输入符号集为{气化,液化,凝华,升华,凝固,融化}。

(5)输出符号集

输出符号集是状态机传递给外界的反馈,不过与输入符号集不同,输出符号集是组成状态机的一个必备要素,因为一个对外界毫无影响、或者在外界看来毫无变化的状态机是没有必要存在的。

例如上例中的输出符号集可以是{温度变化,体积变化,状态变化}

(6)状态转移函数

状态转移函数决定了状态机的行为,它是状态机的必备要素之一,也是状态机最重要的一个组成因素。状态转移函数的表现形式可以由很多种,例如带有说明的有向箭头,状态转移表格等。


状态机的工作四要素

状态机在工作的时候,出于对状态机内在因果关系的考虑,将状态机的工作状态划分为四个要素:现态,输入,输出和次态。其中,现态和输入是因,输出和次态是果。

(1)现态

现态指状态机当前所处的状态。

(2)输入

输入一般指外部事件,当一个外部事件发生后,状态机便会根据状态转移函数发生响应的状态跳转,或者状态机将会更新自己的输出情况。

通常在FPGA中,根据输入信号是异步的还是同步的,又可以将状态机分为异步状态机和同步状态机,不过鉴于稳定性的考虑,以后提到和FPGA相关的状态机都是同步状态机。而对于异步信号,要先同步化后再送至状态机。

(3)输出

输出是由现态或者现态和输入共同决定的。输出符号集是必需的,但是具体到某一状态或者某一输入触发事件,输出并不是必需的,有时候带来的仅仅是状态迁移而已。

(4)次态

次态是根据现态,输入以及状态转移函数所得到的,状态机将要跳转至的新状态。次态是相对于现态而言的,一旦状态迁移完成,次态便变成了新的现态。

这篇博文暂时到此,下篇博文,关于状态机的模型介绍。

【 FPGA 】状态机,FPGA的灵魂相关推荐

  1. (51)FPGA状态机描述(四段式)

    (51)FPGA状态机描述(四段式) 1 文章目录 1)文章目录 2)FPGA入门与提升课程介绍 3)FPGA简介 4)FPGA状态机描述(四段式) 5)技术交流 6)参考资料 2 FPGA入门与提升 ...

  2. (50)FPGA状态机描述(三段式)

    (50)FPGA状态机描述(三段式) 1 文章目录 1)文章目录 2)FPGA入门与提升课程介绍 3)FPGA简介 4)FPGA状态机描述(三段式) 5)技术交流 6)参考资料 2 FPGA入门与提升 ...

  3. (49)FPGA状态机描述(二段式)

    (49)FPGA状态机描述(二段式) 1 文章目录 1)文章目录 2)FPGA入门与提升课程介绍 3)FPGA简介 4)FPGA状态机描述(二段式) 5)技术交流 6)参考资料 2 FPGA入门与提升 ...

  4. (48)FPGA状态机描述(一段式)

    (48)FPGA状态机描述(一段式) 1 文章目录 1)文章目录 2)FPGA入门与提升课程介绍 3)FPGA简介 4)FPGA状态机描述(一段式) 5)技术交流 6)参考资料 2 FPGA入门与提升 ...

  5. (43)FPGA状态机三段式

    (43)FPGA状态机三段式 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)FPGA状态机三段式 5)结语 1.2 FPGA简介 FPGA(Field Programm ...

  6. (42)FPGA状态机二段式

    (42)FPGA状态机二段式 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)FPGA状态机二段式 5)结语 1.2 FPGA简介 FPGA(Field Programm ...

  7. (41)FPGA状态机一段式

    (41)FPGA状态机一段式 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)FPGA状态机一段式 5)结语 1.2 FPGA简介 FPGA(Field Programm ...

  8. FPGA状态机跑飞原因分析

    1.1 FPGA状态机跑飞原因分析 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA状态机跑飞原因分析: 5)结束语. 1.1.2 本节引言 "不积跬步 ...

  9. FPGA状态机一段式

    1.1 FPGA状态机一段式 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA状态机一段式: 5)结束语. 1.1.2 本节引言 "不积跬步,无以至千里 ...

  10. FPGA状态机二段式

    1.1 FPGA状态机二段式 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA状态机二段式: 5)结束语. 1.1.2 本节引言 "不积跬步,无以至千里 ...

最新文章

  1. 对于大数据大流量情况下微软架构的水平扩展的遐想(瞎想)
  2. Ajax的数据发送与接收(jQuery)
  3. 饼图大小调整_Excel图表变形计:个性化的创意饼图,原来可以很快做出来!
  4. 【LoadRunner】安装LoadRunner时提示缺少vc2005_sp1_with_atl_fix_redist解决方案
  5. 关于mysql修改密码 set password for root@localhost = password(‘xxx‘);报错解决方法
  6. project facets中没有dynamic_C++强制类型转换操作符 dynamic_cast
  7. 单元测试框架TestableMock快速入门(七):常用注解参数
  8. 微信公众号文章排版编辑器推荐
  9. qlabel 添加图标_Qt中用QLabel显示图片
  10. [论文笔记]Rob-GAN: Generator, Discriminator, and Adversarial Attacker
  11. 【论文笔记】Expanding holographic embeddings for knowledge completion
  12. 浙江大学的计算机考研难度,浙江大学部分专业考研难度分析
  13. 2.Collection、Iterator迭代器、泛型、斗地主案例
  14. 胃溃疡 ---- 四药同治(丽珠得乐、奥美拉唑、阿莫西林 + 克林霉素)
  15. 不得不说,这是青铜才需要了解的,绝地求生刺激战场段位保护解析
  16. Linux下 安装白鹭(egret)引擎指南
  17. 让小朋友学会LED点阵显示
  18. cv.add cv.addWeighted 的区别
  19. 使用TurboMail邮件系统的智能公文模块
  20. RobotStudio如何配置自定的义第七轴

热门文章

  1. python解析xml提交到hdfs_完美解决python针对hdfs上传和下载的问题
  2. android内存加载dex,安卓8.1版本dex加载流程笔记--第一篇:oatfile,oatdexfile与dexfile...
  3. Android判断CPU是否为x86,如何判断. NET 程序集是否编译为 x86,x64或者任何 CPU_visual-studio_开发99编程知识库...
  4. python装饰器执行顺序_python unittest单元测试框架-3用例执行顺序、多级目录、装饰器、fixtures...
  5. java interface class_java interface和class中的协变
  6. 生成对抗网络GAN综述
  7. 防静电塑料包装袋周围的静电场
  8. 2021年春季学期-信号与系统-第六次作业参考答案-第十一小题
  9. 培养未来工程人才的南科大实践 - 记录
  10. 2020秋季人工神经网络作业登记与批改