【 FPGA 】状态机,FPGA的灵魂
有关状态机的文章,事实上已经写过很多了,可是即使如此,真的懂了吗?真的能熟练应用吗?未必吧。这篇博文来源是《FPGA之道》,认真下看去收货颇丰!
借这个主题来梳理下状态机:
状态机简介
状态机是FPGA设计中一种非常重要、非常根基的设计思想,堪称FPGA的灵魂,贯穿FPGA设计的始终。
简单地说,状态机就是一副描绘着状态变迁的状态转移图,它体现着系统对外界事件的反应和行为。
FPGA中的状态机是指有限状态机,简称为FSM,是指状态节点数和输入、输出范围皆有限的状态机。需要说明的是,虽然有限状态机的状态节点和输入、输出皆为有限的,但这并不意味着它仅能进行有限次的处理,这是因为有限状态机可以形成闭环系统,所以可以用有限个状态处理无限的事件,从而到达化有限为无穷的境界。
例如,宇宙中物资的三种最基本的状态:固态,液态和气态,它们之间的状态转移图如下:
从上图可以看出,虽然该状态机仅有三个状态,输入(六个触发条件)、输出(状态本身即为输出)也是有限的,但是它却永远不会结束,因为宇宙中的物理转换永远也不会停止。。。至少可预见的未来不会停止。
状态机的组成六要素:
(1)状态集合:
状态集合是组成状态机的必备要素,该集合里包含了状态机所能达到的所有状态,例如上例中的{固态,液态,气态}。
(2)初态:
初态是状态机的第二必备要素,它是整个状态机开始工作的起点。它的功能类似于一个参考系,它为状态机的其他状态提供参考与标准。
例如上例中,任何一个状态都可以作为初态。
(3)终态
终态是状态机的结束状态,即若状态机达到终态,它的使命也将完成,不再工作。
与初态不同,终态不是状态机的必备要素,大部分运行在FPGA上的状态机是没有终态的,因为它们都需要用有限的状态来处理无限的事件。
(4)输入符号集
输入符号集是驱动状态机进行状态转换的主要因素,不过状态机的状态转换其实并不一定需要外界的事件触发,因此,输入符号集也不是组成状态机的必备要素,但是大部分运行在FPGA上的状态机是需要输入符号集的,至少大多数情况下,需要一个复位信号来让FPGA进入初态。
例如,上例中的输入符号集为{气化,液化,凝华,升华,凝固,融化}。
(5)输出符号集
输出符号集是状态机传递给外界的反馈,不过与输入符号集不同,输出符号集是组成状态机的一个必备要素,因为一个对外界毫无影响、或者在外界看来毫无变化的状态机是没有必要存在的。
例如上例中的输出符号集可以是{温度变化,体积变化,状态变化}
(6)状态转移函数
状态转移函数决定了状态机的行为,它是状态机的必备要素之一,也是状态机最重要的一个组成因素。状态转移函数的表现形式可以由很多种,例如带有说明的有向箭头,状态转移表格等。
状态机的工作四要素
状态机在工作的时候,出于对状态机内在因果关系的考虑,将状态机的工作状态划分为四个要素:现态,输入,输出和次态。其中,现态和输入是因,输出和次态是果。
(1)现态
现态指状态机当前所处的状态。
(2)输入
输入一般指外部事件,当一个外部事件发生后,状态机便会根据状态转移函数发生响应的状态跳转,或者状态机将会更新自己的输出情况。
通常在FPGA中,根据输入信号是异步的还是同步的,又可以将状态机分为异步状态机和同步状态机,不过鉴于稳定性的考虑,以后提到和FPGA相关的状态机都是同步状态机。而对于异步信号,要先同步化后再送至状态机。
(3)输出
输出是由现态或者现态和输入共同决定的。输出符号集是必需的,但是具体到某一状态或者某一输入触发事件,输出并不是必需的,有时候带来的仅仅是状态迁移而已。
(4)次态
次态是根据现态,输入以及状态转移函数所得到的,状态机将要跳转至的新状态。次态是相对于现态而言的,一旦状态迁移完成,次态便变成了新的现态。
这篇博文暂时到此,下篇博文,关于状态机的模型介绍。
【 FPGA 】状态机,FPGA的灵魂相关推荐
- (51)FPGA状态机描述(四段式)
(51)FPGA状态机描述(四段式) 1 文章目录 1)文章目录 2)FPGA入门与提升课程介绍 3)FPGA简介 4)FPGA状态机描述(四段式) 5)技术交流 6)参考资料 2 FPGA入门与提升 ...
- (50)FPGA状态机描述(三段式)
(50)FPGA状态机描述(三段式) 1 文章目录 1)文章目录 2)FPGA入门与提升课程介绍 3)FPGA简介 4)FPGA状态机描述(三段式) 5)技术交流 6)参考资料 2 FPGA入门与提升 ...
- (49)FPGA状态机描述(二段式)
(49)FPGA状态机描述(二段式) 1 文章目录 1)文章目录 2)FPGA入门与提升课程介绍 3)FPGA简介 4)FPGA状态机描述(二段式) 5)技术交流 6)参考资料 2 FPGA入门与提升 ...
- (48)FPGA状态机描述(一段式)
(48)FPGA状态机描述(一段式) 1 文章目录 1)文章目录 2)FPGA入门与提升课程介绍 3)FPGA简介 4)FPGA状态机描述(一段式) 5)技术交流 6)参考资料 2 FPGA入门与提升 ...
- (43)FPGA状态机三段式
(43)FPGA状态机三段式 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)FPGA状态机三段式 5)结语 1.2 FPGA简介 FPGA(Field Programm ...
- (42)FPGA状态机二段式
(42)FPGA状态机二段式 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)FPGA状态机二段式 5)结语 1.2 FPGA简介 FPGA(Field Programm ...
- (41)FPGA状态机一段式
(41)FPGA状态机一段式 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)FPGA状态机一段式 5)结语 1.2 FPGA简介 FPGA(Field Programm ...
- FPGA状态机跑飞原因分析
1.1 FPGA状态机跑飞原因分析 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA状态机跑飞原因分析: 5)结束语. 1.1.2 本节引言 "不积跬步 ...
- FPGA状态机一段式
1.1 FPGA状态机一段式 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA状态机一段式: 5)结束语. 1.1.2 本节引言 "不积跬步,无以至千里 ...
- FPGA状态机二段式
1.1 FPGA状态机二段式 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA状态机二段式: 5)结束语. 1.1.2 本节引言 "不积跬步,无以至千里 ...
最新文章
- 对于大数据大流量情况下微软架构的水平扩展的遐想(瞎想)
- Ajax的数据发送与接收(jQuery)
- 饼图大小调整_Excel图表变形计:个性化的创意饼图,原来可以很快做出来!
- 【LoadRunner】安装LoadRunner时提示缺少vc2005_sp1_with_atl_fix_redist解决方案
- 关于mysql修改密码 set password for root@localhost = password(‘xxx‘);报错解决方法
- project facets中没有dynamic_C++强制类型转换操作符 dynamic_cast
- 单元测试框架TestableMock快速入门(七):常用注解参数
- 微信公众号文章排版编辑器推荐
- qlabel 添加图标_Qt中用QLabel显示图片
- [论文笔记]Rob-GAN: Generator, Discriminator, and Adversarial Attacker
- 【论文笔记】Expanding holographic embeddings for knowledge completion
- 浙江大学的计算机考研难度,浙江大学部分专业考研难度分析
- 2.Collection、Iterator迭代器、泛型、斗地主案例
- 胃溃疡 ---- 四药同治(丽珠得乐、奥美拉唑、阿莫西林 + 克林霉素)
- 不得不说,这是青铜才需要了解的,绝地求生刺激战场段位保护解析
- Linux下 安装白鹭(egret)引擎指南
- 让小朋友学会LED点阵显示
- cv.add cv.addWeighted 的区别
- 使用TurboMail邮件系统的智能公文模块
- RobotStudio如何配置自定的义第七轴
热门文章
- python解析xml提交到hdfs_完美解决python针对hdfs上传和下载的问题
- android内存加载dex,安卓8.1版本dex加载流程笔记--第一篇:oatfile,oatdexfile与dexfile...
- Android判断CPU是否为x86,如何判断. NET 程序集是否编译为 x86,x64或者任何 CPU_visual-studio_开发99编程知识库...
- python装饰器执行顺序_python unittest单元测试框架-3用例执行顺序、多级目录、装饰器、fixtures...
- java interface class_java interface和class中的协变
- 生成对抗网络GAN综述
- 防静电塑料包装袋周围的静电场
- 2021年春季学期-信号与系统-第六次作业参考答案-第十一小题
- 培养未来工程人才的南科大实践 - 记录
- 2020秋季人工神经网络作业登记与批改