赞
踩
名称:Quartus自动售货机Verilog代码仿真(文末获取)
软件:Quartus
语言:Verilog
代码功能:自动售货机,三种币值、两种商品,注意定义和设计的合理性
1. 工程文件
2. 程序文件
3. 程序编译
4. Testbench
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 confirm_key,//确认 input return_key,//退币 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),//系统复位 . coin_10_p(coin_10_p),//投币1.0元 . coin_50_p(coin_50_p),//投币5.0元 . coin_05_p(coin_05_p),//投币0.5元 . price_20_p(price_20_key),//2.0元商品 . price_15_p(price_15_key),//1.5元商品 . return_p(return_key),//退币键 . confirm_p(confirm_key),//确认 . succeed_ledn_15(succeed_ledn_15),//1.5元商品购买成功指示灯 . succeed_ledn_20(succeed_ledn_20),//2.0元商品购买成功指示灯 . input_money_BCD(input_money_BCD),//投币金额 . change_money_BCD(change_money_BCD)//找钱 ); //数码管显示模块 display_num i_display_num( . clk_in(clk_in),//100Hz . input_money_BCD(input_money_BCD),//投币金额 . change_money_BCD(change_money_BCD),//找钱 . DLA(DLA),//数码管位选,低电平选择 . HEX(HEX)//数码管段选,低亮 ); endmodule
扫描文章末尾的公众号二维码
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。