算法状态机
![本页使用了标题或全文手工转换](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
算法状态机(英语:Algorithmic State Machine,缩写:ASM)方法是设计有限状态机的一种方法。在数字电路设计中,算法状态机图是对时序逻辑状态转移的一种图形描述。在功能上,算法状态机图与状态图类似。[1]:516
与流程图的区别
在外观上,算法状态机图与计算机程序设计的流程图使用了相当类似的图形符号,但是二者具有很大的差异。这种差异是软体设计和硬体设计的本质差异导致的:硬体数位电路的状态转移是根据定时器讯号来实现同步的,即每过一个时脉“步进”一个状态,因此算法状态机的状态转移包含著时脉的讯号,相邻状态的转移所跨越的时间往往精确单个时间脉冲,而软体程式设计则一般不包含时间脉冲讯号。[2]:81[1]:518[3]
设计步骤
利用算法状态机方法来设计有限状态机,需要依次完成以下步骤:
- 根据需要完成的状态跳转功能,创建一组对应的算法,可以使用伪代码来描述电路模块的所需工作流程;
- 将伪代码转换到算法状态机图(ASM图);
- 根据算法状态机图设计数据路径;
- 在数据路径的基础上完成算法状态机图的其他细节;
- 为算法状态机的各个状态之间的转移设计控制逻辑单元。
算法状态机图
![](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/8/86/ASM_Chart_State_Box.png)
![](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/c/c7/ASM_Chart_Decision_Box.png)
![](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/c/c9/ASM_Chart_Conditional_Output_Box.png)
算法状态机图(ASM图)由四中基本元素:状态名称、状态盒、状态决定盒和条件输出盒,后三者之间用箭头连接起来。由于摩尔型有限状态机的输出只与当前的状态有关,因此其输出情况被标注在状态盒内部,而米利型有限状态机的状态块中不会标注输出情况。[2]:82
- 状态名:有限状态机各个状态的名称被标注在一个状态块的左上角,有时还可以标注上该状态所分配到的状态码。
- 状态盒:其外形为一个长方形方块,摩尔型有限状态机的输出由状态盒表示(输出只与当前状态有关[4]:82)。
- 状态决定盒:其外形为一个菱形块,这个方块会标注上即将被测试的表达式,然后对应不同的测试结果,给出不同的处理路径。算法状态机的状态决定盒一般具有一个输入路径和两个输出路径(分别对应条件满足和条件不满足)。状态决定盒的选择条件表达式是两个输入变量的函数。
- 条件输出盒:其外形为一个圆角方形块,米利型有限状态机的输出由条件输出盒表示(输出与当前状态和输入信号同时有关[4]:82)。
数据路径
当有限状态机的时序逻辑电路用寄存器传输级硬件描述语言代码描述之后,综合工具会自动生成一系列数据路径部件。过程代码块中被赋值的变量在实际的硬件电路中可以通过硬件寄存器来实现数据的储存。根据不同赋值操作实现的功能,这样的硬件寄存器可以是单纯的寄存器、移位寄存器、计数器或其他含有组合逻辑网络的触发器电路(组合逻辑网络可以是加法器、减法器、数据选择器的各种组合方式)。
参考文献
- ^ 1.0 1.1 Stephen Brown, Zvonko Vranesic. Fundamentals of Digital Logic with Verilog Design. McGraw-Hill Education. 2002. ISBN 0-07-283878-7.
- ^ 2.0 2.1 Mark Zwolinski. SystemVerilog数字系统设计(原书名:Digital System Design with SystemVerilog). 电子工业出版社. ISBN 978-7-121-12456-3.
- ^ Flowcharts and Algorithmic State Machines (ASM) (PDF). University of Arizona. [2013-07-12]. (原始内容 (PDF)存档于2014-02-11).
- ^ 4.0 4.1 David Money Harris, Sarah L. Harris. 数字设计与计算机体系结构. 机械工业出版社. ISBN 978-7-111-25459-1.