名稱:自動售貨機Verilog代碼vivado? ego1開發(fā)板
軟件:vivado
語言:Verilog
代碼功能:
1、待售商品有兩種15元和3元(可通過開關(guān)或按鍵選擇,用led指示選擇結(jié)果)。
2、可投硬幣有兩種:5角和1元。分別用兩個按鍵表示,按下按鍵代表投入硬幣,同時數(shù)碼管顯示投入硬幣的總金額。
3、當投入金額與所選商品標價相同時,使用led燈進行提示。
4、增加待售商品數(shù)量。
5、增加硬幣種類為:5角、1元、2元。(至少增加至三種,金額可自定)。
6、自行設(shè)計售貨機其他功能,比如找零等。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在ego1開發(fā)板驗證,ego1開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
演示視頻:
設(shè)計文檔:
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,//數(shù)碼管段選顯示 output??[3:0]?wei_led_1,?//數(shù)碼管位選顯示 output??[7:0]?dig_led_2,//數(shù)碼管段選顯示 output??[3:0]?wei_led_2?//數(shù)碼管位選顯示 ); //所有按鍵取上升沿 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;//找零金額 //售貨狀態(tài)控制模塊 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),//數(shù)碼管段選顯示 .?wei_led_1(wei_led_1),//數(shù)碼管位選顯示 .?dig_led_2(dig_led_2),//數(shù)碼管段選顯示 .?wei_led_2(wei_led_2)//數(shù)碼管位選顯示 ); endmodule
點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=472