基于VHDL自動售貨機的設(shè)計_第1頁
基于VHDL自動售貨機的設(shè)計_第2頁
基于VHDL自動售貨機的設(shè)計_第3頁
基于VHDL自動售貨機的設(shè)計_第4頁
基于VHDL自動售貨機的設(shè)計_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

廣西科技大學(xué)課程設(shè)計基于VHDL自動售貨機的設(shè)計20/21廣西工學(xué)院畢業(yè)設(shè)計(論文)任務(wù)書課題名稱基于VHDL自動售貨機的設(shè)計 指導(dǎo)教師教研室主任系主任 摘要本設(shè)計是以現(xiàn)場可編程邏輯器件(FPGA)為核心的自動售貨機,利用QuartusⅡ軟件編寫verilogHDL硬件描述語言程序以實現(xiàn)自動售貨功能。本設(shè)計主要以程序為主,硬件方面則使用實驗箱,將程序各變量端口與實驗箱管腳進行相應(yīng)的配置,用六開關(guān)分別代表商品價格、所投錢幣價格及確認(rèn)付款找零操作。當(dāng)選擇好商品并投幣后,數(shù)碼管顯示所選商品價格及投入錢幣價格;按下確認(rèn)付款開關(guān),數(shù)碼管顯示應(yīng)找多少錢,蜂鳴器響,對應(yīng)商品LED燈亮。若所投錢幣不足所選商品價格,對應(yīng)警告錢幣不足的LED燈亮。關(guān)鍵字:FPGA、VerilogHDL、自動售貨機、QuartusⅡAbstractThisdesignisanauto-vendingmachinebasedonfieldprogrammablelogicdevices(FPGA).WeuseQuartusⅡtowriteprocedureinverilogHDLwhichisalanguagetodescribehardware.Theprocedurewillrealizethefunctionofauto-vendingmachine. Thisdesignismainlyaboutprocedure.Forthehardware,weuseexperimentalbox.Weallocateallvariablequantitiesintheproceduretothefeetinexperimentalbox.Weusesixswitchrespectivelyrepresentcommoditypricesandthrowmoneypriceandconfirmpaymentchangeoperation.Whenchoosinggoodcommoditiesandcoin,digitalpipedisplayselectedcommoditypricesandmoneyprice.Whenpressingconfirmpaymentswitch,digitalpipedisplayshouldfindhowmuchmoney,buzzersounded,correspondingcommodityLEDlights.Ifthrowmoneyshortageselectedcommodityprices,correspondingwarningmoneyshortageofLEDlights.Keywords:FPGA、VerilogHDL、auto-vendingmachine、QuartusⅡ目錄1、緒論………………………..51.1背景……………………..51.2VHDL語言介紹…………51.2.1VHDL語言的發(fā)展背景…………51.2.2VHDL語言的基本結(jié)構(gòu)……………62、自動售貨機的設(shè)計…………82.1設(shè)計說明………………...82.1.1流程說明……………..82.1.2各模塊說明…………..92.1.3頂層模塊……………103、仿真時序圖……………….123.1只選擇商品不投幣……………………123.2選擇商品但投幣不足……….……….123.3選擇商品,支付硬幣剛夠…………….133.4選擇兩樣商品,支付夠………………133.5選擇一樣商品,支付大于應(yīng)付………14.4、總結(jié)………………………15致謝………………………….16參考文獻…………………….17附錄………………………….181緒論1.1背景隨著科技的發(fā)展和社會的進步,自動化商業(yè)機械有了越來越廣泛的應(yīng)用,自動售貨機作為自動化商業(yè)機械的代表被廣泛用于公共場所自動售貨,給人們的生活帶來了極大的方便。特別在發(fā)達國家,自動售貨機已經(jīng)十分普及,自動售貨機可售出各種成型包裝小商品,各種袋裝,盒裝,軟瓶裝等小商品。因其無需專人值守而可以每天24小時售貨,被稱為“無人小超市”。在我國,由于多種原因,自動售貨機的市場推廣緩慢,處于培育階段,但可以預(yù)見,這種方便快捷的服務(wù)形式因其適合現(xiàn)代生活快節(jié)奏的需要,在不久的將來必會獲得大眾的喜愛。隨著商品市場的不斷繁榮,自動售貨機和自動服務(wù)設(shè)施必將逐步得到廣泛的應(yīng)用。本文設(shè)計研究自動售貨機的主要功能模塊,主要包括貨幣處理模塊、余額計算模塊、顯示模塊,延時和時控模塊,由于條件上的限制,對投幣模塊中的貨幣檢測未進行處理。相應(yīng)的主要功能有選擇貨物,多次購買,出貨找零,顯示,延時和時控功能。本文是通過使用VHDL語言,基于FPGA可編程芯片,并通過使用QuartusⅡ軟件進行程序設(shè)計,模擬仿真,功能驗證,以更好的來理解和掌握自動售貨機控制系統(tǒng)的工作原理和設(shè)計方法,以及學(xué)習(xí)和掌握基于EDA的電子產(chǎn)品設(shè)計方法,進一步加深對VHDL語言以及QuartusⅡ軟件、FPGA可編程芯片的認(rèn)識與了解。更深入的學(xué)習(xí)EDA技術(shù),更好地掌握本專業(yè)知識。1.2VHDL語言介紹VHDL[2](VeryHighSpeedIntegratedCircuitHard-wareDescriptionLanguage)是指超高速集成電路硬件描述語言。VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式,以及描述風(fēng)格與句法,類似于一般的計算機一個電路模塊或一高級語言,如C語言。VHDL的程序結(jié)構(gòu)特點是,將一項工程設(shè)計或稱設(shè)計實體(可以是一個元件、一個電路模塊或一個系統(tǒng))分成外部(或稱可視部分,即端口)和內(nèi)部(或稱不可視部分)。在對一個設(shè)計實體定義了外部界面后,一旦其內(nèi)部開發(fā)完成,其他的設(shè)計就可以直接調(diào)用這個實體。這種將設(shè)計實體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計的基本點。1.2.1VHDL語言的發(fā)展背景硬件描述語言的發(fā)展至今已經(jīng)有幾十年的歷史,并已成功應(yīng)用到系統(tǒng)的仿真、驗證和設(shè)計綜合等方面。其中比較著名的的有VHDL語言、AHDL語言、VerilogHDL語言等。而在七八十年代初期VHDL語言是為美國國防部工作的。它是以ADA語言為根源,就像將被看到的整體結(jié)構(gòu)的VHDL和其他的VHDL報表。1986年,有人提議VHDL語言作為IEEE標(biāo)準(zhǔn)。它經(jīng)歷了一些修改意見和修改,直至1987年12月獲得通過,成為IEEE1076至1987標(biāo)準(zhǔn)。它的出現(xiàn)為電子設(shè)計自動化的普及和推廣奠定了堅實的基礎(chǔ)。之后IEEE對87版本進行了修訂,于1933年推出了較為完善的93版本(被定為ANSI/IEEEstd1076-1993標(biāo)準(zhǔn)),使得VHDL語言的編程更加靈活方便。此后,越來越多的人開始使用VHDL語言進行數(shù)字電路系統(tǒng)的設(shè)計。而VHDL語言有不同于軟件編程語言,在編程結(jié)構(gòu)和規(guī)范上有自己的特點,在此,本文就從簡單介紹VHDL語言基礎(chǔ)開始。1.2.2VHDL語言的基本結(jié)構(gòu)一個完整的VHDL[3]語言程序通常包括實體(Entity)、構(gòu)造體(Architecture)、配置(Configuration)、包集合(Package)和庫(Library)5個部分。前4種是可以分別編譯的源設(shè)計單元。下面分別介紹:實體:實體是用于描述所設(shè)計電路系統(tǒng)的外部接口信號,系統(tǒng)的輸入輸出端口及屬性都是在實體中定義的。一個實體是設(shè)計中最基本的。最上層水平的設(shè)計是最高層的實體。如果設(shè)計分層次,那么最高層的描述將有低層描述的說明附在它里面。構(gòu)造體:構(gòu)造體用于描述系統(tǒng)內(nèi)部的結(jié)構(gòu)和行為,系統(tǒng)要實現(xiàn)的功能都是在構(gòu)造體內(nèi)用語言進行描述的。所有實體可以有一個構(gòu)造體的說明來模擬。該構(gòu)造體描述的行為實體。一個單一的實體可以有多個構(gòu)造體。一個構(gòu)造體可能是行為而另一個可能是一個結(jié)構(gòu)描述的設(shè)計。配置:配置用于從庫中選取所需單元來組成系統(tǒng)設(shè)計的不同版本。配置聲明是用來約束一個組件實例的一雙實體架構(gòu)。一個配置可以被視為像一個零件清單進行設(shè)計。它描述的使用的每一個實體的行為,就像零件列表說明哪一部分用于每一部分的設(shè)計。包集合:包集合存放各種設(shè)計模塊都能共享的數(shù)據(jù)類型、常數(shù)和子程序等。包集合是一個收集常用數(shù)據(jù)類型和子程序中使用的設(shè)計。想想包含使用的工具建立的設(shè)計的一個工具箱作為一個包。庫:庫存放已經(jīng)編譯的實體、構(gòu)造體、包集合和配置。庫可由用戶生成或者是由ASIC芯片制造商提供,以便在設(shè)計中為大家共享。這種功能可以通過特定語句來實現(xiàn)。除了以上介紹的各種術(shù)語,其它術(shù)語還有:驅(qū)動程序:這是一個信號上的一個源。如果一個信號有兩個來源,那么當(dāng)兩個來源是由兩個驅(qū)動程序來起作用的??偩€:這個詞,“巴士”通常使我想起一組信號或某個特定的通信方式,用于設(shè)計的硬件。在VHDL語言,總線是一種特殊的信號,表明可能由驅(qū)動程序來完成。屬性:一個關(guān)于VHDL對象連接到VHDL的物體或預(yù)先確定的數(shù)據(jù)的屬性數(shù)據(jù)。例如,電流驅(qū)動能力的一個緩沖區(qū)或最高工作溫度的裝置。通用:泛指是VHDL語言傳遞信息實體參數(shù)的任期。例如,如果一個實體是一個門級模型的上升和下降延遲,上升和下降延誤的值才能通過成為實體與仿制。進程:一個進程是執(zhí)行的VHDL中的一個基本單位。一切行動,是在模擬VHDL描述分為單個或多個進程。在VHDL語言程序中,最重要的就是實體和構(gòu)造體部分。它們是一個具體設(shè)計的核心。如果說實體是系統(tǒng)和外部交流的橋梁,那么構(gòu)造體就是處理內(nèi)外交流的信號加工廠。在構(gòu)造體中各種信號協(xié)調(diào)工作,最后得到所需的輸出,傳送到輸出端口和外部進行交流。本次課程設(shè)計采用模式5,下圖為模式5的電路圖:2自動售貨機的設(shè)計2.1設(shè)計說明本文設(shè)計的自動售貨機可銷售兩種商品;售貨機可識別1元和5角兩種貨幣,在一次購買過程中,可購買一個或多個商品,系統(tǒng)會自動計算所需錢數(shù)和找零錢數(shù)并自動找零。另外有3個發(fā)光二極管、3個LCD數(shù)碼管。3個發(fā)光二極管分別用來顯示交易成功、交易失敗、正在找零。3個LCD數(shù)碼管:1個用來顯示所需金額,1個用來顯示已付金額,1個用來顯示找零數(shù)。1個蜂鳴器,蜂鳴器響表示交易結(jié)束。本文設(shè)計的自動售貨機有兩種飲料可以出售,售價均為1.5元。售貨機可以識別1元,5角兩種貨幣。如果投入金額總值等于或超過售價就可以將飲料放出,并具有相應(yīng)的找零錢功能。(1)用戶可多次選擇購買的飲料種類,某次飲料種類選定后等待投幣。如等待時間超過10秒鐘,則認(rèn)為用戶放棄選購,售貨機自動回到等待狀態(tài),等待新的交易。若在10秒內(nèi),再次選中飲料,則再次等待。(2)每次交易完成,售貨機自動回到等待狀態(tài),等待新的交易。(3)用按鍵模擬投入1元,5角這兩種貨幣,可連續(xù)投幣,同時顯示投入的金額和還應(yīng)投入的金額。若某次投幣后金額不足,且一定時限內(nèi)不再投幣(10秒左右),則交易失敗,并退幣,顯示退還金額。(4)具有指示電路,分別指示購買成功、交易取消(交易失?。┖驼伊?。(5)相應(yīng)顯示有延時和時控功能。2.1.1流程說明本文設(shè)計的自動售貨機當(dāng)通電時,表示一次投幣銷售過程的開始。顧客選擇一種商品或多種則進入投幣狀態(tài)。若不投幣,則自動返回初始狀態(tài)。投幣后,系統(tǒng)自動計算所投錢數(shù)。若投幣夠,則出貨找零。若投幣不夠,等待10秒后,顧客沒有繼續(xù)投幣,則退幣并回到初始狀態(tài)。本系統(tǒng)的投幣銷售流程圖如圖所示:2.1.2各模塊說明本文設(shè)計的自動售貨機總體只有一個模塊:總控模塊??偪啬K:總控模塊是本系統(tǒng)最重要的模塊,該模塊大體有5個輸入端口和7個輸出端口。其輸入端口有:clk、coin5(投入5角貨幣)、coin10(投入1元貨幣)、price1(選擇商品1)、price2(選擇商品2),輸出端口有:aid(已投入多少錢)、needed(還需要多少錢)、moneyout(找零)、success(燈亮表示交易成功)、failure(燈亮表示交易失敗)、showmoneyout(燈亮表示正在找零)。alarm(蜂鳴器響表示交易結(jié)束)該模塊實現(xiàn)了本系統(tǒng)最重要的交易過程,包括選擇商品、投入貨幣、計算貨幣,找零出貨等。2.1.3頂層模塊5個輸入端口通過按鍵控制輸入,7個輸出端口通過硬件箱實現(xiàn)功能。2.2狀態(tài)之間的轉(zhuǎn)換本文所設(shè)計的自動售貨機進程可分為7個狀態(tài):a,b,c,d,e,f,g。a為開始狀態(tài),在a狀態(tài)中有按鍵按下時就進入b狀態(tài)(投幣狀態(tài))。b為投幣狀態(tài),在b狀態(tài)中如果等待十秒還沒投幣就進入e狀態(tài),然后從e狀態(tài)返回a狀態(tài)。若有貨幣投入,但投幣不夠時,即進入c狀態(tài)(繼續(xù)投幣),若等待十秒不投,即進入g狀態(tài)(退錢),若投幣但還不夠,則繼續(xù)投幣。當(dāng)投幣夠了,即進入d狀態(tài)(出貨找零)。之后進入f狀態(tài)(延時)后返回a狀態(tài)。c為繼續(xù)投幣狀態(tài),在規(guī)定時間內(nèi)如果不投幣就進入g狀態(tài),如果投幣就進入d狀態(tài)。d為出貨找零狀態(tài),在該狀態(tài)進行交易數(shù)額計算,遵循多還少補設(shè)定。e為交易進行中延時狀態(tài),在規(guī)定時間內(nèi)能進行多次選擇商品與多次支付貨幣。f為交易結(jié)束延時狀態(tài),在規(guī)定時間內(nèi)重新開始另一次交易。g為退錢狀態(tài),在交易失敗時,即支付貨幣不夠時進行貨幣返還操作。下圖為狀態(tài)之間的轉(zhuǎn)換圖:在這次課程設(shè)計中,我們采用了實驗箱模式5,下圖是管腳的分配:3仿真時序圖3.1只選擇商品不投幣只選擇商品但不投幣,時序圖表示需要投幣1.5元,交易失敗,交易結(jié)束,蜂鳴器響。3.2選擇商品但投幣不足選擇商品后投幣不足,我們只以兩個5角硬幣做支付,1元的類似。時序圖表示在投放2個5角硬幣后,還需要5角,但是沒有再幣,最后返還1元,交易失敗,交易結(jié)束,蜂鳴器響。3.3選擇商品,支付硬幣剛夠這兩個圖均表示交易成功,支付剛好夠數(shù),沒有返還,交易結(jié)束,蜂鳴器響。3.4選擇兩樣商品,支付剛夠這個圖表示交易成功,支付剛好夠數(shù),沒有返還,交易結(jié)束,蜂鳴器響。3.5選擇一樣商品,支付大于應(yīng)付這個圖表示交易成功,支付大于應(yīng)付,找錢返還,交易結(jié)束,蜂鳴器響。4總結(jié)通過兩周的課程設(shè)計,我設(shè)計并完成了自動售貨機的設(shè)計,并用QuartusII完成了仿真,并出了波形圖。硬件實現(xiàn)方面,在實試驗箱上選擇模式5,因此硬件上完美實現(xiàn)功能。最終的自動售貨機有識別硬幣、顯示飲料種類和單價、余額的計算、找零、出貨等功能,基本上能滿足需求。通過本次課設(shè),大概掌握了EDA和FPGA的開發(fā)流程。并且通過程序的設(shè)計,對狀態(tài)機的設(shè)計有了一個更深刻的理解。對自動售貨機的原理更是有了一個很深刻的認(rèn)識。特別是把這個功能設(shè)計和實際聯(lián)系起來的時候,趣味性大增,考慮問題也更加全面??偟膩碚f,本次課程設(shè)計受益匪淺。不管是在知識方面還是,工程設(shè)計方面,都有了一個提升。致謝在這次課程設(shè)計中,經(jīng)過同學(xué)和韋艷霞老師耐心的指導(dǎo)和幫助,熟悉了QuartusII軟件的功能,順利完成了課程設(shè)計,掌握了EDA的相關(guān)技能,了解了軟件的基本性質(zhì)和實用性能。在這里再次感謝老師和同學(xué)們的幫助,同時也希望在EDA領(lǐng)域有所建樹。參考文獻1、潘松,黃繼業(yè).EDA技術(shù)實用教程(第二版)[M].北京:北京航空航天大學(xué)出版社,19902、劉欲曉,方強,黃宛寧等.EDA技術(shù)與VHDL電路開發(fā)應(yīng)用實踐[M].北京:電子工業(yè)出版社,20093、譚會生,瞿遂春等.EDA技術(shù)綜合應(yīng)用實例與分析[M].西安:西安電子科技大學(xué)出版社.2004.4、徐志軍,徐光輝編著.《CPLD/FPGA的開發(fā)與應(yīng)用》,電子工業(yè)出版社,2001.15、潘松,黃繼業(yè)編著.《EDA技術(shù)實用教程》,2005,科學(xué)出版社6、王開軍,姜宇柏編著.《面向CPLD/FPGA的VHDL設(shè)計》,機械工業(yè)出版社,2006.107、詹仙寧編著.《VHDL開發(fā)精解與實例剖析》,電子工業(yè)出版社,2009.98、張亦華編著.《數(shù)字電路EDA入門——VHDL程序?qū)嵗?,北京郵電大學(xué)出版社,2003附錄Libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityshouhuojioriginalisport(clk:instd_logic;--時鐘信號coin5:instd_logic;--5角錢信號coin10:instd_logic;--1元錢信號price1:instd_logic;--商品1選擇信號price2:instd_logic;--商品2選擇信號paid:outstd_logic_vector(3downto0);--已支付錢數(shù)needed:outstd_logic_vector(3downto0);--需要支付錢數(shù)moneyout:outstd_logic_vector(3downto0);--返回找零錢數(shù)success:outstd_logic;--交易成功信號failure:outstd_logic;--交易失敗信號alarm:outstd_logic;--交易結(jié)束信號showmoneyout:outstd_logic);--找零狀態(tài)信號endshouhuojioriginal;architecturebehavofshouhuojioriginalistypestate_typeis(qa,qb,qe,qc,qg,qd,qf);signalcurrent_state:state_type:=qa;signalq:integerrange0to100;beginprocess(clk)variablepaidtemp:std_logic_vector(3downto0);variableneededtemp:std_logic_vector(3downto0);variablebackmoney:std_logic_vector(3downto0);variablepricetemp:std_logic_vector(3downto0);beginifclk'eventandclk='1'thencasecurrent_stateiswhenqa=>paidtemp:="0000";--狀態(tài)qa為初始狀態(tài)neededtemp:="0000";backmoney:="0000";pricetemp:="0000";q<=0;showmoneyout<='0';moneyout<="0000";paid<="0000";needed<="0000";failure<='0';success<='0';alarm<='0';ifprice1='1'orprice2='1'thencurrent_state<=qb;ifprice1='1'thenpricetemp:=pricetemp+15;neededtemp:=pricetemp;Elsepricetemp:=pricetemp+15;neededtemp:=pricetemp;endif;endif;paid<=paidtemp;needed<=neededtemp;whenqb=>alarm<='0';--狀態(tài)qb為投幣狀態(tài),支付錢幣購買商品ifcoin5='1'orcoin10='1'thenifcoin5='1'thenpaidtemp:=paidtemp+5;elsepaidtemp:=paidtemp+10;endif;ifpaidtemp>=pricetempthenbackmoney:=paidtemp-pricetemp;neededtemp:="0000";current_state<=qd;elseneededtemp:=pricetemp-paidtemp;backmoney:="0000";current_state<=qc;q<=0;endif;paid<=paidtemp;needed<=neededtemp;endif;ifq<8thenq<=q+1;ifprice1='1'orprice2='1'thenq<=0;ifprice1='1'thenpricetemp:=pricetemp+15;neededtemp:=neededtemp+15;elsepricetemp:=pricetemp+15;neededtemp:=neededtemp+15;endif;paid<=paidtemp;needed<=neededtemp;endif;elsecurrent_state<=qe;q<=0;endif;whenqe=>alarm<='1';--狀態(tài)qe為交易失敗,不追加支付錢幣和選擇商品failure<='1';ifq<4thenq<=q+1;elsecurrent_state<=qa;q<=0;endif;whenqc=>alarm<='0';--狀態(tài)qc為有錢幣支付,但錢幣不足或超過,繼續(xù)支付或返還錢幣ifcoin5='1'orcoin10='1'thenifcoin5='1'thenpaidtemp:=paidtemp+5;elsepaidtemp:=paidtemp+10;endif;if

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論