你将如何解决这个有限状态机 (Moore)?
How would you solve this finite-state-machine (Moore)?
我正在尝试使用 Moore 的机器来解决一个练习,但我有点困惑。不知道需要多少状态
输入:
- A(开关):切换自动和手动模式。
- P (push-button): 按下时给出高电平。
- D (motion detector): 检测到运动给高电平
输出:
- L (lamp).
条件:
- 如果我们处于手动模式,如果我们按下 "P",L 将改变(从 0 到 1)或(1 到 0)。我们需要重新按下按钮才能再次更改 L(按住手指无效)。
- 如果我们处于自动模式,L 将在 "D" 检测移动时启用。
- 用户永远不会同时推送 "A" 和 "P"。
- 当您从自动切换到手动或从手动切换到自动时,lamp 必须通过低电平。
- 当您从自动更改为手动时,lamp 将在检测移动时保持高电平。
最大的问题是最后的条件。我不知道我该如何处理它们。我是否需要为这些条件创建额外状态?你会按照什么步骤来解决这个问题?
提前致谢
首先,为自动和手动情况设计单独的有限状态机。自动案例只需要两种状态(lamp 开或关)。手动案例需要4个状态来跟踪自上次按下后按钮是否被释放。
然后根据开关 A 的值在这些机器之间添加转换。仅在 lamp 关闭的状态之间添加转换。这将确保最后两个条件成立。如果 lamp 在切换 A 时打开,则在机器转换到 "lamp off" 状态之前不会发生任何事情。
我正在尝试使用 Moore 的机器来解决一个练习,但我有点困惑。不知道需要多少状态
输入:
- A(开关):切换自动和手动模式。
- P (push-button): 按下时给出高电平。
- D (motion detector): 检测到运动给高电平
输出:
- L (lamp).
条件:
- 如果我们处于手动模式,如果我们按下 "P",L 将改变(从 0 到 1)或(1 到 0)。我们需要重新按下按钮才能再次更改 L(按住手指无效)。
- 如果我们处于自动模式,L 将在 "D" 检测移动时启用。
- 用户永远不会同时推送 "A" 和 "P"。
- 当您从自动切换到手动或从手动切换到自动时,lamp 必须通过低电平。
- 当您从自动更改为手动时,lamp 将在检测移动时保持高电平。
最大的问题是最后的条件。我不知道我该如何处理它们。我是否需要为这些条件创建额外状态?你会按照什么步骤来解决这个问题?
提前致谢
首先,为自动和手动情况设计单独的有限状态机。自动案例只需要两种状态(lamp 开或关)。手动案例需要4个状态来跟踪自上次按下后按钮是否被释放。
然后根据开关 A 的值在这些机器之间添加转换。仅在 lamp 关闭的状态之间添加转换。这将确保最后两个条件成立。如果 lamp 在切换 A 时打开,则在机器转换到 "lamp off" 状态之前不会发生任何事情。