• 方案介紹
  • 附件下載
  • 相關推薦
申請入駐 產(chǎn)業(yè)圖譜

超市自動售貨機VHDL代碼vivado ego1開發(fā)板

5小時前
100
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

2-240103103943b7.doc

共1個文件

名稱:超市自動售貨機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ā)板可以修改管腳適配:

ego1開發(fā)板.png

演示視頻:

設計文檔:

功能描述:

自動售貨機,售賣蔬菜。所有蔬菜以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

  • 2-240103103943b7.doc
    下載

相關推薦