名称:自动售货机设计Verilog代码VIVADO仿真(文末获取)
软件:VIVADO
语言:Verilog
代码功能:
自动售货机
一共有2元、3元、4元、6元4种商品,可以投币1元和5元。支持找零和取消购买若投币金额大于价格则找零,若投币不足或且10s内没有投币则自动取消。
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. Testbench
6. 仿真图
一共有2元、3元、4元、6元4种商品,可以投币1元和5元。支持找零和取消购买若投币金额大于价格则找零,若投币不足或且10s内没有投币则自动取消。
仿真图
按键检测模块
状态控制模块
数码管显示模块
部分代码展示:
module auto_sell( input clk_in,//100M input reset_n,//复位 input coin_1_key,//投币1元 input coin_5_key,//投币5元 input price_2_key,//2元商品 input price_3_key,//3元商品 input price_4_key,//4元商品 input price_6_key,//6元商品 input confirm_key,//确认 output succeed_ledn,//购买成功指示灯 output coin_return_ledn,//退币指示灯 output [3:0] DLA,//数码管位选 output [7:0] HEX//数码管段选 ); wire [3:0] input_money_BCD;//投币金额 wire [3:0] need_money_BCD;//价钱 wire [3:0] change_money_BCD;//找钱 wire [3:0] left_money_BCD;//还差金额 wire coin_1_p;//投币1元 wire coin_5_p;//投币5元 wire price_2_p;//2元商品 wire price_3_p;//3元商品 wire price_4_p;//4元商品 wire price_6_p;//6元商品 wire confirm_p;//确认 //按键消抖模块 key_jitter i0_key_jitter( . clkin(clk_in), . key_in(coin_1_key),//输入 . key_negedge(coin_1_p)//消抖后按键下降沿 ); //按键消抖模块 key_jitter i1_key_jitter( . clkin(clk_in), . key_in(coin_5_key),//输入 . key_negedge(coin_5_p)//消抖后按键下降沿 ); //按键消抖模块 key_jitter i2_key_jitter( . clkin(clk_in), . key_in(price_2_key),//输入 . key_negedge(price_2_p)//消抖后按键下降沿 ); //按键消抖模块 key_jitter i3_key_jitter( . clkin(clk_in), . key_in(price_3_key),//输入 . key_negedge(price_3_p)//消抖后按键下降沿 );
源代码
扫描文章末尾的公众号二维码