基于FPGA的自动售货机设计Verilog代码VIVADO仿真

名称:基于FPGA的自动售货机设计Verilog代码VIVADO仿真(文末获取)

软件:VIVADO

语言:Verilog

代码功能:

商品自动售货机可找零

1.用四个发光二极管分别模拟售出价值为 5 角、 1 元、 1.5 元和 2 元的小商品,购买者可以通过开关选择任意一种标价中的小商品。

2.灯亮时表示该小商品售出。

3.. 用开关分别模拟5 角、1 元硬币和5 元纸币投入, 可以用数码管 分别代表找回剩余的硬币。

4.每次只能售出一种小商品,当所投硬币达到或超过购买者所选面值时,售出货物并找回剩余的硬币,回到初始状态;

5.当所投硬币值不足面值时,可通过一个复位键退回所投硬币,回到初始状态。

1. 工程文件

设计功能:

1.用四个发光二极管分别模拟售出价值为 5 角、 1 元、 1.5 元和 2 元的小商品,购买者可以通过开关选择任意一种标价中的小商品。

2.灯亮时表示该小商品售出。

3.. 用开关分别模拟    5 角、1 元硬币和    5 元纸币投入, 可以用数码管 分别代表找回剩余的硬币。

4.每次只能售出一种小商品,当所投硬币达到或超过购买者所选面值时,售出货物并找回剩余的硬币,回到初始状态;

5.当所投硬币值不足面值时,可通过一个复位键退回所投硬币,回到初始状态。

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

整体仿真图

选择1.5元商品,依次付款0.5+0.5+1.0=2.0元,然后1.5元商品的出货指示灯亮。

选择2.0元商品,依次付款0.5+1.0=1.5元,然后按下退币键,退币1.5元。

按键上升沿检测仿真

状态机控制模块

下图为,选择1.5元商品,依次付款0.5+0.5+1.0=2.0元,然后1.5元商品的出货指示灯亮。并找零0.5元。

下图为,选择2.0元商品,依次付款0.5+1.0=1.5元,然后按下退币键,退币1.5元。

显示模块

部分代码展示:

module auto_sell(
input clk_in,//时钟
input reset_n,//复位
input coin_10_key,//投币1.0元
input coin_50_key,//投币5.0元
input coin_05_key,//投币0.5元
input price_20_key,//2.0元商品
input price_15_key,//1.5元商品
input price_10_key,//1.0元商品
input price_05_key,//0.5元商品
input confirm_key,//确认
input return_key,//退币
output succeed_ledn_05,//0.5元商品购买成功指示灯
output succeed_ledn_10,//1.0元商品购买成功指示灯
output succeed_ledn_15,//1.5元商品购买成功指示灯
output succeed_ledn_20,//2.0元商品购买成功指示灯
output [3:0] DLA,//数码管位选,低电平选择
output [7:0] HEX//数码管段选,低亮
);
wire [7:0] input_money_BCD;//投币金额
wire [7:0] change_money_BCD;//找钱
wire coin_10_p;//投币1.0元
wire coin_50_p;//投币5.0元
wire coin_05_p;//投币0.5元
//按键上升沿检测模块
key_jitter i0_key_jitter(
. clkin(clk_in),     
. key_in(coin_10_key),//输入
. key_posedge(coin_10_p)//按键上升沿检测
);
//按键上升沿检测模块
key_jitter i1_key_jitter(
. clkin(clk_in),     
. key_in(coin_50_key),//输入
. key_posedge(coin_50_p)//按键上升沿检测
);
//按键上升沿检测模块
key_jitter i2_key_jitter(
. clkin(clk_in),     
. key_in(coin_05_key),//输入
. key_posedge(coin_05_p)//按键上升沿检测
);
//状态控制模块
state_ctrl i_state_ctrl(
. clk_in(clk_in),//时钟100Hz
. reset_n(reset_n),//系统复位
源代码

 扫描文章末尾的公众号二维码

  • 16
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值