《使用ModelSim自动生成状态机FSM的状态转换图.docx》由会员分享,可在线阅读,更多相关《使用ModelSim自动生成状态机FSM的状态转换图.docx(6页珍藏版)》请在第一文库网上搜索。
1、使用Mode1Sim自动生成状态机FSM的状态转换图HD1代码设计中重要的内容之一就是设计程序的状态机FSM,状态转换控制着整个程序的流程,为了理解程序,我们经常需要把状态机的状态转换图画出来,这样看起来很直观,但是,有没有办法自动生成状态转换图呢?在ISE或者MOde1迎中有没有这样的工具呢?答案是肯定的,Mode1Sim中即有这样的工具,下面以ISE13.4和Mode1Sim6.5为例,使用一段最简单的状态机代码说明如何操作来自动生成状态转换图。代码如下:modu1eTop_fsm(inpute1k,inputrst,outputregfsm_out);parameterID1E=3,d,
2、S1=3,d1,S2=3,d2,S3=3,d3,S4=3,d4,S5=3d5;reg2:0status;a1ways(posedgee1k)if(!rst)beginstatus=ID1E;ende1sebegincase(status)ID1Eibeginfsm_out=1b;status=S1;endS1ibeginfsm_out=1,b1;status=S2;endS2:beginfsm_out=1,b;status=S3;endS3:beginfsm_out=1,b1;status=S4;endS4:beginfsmout=1,b:status=S5;endS5:beginfsm_ou
3、t=1,b1;status=ID1E;enddefau1t:beginfsm_out=1,b;endendcaseendendmodu1e我们在ISE中直接切换到ModeISim仿真模式,如图所示:Design国圉的品凰00View:OImp1ementationMSimu1ationBehaviora1Hierarchy冏NCO_FSM_tTop-fsmCTop_fsm.v)BQxc5v133t-2ff38NoProcessesRuxmingProcesses:Top-fsmMode1SimSimu1atorMSimu1ateBehaviora1Mode1双击SimUIateBehavior
4、a1Mode1,将打开MoCIe1Simo在Mode1Sim中执行VieWFSMIiSt命令,如下图所示:Iode1SiwSE6.5eFi1eEditViewCompi1eSimu1ateAddStructure导sim#VSimCa11StackCapacityC1assBrowserCoverageDataf1owFi1es(n)FSM1ist(g)I1ibrary(y)网1oca1sunitMessageViewern(fast)Memory1ist(w)n(fast)ObjectsUProcesst)Profi1ingt)Project(x)t)Schematic(1)t)Struct
5、ure(z)t)Transcriptt)VerificationManagementP/Instanceg1b1WatchWaveNewWindowSortFi1terJustifyProperties.2j5.然后就会发现Mode1Sim左边这部分的标签多了一项,如下面两幅图的对比:未执行命令前是这样子的:执行完命令是这样子的:这时候在FSM1iSt标签下,可以看到如下内容,双击之:于是出现了下面的状态转换图:SI这时观察生成的状态转换图发现,所有的状态都在复位的情况下返回了状态ID1E,这是我们不期望的,仔细观察这时的菜单栏可以发现,有一个FSMView项:Kode1SiBSE6.5eFi
6、1eEditViCOmPi1eSimu1ateAddFSMViwToo1s1&yoatWindowHe1pJ-(iXXCXjaJ超4旦,*0IIOOPS用S1gShowTransitionsYOptions.5hovTransitionCountsShowTransitionioncMosEnab1eInfoModePopupsTrackWaveCursor将ShOWTransitionstoReset”项前面的对勾去掉,就会发现不显示复位情况下返回状态ID1E了,如下图所示:细心的人会发现状态到了S5并未返回ID1E,但在前面的状态转换图中的确有COnCi2:1这种状态转到状态ID1E,这估计是软件所导致的吧。简单的应用就这些,深一些的功能自己好好探索吧。最后说一下这种自动生成的状态转换图的缺点:因为它默认生成的状态转换图一定是一个圆,所以当你的状态比较复杂时,并非是一个简单的切换时,生成的状态转换图也就会很乱很乱,可读性直接下降,不知道是可以可调节或者有什么更好的生成工具?