eda課程設(shè)計(jì)自動售貨機(jī)的設(shè)計(jì)說明_第1頁
eda課程設(shè)計(jì)自動售貨機(jī)的設(shè)計(jì)說明_第2頁
eda課程設(shè)計(jì)自動售貨機(jī)的設(shè)計(jì)說明_第3頁
eda課程設(shè)計(jì)自動售貨機(jī)的設(shè)計(jì)說明_第4頁
eda課程設(shè)計(jì)自動售貨機(jī)的設(shè)計(jì)說明_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

./電子信息科學(xué)與技術(shù)專業(yè)課程設(shè)計(jì)任務(wù)書學(xué)生專業(yè)班級學(xué)號題目自動售貨機(jī)的設(shè)計(jì)課題性質(zhì)工程設(shè)計(jì)課題來源自擬課題指導(dǎo)教師同組主要容設(shè)計(jì)制作一個自動售貨機(jī),該自動售貨機(jī)能完成貨物信息存儲、進(jìn)程控制、硬幣處理、余額計(jì)算、顯示等功能。自動售貨機(jī)可以售2種貨物,每種貨物的數(shù)量和單價(jià)在初始化時設(shè)入,在存儲器中存儲。用戶可以用硬幣進(jìn)行購物,按鍵進(jìn)行選擇。系統(tǒng)根據(jù)用戶輸入的貨幣,判斷錢幣是否夠,錢幣足夠則根據(jù)顧客要求自動售貨;錢幣不夠則給出提示并退出。系統(tǒng)自動地計(jì)算出應(yīng)找錢幣余額、庫存數(shù)量并顯示?!蔡崾荆哄X數(shù)以5角為單位。任務(wù)要求①根據(jù)設(shè)計(jì)題目要求編寫相應(yīng)程序代碼②對編寫的VHDL程序代碼進(jìn)行編譯和仿真③總結(jié)設(shè)計(jì)容,完成課程設(shè)計(jì)說明書參考文獻(xiàn)[1]焦素敏.EDA課程設(shè)計(jì)指導(dǎo)書.:工業(yè)大學(xué),2008[2]松,黃繼業(yè).EDA技術(shù)實(shí)用教程.:科學(xué),2002[3]王國棟,松等.VHDL實(shí)用教程.:電子科技大學(xué),2000[4]亦華,延明.數(shù)字電路EDA入門.:電子工業(yè),2003[5].ele-diy./中國電子制作網(wǎng)審查意見指導(dǎo)教師簽字教研室主任簽字20XX2月20日一.設(shè)計(jì)說明根據(jù)要求可自動出售兩種貨物,本文設(shè)計(jì)的自動售貨機(jī)可銷售cola和pepsi兩種飲料:售貨機(jī)可識別1元和0.5元的兩種貨幣,在一次購買過程中,可購買一個或多個商品,系統(tǒng)會自動計(jì)算所需錢數(shù)和找零的錢數(shù)并自動找零。另外有3個發(fā)光二極管、6個LCD數(shù)碼管:兩個用來顯示所需金額,兩個用來顯示已付金額,兩個用來顯示找零數(shù)。1.1.1流程說明本文設(shè)計(jì)的自動售貨機(jī)當(dāng)通電時,表示一次銷售的開始。顧客選擇一種商品或多種商品后就進(jìn)入投幣狀態(tài)。若不投幣,則自動返回初始狀態(tài)。投幣后,系統(tǒng)自動計(jì)算所投錢數(shù)。若投幣夠,則出貨并找零。若投幣不夠,如果顧客沒有繼續(xù)投幣,則退幣并回到初始狀態(tài)。本系統(tǒng)的投幣銷售流程圖如圖所示:退幣清零退幣清零結(jié)束出貨找零繼續(xù)投幣綜合〉物價(jià)計(jì)算金額投幣選擇開始1.1.2各模塊說明 本文設(shè)計(jì)的自動售貨機(jī)總體分三個模塊:總控模塊,二進(jìn)制譯碼模塊、BCD碼譯碼模塊。總控模塊:總控模塊是本系統(tǒng)最重要的模塊,該模塊大體有5個輸入端口和6個輸出端口。其輸入端口包括clk、coin1〔投入一元貨幣、coin5〔投入0.5元貨幣、cola〔選擇cola、pepsi<選擇pepsi>,輸出端口有paid〔已投入多少錢、needed〔還需多少錢moneyout〔找零、success〔燈亮表示交易成功、failure〔燈亮表示交易失敗、showmoneyout〔燈亮表示正在找零。該模塊實(shí)現(xiàn)了本系統(tǒng)最重要的交易過程,包括選擇商品、投入貨幣,計(jì)算剩余金額,找零出貨等。二進(jìn)制譯碼模塊:該模塊有一個輸入端口和兩個輸出端口。輸入端口是一個8位的二進(jìn)制數(shù)輸出端口bcd0、bcd1是兩個4位的BCD碼。該模塊的主要的功能是實(shí)現(xiàn)將主控模塊輸出的二進(jìn)制數(shù)〔paid、needed、moneyout轉(zhuǎn)換成BCD碼,以便輸出到七段數(shù)碼管上顯示出來。該模塊的原理是將一個8位的二進(jìn)制轉(zhuǎn)換成2個4位的BCD碼,分為高四位和低四位。BCD碼譯碼模塊:該模塊有一個輸入端口和一個輸出端口1.1.3程序設(shè)計(jì)主控模塊完整程序如下:Libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityshouhuojiisport<clk:instd_logic;coin1:instd_logic;coin5:instd_logic;cola:instd_logic;pepsi:instd_logic;paid:outstd_logic_vector<7downto0>;needed:outstd_logic_vector<7downto0>;success:outstd_logic;failure:outstd_logic;showmoneyout:outstd_logic;moneyout:outstd_logic_vector<7downto0>>;endshouhuoji;architecturebehavofshouhuojiistypestate_typeis<qa,qb,qe,qc,qg,qd,qf>;--定義七個狀態(tài)signalcurrent_state:state_type:=qa;signalq:integerrange0to100;beginprocess<clk>variablepaidtemp:std_logic_vector<7downto0>;--定義變量variableneededtemp:std_logic_vector<7downto0>;variablebackmoney:std_logic_vector<7downto0>;variablepricetemp:std_logic_vector<7downto0>;beginifclk'eventandclk='1'thencasecurrent_stateiswhenqa=>paidtemp:="00000000";neededtemp:="00000000";backmoney:="00000000";pricetemp:="00000000";q<=0;showmoneyout<='0';moneyout<="00000000";paid<="00000000";needed<="00000000";failure<='0';success<='0';ifcola='1'orpepsi='1'thencurrent_state<=qb;ifcola='1'thenpricetemp:=pricetemp+"00001111";neededtemp:=pricetemp;Elsepricetemp:=pricetemp+"00010100";neededtemp:=pricetemp;endif;endif;paid<=paidtemp;needed<=neededtemp;whenqb=>ifcoin1='1'orcoin5='1'thenifcoin1='1'thenpaidtemp:=paidtemp+"00001010";elsepaidtemp:=paidtemp+"00000101";endif;ifpaidtemp>=pricetempthenbackmoney:=paidtemp-pricetemp;neededtemp:="00000000";current_state<=qd;elseneededtemp:=pricetemp-paidtemp;backmoney:="00000000";current_state<=qc;q<=0;endif;paid<=paidtemp;needed<=neededtemp;endif;ifq<8thenq<=q+1;ifcola='1'orpepsi='1'thenq<=0;ifcola='1'thenpricetemp:=pricetemp+"00001111";neededtemp:=neededtemp+"00001111";elsepricetemp:=pricetemp+"00010100";neededtemp:=neededtemp+"00010100";endif;paid<=paidtemp;needed<=neededtemp;endif;elsecurrent_state<=qe;q<=0;endif;whenqe=>failure<='1';ifq<4thenq<=q+1;elsecurrent_state<=qa;q<=0;endif;whenqc=>ifcoin1='1'orcoin5='1'thenifcoin1='1'thenpaidtemp:=paidtemp+"00001010";elsepaidtemp:=paidtemp+"00000101";endif;ifpaidtemp>=pricetempthenbackmoney:=paidtemp-pricetemp;neededtemp:="00000000";current_state<=qd;elseneededtemp:=pricetemp-paidtemp;backmoney:="00000000";current_state<=qc;endif;paid<=paidtemp;needed<=neededtemp;endif;ifcoin1/='1'andcoin5/='1'thenifq<10thenq<=q+1;elsecurrent_state<=qg;endif;elseq<=0;endif;whenqg=>failure<='1';showmoneyout<='1';moneyout<=paidtemp;current_state<=qf;q<=0;success<='0';whenqd=>success<='1';ifbackmoney>"00000000"thenshowmoneyout<='1';moneyout<=backmoney;endif;current_state<=qf;q<=0;whenqf=>ifq<4thenq<=q+1;elsecurrent_state<=qa;q<=0;endif;endcase;elseendif;endprocess;endbehav;BCD譯碼模塊完整程序如下:Libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycode1isport<b:instd_logic_vector<7downto0>;bcd0:outstd_logic_vector<3downto0>;bcd1:outstd_logic_vector<3downto0>>;endcode1;architectureoneofcode1isbeginprocess<b>begincasebiswhen"00000000"=>bcd0<="0000";bcd1<="0000";--譯碼"0";when"00000001"=>bcd0<="0001";bcd1<="0000";--譯碼"1";when"00000010"=>bcd0<="0010";bcd1<="0000";--譯碼"2";when"00000011"=>bcd0<="0011";bcd1<="0000";--譯碼"3";when"00000100"=>bcd0<="0100";bcd1<="0000";--譯碼"4";when"00000101"=>bcd0<="0101";bcd1<="0000";--譯碼"5";when"00000110"=>bcd0<="0110";bcd1<="0000";when"00000111"=>bcd0<="0111";bcd1<="0000";when"00001000"=>bcd0<="1000";bcd1<="0000";when"00001001"=>bcd0<="1001";bcd1<="0000";when"00001010"=>bcd0<="0000";bcd1<="0001";when"00001011"=>bcd0<="0001";bcd1<="0001";when"00001100"=>bcd0<="0010";bcd1<="0001";when"00001101"=>bcd0<="0011";bcd1<="0001";when"00001110"=>bcd0<="0100";bcd1<="0001";when"00001111"=>bcd0<="0101";bcd1<="0001";when"00010000"=>bcd0<="0110";bcd1<="0001";when"00010001"=>bcd0<="0111";bcd1<="0001";when"00010010"=>bcd0<="1000";bcd1<="0001";when"00010011"=>bcd0<="1001";bcd1<="0001";when"00010100"=>bcd0<="0000";bcd1<="0010";譯碼"20"whenothers=>null;endcase;endprocess;endone;頂層模塊完整程序如下:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitytopisPort<clk1:instd_logic;C1,C5,P1_5,P2:instd_logic;paid_lcd0,paid_lcd1,needed_lcd0,needed_lcd1,Mout_lcd0,Mout_lcd1:outstd_logic_vector<3downto0>;s,f,showout:outstd_logic>;endtop;architectureoneoftopiscomponentshouhuojiport<clk:instd_logic;coin1:instd_logic;coin5:instd_logic;cola:instd_logic;pepsi:instd_logic;paid:outstd_logic_vector<7downto0>;needed:outstd_logic_vector<7downto0>;success:outstd_logic;failure:outstd_logic;showmoneyout:outstd_logic;moneyout:outstd_logic_vector<7downto0>>;endcomponent;componentcode1port<b:instd_logic_vector<7downto0>;bcd0:outstd_logic_vector<3downto0>;bcd1:outstd_logic_vector<3downto0>>;endcomponent;signalp,n,mo:std_logic_vector<7downto0>;--signals1,s2,s3,s4,s5,s6:std_logic_vector<3downto0>;beginu0:shouhuoji--各模塊連接portmap<clk=>clk1,coin1=>C1,coin5=>C5,cola=>P1_5,pepsi=>P2,success=>s,failure=>f,showmoneyout=>showout,paid=>p,needed=>n,moneyout=>mo>;u1:code1portmap<b=>p,bcd0=>paid_lcd0,bcd1=>paid_lcd1>;u2:code1portmap<b=>n,bcd0=>needed_lcd0,bcd1=>needed_lcd1>;u3:code1portmap<b=>mo,bcd0=>Mout_lcd0,bcd1=>Mout_lcd1>;endone;1.1.4各模塊的連接 各模塊的連接如圖所示:售貨機(jī)主控系統(tǒng)和譯碼器模塊圖售貨機(jī)頂層模塊2、1主控模塊的仿真上圖表示顧客選擇了pepsi飲料后,且投了2個一元的硬幣。Success為高電平,代表售貨機(jī)有飲料售出。且余額為0.上圖表示顧客選擇了pepsi飲料后,且投1個一元的硬幣和一個0.5元的硬幣。failure為高電平,代表售貨機(jī)無飲

溫馨提示

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

評論

0/150

提交評論