1、状态图输入,FPGA系统设计与实践,基于ISE5.2的设计输入方法,3.1.3 状态图输入,状态图输入法用于设计状态机。状态图直观,易于理解,修改方便。在ISE5.2软件中集成了状态图输入(StateCAD), StateCAD提供了强大的查错,纠错,优化,HDL代码生成,仿真等功能,在很大程度上保证了状态机的高效性,稳定性,容错性。StateCAD是状态机设计的一个综合性的工具。,3.1.3 状态图输入,本节以一个简单的受控制的三状态计数器的状态机为例,讲解如何使用ISE5.2集成的StateCAD 设计状态机。,1. 设计内容和设计要求,(1)系统端口定义,1. 设计内容和设计要求,(2)
2、状态机的状态定义,1. 设计内容和设计要求,(3)状态机设计要求:,系统复位后进入Idle状态,dout输出为全0,当复位无效,并且控制信号为1的时,进入Cou状态,计数器开始计数(计数器使用的时钟为CLK)。,当前状态为Cou时,如果控制信号C为0则进入Stop状态,停止计数。,当前状态为Stop时,如果控制信号C为1则进入Cou状态。,2. 新建立一个工程,3. 新建State Diagram输入文件,生成的StateCAD工作环境,画状态图,4.画状态图状态机向导,状态机形状,状态数,4.画状态图状态机复位向导,复位模式选择,4.画状态图转换设置向导,环行返回,下一个状态为本状态,进入下
3、一状态,进入前一状态,生成的状态图,5.编辑状态图编辑各个状态的名称,输出向导,调整状态名的位置,输出调整,状态编辑向导,双击状态图图标,状态名调整后的状态图,5. 编辑状态图输出向导设置,idle的设置,5. 编辑状态图输出向导设置,cou的设置,stop的设置,设定好输出的状态图,6. 状态间的转换和转换条件,完成了状态机的输出后,下一步要求描述状态之间的转换和转换条件。根据设计要求,如上图中从stop状态到Idle状态的转换是不存在的,而设计中应该存在从stop状态转换到cou的转换过程。所以,有必要去掉从stop到Idle的转换,添加从stop到cou的转换。,删除状态转换,(1)单击
4、需要去掉的转换箭头,使其处于高亮状态,然后按Delete键便可以删除此转换。,添加状态转换,(2)选择左边工具栏的 (添加转换)按钮,单击stop状态,然后将鼠标移到cou状态图标,此时转换箭头会自动吸附到状态图标,单击鼠标左键完成状态转换。可以通过拖动箭头线旁小方快改变线条的形状,使其更美观。,设定转换条件,双击状态转换线处,转换条件编辑,转换条件,设定好转换条件的状态转换图,7. 状态机编译与保存,选择菜单Option Compile,弹出编译结果对话框。如右图所示。从对话框中可以看到很多重要的信息和数据,例如:生成代码总的行数,所用的时间,占用了多少内存;状态机状态的个数,可能出现的状态转换的数目。,生成的HDL代码,StateCAD生成的代码是经过优化了的。如果想使用这些代码,在关闭StateCAD HDL Brower后,须保存该设计。,8.将StateCAD生成的代码加入工程,(1).进入Project Navigator,选择Project Add source,选择My_cou文件。,8.将StateCAD生成的代码加入工程,(2).选择VHDL Module(VHDL模型),8.将StateCAD生成的代码加入工程,