eda課程設計自動售貨機的設計_第1頁
eda課程設計自動售貨機的設計_第2頁
eda課程設計自動售貨機的設計_第3頁
eda課程設計自動售貨機的設計_第4頁
eda課程設計自動售貨機的設計_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、電子信息科學與技術 專業(yè)課程設計任務書學生姓名專業(yè)班級學號題 目自動售貨機的設計課題性質(zhì)工程設計課題來源自擬課題指導教師同組姓名主要內(nèi)容設計制作一個自動售貨機,該自動售貨機能完成貨物信息存儲、進程控制、硬幣處理、余額計算、顯示等功能。自動售貨機可以售2種貨物,每種貨物的數(shù)量和單價在初始化時設入,在存儲器中存儲。用戶可以用硬幣進行購物,按鍵進行選擇。系統(tǒng)根據(jù)用戶輸入的貨幣,判斷錢幣是否夠,錢幣足夠則根據(jù)顧客要求自動售貨;錢幣不夠則給出提示并退出。系統(tǒng)自動地計算出應找錢幣余額、庫存數(shù)量并顯示。(提示:錢數(shù)以5角為單位。)任務要求根據(jù)設計題目要求編寫相應程序代碼對編寫的VHDL程序代碼進行編譯和仿真

2、總結設計內(nèi)容,完成課程設計說明書參考文獻1焦素敏.EDA課程設計指導書.鄭州:河南工業(yè)大學,20082潘松,黃繼業(yè).EDA技術實用教程.北京:科學出版社,20023王國棟,潘松等.VHDL實用教程.成都:電子科技大學出版社,20004 張亦華,延明.數(shù)字電路EDA入門.北京:電子工業(yè)出版社,20035 http:/www.ele- 中國電子制作網(wǎng) 網(wǎng)站審查意見指導教師簽字教研室主任簽字 2012年 2月 20日 一 設計說明根據(jù)要求可自動出售兩種貨物,本文設計的自動售貨機可銷售cola 和 pepsi兩種飲料:售貨機可識別1元和0.5元的兩種貨幣,在一次購買過程中,可購買一個或多個商品,系統(tǒng)會

3、自動計算所需錢數(shù)和找零的錢數(shù)并自動找零。另外有3個發(fā)光二極管、6個LCD數(shù)碼管:兩個用來顯示所需金額,兩個用來顯示已付金額,兩個用來顯示找零數(shù)。1.1.1 流程說明本文設計的自動售貨機當通電時,表示一次銷售的開始。顧客選擇一種商品或多種商品后就進入投幣狀態(tài)。若不投幣,則自動返回初始狀態(tài)。投幣后,系統(tǒng)自動計算所投錢數(shù)。若投幣夠,則出貨并找零。若投幣不夠,如果顧客沒有繼續(xù)投幣,則退幣并回到初始狀態(tài)。本系統(tǒng)的投幣銷售流程圖如圖所示: 退幣清零結 束出貨找零繼續(xù)投幣綜合物價 計算金額投幣選 擇開始 1.1.2各模塊說明 本文設計的自動售貨機總體分三個模塊:總控模塊,二進制譯碼模塊、BCD碼譯碼模塊???/p>

4、控模塊:總控模塊是本系統(tǒng)最重要的模塊,該模塊大體有5個輸入端口和6個輸出端口。其輸入端口包括clk、coin1(投入一元貨幣)、coin5(投入0.5元貨幣)、cola(選擇cola)、pepsi(選擇pepsi),輸出端口有paid(已投入多少錢)、needed(還需多少錢)moneyout(找零)、success(燈亮表示交易成功)、failure(燈亮表示交易失?。?、showmoneyout(燈亮表示正在找零)。該模塊實現(xiàn)了本系統(tǒng)最重要的交易過程,包括選擇商品、投入貨幣,計算剩余金額,找零出貨等。二進制譯碼模塊:該模塊有一個輸入端口和兩個輸出端口。輸入端口是一個8位的二進制數(shù)輸出端口bc

5、d0、bcd1是兩個4位的BCD碼。該模塊的主要的功能是實現(xiàn)將主控模塊輸出的二進制數(shù)(paid、needed、moneyout)轉(zhuǎn)換成BCD碼,以便輸出到七段數(shù)碼管上顯示出來。該模塊的原理是將一個8位的二進制轉(zhuǎn)換成2個4位的BCD碼,分為高四位和低四位。BCD碼譯碼模塊:該模塊有一個輸入端口和一個輸出端口1.1.3 程序設計主控模塊完整程序如下:Library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity shouhuoji isport(clk: in std_logic; coin1:in s

6、td_logic; coin5:in std_logic; cola:in std_logic; pepsi:in std_logic; paid:out std_logic_vector(7 downto 0); needed:out std_logic_vector(7 downto 0); success:out std_logic; failure:out std_logic; showmoneyout:out std_logic; moneyout:out std_logic_vector(7 downto 0);end shouhuoji; architecture behav o

7、f shouhuoji is type state_type is (qa,qb,qe,qc,qg,qd,qf);-定義七個狀態(tài) signal current_state :state_type:=qa; signal q:integer range 0 to 100; begin process(clk) variable paidtemp:std_logic_vector(7 downto 0);-定義變量 variable neededtemp:std_logic_vector(7 downto 0); variable backmoney:std_logic_vector(7 down

8、to 0); variable pricetemp:std_logic_vector(7 downto 0); begin if clk'event and clk='1' then case current_state is when qa=>paidtemp:="00000000"neededtemp:="00000000" backmoney:="00000000"pricetemp:="00000000"q<=0; showmoneyout<='0'

9、moneyout<="00000000"paid<="00000000" needed<="00000000"failure<='0'success<='0' if cola='1' or pepsi='1' then current_state<=qb; if cola='1' then pricetemp:=pricetemp+"00001111" neededtemp:=pricetemp; E

10、lse pricetemp:=pricetemp+"00010100" neededtemp:=pricetemp; end if; end if; paid<=paidtemp; needed<=neededtemp; when qb=>if coin1='1' or coin5='1' then if coin1='1'then paidtemp:=paidtemp+"00001010" else paidtemp:=paidtemp+"00000101" end

11、if; if paidtemp>=pricetemp then backmoney:=paidtemp-pricetemp; neededtemp:="00000000"current_state<=qd; else neededtemp:=pricetemp-paidtemp;backmoney:="00000000" current_state<=qc;q<=0; end if; paid<=paidtemp; needed<=neededtemp; end if; if q<8 then q<=q+1

12、; if cola='1' or pepsi='1'then q<=0; if cola='1' then pricetemp:=pricetemp+"00001111" neededtemp:=neededtemp+"00001111" else pricetemp:=pricetemp+"00010100" neededtemp:=neededtemp+"00010100" end if; paid<=paidtemp; needed<=need

13、edtemp; end if; else current_state<=qe;q<=0; end if; when qe=>failure<='1' if q<4 then q<=q+1; else current_state<=qa;q<=0; end if; when qc=>if coin1='1' or coin5='1' then if coin1='1'then paidtemp:=paidtemp+"00001010" else paidtem

14、p:=paidtemp+"00000101" end if; if paidtemp>=pricetemp then backmoney:=paidtemp-pricetemp; neededtemp:="00000000"current_state<=qd; else neededtemp:=pricetemp-paidtemp;backmoney:="00000000" current_state<=qc; end if; paid<=paidtemp; needed<=neededtemp; end

15、 if; if coin1/='1'and coin5/='1' then if q<10 then q<=q+1; else current_state<=qg; end if; else q<=0; end if; when qg=>failure<='1' showmoneyout<='1'moneyout<=paidtemp; current_state<=qf;q<=0; success<='0' when qd=>success&l

16、t;='1' if backmoney>"00000000"then showmoneyout<='1' moneyout<=backmoney; end if; current_state<=qf;q<=0; when qf=>if q<4 then q<=q+1; else current_state<=qa;q<=0; end if; end case; else end if; end process; end behav;BCD譯碼模塊完整程序如下: Library iee

17、e;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity code1 isport( b:in std_logic_vector(7 downto 0); bcd0:out std_logic_vector(3 downto 0); bcd1:out std_logic_vector(3 downto 0) ) ;end code1;architecture one of code1 isbegin process(b)begincase b iswhen"00000000"=>bcd0&

18、lt;="0000"bcd1<="0000"-譯碼“0”;when"00000001"=>bcd0<="0001"bcd1<="0000"-譯碼“1”;when"00000010"=>bcd0<="0010"bcd1<="0000"-譯碼“2”;when"00000011"=>bcd0<="0011"bcd1<="0000&qu

19、ot;-譯碼“3”;when"00000100"=>bcd0<="0100"bcd1<="0000"-譯碼“4”;when"00000101"=>bcd0<="0101"bcd1<="0000"-譯碼“5”;when"00000110"=>bcd0<="0110"bcd1<="0000"when"00000111"=>bcd0<=&

20、quot;0111"bcd1<="0000"when"00001000"=>bcd0<="1000"bcd1<="0000"when"00001001"=>bcd0<="1001"bcd1<="0000"when"00001010"=>bcd0<="0000"bcd1<="0001"when"00001011"

21、;=>bcd0<="0001"bcd1<="0001"when"00001100"=>bcd0<="0010"bcd1<="0001"when"00001101"=>bcd0<="0011"bcd1<="0001"when"00001110"=>bcd0<="0100"bcd1<="0001"when&qu

22、ot;00001111"=>bcd0<="0101"bcd1<="0001"when"00010000"=>bcd0<="0110"bcd1<="0001"when"00010001"=>bcd0<="0111"bcd1<="0001"when"00010010"=>bcd0<="1000"bcd1<="0

23、001"when"00010011"=>bcd0<="1001"bcd1<="0001"when"00010100"=>bcd0<="0000"bcd1<="0010"譯碼“20”when others=>null;end case;end process;end one;頂層模塊完整程序如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.

24、ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity top isPort( clk1:in std_logic; C1,C5,P1_5,P2:in std_logic; paid_lcd0,paid_lcd1,needed_lcd0,needed_lcd1,Mout_lcd0,Mout_lcd1:out std_logic_vector(3 downto 0); s,f,showout :out std_logic );end top;architecture one of top iscomponent shouhuojiport ( clk:in std_

25、logic; coin1:in std_logic; coin5:in std_logic; cola:in std_logic; pepsi:in std_logic; paid:out std_logic_vector(7 downto 0); needed:out std_logic_vector(7 downto 0); success:out std_logic; failure:out std_logic; showmoneyout:out std_logic; moneyout:out std_logic_vector(7 downto 0) ); end component;c

26、omponent code1port( b:in std_logic_vector( 7 downto 0); bcd0:out std_logic_vector(3 downto 0); bcd1:out std_logic_vector(3 downto 0);end component;signal p,n,mo:std_logic_vector( 7 downto 0);-signal s1,s2,s3,s4,s5,s6:std_logic_vector(3 downto 0);begin u0:shouhuoji-各模塊連接 port map(clk=>clk1,coin1=&

27、gt;C1,coin5=>C5,cola=>P1_5,pepsi=>P2,success=>s,failure=>f,showmoneyout=>showout,paid=>p,needed=>n,moneyout=>mo);u1:code1 port map(b=>p,bcd0=>paid_lcd0,bcd1=>paid_lcd1);u2:code1 port map(b=>n,bcd0=>needed_lcd0,bcd1=>needed_lcd1);u3:code1 port map(b=>mo,bcd0=>Mout_lcd0,bcd1=>Mout_lcd1); end one; 1.1.4各模塊的連接 各模塊的連接如圖所示: 售貨機主控系統(tǒng)和譯碼器模塊圖 售貨機頂層模塊2、1 主控模塊的仿真 上圖表示顧客選擇了pepsi飲料后,且投了2個一元的硬幣。Succe

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論