名称:基于FPGA的自动售货机设计Verilog代码VIVADO仿真
软件:VIVADO
语言:Verilog
代码功能:
商品自动售货机可找零
1.用四个发光二极管分别模拟售出价值为 5 角、 1 元、 1.5 元和 2 元的小商品,购买者可以通过开关选择任意一种标价中的小商品。
2.灯亮时表示该小商品售出。
3.. 用开关分别模拟5 角、1 元硬币和5 元纸币投入, 可以用数码管 分别代表找回剩余的硬币。
4.每次只能售出一种小商品,当所投硬币达到或超过购买者所选面值时,售出货物并找回剩余的硬币,回到初始状态。
5.当所投硬币值不足面值时,可通过一个复位键退回所投硬币,回到初始状态。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
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),//系统复位
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=837
484