自动售货机的设计及仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自动售货机的设计及仿真
任务和要求:自动售货机可销售橡皮(0.5元)、铅笔(1元)、直尺(1.5元)、记录本(2元)4种商品,数量无限。只能投入1元或5角硬币,当投入的币值等于或大于商品的价钱且确认购买时,两个输出口分别输出购买的商品和找零,当投币后取消购买,退回投入的硬币,假设零币无限。顾客一次只能购买一种商品的一个,若需要更多商品,需要重复操作。
1)基本功能:商品选择;投币购买;出货、找零、退钱。
2)显示功能:有两个LED数码管显示已经投入的币值或找零数
系统总体设计:
基本功能模块:商品选择模块;投币处理模块;、出货、找零、退钱模块。
自动售货机控制系统共含4个状态:初始状态、投币状态、出货及找零、退钱状态。
1)初始状态(selegoods):表示一次投币销售过程的开始,此状态期间,可选择
商品,不允许投币。
2)投币状态(incoins):计算并记录投入总币值,此状态期间,允许投币,不允
许选择商品。
3)出售及找零状态(outgoods_coin):根据选择商品的价格及投入的总币值,决
定是否出货及找零。
4)退钱状态(back_coin):投币后取消购买,退回投入的硬币。
状态转换图如下表示:
商品选择模块:
功能:选择一种商品获得此商品的价格。
商品选择模块的元件图符商品选择模块的VHDL描述。
注意:为了直观显示商品的价格,价格选择integer,进行功能仿真时,选择价格为unsigned decimal类型。
功能仿真波形及说明:
说明:当en=1时,选择eraser,此商品的价格为5角,price=5。当en=0时,商品选择模块禁止工作,price保持不变。
●投币处理模块
计算并记录投入的总币值。
投币处理模块的VHDL描述:
为了直观显示投入总币值,总币值total选择integer,进行功能仿真时,选择total为unsigned decimal类型。
功能仿真及说明:
说明:当en=1时,投入一枚5角、一枚一元、一枚5角硬币,总币值为20即2元。
●出售、找零或退零模块(主控制器)
注意:状态转换中的IF语句,如果满足条件,转换状态,否则保持原状态。
说明:选择商品的价格price为15,投入币值coins为2,当取消购买cancel_buy=1时,outgoods=0表示未出货,backcoins=20表示退回20。
说明:选择商品的价格price为15,投入币值coins为2,当确认购买ok_buy=1时,outgoods=1表示出货,backcoins=5表示找零5。
自动售货机的设计及仿真
自动售货机整体结构:
仿真结果及说明:
说明:选择rule,price=15,投入一枚1元硬币,coins=10,又投入一枚1元硬币,coins=20,之后,选择取消购买,cancel_buy=1,outgoods=0表示未出货,outcoins=20表示退回投入硬币2元。
说明:选择rule,price=15,投入一枚1元硬币,coins=10,又投入一枚1元硬币,coins=20,之后,
选择确认购买,ok_buy=1,outgoods=1表示出货,outcoins=5表示找零5角。