自动售货机的设计及仿真

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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角。

相关文档
最新文档