⭐本专栏针对 FPGA 进行入门学习,从数电中常见的逻辑代数讲起,联合 Verilog HDL 语言学习与仿真,次要对组合逻辑电路与时序逻辑电路进行剖析与设计,对状态机 FSM 进行分析与建模。
🔥文章和代码已归档至【Github 仓库:hardware-tutorial】,须要的敌人们自取。或者关注公众号【AIShareLab】,回复 FPGA 也可获取。
状态机的概念与设计
状态机的根本构造及类型
无限状态机的规范模型如图所示,它次要由三局部组成:
- 下一状态的逻辑电路(组合电路);
- 存储状态机以后状态的时序逻辑电路(时序电路);
- 输入组合逻辑电路(组合电路)。
个别状况下,状态触发器的数量是无限的,其状态数也是无限的,故称为无限状态机(Finite State Machine,简称为 FSM)。状态机中所有触发器的时钟输出端被连贯到一个公共时钟脉冲源上,其状态的转换是在同一时钟源的同一脉冲边际同步进行的,所以它也被称作时钟同步状态机。
一般来说,状态机的基本操作次要有以下两种:
- 状态机的外部状态转换。
- 产生输入信号序列。
依据电路的输入信号是否与电路的输出无关,能够将状态机分为两种类型:一类是米利型(Mealy)状态机,电路的输入信号不仅与电路以后的状态无关,还与电路的输出无关;另一类是穆尔型(Moore)状态机,电路输入仅仅取决于各触发器的状态,而不受电路过后的输出信号影响或没有输出变量。
状态机的状态图表示法
Mealy 型
上图是米利型状态图的一个例子。在状态图中,每个状态用一个圆圈示意,圆圈内有批示状态的符号。用带箭头的方向线批示状态转换的方向,当方向线的终点和起点都在同一个圆圈上时,则示意状态不变。
一般来说,状态机中的状态转移有两种形式:无条件转移和有条件转移。在图中,从状态 A 转移到状态 B 为无条件转移,其它状态之间的转移都是有条件要求的。
Moore 型
须要强调指出,米利型状态图中,输入值的示意办法容易引起读者的误会。当状态机处于所在的状态,并且在所示的输出的作用下,就会产生输入值,并非在状态机转移到下一状态时才呈现输入。因为穆尔型电路的输入只依赖于状态机的以后状态,其状态图的示意办法略有不同,通常将输入变量写在示意状态的圆圈外部,图是穆尔型状态图示意的例子。
状态机的设计步骤
一般来说,状态机的设计步骤如下所示:
- 根据具体的设计准则,确定采纳状态机类型:穆尔型状态机还是米利型状态机。
- 剖析设计要求,列出状态机的所有状态,并对每一个状态进行状态编码。
- 依据状态转移关系和输入函数,画出状态图 (状态表)。
- 依据所画的状态图,采纳硬件描述语言对状态机进行形容。
第 3 步是最艰难也是最有创造性的一步。状态图直观地反映了状态机各个状态之间的转换关系以及转换条件,但要求设计的状态个数不能太多。状态个数较多,采纳状态表的办法列出状态机的转移条件。输入信号较多,可采纳输入逻辑真值表进行示意。
参考文献:
- Verilog HDL 与 FPGA 数字零碎设计,罗杰,机械工业出版社,2015 年 04 月
- Verilog HDL 与 CPLD/FPGA 我的项目开发教程 (第 2 版), 聂章龙, 机械工业出版社, 2015 年 12 月
- Verilog HDL 数字设计与综合 (第 2 版), Samir Palnitkar 著,夏宇闻等译, 电子工业出版社, 2015 年 08 月
- Verilog HDL 入门 (第 3 版), J. BHASKER 著 夏宇闻甘伟 译, 北京航空航天大学出版社, 2019 年 03 月
欢送关注公众号【AIShareLab】,一起交换更多相干常识,前沿算法,Paper 解读,我的项目源码,面经总结。