自动销售机控制器设计
采用FSM设计并利用Nexys4开发板来实现一个饮料自动投币售卖机的控制器。
设计内容
- 自动销售机销售两类商品,一类售价2.5元,另一类售价5元,该贩卖机只能辨识1元,10元两种人民币;
- 销售机处于售卖状态时显示“Hello”状态,当投入1元时,机器会进入余额不足的状态,直到投入的金额大于2.5元为止。如果一次投入10元,则可以选择所有的产品,否则就只能选择2.5元的产品;
- 完成选择后,将会卖出商品并且找回剩余的零钱,随后,机器又将返回售卖状态。
设计思路
综合分析设计内容,自动销售机的控制器设计如下。
控制器
- 饮料自动投币售卖机控制器结构参见图1-1所示,自动销售机的电源开关同时作为电路总清零信号(Reset),当Reset = Off不工作、为On时电路进入初始状态,且电源指示灯亮(又称售卖机运行指示灯),控制器初始状态为“S0”并且显示“Hello”。
- a.Reset作为电路总清零信号;
- b.系统时钟(clk)作为系统的同步信号;
- c.售卖开始(op_start):Op_start =“1”表示客户开始操作时的启动信号;
- d.币值识别(coin_val):经由人民币识别器给出的已投入的币值(具体定义:coin_val =“b01”表示1元,coin_val =“b10”表示2元。。。。。);
- e.取消操作信号(cancel_flag):cancel_flag =“1”表示客户取消操作;
- f.机器是否占用指示灯(hold_ind):hold_ind =“0”表示该机是没被占用;
- g.取饮料指示灯(drinktk_ind):drinktk_ind =“1”表示客户可以取走饮料;
- h.找零与退币标志指示灯(charge_ind):charge_ind =“1”表示找零提示;
- i.找零与退币币值(charge_val):退給客户的币值(charge_val = b001表示找0.5元,charge_val = b010表示找5元,charge_val = b011表示找7.5元,。。。。。。。。。。);
- j.自动投币售卖机的状态确定 S0 :初始态; S1 :已投币1元; S2 :已投币2元; S3 :已投币3元; S4 :已投币4元; S5 :已投币5元; S6 :已投币10元。
Tips
- VendingMachine.v 源程序
- VendingMachine_tb.v 仿真文件
- VendingMachine.xdc 引脚约束件