状态机应用实例1
AI summary
本文介绍了一个简易自动售货机的状态机应用实例,包括商品、价格、投币方式和找零功能。通过分析用户投币过程,确定状态机的设计思路,并采用状态转移图描述状态机。文中还展示了三种FSM描述方法的设计架构和测试结果。
Last edited time
Sep 24, 2024 01:36 PM
Last edited by
Tags
VendingMachine
FiniteStateMachine
StateTransitionDiagram
一:简易自动售货机
要求:
- 一种商品(可乐),一种价格(2.5元)
- 投币币种(RMB:0.5/1元)
- 售出和找零
- 重复使用功能
二:情景描述
小明此刻非常口渴,想要去买水,看见旁边有一个自动售货机,他就走向自动售货机,所以小明摸了摸口袋,确定有钱,小明开始站在自动售货机面前,准备投币,直到满足当前水的价格,自动售货机会售出商品,小明他就拿到这瓶水,喝了下,开心的离开了。
三:情景分析
- 满足状态机本质
逻辑顺序/时序规律事件。
分析小明投币过程:多次投币,每次投币0.5/1元。
0.5----->0.5----->0.5----->0.5----->0.5 //5次投币(2.5元:只售出不找零)
0.5----->1----->0.5----->0.5 //4次投币(2.5元:只售出不找零)
…
1----->1----->1 //3次投币(3元:既售出又找零)
投币过程属于顺序完成的,故满足状态机本质,可以采用状态机实现。
- 状态机设计思路
以状态入手,考虑状态上对应的动作。
首先确定状态变量的个数,可以将每一次投币认为是一个状态,最多投币5次,最少3次,所以状态最少3个,最多5个。
0.5----->0.5----->0.5----->0.5----->0.5 //5次投币(2.5元:只售出不找零)
1----->1----->1 //3次投币(3元:既售出又找零)
四:状态机描述方式
采用状态转移图描述:STG
五:简易自动售货机实现
- 设计架构
- 三种FSM描述方法
- 一段式FSM
- 二段式FSM
- 三段式FSM
RTL视图:
FSM状态转移图:
测试结果:
RTL视图:
FSM状态转移图:
测试结果:
RTL视图:
FSM状态转移图:
测试结果:
Loading...