名稱:超市自動售貨機VHDL代碼vivado? ego1開發(fā)板
軟件:vivado
語言:VHDL
代碼功能:
超市自動售貨機
所有蔬菜以1斤為一份進行包裝銷售,其中土豆1元,西紅柿2元,黃瓜3元,芹菜4元,大蔥5元。一次購買一種蔬菜,可一次性購買一份或兩份,只能插入1元或5元兩種面值的鈔票。
功能:①選擇蔬菜種類及份數(shù)。②插入鈔票。當插入的鈔票總金額=菜價時,輸出相應蔬菜;當鈔票總金額<菜價時,等待繼續(xù)插入鈔票;當鈔票總金額>菜價時,在輸出相應蔬菜的同時找零。③完成交易,等待下一次交易。
用撥碼開關選擇蔬菜的種類及份數(shù),用按鈕代表插入5元或10元鈔票,用LED燈作為輸出蔬菜和找零的指示燈,用數(shù)碼管顯示插入的總金額和找零金額。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在ego1開發(fā)板驗證,ego1開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
演示視頻:
設計文檔:
功能描述:
自動售貨機,售賣蔬菜。所有蔬菜以1斤為一份進行包裝銷售,其中土豆1元,西紅柿2元,黃瓜3元,芹菜4元,大蔥5元。一次購買一種蔬菜,可一次性購買一份或兩份,只能插入1元或5元兩種面值的鈔票。
功能:①選擇蔬菜種類及份數(shù)。②插入鈔票。當插入的鈔票總金額=菜價時,輸出相應蔬菜;當鈔票總金額<菜價時,等待繼續(xù)插入鈔票;當鈔票總金額>菜價時,在輸出相應蔬菜的同時找零。③完成交易,等待下一次交易。
用撥碼開關選擇蔬菜的種類及份數(shù),用按鈕代表插入5元或10元鈔票,用LED燈作為輸出蔬菜和找零的指示燈,用數(shù)碼管顯示插入的總金額和找零金額。
1. 工程文件
1. 程序文件
2. 程序編譯
3. RTL圖
4. 管腳分配
5. Testbench
6. 仿真圖
部分代碼展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; ENTITY?auto_sell?IS ???PORT?( ??????clk??????????:?IN?STD_LOGIC;--100M ??????reset_p??????:?IN?STD_LOGIC;--復位 ??????vegetables???:?IN?STD_LOGIC_VECTOR(2?DOWNTO?0);--蔬菜選擇--SW0~2 ??????number???????:?IN?STD_LOGIC;--份數(shù)--SW4 ??????coin_10_key??:?IN?STD_LOGIC;--投幣1元--S0 ??????coin_50_key??:?IN?STD_LOGIC;--投幣5元--S1 ??????start????????:?IN?STD_LOGIC;--啟動--S2 ??????confirm??????:?IN?STD_LOGIC;--確認--S3 ??????succeed_led??:?OUT?STD_LOGIC;--購買成功輸出蔬菜--LED0 ??????charge_led???:?OUT?STD_LOGIC;--找零指示燈--LED3 ??????bit_sel??????:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0);--數(shù)碼管位選 ??????seg_sel??????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--數(shù)碼管段選???????? ???); END?auto_sell; ARCHITECTURE?behave?OF?auto_sell?IS ???COMPONENT?control?IS ??????PORT?( ?????????clk??????????:?IN?STD_LOGIC; ?????????reset_p??????:?IN?STD_LOGIC; ?????????vegetables???:?IN?STD_LOGIC_VECTOR(2?DOWNTO?0); ?????????number???????:?IN?STD_LOGIC; ?????????coin_10??????:?IN?STD_LOGIC; ?????????coin_50??????:?IN?STD_LOGIC; ?????????start????????:?IN?STD_LOGIC; ?????????confirm??????:?IN?STD_LOGIC; ?????????total_money??:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0); ?????????charge_money?:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0); ?????????succeed_led??:?OUT?STD_LOGIC; ?????????charge_led???:?OUT?STD_LOGIC ??????); ???END?COMPONENT; COMPONENT?key_jitter?IS ???PORT?( ??????clkin????????:?IN?STD_LOGIC;--100M ??????key_in???????:?IN?STD_LOGIC;--按鍵輸入 ??????key_negedge??:?OUT?STD_LOGIC--按鍵下降沿輸出 ???); END?COMPONENT; --顯示模塊 COMPONENT?display?IS ???PORT?( ??????clk????????????:?IN?STD_LOGIC; ?????? ??????total_money?????:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);--輸入錢幣 ??????charge_money????:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);--找零錢幣 ?????? ??????bit_sel?????:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0);--數(shù)碼管位選 ??????seg_sel?????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--數(shù)碼管段選?? ???); END?COMPONENT; ??? ??? ???SIGNAL?total_money???????:?STD_LOGIC_VECTOR(7?DOWNTO?0); ???SIGNAL?charge_money??????:?STD_LOGIC_VECTOR(7?DOWNTO?0); ???SIGNAL?coin_10???????????:?STD_LOGIC; ???SIGNAL?coin_50???????????:?STD_LOGIC; ??? BEGIN ??? ???--調(diào)用按鍵消抖 ???i0_key_jitter?:?key_jitter ??????PORT?MAP?( ?????????clkin????????=>?clk, ?????????key_in???????=>?coin_10_key, ?????????key_negedge??=>?coin_10 ??????); ??? ??? ???--調(diào)用按鍵消抖 ???i1_key_jitter?:?key_jitter ??????PORT?MAP?( ?????????clkin????????=>?clk, ?????????key_in???????=>?coin_50_key, ?????????key_negedge??=>?coin_50 ??????); ??? ??? ???--調(diào)用控制模塊 ???i_control?:?control ??????PORT?MAP?( ?????????clk???????????=>?clk, ?????????reset_p???????=>?reset_p, ?????????vegetables????=>?vegetables, ?????????number????????=>?number, ?????????coin_10???????=>?coin_10, ?????????coin_50???????=>?coin_50, ?????????start?????????=>?start, ?????????confirm???????=>?confirm, ?????????total_money???=>?total_money, ?????????charge_money??=>?charge_money, ?????????succeed_led???=>?succeed_led, ?????????charge_led????=>?charge_led ??????); ??? ??? ???--調(diào)用數(shù)碼管顯示模塊 ???i_display?:?display ??????PORT?MAP?( ?????????clk???????????=>?clk, ?????????total_money???=>?total_money, ?????????charge_money??=>?charge_money, ?????????bit_sel???????=>?bit_sel, ?????????seg_sel???????=>?seg_sel ??????); ??? END?behave;
點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=473