FSM是否处于可能的状态?

时间:2013-11-18 09:49:32

标签: vhdl fsm

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

我想做什么?想象一下大本钟的旋律。我想每四分之一小时播放四分之一的旋律。我想要一个具有以下状态的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吗?

如果有什么不清楚,请告诉我,我会尽力澄清。我知道这部分并不难,但我仍然想知道这个实现是否有效。我希望,也会想,它会,虽然我想确定它。

提前多多感谢!

2 个答案:

答案 0 :(得分:2)

具有“内部状态”和“外部状态”的元状态机当然是可能的。我已经做了类似的事情了一段时间,但只是在上周,便士下降了,我终于写了一个状态机,有两个独立的状态。在一个单一的过程SM中,它就像一个梦想。

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

答案 1 :(得分:1)

您可以制作单个FSM以保持简单......

默认状态为IDLE:这将检查时间(整个小时,四分之一或一半),如果其中一个发生,您将只运行以下正确状态: MUSIC_FOR_WHOLE_HOUR,MUSIC_FOR_HALF_PAST ......

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