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

自動(dòng)售貨機(jī)設(shè)計(jì)VHDL代碼ISE仿真

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

2-240104104244393.doc

共1個(gè)文件

名稱:自動(dòng)售貨機(jī)設(shè)計(jì)VHDL代碼ISE仿真

軟件:ISE

語(yǔ)言:VHDL

代碼功能:

設(shè)計(jì)內(nèi)容

EDA環(huán)境下,使用VHDL語(yǔ)言設(shè)計(jì)一個(gè)自動(dòng)飲料售賣機(jī)

設(shè)計(jì)任務(wù)和目標(biāo):

1.使用VHDL語(yǔ)言描述一個(gè)自動(dòng)飲料售賣機(jī),能夠接收5角以上10元以下共4種面額的貨幣,進(jìn)行飲料的購(gòu)買,并根據(jù)實(shí)際情況找零。

2.飲料共6種,對(duì)應(yīng)6個(gè)按鍵。飲料售價(jià)分為1元、1.5元、2元和3元,存在兩種或兩種以上的飲料對(duì)應(yīng)相同售價(jià)的情況。

3.編寫合適的 testbench文件,對(duì)上述系統(tǒng)進(jìn)行測(cè)試并仿真。

4.完成該系統(tǒng)的ⅦHDL模塊化描述,注意使用分層次設(shè)計(jì),并在頂層設(shè)計(jì)中采用元件例化的方式指定模塊間的硬件連接方式。

FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com

演示視頻:

設(shè)計(jì)文檔:

1. 自動(dòng)售貨機(jī)功能描述

2. 工程文件

3. 程序文件

4. 程序編譯

5. RTL圖

6. Testbench

7. 仿真圖

整體仿真圖

按鍵下降沿檢測(cè)模塊仿真

售貨機(jī)控制模塊仿真

數(shù)碼管顯示模塊仿真

部分代碼展示:

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
ENTITY?auto_sell?IS
???PORT?(
??????clk_50M????????:?IN?STD_LOGIC;--時(shí)鐘
??????reset_n????????:?IN?STD_LOGIC;--復(fù)位
??????select_1???:?IN?STD_LOGIC;--商品選擇按鍵1--價(jià)錢1.0
select_2???:?IN?STD_LOGIC;--商品選擇按鍵2--價(jià)錢1.5
select_3???:?IN?STD_LOGIC;--商品選擇按鍵3--價(jià)錢2.0
select_4???:?IN?STD_LOGIC;--商品選擇按鍵4--價(jià)錢3.0
select_5???:?IN?STD_LOGIC;--商品選擇按鍵5--價(jià)錢1.0
select_6???:?IN?STD_LOGIC;--商品選擇按鍵6--價(jià)錢2.0
??????confirm_key_n??:?IN?STD_LOGIC;--確認(rèn)按鍵
??????cancel_key_n???:?IN?STD_LOGIC;--取消按鍵
??????coin_1_n???????:?IN?STD_LOGIC;--投幣1元
??????coin_2_n???????:?IN?STD_LOGIC;--投幣0.5元
??????coin_5_n???????:?IN?STD_LOGIC;--投幣5元
coin_10_n???????:?IN?STD_LOGIC;--投幣10元
??????
??????buy_succeed????:?OUT?STD_LOGIC;--購(gòu)買成功
??????bit_select?????:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0);--數(shù)碼管位選
??????seg_select?????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--數(shù)碼管段選
???);
END?auto_sell;
ARCHITECTURE?trans?OF?auto_sell?IS
--售貨控制模塊
component?sell_ctrl?IS
???PORT?(
??????clk????????????:?IN?STD_LOGIC;
??????reset_n????????:?IN?STD_LOGIC;
??????
??????confirm_p??????:?IN?STD_LOGIC;
??????concel_p???????:?IN?STD_LOGIC;
??????select_1???:?IN?STD_LOGIC;--商品選擇按鍵1--價(jià)錢1.0
select_2???:?IN?STD_LOGIC;--商品選擇按鍵2--價(jià)錢1.5
select_3???:?IN?STD_LOGIC;--商品選擇按鍵3--價(jià)錢2.0
select_4???:?IN?STD_LOGIC;--商品選擇按鍵4--價(jià)錢3.0
select_5???:?IN?STD_LOGIC;--商品選擇按鍵5--價(jià)錢1.0
select_6???:?IN?STD_LOGIC;--商品選擇按鍵6--價(jià)錢2.0
??????
??????coin_1_p???????:?IN?STD_LOGIC;
??????coin_2_p???????:?IN?STD_LOGIC;
??????coin_5_p???????:?IN?STD_LOGIC;
coin_10_p???????:?IN?STD_LOGIC;--投幣10元
??????
??????buy_succeed????:?OUT?STD_LOGIC;
??????select_num?????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);
??????input_money????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0);
??????refound_money??:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)
???);
END?component;
--按鍵下降沿檢測(cè)模塊
component?key_jitter?IS
???PORT?(
??????clkin????????:?IN?STD_LOGIC;
??????key_in???????:?IN?STD_LOGIC;
??????key_negedge??:?OUT?STD_LOGIC
???);
END?component;
--顯示模塊
component?display?IS
???PORT?(
??????clk????????????:?IN?STD_LOGIC;
??????
??????select_num?????:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);
??????input_money????:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);
??????refound_money??:?IN?STD_LOGIC_VECTOR(7?DOWNTO?0);
??????
??????bit_select?????:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0);
??????seg_select?????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)
???);
END?component;
???SIGNAL?select_num????????:?STD_LOGIC_VECTOR(7?DOWNTO?0);
???SIGNAL?input_money???????:?STD_LOGIC_VECTOR(7?DOWNTO?0);
???SIGNAL?refound_money?????:?STD_LOGIC_VECTOR(7?DOWNTO?0);
???
???SIGNAL?confirm_p?????????:?STD_LOGIC;
???SIGNAL?concel_p??????????:?STD_LOGIC;
???
???SIGNAL?coin_1_p??????????:?STD_LOGIC;
???SIGNAL?coin_2_p??????????:?STD_LOGIC;
???SIGNAL?coin_5_p??????????:?STD_LOGIC;
SIGNAL?coin_10_p??????????:?STD_LOGIC;
???
???--?Declare?intermediate?signals?for?referenced?outputs
???SIGNAL?buy_succeed_buf?:?STD_LOGIC;
???SIGNAL?bit_select_buf??:?STD_LOGIC_VECTOR(3?DOWNTO?0);
???SIGNAL?seg_select_buf??:?STD_LOGIC_VECTOR(7?DOWNTO?0);
BEGIN
???buy_succeed?<=?buy_succeed_buf;
???bit_select?<=?bit_select_buf;
???seg_select?<=?seg_select_buf;
?????
--調(diào)用按鍵下降沿檢測(cè)模塊???
???i1_key_jitter?:?key_jitter
??????PORT?MAP?(
?????????clkin????????=>?clk_50M,
?????????key_in???????=>?confirm_key_n,
?????????key_negedge??=>?confirm_p
??????);
???
???
--調(diào)用按鍵下降沿檢測(cè)模塊?
???i2_key_jitter?:?key_jitter
??????PORT?MAP?(
?????????clkin????????=>?clk_50M,
?????????key_in???????=>?cancel_key_n,
?????????key_negedge??=>?concel_p
??????);
???
???
--調(diào)用按鍵下降沿檢測(cè)模塊?
???i3_key_jitter?:?key_jitter
??????PORT?MAP?(
?????????clkin????????=>?clk_50M,
?????????key_in???????=>?coin_1_n,
?????????key_negedge??=>?coin_1_p
??????);
???
???
--調(diào)用按鍵下降沿檢測(cè)模塊?
???i4_key_jitter?:?key_jitter
??????PORT?MAP?(
?????????clkin????????=>?clk_50M,
?????????key_in???????=>?coin_2_n,
?????????key_negedge??=>?coin_2_p
??????);
???
--調(diào)用按鍵下降沿檢測(cè)模塊?
???i5_key_jitter?:?key_jitter
??????PORT?MAP?(
?????????clkin????????=>?clk_50M,
?????????key_in???????=>?coin_5_n,
?????????key_negedge??=>?coin_5_p
??????);
--調(diào)用按鍵下降沿檢測(cè)模塊??
???i6_key_jitter?:?key_jitter
??????PORT?MAP?(
?????????clkin????????=>?clk_50M,
?????????key_in???????=>?coin_10_n,
?????????key_negedge??=>?coin_10_p
??????);
???
?--調(diào)用售貨控制模塊??
???i_sell_ctrl?:?sell_ctrl
??????PORT?MAP?(
?????????clk????????????=>?clk_50M,
?????????reset_n????????=>?reset_n,
?????????
?????????confirm_p??????=>?confirm_p,
?????????concel_p???????=>?concel_p,
select_1???????=>?select_1,
select_2???????=>?select_2,
select_3???????=>?select_3,
select_4???????=>?select_4,
select_5???????=>?select_5,
select_6???????=>?select_6,?????????
?????????coin_1_p???????=>?coin_1_p,
?????????coin_2_p???????=>?coin_2_p,
?????????coin_5_p???????=>?coin_5_p,
coin_10_p??????=>?coin_10_p,
?????????
?????????buy_succeed????=>?buy_succeed_buf,
?????????select_num?????=>?select_num,
?????????input_money????=>?input_money,
?????????refound_money??=>?refound_money
??????);
???
???
?--調(diào)用顯示模塊??
???i_display?:?display
??????PORT?MAP?(
?????????clk????????????=>?clk_50M,
?????????
?????????select_num?????=>?select_num,
?????????input_money????=>?input_money,
?????????refound_money??=>?refound_money,
?????????
?????????bit_select?????=>?bit_select_buf,
?????????seg_select?????=>?seg_select_buf
??????);
???
END?trans;

點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=486

  • 2-240104104244393.doc
    下載

相關(guān)推薦