首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在延迟后分配状态

如何在延迟后分配状态
EN

Stack Overflow用户
提问于 2015-12-03 07:40:49
回答 1查看 661关注 0票数 0

是否可以在延迟后分配状态更改?

我正在做一个红绿灯控制器,我想在4秒后从黄色状态转换。

代码语言:javascript
复制
always @(next_state, EW, Count)
begin
    case (next_state)
    s0: if (EW&Count) next_state = s1; else next_state = s0;
    s1: #4 next_state = s2;
    s2: if ((~EW&~Count)|(~EW&Count)|(EW&Count)) next_state = s3; else next_state = s2;
    s3: #4 next_state = s0;

    endcase
end
EN

回答 1

Stack Overflow用户

发布于 2016-01-09 07:58:37

创建两台机器。点灯机器和定时器。

当灯机器进入状态时,它设置连接到灯的输出,并将延迟长度发送到定时器。定时器开始计数,在给定的延迟后,它将滴答声发送到照明机。然后,您可以快速测试灯光机器,而无需等待计时器(当您断开连接时)。

Timer不完全是有限自动机,但它可以局部地模拟它,并具有相同的接口,因此您可以轻松地在它们之间传递消息。

我猜红绿灯只是你真正问题的简单化。对于这样简单的问题,分离可能看起来有点夸张,但处理多台更简单的机器比处理一台大型复杂机器更容易。因此,如果您的真实机器不是微不足道的,那么分离将会有所帮助。

您还可以将单独的灯光视为单独的简单机器,以便可以单独测试它们。各种状态机验证工具,如Uppaal,都可以可视化它们。

你也可能对Timed Automata theory感兴趣。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34055240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档