名称:自动售货机Verilog代码vivado ego1开发板(文末获取)
软件:vivado
语言:Verilog
代码功能:
1待售商品有两种15元和3元(可通过开关或按键选择,用led指示选择结果)
2可投硬币有两种:5角和1元。分别用两个按键表示,按下按键代表投入硬币,同时数码管显示投入硬币的总金额。3.当投入金额与所选商品标价相同时,使用led灯进行提示。
1增加待售商品数量
增加硬币种类为:5角、1元、2元。(至少增加至三种,金额可自定)3.自行设计售货机其他功能,比如找零等
本代码已在ego1开发板验证,ego1开发板如下,其他开发板可以修改管脚适配:
1. 工程文件
2. 程序文件
3. 程序编译
4. 管脚分配
5. RTL图
6. Testbench
7. 仿真图
整体仿真图
按键消抖模块
控制模块
显示模块
部分代码展示:
//自动售货机 module auto_sell( input clk_in,//100M input rst,//高电平有效 //按键 高电平有效(SW0,1,2,3) input Selection_goods_10,//选商品1元 input Selection_goods_20,//选商品2元 input Selection_goods_30,//选商品3元 input Selection_goods_15,//选商品1.5元 //按键 高电平有效(S1,S2,S3) input throw_into_10_down,//投1.0元 input throw_into_05_down,//投0.5元 input throw_into_20_down,//投2.0元 //按键 高电平有效 input confirm_button,//确认购买,高电平有效(SW7) output [7:0] LED,//闪烁报警(3s)(D9~16) output outgo_done_10,//出货指示灯(D1) output outgo_done_20,//出货指示灯(D2) output outgo_done_30,//出货指示灯(D3) output outgo_done_15,//出货指示灯(D4) output [7:0] dig_led_1,//数码管段选显示 output [3:0] wei_led_1, //数码管位选显示 output [7:0] dig_led_2,//数码管段选显示 output [3:0] wei_led_2 //数码管位选显示 ); //所有按键取上升沿 wire throw_into_10_down_out; wire throw_into_05_down_out; wire throw_into_20_down_out; wire confirm_button_out; //按键消抖模块 key_xiaodou throw_into_10 ( . clk_in(clk_in), . key_in(throw_into_10_down), . key_out(throw_into_10_down_out) ); //按键消抖模块 key_xiaodou throw_into_05 ( . clk_in(clk_in), . key_in(throw_into_05_down), . key_out(throw_into_05_down_out) ); //按键消抖模块 key_xiaodou throw_into_20 ( . clk_in(clk_in), . key_in(throw_into_20_down), . key_out(throw_into_20_down_out) ); //按键消抖模块 key_xiaodou confirm_btt ( . clk_in(clk_in), . key_in(confirm_button), . key_out(confirm_button_out) ); wire [7:0] total_throw_inmoney;//投入总钱币 wire [7:0] total_need_money;//选中商品价钱 wire [7:0] total_refund_money;//找零金额 //售货状态控制模块 state_control state_control_u( . clk_in(clk_in), . rst(rst), . Selection_goods_10(Selection_goods_10), . Selection_goods_20(Selection_goods_20), . Selection_goods_30(Selection_goods_30), . Selection_goods_15(Selection_goods_15), . throw_into_10_down_out(throw_into_10_down_out), . throw_into_05_down_out(throw_into_05_down_out), . throw_into_20_down_out(throw_into_20_down_out), . confirm_button_out(confirm_button_out), . LED(LED), . outgo_done_10(outgo_done_10),//出货指示灯1 . outgo_done_20(outgo_done_20),//出货指示灯2 . outgo_done_30(outgo_done_30),//出货指示灯3 . outgo_done_15(outgo_done_15),//出货指示灯4 . total_throw_inmoney_out(total_throw_inmoney),//投入总钱币 . total_need_money_out(total_need_money),//选中商品价钱 . total_refund_money_out(total_refund_money)//找零金额 ); /// //显示模块 display_num i_display_num( . clk(clk_in),//100M . total_throw_inmoney(total_throw_inmoney),//投入总钱币 . total_need_money(total_need_money),//选中商品价钱 . total_refund_money(total_refund_money),//找零金额 . dig_led_1(dig_led_1),//数码管段选显示 . wei_led_1(wei_led_1),//数码管位选显示 . dig_led_2(dig_led_2),//数码管段选显示 . wei_led_2(wei_led_2)//数码管位选显示 ); endmodule
源代码
扫描文章末尾的公众号二维码