名稱:自動售貨機(飲料)設(shè)計VHDL代碼vivado仿真
軟件:vivado
語言:VHDL
代碼功能:
自動售貨機(飲料)設(shè)計
1、具有5元、10元飲料;
2、可以投幣5元、10元、20元;
3、投幣后按鍵控制飲料推出;
4、具有出貨指示燈;
5、可以找零5元、10元,使用led表示。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
演示視頻:
設(shè)計文檔:
1. 工程文件
2. 程序文件
3. 程序編譯
4. RTL圖
5. 管腳分配
6. Testbench
7. 仿真圖
部分代碼展示:
??port ????????( ????????????clk?:in??std_logic;--clk ????????????rst_n?:in??std_logic;--rst ????????????key_in_0?:in??std_logic;--5元飲料 ????????????key_in_1?:in??std_logic;--10元飲料 ????????????key_in_2?:in??std_logic;--投幣5元 ????????????key_in_3?:in??std_logic;--投幣10元 ????????????key_in_4?:in??std_logic;--投幣20元 ????????????key_in_5?:in??std_logic;--飲料推出 ????????????led_red????:out?std_logic;--紅燈閃爍 ????????????led_5Y?????:out?std_logic;--售賣5元指示燈 ????????????led_10Y?????:out?std_logic;--售賣10元指示燈 ????????????led_charge?????:out?std_logic_vector(1?downto?0)--5元找零信號,10元找零信號 ????????); ????end?COMPONENT; ???? ???--Inputs ???signal?clk?:??std_logic;--clk ???signal?rst_n?:??std_logic;--rst ???signal?key_in_0?:??std_logic;--5元飲料 ???signal?key_in_1?:??std_logic;--10元飲料 ???signal?key_in_2?:??std_logic;--投幣5元 ???signal?key_in_3?:??std_logic;--投幣10元 ???signal?key_in_4?:??std_logic;--投幣20元 ???signal?key_in_5?:??std_logic;--飲料推出 ??? ???--outputs ???signal?led_red????:?std_logic;--紅燈閃爍 ???signal?led_5Y?????:?std_logic;--售賣5元指示燈 ???signal?led_10Y?????:?std_logic;--售賣10元指示燈 ???signal?led_charge?????:?std_logic_vector(1?downto?0);--5元找零信號,10元找零信號 ???--?Clock?period?definitions ???constant?clk_period?:?time?:=?10?ns; ???signal?key:??std_logic_vector(5?downto?0); BEGIN ???????? ????U_auto_sell:auto_sell ????????????port?map ????????????( ????????????????clk?=>?clk,--clk ????????????????rst_n?=>rst_n,--rst ????????????????key_in_0?=>key_in_0,--5元飲料 ????????????????key_in_1?=>key_in_1,--10元飲料 ????????????????key_in_2?=>key_in_2,--投幣5元 ????????????????key_in_3?=>key_in_3,--投幣10元 ????????????????key_in_4?=>key_in_4,--投幣20元 ????????????????key_in_5?=>key_in_5,--飲料推出 ????????????????led_red??=>led_red,--紅燈閃爍 ????????????????led_5Y???=>led_5Y,--售賣5元指示燈 ????????????????led_10Y??=>led_10Y,--售賣10元指示燈 ????????????????led_charge=>led_charge--5元找零信號,10元找零信號 ????????????); ???--?Clock?process?definitions ???clk_process?:process ???begin clk?<=?'0'; wait?for?clk_period/2; clk?<=?'1'; wait?for?clk_period/2; ???end?process; ??? ???key_in_0?<=key(0);--5元飲料 ???key_in_1?<=key(1);--10元飲料 ???key_in_2?<=key(2);--投幣5元 ???key_in_3?<=key(3);--投幣10元 ???key_in_4?<=key(4);--投幣20元 ???key_in_5?<=key(5);--飲料推出 ??? ???--?Stimulus?process ???stim_proc:?process ???begin ??????--?hold?reset?state?for?100?ns. ????rst_n?<=?'0'; ????key?<=?"111111"; ????????wait?for?5000?ns; rst_n?<=?'1'; wait?for?10000?ns; --購買5元飲料 key?<=?"111110"; wait?for?5000?ns; key?<=?"111111"; wait?for?10000?ns; key?<=?"110111";--投幣10元 ????????wait?for?5000?ns;???? ????????key?<=?"111111"; ????????wait?for?clk_period*2000; ????????key?<=?"011111";--推出飲料 ????????wait?for?5000?ns;???? ????????key?<=?"111111"; ????????wait?for?10000?ns; ????????--找零后進入空閑狀態(tài) ????????wait?for?clk_period*2000; ????????--購買10元飲料 ????????key?<=?"111101"; ????????wait?for?5000?ns;???? ????????key?<=?"111111"; ????????wait?for?10000?ns;???? ????????key?<=?"111011";--投幣5元 ????????wait?for?5000?ns;???? ????????key?<=?"111111"; ????????wait?for?10000?ns;???? ????????key?<=?"110111";--投幣10元 ????????wait?for?5000?ns;???? ????????key?<=?"111111"; ????????wait?for?clk_period*2000; ????????key?<=?"011111";--推出飲料 ????????wait?for?5000?ns;???? ????????key?<=?"111111"; ????????wait?for?10000?ns;???? ????????--找零后進入空閑狀態(tài) ????????wait?for?clk_period*2000; ????????--購買5元飲料 ????????key?<=?"111110"; ????????wait?for?5000?ns;???? ????????key?<=?"111111"; ????????wait?for?10000?ns;?? ????????key?<=?"100011";--投幣錯誤 ????????wait?for?50000?ns;???? ????????key?<=?"111111"; ????????wait?for?10000?ns;???? ????????key?<=?"101111";--投幣20元 ????????wait?for?5000?ns;???? ????????key?<=?"111111"; ????????wait?for?clk_period*2000; ????????key?<=?"011111";--推出飲料 ????????wait?for?5000?ns;???? ????????key?<=?"111111"; ????????wait?for?10000?ns;???? ????????--找零后進入空閑狀態(tài) ????????wait?for?clk_period*20; ????????wait; ???end?process; END;
點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=458
閱讀全文