状态机应用实例1

AI summary
本文介绍了一个简易自动售货机的状态机应用实例,包括商品、价格、投币方式和找零功能。通过分析用户投币过程,确定状态机的设计思路,并采用状态转移图描述状态机。文中还展示了三种FSM描述方法的设计架构和测试结果。
Last edited time
Sep 24, 2024 01:36 PM
Last edited by
Tags
VendingMachine
FiniteStateMachine
StateTransitionDiagram

一:简易自动售货机

要求:
  1. 一种商品(可乐),一种价格(2.5元)
  1. 投币币种(RMB:0.5/1元)
  1. 售出和找零
  1. 重复使用功能

二:情景描述

小明此刻非常口渴,想要去买水,看见旁边有一个自动售货机,他就走向自动售货机,所以小明摸了摸口袋,确定有钱,小明开始站在自动售货机面前,准备投币,直到满足当前水的价格,自动售货机会售出商品,小明他就拿到这瓶水,喝了下,开心的离开了。

三:情景分析

  1. 满足状态机本质
    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元:既售出又找零)
      投币过程属于顺序完成的,故满足状态机本质,可以采用状态机实现。
  1. 状态机设计思路
    1. 以状态入手,考虑状态上对应的动作。
      首先确定状态变量的个数,可以将每一次投币认为是一个状态,最多投币5次,最少3次,所以状态最少3个,最多5个。
      0.5----->0.5----->0.5----->0.5----->0.5 //5次投币(2.5元:只售出不找零)
      1----->1----->1 //3次投币(3元:既售出又找零)

四:状态机描述方式

采用状态转移图描述:STG
notion image

五:简易自动售货机实现

  1. 设计架构
    1. notion image
  1. 三种FSM描述方法
      • 一段式FSM
        • RTL视图:
          notion image
          FSM状态转移图:
          notion image
          测试结果:
      • 二段式FSM
        • RTL视图:
          notion image
          FSM状态转移图:
          notion image
          测试结果:
          notion image
      • 三段式FSM
        • RTL视图:
          notion image
          FSM状态转移图:
          notion image
          测试结果:
          notion image
Loading...