微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 求助!关于verilog 状态机的嵌套

求助!关于verilog 状态机的嵌套

时间:10-02 整理:3721RD 点击:
顶层有个状态机state(A,B,C……)A中嵌套有一个子状态机(A1,A2,A3……)
比如现在从A2中跳转到B状态如何实现?除了设置一个信号检测还有别的方法吗?谢谢各位!

不用满足条件就直接从A2跳到B?一般来说是要有条件变化的,就用这个条件进行判断即可



   1.有条件跳转   2.无条件跳转
lz二选一就可以了
取决于你的状态机要完成的具体功能

我这几天就在做类似的问题,前几天我也在论坛上面发帖子问主从状态机的问题,后来我问到别人,又试了一下,简要写下主从状态机的实现方法:<br>
假如主状态机如下(A,B,C,D代表不同的状态):<br>
A----&gt;B-----&gt;C------&gt;D------&gt;A<br>
主状态机实现了状态的循环移动,现在我们假设C这个状态下面需要嵌套一个从状态机,假设从状态机如下:<br>
SA-----&gt;SB------&gt;SC-----&gt;SD--------&gt;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应该设为公用状态。两个状态机都该包括,新人看法,不对勿怪。

这样的设计风格有问题,建议修改架构

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top