lijieamd 发表于 2012-4-17 21:13:54

关于状态机,状态超时的问题,请教大家

我想用VHDL写一个状态机,其中某些状态有特定的时间限制,如果超时就转换到别的状态
请问有没有什么好的实现方法

Linux2.6 发表于 2012-4-17 21:32:59

在状态机里面做计时啊.
THIS_STATE:
    if(condition)begin
        state <= NEXT_STAT;
    end
    else begin
        if(cnt == WAIT_TIME)begin
          state <= STATE_OVERTIME;
          cnt <= 0;
        end
        else begin
          cnt <= cnt +1'b1;
        end
    end

Linux2.6 发表于 2012-4-17 21:33:52

楼主,sorry。。。忘了看是VHDL了,不过基本思想是一样的,你自己改成VHDL代码吧。

lijieamd 发表于 2012-4-17 21:55:58

Linux2.6 发表于 2012-4-17 21:33 static/image/common/back.gif
楼主,sorry。。。忘了看是VHDL了,不过基本思想是一样的,你自己改成VHDL代码吧。 ...

谢谢你的回复,我看看

NJ8888 发表于 2012-4-17 21:57:38

以前写两段状态机,也碰到超时问题,由于状态改变是在组合逻辑中处理,就碰到计时问题,因为计时要在带时钟的那一段处理,这样碰到多重源问题,没法,只好写成一段式的状态机。不知道哪位高人能在多段状态机中完美加入超时机制

lijieamd 发表于 2012-4-17 22:04:23

NJ8888 发表于 2012-4-17 21:57 static/image/common/back.gif
以前写两段状态机,也碰到超时问题,由于状态改变是在组合逻辑中处理,就碰到计时问题,因为计时要在带时钟 ...

也就是说两段式状态机就不能在组合逻辑状态转换的PROCESS里面进行count了,是吗

Linux2.6 发表于 2012-4-17 22:06:02

lijieamd 发表于 2012-4-17 22:04 static/image/common/back.gif
也就是说两段式状态机就不能在组合逻辑状态转换的PROCESS里面进行count了,是吗 ...

真聪明,所以我一般都不使用两段式。

NJ8888 发表于 2012-4-17 22:07:37

lijieamd 发表于 2012-4-17 22:04 static/image/common/back.gif
也就是说两段式状态机就不能在组合逻辑状态转换的PROCESS里面进行count了,是吗 ...

能的,带时钟的计数,逻辑中判断。反正后来我换成单段的,综合结果资源也少。

lijieamd 发表于 2012-4-17 22:07:41

Linux2.6 发表于 2012-4-17 22:06 static/image/common/back.gif
真聪明,所以我一般都不使用两段式。

能否劳烦给一个一段式的VHDL示例,那个verilog的看不太明白
页: [1]
查看完整版本: 关于状态机,状态超时的问题,请教大家