minghust / VendingMachine

Use Verilog & Artrix-7 FPGA to design a Vending Machine

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

自动销售机控制器设计

采用FSM设计并利用Nexys4开发板来实现一个饮料自动投币售卖机的控制器。

设计内容

  1. 自动销售机销售两类商品,一类售价2.5元,另一类售价5元,该贩卖机只能辨识1元,10元两种人民币;
  2. 销售机处于售卖状态时显示“Hello”状态,当投入1元时,机器会进入余额不足的状态,直到投入的金额大于2.5元为止。如果一次投入10元,则可以选择所有的产品,否则就只能选择2.5元的产品;
  3. 完成选择后,将会卖出商品并且找回剩余的零钱,随后,机器又将返回售卖状态。

设计思路

综合分析设计内容,自动销售机的控制器设计如下。

控制器

  • 饮料自动投币售卖机控制器结构参见图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 引脚约束件

About

Use Verilog & Artrix-7 FPGA to design a Vending Machine

License:MIT License


Languages

Language:Verilog 100.0%