求助!关于verilog 状态机的嵌套
比如现在从A2中跳转到B状态如何实现?除了设置一个信号检测还有别的方法吗?谢谢各位!
不用满足条件就直接从A2跳到B?一般来说是要有条件变化的,就用这个条件进行判断即可
1.有条件跳转 2.无条件跳转
lz二选一就可以了
取决于你的状态机要完成的具体功能
我这几天就在做类似的问题,前几天我也在论坛上面发帖子问主从状态机的问题,后来我问到别人,又试了一下,简要写下主从状态机的实现方法:<br>
假如主状态机如下(A,B,C,D代表不同的状态):<br>
A---->B----->C------>D------>A<br>
主状态机实现了状态的循环移动,现在我们假设C这个状态下面需要嵌套一个从状态机,假设从状态机如下:<br>
SA----->SB------>SC----->SD-------->SA<br>
在这里面,主状态进入C之后,立即给一个enable信号,启动从状态机,这个时候设置一个从状态机的完成信号finish(高电平有效),在主状态机里面,最开始初始化的时候设置finish为低,然后主状态机里面一直不停的检测这个finish信号,当finish信号为高的时侯,就进入下一个主状态。<br>
再来说从状态机,SA里面首先也作一个不停的检测,即检测enable信号,当检测到enable信号到来的时候,从状态机启动,进入SB,于是从状态机开始工作,等到从状态机运行结束之后,finish信号置高,从状态机完成,从状态机回到SA状态,重新检测下一个enable信号的到来。<br>
这样做的话,就要求enable信号是一个脉冲信号(至于如何实现脉冲信号,我就不多说了)。enable和finish信号仅仅用于连接两个状态机。<br>
最后,我还想说,其实enable和finish似乎可以不用脉冲信号,用电平信号也应该可以,原理大体相同,就开如何置位了。<br>
不知道我说清楚没有
这个大家讨论讨论。看看怎么实现起来能好些
finish信号在主状态机和从状态机里面都有赋值,会产生多重驱动的问题吗?
做过,但是觉得不好,
最好还是该设计吧。
感谢小编,感谢小编的热心奉献!
感谢小编,感谢小编的热心奉献!
3楼是正解
记得前段时间我编了个状态机嵌套的,是用的finish信号
我是新手,但是我觉得你的设计不好。我觉得既然你要跳到那个代码,那么B应该设为公用状态。两个状态机都该包括,新人看法,不对勿怪。
这样的设计风格有问题,建议修改架构
