推荐答案
测试一下
题目
设计目标:用状态机实现一个自动贩卖机,里面的商品固定价格为2.5元。我们可以投 0.5 元,1 元,2 元,贩卖机需要能输出商品和找零。
参考答案与知识点
参考答案
状态机设计:定义状态以0.5元为单位,累计金额S0~S5(0~2.5元)。输入编码:0.5元=1,1元=2,2元=4。状态跳转:当前状态+输入值,若结果≤5则跳转到对应状态;若结果>5则跳转到S0(商品输出+找零)同时输出找零金额(结果-5)。例如S2(1元)投入2元(4)得6,>5,输出商品及找零1元(6-5=1)。输出逻辑:Mealy型,在跳转时按条件输出。需注意:状态S5(2.5元)收到任何投币都会超,输出商品并找零(投入-0.5元)。易错点:忽略找零计算,或未考虑连续投币至超限后的状态复位。实际可用三段式状态机实现:第一段时序逻辑状态跳转,第二段组合逻辑次态与输出,第三段时序输出寄存。
涉及知识点
- 状态机设计方法(Moore/Mealy)
- 状态编码与输入映射
- 找零逻辑的数学处理
- 三段式状态机实现
- 投币序列与连续操作
- 超累金额的复位与输出