• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于FPGA的自动售货机控制系统Verilog代码Quartus仿真

07/25 08:02
347
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240515191104145.doc

共1个文件

名称:基于FPGA的自动售货机控制系统Verilog代码Quartus仿真

软件:Quartus

语言:Verilog

代码功能:

自动售货机控制系统

该系统能完成自身的复位。对货物信息的存储、进程控制,硬币处理、余额计算、显示等功能。

a.机器只接受1元硬币和5角硬币。

b.机器共提供4种货物,价格分别为2元、2元,1.5元、1.5元(可通过调整代码改变每种货物的单价)。

c.顾客先选择需要的一种商品,在确认所选货物后,进入投币状态。当顾客选择的货物售完时,在顾客确认货物之时,提示顾客货物卖光,并返回初始状态(顾客确认货物时,提供确认选择和重新选择俩个选项)。

d.若等待30s,顾客不投币,则返回初始状态;顾客投币后,系统自动计算所投钱币。若钱币够,则出货找零。若自客户确认货物之后30s,投币不够,则退币并返回初状态。也可在投币完成时按投币完成按钮快速进入计算钱币状态以及后续状态。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. Testbench

6. 仿真图

整体仿真图

正常购买流程:选择2.0元商品,goods_led电平亮,指示商品,按下确认键confirm_key后,先后投币1元,0.5元,1元,有显示投币金额input_money_BCD,价钱need_money_BCD,找钱change_money_BCD,还差金额left_money_BCD。

仿真选1.5元商品后30s没有操作,还差金额由1.5变为0,返回初始状态。

仿真选中1.5元商品,投币1元后,30s没有操作,还剩金额由0.5变为0,返回投币1元,退币指示灯coin_return_led亮。

部分代码展示:

module?auto_sell(
input?clk_in,//48M
input?reset_n,//复位
//按键按下低电平
input?coin_10_key,//投币1元
input?coin_05_key,//投币0.5元
input?price_20_1_key,//2元商品1
input?price_20_2_key,//2元商品2
input?price_15_1_key,//1.5元商品1
input?price_15_2_key,//1.5元商品2
input?confirm_key,//确认
output?succeed_ledn,//购买成功指示灯
output?coin_return_ledn,//退币指示灯
output?[3:0]?goods_ledn,//商品指示灯
output?NO_goods_ledn,//商品缺货指示灯
output?[7:0]?DLA,//数码管位选,低电平选择
output?[7:0]?HEX//数码管段选,低亮
);
wire?[7:0]?input_money_BCD;//投币金额
wire?[7:0]?need_money_BCD;//价钱
wire?[7:0]?change_money_BCD;//找钱
wire?[7:0]?left_money_BCD;//还差金额
wire?coin_10_p;//投币1元
wire?coin_05_p;//投币0.5元
wire?price_20_1_p;//2元商品
wire?price_20_2_p;//2元商品
wire?price_15_1_p;//1.5元商品
wire?price_15_2_p;//1.5元商品
wire?confirm_p;//确认?
//按键消抖模块
key_jitter?i0_key_jitter(
.?clkin(clk_in),?????
.?key_in(coin_10_key),//输入
.?key_negedge(coin_10_p)//消抖后按键下降沿
);
//按键消抖模块
key_jitter?i1_key_jitter(
.?clkin(clk_in),?????
.?key_in(coin_05_key),//输入
.?key_negedge(coin_05_p)//消抖后按键下降沿
);
//按键消抖模块
key_jitter?i2_key_jitter(
.?clkin(clk_in),?????
.?key_in(price_20_1_key),//输入
.?key_negedge(price_20_1_p)//消抖后按键下降沿
);
//按键消抖模块
key_jitter?i3_key_jitter(
.?clkin(clk_in),?????
.?key_in(price_20_2_key),//输入
.?key_negedge(price_20_2_p)//消抖后按键下降沿
);
//按键消抖模块
key_jitter?i4_key_jitter(
.?clkin(clk_in),?????
.?key_in(price_15_1_key),//输入
.?key_negedge(price_15_1_p)//消抖后按键下降沿
);
//按键消抖模块
key_jitter?i5_key_jitter(
.?clkin(clk_in),?????
.?key_in(price_15_2_key),//输入
.?key_negedge(price_15_2_p)//消抖后按键下降沿
);
//按键消抖模块
key_jitter?i6_key_jitter(
.?clkin(clk_in),?????
.?key_in(confirm_key),//输入
.?key_negedge(confirm_p)//消抖后按键下降沿
);
//状态控制模块
state_ctrl?i_state_ctrl(
.?clk_in(clk_in),//48M
.?reset_n(reset_n),//复位
.?coin_10_p(coin_10_p),//投币1元
.?coin_05_p(coin_05_p),//投币0.5元
.?price_20_1_p(price_20_1_p),//2元商品
.?price_20_2_p(price_20_2_p),//2元商品
.?price_15_1_p(price_15_1_p),//1.5元商品
.?price_15_2_p(price_15_2_p),//1.5元商品

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=749

  • 2-240515191104145.doc
    下载

相关推荐