【问题标题】:Is a FSM in a state possible?处于某种状态的 FSM 是否可能?
【发布时间】:2013-12-01 10:04:15
【问题描述】:

我想知道是否可以实现以下内容。

我想做什么?想象一下大本钟的旋律。我想每一刻钟播放四分之一的旋律。我想要一个具有以下状态的 FSM:

  • 整小时(所以 xx:00)=(输入 = 01)
  • 过去四分之一/四分之一(所以 xx:15 / xx:45)=(输入 = 10)
  • 半过去(所以 xx:30)=(输入 = 11)。

(xx = 不在乎)

对于每个州,我都有另一个 FSM。此 FSM 将确保音乐正确播放。

If(state = whole hour)
{
   switch music_state
   case A
   { play 1 sec, next_music_state = F}
   case and so on ......

这行得通吗?我可以制作一个具有一小时不同状态的 FSM,并且每个状态都有另一个 FSM?

如果有什么不清楚的地方,请告诉我,我会尽力澄清。我知道这部分并不难,但我仍然想知道这个实现是否可行。我希望并且也认为它会,尽管我想确定这一点。

提前非常感谢!

【问题讨论】:

    标签: vhdl fsm


    【解决方案1】:

    同时具有“内部状态”和“外部状态”的元状态机当然是可能的。我已经做了一段时间类似的事情,但直到上周一分钱才下降,我终于写了一个具有两个独立状态的状态机。在单个进程 SM 中,它像梦一样工作。

    “内部状态机”与普通状态机一样运行,但在其最后一个状态下,您测试元状态或外部状态,以确定接下来将外部序列的哪一部分发送到。

    【讨论】:

      【解决方案2】:

      您可以制作单个 FSM 以使其简单...

      默认状态为空闲:这将检查时间(整点、一刻钟或半点),如果其中一个发生,您只需运行适当的状态,例如: MUSIC_FOR_WHOLE_HOUR、MUSIC_FOR_HALF_PAST ...

      这些状态将运行它们不同的状态链,播放它们的音乐并返回 IDLE 状态以等待下一个适当的时间再次播放。

      【讨论】:

      • 哇,我从来没有这样想过。这“更容易”,并且需要更少的空间。谢谢:)
      猜你喜欢
      • 2017-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-01
      • 2023-03-24
      • 2012-06-08
      • 2021-12-17
      • 1970-01-01
      相关资源
      最近更新 更多