请教状态机的嵌套问题
时间:10-02
整理:3721RD
点击:
现在我有两种思路:一种是直接用CASE语句的嵌套来实现状态机的套路。
二种是每个状态机封装成一个module,从主状态机中接出一个信号到子机状态机模块。
这两种方法都靠谱吗?
如果采用第一种方法:
肯定要用到cs,ns,sub_cs,sub_ns四个状态信号吧?
一般状态机第一段要这么写:
always@(posedge clk[/email] or negedge rst)
if(!rst) cs<=idle;
else cs<=ns;
如果用子状态机嵌套的话,上一段代码中,应该加入: sub_cs<=sub_idle; 和一句sub_cs<= sub_ns;
但问题是在于这句sub_cs<= sub_ns;因为在还未发生嵌套过程时,sub_ns是未知的,这样便会影响到sub_cs的值,等嵌套发生时,就会错乱了。
那该如何解决这个问题呢?
请高手们指点迷津,谢谢
二种是每个状态机封装成一个module,从主状态机中接出一个信号到子机状态机模块。
这两种方法都靠谱吗?
如果采用第一种方法:
肯定要用到cs,ns,sub_cs,sub_ns四个状态信号吧?
一般状态机第一段要这么写:
always@(posedge clk[/email] or negedge rst)
if(!rst) cs<=idle;
else cs<=ns;
如果用子状态机嵌套的话,上一段代码中,应该加入: sub_cs<=sub_idle; 和一句sub_cs<= sub_ns;
但问题是在于这句sub_cs<= sub_ns;因为在还未发生嵌套过程时,sub_ns是未知的,这样便会影响到sub_cs的值,等嵌套发生时,就会错乱了。
那该如何解决这个问题呢?
请高手们指点迷津,谢谢
安溪铁观音批发部主要经营
picture
picture

无论何种情况,你的状态机都要处于一个可知的状态,即便你的子状态机没有运行,那也应该是处于初始状态
