10.1.3 FSM(状态图编辑器)录入方法
FSM即有限状态机,状态图编辑器(State Diagram Editor)就是采用状态图方式进行FSM设计的工具。
下面以控制器的FSM设计为例来具体介绍Active-HDL的FSM录入方法。控制器有三个输入端口start、reset、clk和两个输出端口en、end_reset。控制器的状态图如图10.24所示。
图10.24 控制器状态机
在创建好的设计工程中,通过选择“File→New→State Diagram”,即可启动FSM录入方法进行状态机设计,如图10.25所示。
图10.25 启动FSM编辑器
接着出现如图10.26所示的新源文件创建向导对话框。
图10.26 新源文件创建向导对话框
点击“下一步”进入如图10.27所示的语言选择窗口。本例中选择VHDL,这将决定对应设计在编译后自动生成VHDL源代码。
图10.27 自动生成代码的语言类别选择
点击“下一步”进入如图10.28所示的命名窗口。在图中依次录入控制器FSM的文件名、实体名和构造体名。
图10.28 命名窗口
接下来进行端口定义,如图10.29所示。本设计共定义输入三个端口clk、reset、start和两个输出端口end_reset、en。
图10.29 端口定义
点击“完成”进入如图10.30所示的状态机时钟选择提示对话框。
图10.30 状态机时钟选择
本例中选择“是(Y)”,随即进入如图10.31所示的FSM状态图编辑窗口。
图10.31 FSM状态图编辑主窗口
在进行状态图编辑前还需要完成端口的属性设置。本例中需要将状态机的输出端口end_reset和en设置为寄存器类型(Registered),如图10.32所示。
图10.32 输出端口属性设置
端口属性设置完成后的效果如图10.33所示。
图10.33 端口属性设置完成
本例控制器FSM状态图的编辑,首先需要画出三个状态。通过选择“FSM→State”即可进入状态绘制命令。如图10.34所示画出三个状态,并双击状态名将其修改成需要的命名。
图10.34 画出状态并完成状态命名
通过选择“FSM→Transition”进入状态转换关系绘制命令,如图10.35所示,绘出三个状态的转换关系。
图10.35 给出状态转换关系
通过选择“FSM→RESET”进入复位设置绘制命令,如图10.36所示,给出复位关系。
图10.36 给出复位关系
在状态图编辑窗口点击鼠标右键,选择“Properties”进入如图10.37所示的复位属性设置窗口,本例中设置reset类型为“Asynchronous”,reset有效电平为“Low”。
图10.37 状态机属性设置窗口
通过选择“FSM→Condition”进入状态转换条件设置命令,如图10.38所示,给出每一个状态转换的条件。
图10.38 状态转换条件设置
最后需要进行状态动作的定义。通过选择“FSM→Action→State”进入状态动作设置命令,如图10.39所示,给出每一个状态动作的源代码。
图10.39 状态动作的定义
到此为止,FSM状态图编辑全部完成。保存并编译,Active-HDL会自动生成VHDL格式的控制器FSM源程序代码。如图10.40所示给出了FSM源程序部分代码的截图。
图10.40 工具自动生成的控制器FSM的VHDL源代码截图
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。