← eetop.cn_数字IC设计工程师笔试面试经典100题(大部分有答案)
推荐答案
测试一下
题目
设计一个自动售货机系统,卖soda水的,只能投进三种硬币,要正确的找回钱数。
参考答案与知识点
参考答案
设计自动售货机系统,卖soda水,仅接收三种面值硬币(如0.25元、0.5元、1元),商品价格固定为1.5元。系统需实现投币累计、判断金额、出货控制及找零功能。采用有限状态机(FSM)设计,状态包括:IDLE(空闲)、COLLECT(投币)、ENOUGH(金额足够)、DISPENSE(出货)、CHANGE(找零)及ERROR(错误状态)。硬币输入需经消抖处理,并识别面值,累加至寄存器total。当total≥1.5时,状态转入ENOUGH,输出soda信号,同时计算找零金额(total - 1.5)。找零算法采用贪心策略:优先使用大面值硬币找零,依次尝试1元、0.5元、0.25元,确保找零硬币数量最少。若无法精确找零(如无足够硬币库存),则进入ERROR状态并报警。系统需考虑时间约束:投币过程使用时钟边沿采样,状态转换同步进行。易错点包括:未处理硬币抖动导致误识别、未考虑找零库存不足、状态机遗漏复位路径、找零算法非最优(如未用贪心或产生死循环)。实现时建议使用三段式状态机(状态寄存器、次态逻辑、输出逻辑),并加入超时机制防止无限等待。
涉及知识点
- 有限状态机设计
- 硬币识别与消抖
- 贪心找零算法
- 同步时序逻辑
- 状态转换与输出