![基于VHDL的自動售貨機(jī)的設(shè)計_第1頁](http://file4.renrendoc.com/view10/M03/30/16/wKhkGWVxGo6AenRQAAMQPjkdlYE189.jpg)
![基于VHDL的自動售貨機(jī)的設(shè)計_第2頁](http://file4.renrendoc.com/view10/M03/30/16/wKhkGWVxGo6AenRQAAMQPjkdlYE1892.jpg)
![基于VHDL的自動售貨機(jī)的設(shè)計_第3頁](http://file4.renrendoc.com/view10/M03/30/16/wKhkGWVxGo6AenRQAAMQPjkdlYE1893.jpg)
![基于VHDL的自動售貨機(jī)的設(shè)計_第4頁](http://file4.renrendoc.com/view10/M03/30/16/wKhkGWVxGo6AenRQAAMQPjkdlYE1894.jpg)
![基于VHDL的自動售貨機(jī)的設(shè)計_第5頁](http://file4.renrendoc.com/view10/M03/30/16/wKhkGWVxGo6AenRQAAMQPjkdlYE1895.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
自動售貨機(jī)的設(shè)計與實(shí)現(xiàn)摘要:本文介紹了VHDL的特點(diǎn)和應(yīng)用,以自動售貨機(jī)為例,詳細(xì)說明了其實(shí)現(xiàn)過程。本系統(tǒng)使用VHDL語言編寫,用狀態(tài)基來實(shí)現(xiàn)各功能,使用MAXPLUSⅡ進(jìn)行仿真,模擬各模塊的實(shí)現(xiàn)。本文詳細(xì)介紹如何運(yùn)用VHDL語言及MAXPLUSⅡ進(jìn)行仿真,本文設(shè)計的自動售貨機(jī)實(shí)現(xiàn)了選擇貨物,投幣,找零,顯示,屢次交易,在一次購置中選擇多個貨物等自動售貨機(jī)的根本功能。本文給出了各個模塊的源程序、各模塊的連接圖以及各個模塊的仿真圖,并做出了詳細(xì)的分析。關(guān)鍵詞:VHDL語言,MAXPLUSⅡ,自動售貨機(jī)DesignandimplementationofvendingmachineElectronicsandInformationScienceandTechnologyCandidate:JiangHuiAdvisor:CaiJianhuaAbstract:ThisarticleintroducesthecharacteristicsandapplicationofVHDL,withaexampleofdesigningvendingmachines,describesdetailedlytheimplementationprocess.ThesystemusestheVHDLlanguage,realizingeveryfunctionusesstatemachines,applyingMAXPLUSⅡtosimulateinordertorealizethefunctioneverymodules.ThisarticledescribestheuseofVHDLlanguageandMAXPLUSⅡsimulation,toachievethevendingmachine'sbasicfunctions,aschoosegood,coin,givechange,buygoodmorethanonetime,choosemorethanonegoodinonetime,display,andsoon.Thisarticlegivestheoriginalprogramofeverymodulesandthesimulatingdiagramofeverymodulesandthecombinationofallofthemodules,givesdetailanalyseofeverysimulatingdiagramaswell.Keywords:VHDLlanguage,MAXPLUSⅡ,Vendingmachine引言隨著科技的開展和社會的進(jìn)步,自動化商業(yè)機(jī)械有了越來越廣泛的應(yīng)用,自動售貨機(jī)作為自動化商業(yè)機(jī)械的代表被廣泛用于公共場所自動售貨,給人們的生活帶來了極大的方便。特別在興旺國家,自動售貨機(jī)已經(jīng)十分普及,自動售貨機(jī)可售出各種成型包裝小商品,各種袋裝,盒裝,軟瓶裝等小商品。因其無需專人值守而可以每天24小時售貨,被稱為“無人小超市〞。在我國,由于多種原因,自動售貨機(jī)的市場推廣緩慢,處于培育階段,但可以預(yù)見,這種方便快捷的效勞形式因其適合現(xiàn)代生活快節(jié)奏的需要,在不久的將來必會獲得群眾的喜愛。隨著商品市場的不斷繁榮,自動售貨機(jī)和自動效勞設(shè)施必將逐步得到廣泛的應(yīng)用。本文設(shè)計研究自動售貨機(jī)的主要功能模塊,主要包括貨幣處理模塊、余額計算模塊、顯示模塊,延時和時控模塊,由于條件上的限制,對投幣模塊中的貨幣檢測未進(jìn)行處理。相應(yīng)的主要功能有選擇貨物,屢次購置,出貨找零,顯示,延時和時控功能。本文是通過使用VHDL語言,基于FPGA可編程芯片,并通過使用MAXPLUSⅡ軟件進(jìn)行程序設(shè)計,模擬仿真,功能驗(yàn)證,以更好的來理解和掌握自動售貨機(jī)控制系統(tǒng)的工作原理和設(shè)計方法,以及學(xué)習(xí)和掌握基于EDA的電子產(chǎn)品設(shè)計方法,進(jìn)一步加深對VHDL語言以及MAXPLUSⅡ軟件、FPGA可編程芯片的認(rèn)識與了解。更深入的學(xué)習(xí)EDA技術(shù),更好地掌握本專業(yè)知識。1本論概述本文設(shè)計的自動售貨機(jī)是基于VHDL[1](VeryHighSpeedIntegratedCircuitHard-wareDescriptionLanguage,超高速集成電路硬件描述語言)語言,使用MAXPLUSⅡ軟件進(jìn)行模擬仿真,在FPGA〔FieldProgrammableGateArry,現(xiàn)場可編程門陣列〕可編程芯片上實(shí)現(xiàn)的一款EDA(ElectronicDesignAutomation,電子設(shè)計自動化〕技術(shù)的產(chǎn)品。1.1系統(tǒng)的工作原理本文設(shè)計的自動售貨機(jī)有兩種飲料可以出售,售價分別為2元和3元。售貨機(jī)可以識別1元,5元兩種貨幣。如果投入金額總值等于或超過售價就可以將飲料放出,并具有相應(yīng)的找零錢功能?!?〕用戶可屢次選擇購置的飲料種類,某次飲料種類選定后等待投幣。如等待時間超過10秒鐘,那么認(rèn)為用戶放棄選購,售貨機(jī)自動回到等待狀態(tài),等待新的交易。假設(shè)在10秒內(nèi),再次選中飲料,那么再次等待?!?〕每次交易完成,售貨機(jī)自動回到等待狀態(tài),等待新的交易?!?〕用按鍵模擬投入1元,5元兩種貨幣,可連續(xù)投幣,同時顯示投入的金額和還應(yīng)投入的金額。假設(shè)某次投幣后金額缺乏,且一定時限內(nèi)不再投幣〔10秒左右〕,那么交易失敗,并退幣,顯示退還金額?!?〕具有指示電路,分別指示購置成功、交易取消〔交易失敗〕和找零?!?〕相應(yīng)顯示有延時和時控功能。1.2VHDL語言介紹VHDL[2](VeryHighSpeedIntegratedCircuitHard-wareDescriptionLanguage〕是指超高速集成電路硬件描述語言。VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式,以及描述風(fēng)格與句法,類似于一般的計算機(jī)一個電路模塊或一高級語言,如C語言。VHDL的程序結(jié)構(gòu)特點(diǎn)是,將一項(xiàng)工程設(shè)計或稱設(shè)計實(shí)體(可以是一個元件、一個電路模塊或一個系統(tǒng)〕分成外部〔或稱可視局部,即端口〕和內(nèi)部〔或稱不可視局部〕。在對一個設(shè)計實(shí)體定義了外部界面后,一旦其內(nèi)部開發(fā)完成,其他的設(shè)計就可以直接調(diào)用這個實(shí)體。這種將設(shè)計實(shí)體分成內(nèi)外局部的概念是VHDL系統(tǒng)設(shè)計的根本點(diǎn)。VHDL語言的開展背景硬件描述語言的開展至今已經(jīng)有幾十年的歷史,并已成功應(yīng)用到系統(tǒng)的仿真、驗(yàn)證和設(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è)計自動化的普及和推廣奠定了堅(jiān)實(shí)的根底。之后IEEE對87版本進(jìn)行了修訂,于1933年推出了較為完善的93版本〔被定為ANSI/IEEEstd1076-1993標(biāo)準(zhǔn)〕,使得VHDL語言的編程更加靈活方便。此后,越來越多的人開始使用VHDL語言進(jìn)行數(shù)字電路系統(tǒng)的設(shè)計。而VHDL語言有不同于軟件編程語言,在編程結(jié)構(gòu)和標(biāo)準(zhǔn)上有自己的特點(diǎn),在此,本文就從簡單介紹VHDL語言根底開始。VHDL語言的根本結(jié)構(gòu)一個完整的VHDL[3]語言程序通常包括實(shí)體(Entity)、構(gòu)造體(Architecture)、配置(Configuration)、包集合(Package)和庫(Library)5個局部。前4種是可以分別編譯的源設(shè)計單元。下面分別介紹:實(shí)體:實(shí)體是用于描述所設(shè)計電路系統(tǒng)的外部接口信號,系統(tǒng)的輸入輸出端口及屬性都是在實(shí)體中定義的。一個實(shí)體是設(shè)計中最根本的。最上層水平的設(shè)計是最高層的實(shí)體。如果設(shè)計分層次,那么最高層的描述將有低層描述的說明附在它里面。構(gòu)造體:構(gòu)造體用于描述系統(tǒng)內(nèi)部的結(jié)構(gòu)和行為,系統(tǒng)要實(shí)現(xiàn)的功能都是在構(gòu)造體內(nèi)用語言進(jìn)行描述的。所有實(shí)體可以有一個構(gòu)造體的說明來模擬。該構(gòu)造體描述的行為實(shí)體。一個單一的實(shí)體可以有多個構(gòu)造體。一個構(gòu)造體可能是行為而另一個可能是一個結(jié)構(gòu)描述的設(shè)計。配置:配置用于從庫中選取所需單元來組成系統(tǒng)設(shè)計的不同版本。配置聲明是用來約束一個組件實(shí)例的一雙實(shí)體架構(gòu)。一個配置可以被視為像一個零件清單進(jìn)行設(shè)計。它描述的使用的每一個實(shí)體的行為,就像零件列表說明哪一局部用于每一局部的設(shè)計。包集合:包集合存放各種設(shè)計模塊都能共享的數(shù)據(jù)類型、常數(shù)和子程序等。包集合是一個收集常用數(shù)據(jù)類型和子程序中使用的設(shè)計。想想包含使用的工具建立的設(shè)計的一個工具箱作為一個包。庫:庫存放已經(jīng)編譯的實(shí)體、構(gòu)造體、包集合和配置。庫可由用戶生成或者是由ASIC芯片制造商提供,以便在設(shè)計中為大家共享。這種功能可以通過特定語句來實(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í)體參數(shù)的任期。例如,如果一個實(shí)體是一個門級模型的上升和下降延遲,上升和下降延誤的值才能通過成為實(shí)體與仿制。進(jìn)程:一個進(jìn)程是執(zhí)行的VHDL中的一個根本單位。一切行動,是在模擬VHDL描述分為單個或多個進(jìn)程。在VHDL語言程序中,最重要的就是實(shí)體和構(gòu)造體局部。它們是一個具體設(shè)計的核心。如果說實(shí)體是系統(tǒng)和外部交流的橋梁,那么構(gòu)造體就是處理內(nèi)外交流的信號加工廠。在構(gòu)造體中各種信號協(xié)調(diào)工作,最后得到所需的輸出,傳送到輸出端口和外部進(jìn)行交流。下面具體說明實(shí)體和構(gòu)造體。實(shí)體一個VHDL實(shí)體指定的實(shí)體名稱,實(shí)體的端口,以及實(shí)體相關(guān)的信息。所有設(shè)計創(chuàng)立使用一個或多個實(shí)體。讓我們來看看一個簡單的實(shí)體例子:ENTITYmuxISPORT(a,b,c,d:INBIT;s0,s1:INBIT;x:OUTBIT);ENDmux;關(guān)鍵字“實(shí)體〞是開始一個實(shí)體聲明的標(biāo)志,在整本文的說明中,標(biāo)準(zhǔn)封裝中關(guān)鍵字的語言和類型全部用大寫字母來顯示。例如,在前面的例如中,關(guān)鍵字是ENTITY,IS,PORT,IN,INOUT,,等等。如果標(biāo)準(zhǔn)型是少量的。用戶創(chuàng)立像復(fù)用一樣的姓名,在上面的例子中,將以小寫顯示。實(shí)體的名稱是多路復(fù)用,該實(shí)體有7個端口和端口條款。6個端口,一個是輸入端口,另一個是輸出端口。4個數(shù)據(jù)輸入端口(a,b,c,d)是位寬類型。這兩個多路選擇輸入是s0和s1,也都是位寬類型。輸出端口也是位寬類型。實(shí)體描述外界的接口。它規(guī)定了一些端口,端口方向和端口的類型。比起這里顯示的信息,實(shí)體可以存放更多的信息,但是這為我們提供了建立更復(fù)雜例子的根底。構(gòu)造體實(shí)體是描述接口的VHDL模型。構(gòu)造體描述了實(shí)體的根本功能,并包含了模擬實(shí)體行為的陳述。構(gòu)造體始終是涉及實(shí)體和描述實(shí)體的行為。計數(shù)設(shè)備的構(gòu)造體更早的像這樣描述:ARCHITECTUREdataflowOFmuxISSIGNALselect:INTEGER;BEGINselect<=0WHENs0=‘0’ANDs1=‘0’ELSE1WHENs0=‘1’ANDs1=‘0’ELSE2WHENs0=‘0’ANDs1=‘1’ELSE3;x<=aAFTER0.5NSWHENselect=0ELSEbAFTER0.5NSWHENselect=1ELSEcAFTER0.5NSWHENselect=2ELSEdAFTER0.5NS;ENDdataflow;關(guān)鍵字ARCHITECTURE本聲明描述了一個實(shí)體的構(gòu)架。該構(gòu)造體的名字是數(shù)據(jù)流。該實(shí)體的構(gòu)架是一種被稱為多路復(fù)用的描述。實(shí)體和結(jié)構(gòu)連接之間的原因是一個實(shí)體可以有多個構(gòu)造體來描述實(shí)體的行為。例如,一個構(gòu)造可能是一個行為描述,另一個可能是結(jié)構(gòu)性的描述。在關(guān)鍵字ARCHITECTURE和BEGIN的文字區(qū)域是本地信號和供日后使用的組件。在這個例子中的信號選擇被宣布為當(dāng)?shù)氐男盘?。?gòu)造體的申明區(qū)域是由關(guān)鍵字BEGIN開始的。所有在BEGIN和ENDnetliststatement之間的申明被稱為并列的申明,因?yàn)樗械纳昝魍瑫r執(zhí)行。1.3MAX+PLUSⅡ的介紹Max+plusⅡ是Altera公司提供的FPGA/CPLD開發(fā)集成環(huán)境,Altera是世界上最大可編程邏輯器件的供給商之一。Max+plusⅡ界面友好,使用便捷,被譽(yù)為業(yè)界最易用易學(xué)的EDA軟件。在Max+plusⅡ上可以完成設(shè)計輸入、元件適配、時序仿真和功能仿真、編程下載整個流程,它提供了一種與結(jié)構(gòu)無關(guān)的設(shè)計環(huán)境,是設(shè)計者能方便地進(jìn)行設(shè)計輸入、快速處理和器件編程。Max+plusⅡ開發(fā)系統(tǒng)的特點(diǎn)開放的界面:Max+plusⅡ支持與Cadence,Exemplarlogic,MentorGraphics,Synplicty,Viewlogic和其它公司所提供的EDA工具接口。與結(jié)構(gòu)無關(guān):Max+plusⅡ系統(tǒng)的核心Complier支持Altera公司的FLEX10K、FLEX8000、FLEX6000、MAX9000、MAX7000、MAX5000和Classic可編程邏輯器件,提供了世界上唯一真正與結(jié)構(gòu)無關(guān)的可編程邏輯設(shè)計環(huán)境。完全集成化:Max+plusⅡ的設(shè)計輸入、處理與較驗(yàn)功能全部集成在統(tǒng)一的開發(fā)環(huán)境下,這樣可以加快動態(tài)調(diào)試、縮短開發(fā)周期。豐富的設(shè)計庫:Max+plusⅡ提供豐富的庫單元供設(shè)計者調(diào)用,其中包括74系列的全部器件和多種特殊的邏輯功能〔Macro-Function〕以及新型的參數(shù)化的兆功能〔Mage-Function〕。模塊化工具:設(shè)計人員可以從各種設(shè)計輸入、處理和較驗(yàn)選項(xiàng)中進(jìn)行選擇從而使設(shè)計環(huán)境用戶化。硬件描述語言〔HDL〕:Max+plusⅡ軟件支持各種HDL設(shè)計輸入選項(xiàng),包括VHDL、VerilogHDL和Altera自己的硬件描述語言AHDL。Opencore特征:Max+plusⅡ軟件具有開放核的特點(diǎn),允許設(shè)計人員添加自己認(rèn)為有價值的宏函數(shù)。Max+plusⅡ功能簡介原理圖輸入〔GraphicEditor〕:MAX+PLUSII軟件具有圖形輸入能力,用戶可以方便的使用圖形編輯器輸入電路圖,圖中的元器件可以調(diào)用元件庫中元器件,除調(diào)用庫中的元件以外,還可以調(diào)用該軟件中的符號功能形成的功能塊。硬件描述語言輸入〔TextEditor〕:MAX+PLUSII軟件中有一個集成的文本編輯器,該編輯器支持VHDL,AHDL和Verilog硬件描述語言的輸入,同時還有一個語言模板使輸入程序語言更加方便,該軟件可以對這些程序語言進(jìn)行編譯并形成可以下載配置數(shù)據(jù)。波形編輯器(WaveformEditor):在進(jìn)行邏輯電路的行為仿真時,需要在所設(shè)計電路的輸入端參加一定的波形,波形編輯器可以生成和編輯仿真用的波形〔*.SCF文件〕,使用該編輯器的工具條可以容易方便的生成波形和編輯波形使用時只要將欲輸入波形的時間段用鼠標(biāo)涂黑,然后選擇工具條中的按鈕,例如,如果要某一時間段為高電平,只需選擇按鈕〞1〞。還可以使用輸入的波形(*.WDF文件)經(jīng)過編譯生成邏輯功能塊,相當(dāng)于一個芯片的輸入輸出波形,但不知是何種芯片,使用該軟件功能可以解決這個問題,設(shè)計出一個輸入和輸出波形相同CPLD電路。管腳〔底層〕編輯窗口(FloorplanEditor):該窗口用于將已設(shè)計好邏輯電路的輸入輸出節(jié)點(diǎn)賦予實(shí)際芯片的引腳,通過鼠標(biāo)的拖拉,方便的定義管腳的功能。自動錯誤定位:在編譯源文件的過程中,假設(shè)源文件有錯誤,Max+Plus2軟件可以自動指出錯誤類型和錯誤所在的位置。邏輯綜合與適配:該軟件在編譯過程中,通過邏輯綜合(LogicSynthesizer)和適配(Fitter)模塊,可以把最簡單的邏輯表達(dá)式自動的吻合在適宜的器件中。設(shè)計規(guī)那么檢查:選取Compile\Processing\DesignDoctor菜單,將調(diào)出規(guī)那么檢查醫(yī)生,該醫(yī)生可以按照三種規(guī)那么中的一個規(guī)那么檢查各個設(shè)計文件,以保證設(shè)計的可靠性。一旦選擇該菜單,在編譯窗口將顯示出醫(yī)生,用鼠標(biāo)點(diǎn)擊醫(yī)生,該醫(yī)生可以告訴你程序文件的健康情況。多器件劃分(Partitioner):如果設(shè)計不能完全裝入一個器件,編譯器中的多器件劃分模塊,可自動的將一個設(shè)計分成幾個局部并分別裝入幾個器件中,并保證器件之間的連線最少。編程文件的產(chǎn)生:編譯器中的裝配程序(Assembler)將編譯好的程序創(chuàng)立一個或多個編程目標(biāo)文件:EPROM配置文件〔*.POF〕例如,MAX7000S系列SRAM文件〔*.SCF〕例如,FLEX8000系列的配置芯片EPROMJEDEC文件(*.JED)十六進(jìn)制文件(*.HEX)文本文件(*.TTF)串行BIT流文件(*.SBF)仿真:當(dāng)設(shè)計文件被編譯好,并在波形編輯器中將輸入波形編輯完畢后,就可以進(jìn)行行為仿真了,通過仿真可以檢驗(yàn)設(shè)計的邏輯關(guān)系是否準(zhǔn)確。分析時間(AnalyzeTiming):該功能可以分析各個信號到輸出端的時間延遲,可以給出延遲矩陣和最高工作頻率。器件編程:當(dāng)設(shè)計全部完成后,就可以將形成的目標(biāo)文件下載到芯片中,實(shí)際驗(yàn)證設(shè)計的準(zhǔn)確性。Max+plusⅡ設(shè)計過程設(shè)計流程:使用Max+plusⅡ軟件設(shè)計流程由以下幾局部組成。如圖1所示:圖1開發(fā)流程圖(1)、設(shè)計輸入:可以采用原理圖輸入、HDL語言描述、EDIF網(wǎng)表輸入及波形輸入等幾種方式。(2)、編譯:先根據(jù)設(shè)計要求設(shè)定編譯參數(shù)和編譯策略,如器件的選擇、邏輯綜合方式的選擇等。然后根據(jù)設(shè)定的參數(shù)和策略對設(shè)計工程進(jìn)行網(wǎng)表提取、邏輯綜合和器件適配,并產(chǎn)生報告文件、延時信息文件及編程文件,供分析仿真和編程使用。(3)、仿真:仿真包括功能仿真、時序仿真和定時分析,可以利用軟件的仿真功能來驗(yàn)證設(shè)計工程的邏輯功能是否正確。(4)、編程與驗(yàn)證:用經(jīng)過仿真確認(rèn)后的編程文件通過編程器〔Programmer〕將設(shè)計下載到實(shí)際芯片中,最后測試芯片在系統(tǒng)中的實(shí)際運(yùn)行性能。在設(shè)計過程中,如果出現(xiàn)錯誤,那么需重新回到設(shè)計輸入階段,改正錯誤或調(diào)整電路后重復(fù)上述過程。設(shè)計步驟:(1)輸入工程文件名(File/Project/Name)(2)輸入源文件(圖形、VHDL、AHDL、Verlog和波形輸入方式)(Max+plusⅡ/graphicEditor;Max+plusⅡ/TextEditor;Max+plusⅡ/WaveformEditor)(3)指定CPLD型號(Assign/Device)(4)設(shè)置管腳、下載方式和邏輯綜合的方式(Assign/GlobalProjectDeviceOption,Assign/GlobalLogicSynthesis)(5)保存并檢查源文件(File/project/Save&Check)(6)指定管腳(Max+plusⅡ/FloorplanEditor)(7)保存和編譯源文件(File/project/Save&Compile)(8)生成波形文件(Max+plusⅡ/WaveformEditor)(9)仿真(Max+plusⅡ/Simulator)(10)下載配置(Max+plusⅡ/Programmer)常用菜單簡介:該軟件的菜單主要有:MAX+PLUSⅡ菜單〔MAX+PLUSⅡ〕、文件菜單〔File〕,該文件菜單隨所選功能的不同而不同、模板菜單〔Templates〕,該模板使編寫VHDL和AHDL設(shè)計文件更容易和方便、指定菜單〔Assign〕、選擇菜單〔Option〕。該軟件的菜單繁多,要想都學(xué)會有一定的難度,主要原因是資料問題。但是常用的菜單會使用還是可能的。如何獲得幫助:最直接的幫助來自于Max+plusⅡ的Help菜單。假設(shè)需要某個特定工程的幫助信息,可以同時按<Shift>+<F1>鍵或者選用工具欄中的快速幫助按鈕“〞。此時,鼠標(biāo)變?yōu)閹柼柕募^,點(diǎn)擊“特定的工程〞就可彈出相應(yīng)的幫助信息。這里的“特定工程〞,可以包含某個器件的圖形、文本編輯中的單詞,菜單項(xiàng)選擇項(xiàng),甚至可以是一個彈出的窗口。2自動售貨機(jī)的設(shè)計2.1設(shè)計說明
本文設(shè)計的自動售貨機(jī)[4]可銷售牛奶(2元)、果汁(3元)兩種商品;售貨機(jī)可識別1元和5元兩種貨幣,在一次購置過程中,可購置一個或多個商品,系統(tǒng)會自動計算所需錢數(shù)和找零錢數(shù)并自動找零。另外有3個發(fā)光二極管、6個LCD數(shù)碼管。3個發(fā)光二極管分別用來顯示交易成功、交易失敗、正在找零。6個LCD數(shù)碼管:2個用來顯示所需金額,2個用來顯示已付金額,2個用來顯示找零數(shù)。流程說明本文設(shè)計的自動售貨機(jī)當(dāng)通電時,表示一次投幣銷售過程的開始。顧客選擇一種商品或多種那么進(jìn)入投幣狀態(tài)。假設(shè)不投幣,那么自動返回初始狀態(tài)。投幣后,系統(tǒng)自動計算所投錢數(shù)。假設(shè)投幣夠,那么出貨找零。假設(shè)投幣不夠,等待10秒后,顧客沒有繼續(xù)投幣,那么退幣并回到初始狀態(tài)。本系統(tǒng)的投幣銷售流程圖如圖2所示:圖2流程圖各模塊說明本文設(shè)計的自動售貨機(jī)總體分三個模塊[5]:總控模塊、二進(jìn)制譯碼模塊、BCD碼譯碼模塊。其它功能本文不予討論。總控模塊:總控模塊是本系統(tǒng)最重要的模塊,該模塊大體有5個輸入端口和6個輸出端口。其輸入端口包括clk、coin1(投入一元貨幣)、coin5(投入5元貨幣)、price2(選擇2元的商品)、price3(選擇3元的商品),輸出端口有paid(已投入多少錢)、needed(還需要多少錢)、moneyout(找零)、success(燈亮表示交易成功)、failure(燈亮表示交易失敗)、showmoneyout(燈亮表示正在找零)。該模塊實(shí)現(xiàn)了本系統(tǒng)最重要的交易過程,包括選擇商品、投入貨幣、計算貨幣,找零出貨等。二進(jìn)制譯碼模塊:該模塊有一個輸入端和兩個輸出端。輸入端b是一個4位的二進(jìn)制數(shù),輸出端bcd0、bcd1,是兩個4位的BCD碼。該模塊的主要功能是實(shí)現(xiàn)將主控模塊輸出的二進(jìn)制數(shù)(paid、needed、moneyout)轉(zhuǎn)換成BCD碼,以便輸出到七段顯示數(shù)碼器上而顯示出來。該模塊的原理是將一個4位的二進(jìn)制數(shù)轉(zhuǎn)換成2個4位的BCD碼,分別為高4位和低4位。BCD碼譯碼模塊:該模塊有一個輸入端和一個輸出端。輸入端d是一個4位的BCD碼,輸出端q是一個7位數(shù),輸出連接到一個LCD數(shù)碼管以顯示出來。各模塊的連接各模塊的連接如圖3所示:圖3硬件模塊連接圖如圖3所示,左邊的5個端口為輸入端口,連接的模塊是主控模塊。中間的3個輸出端口連接3個LED指示燈,分別指示交易成功、交易失敗、需要找零。中間的3個模塊是二進(jìn)制譯碼模塊,分別將主控模塊輸出的paid、needed、moneyout轉(zhuǎn)換成兩個4位的BCD碼。最右邊的6個模塊是BCD譯碼模塊,輸出端口連接6個LCD七段顯示數(shù)碼管。2.2狀態(tài)之間的轉(zhuǎn)換本文所設(shè)計的自動售貨機(jī)進(jìn)程可分為7個狀態(tài)[6]:a,b,c,d,e,f,g。a為開始狀態(tài),當(dāng)有鍵按下時即進(jìn)入b狀態(tài)〔投幣狀態(tài)〕。當(dāng)?shù)却脒€沒投幣時即進(jìn)入e狀態(tài),e狀態(tài)返回a狀態(tài)。當(dāng)有貨幣投入,但投幣不夠時,即進(jìn)入c狀態(tài)〔繼續(xù)投幣〕,假設(shè)等待十秒不投,即進(jìn)入g狀態(tài)〔退錢〕,假設(shè)投幣但還不夠,那么繼續(xù)投幣。當(dāng)投幣夠了,即進(jìn)入d狀態(tài)〔出貨找零〕。之后進(jìn)入f狀態(tài)〔延時〕后返回a狀態(tài)。3仿真時序圖3.1主控模塊的仿真圖4主控模塊只選一次但不投幣的仿真如圖4所示:選擇3元商品,不再投幣,所需貨幣顯示3元,10秒后,failure為高電平,表示交易失敗,延時顯示后,回到初始狀態(tài)。源程序見附錄的主控模塊。圖5主控模塊屢次選擇但不投幣的仿真如圖5所示:選擇3元商品后,在10秒內(nèi),再次選擇2元商品;此后,不再投幣,所需貨幣先為3元,后為5元,10秒后,failure出現(xiàn)高電平,表示交易失敗,延時顯示后,回到初始狀態(tài)。源程序見附錄的主控模塊。圖6主控模塊交易成功但不找零的仿真如圖6所示:選擇3元商品后,在10秒內(nèi),再次選擇2元商品;所需貨幣先是3元,后為5元,此后,在一定時限內(nèi)投入5元錢,所需貨幣為0元,success為高電平,表示交易成功,不找零,延時顯示后,回到初始狀態(tài)。源程序見附錄的主控模塊。圖7主控模塊交易成功且找零的仿真如圖7所示:選擇3元商品后,在10秒內(nèi),再次選擇2元商品;所需貨幣先為3元,后為5元,此后,在一定時限內(nèi)先后投入1元和5元,所需貨幣分別變?yōu)?元,0元,success為高電平,表示交易成功。showmoneyout為高電平,表示要找零,moneyout顯示為1元,表示找零1元。延時顯示,其后回到初始狀態(tài)。源程序見附錄的主控模塊。圖8主控模塊連續(xù)交易成功的仿真如圖8所示:先分別選擇3元和2元的商品,所需貨幣先后顯示3元和5元,再投入1元和5元,所需貨幣顯示分別為4元,0元。success為高電平,表示一次交易成功,同時showmoneyout也為高電平,表示需要找零,moneyout顯示為1元,再選擇3元的商品,投入5元,所需貨幣先后為3元和0元。success為高電平,表示第二次交易成功,showmoneyout為高電平,表示要找零,moneyout顯示為2元。圖8顯示連續(xù)交易。源程序見附錄的主控模塊。圖9主控模塊錢不夠但不再投幣的仿真如圖9所示:選擇3元商品后,在10秒內(nèi),再次選擇2元商品;所需貨幣先后顯示3元和5元。此后,在一定時限內(nèi)投入1元,所需貨幣顯示4元,其后,等待再次投幣,假設(shè)超過一定時限〔10秒〕不再投幣,認(rèn)為放棄,failure為高電平,表示交易失敗。showmoneyout為高電平,表示要退幣,moneyout顯示1元,即退幣1元;延時顯示后,回到初始狀態(tài)。源程序見附錄的主控模塊。3.2二進(jìn)制譯碼的仿真圖10二進(jìn)制譯碼的仿真如圖10所示:分別將從0到F各位二進(jìn)制數(shù)轉(zhuǎn)換為兩位的BCD碼數(shù)。如下圖,將一個4位的二進(jìn)制數(shù)轉(zhuǎn)化為兩個4位的BCD碼數(shù)的功能得到實(shí)現(xiàn)。源程序見附錄的二進(jìn)制譯碼模塊。3.3BCD碼譯碼的仿真圖11BCD碼譯碼的仿真如圖11所示:將從0到7各位BCD碼轉(zhuǎn)化為七段譯碼顯示出來,其中7E在七段數(shù)碼管上顯示0,30顯示1,6D顯示2等等。如下圖,將BCD碼轉(zhuǎn)化為七段數(shù)碼顯示的功能得到實(shí)現(xiàn)。源程序見附錄的BCD碼譯碼模塊。3.4TOP文件的仿真圖12TOP文件的仿真如圖12所示:先選擇一個3元的商品,10秒內(nèi)再選擇一個2元的商品;此后,在一定時間內(nèi),先后投入一元和5元,顯示交易成功,并找零一元。在七段數(shù)碼管上所需貨幣先后顯示00元、03元、05元,當(dāng)投入一元后,顯示04元,再投入5元后,顯示00元。而已投貨幣先后顯示00元、投入一元后,顯示01元,再投入5元,顯示06元。同樣,找零貨幣先后顯示00元、01元。由此可見,系統(tǒng)的各功能實(shí)現(xiàn)成功。源程序見附錄的頂層文件。4.結(jié)論自動售貨機(jī)系統(tǒng)的設(shè)計已全部完成,能按預(yù)期的效果進(jìn)行屢次購置、找零出貨、并且在數(shù)碼管上顯示出已投貨幣、還需金額、找零,同時有指示燈提示交易成功、交易失敗、正在找零。在自動售貨機(jī)系統(tǒng)的3個模塊中,最重要的是主控模塊,其它還有二進(jìn)制譯碼模塊和BCD碼譯碼模塊。各模塊完成后,將它們組合成完整的自動售貨機(jī)系統(tǒng)。在設(shè)計過程中還需改良的是在選擇商品時不能按鍵過長,否那么會認(rèn)為是重復(fù)選擇。本文所用的VHDL語言雖然語法規(guī)那么與其他計算機(jī)高級語言如C語言在很多方面很類似,但它畢竟是硬件描述語言,其本質(zhì)作用在于描述硬件,因而會受到硬件環(huán)境的限制。因此,為了到達(dá)設(shè)計的預(yù)期效果,在代碼編寫前,應(yīng)做到對硬件電路心中有數(shù),不能一味地追求代碼的完美,而應(yīng)該以實(shí)現(xiàn)的硬件電路的性能優(yōu)劣為標(biāo)準(zhǔn)。答謝:在完本錢系統(tǒng)的設(shè)計過程中,本人得到老師的悉心指導(dǎo)和王堯君同學(xué)的幫助,在此深表謝意。參考文獻(xiàn)[1]李仁發(fā),凌純清,徐成.VHDL數(shù)字系統(tǒng)設(shè)計〔第二版〕.北京:電子工業(yè)出版社出版.2007[2]甘歷VHDL應(yīng)用于開發(fā)實(shí)踐.北京:科學(xué)出版社.2003[3]MarkZwolinskiDigitalSystemDesignwithVHDL.BeiJing:PublishingHouseofElectronicsIndustry.2007[4]王曉峰.電子設(shè)計的EDA技術(shù)應(yīng)用[J].長春師范學(xué)院學(xué)報:自然科學(xué)版,2005,24(5):55—56.[5]DOULOSA.ThedesignerSguidetoVHDL[EB/OL].[2007—06—06].[6]侯伯亨.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計[M].陜西:西安電子科技大學(xué)出版社,1999.東方人華.MAX+PLUSI1入門與提高[M].北京:清華大學(xué)出版社,2004附錄:系統(tǒng)各功能模塊的實(shí)現(xiàn):主控模塊的完整程序如下:Libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityshouhuojioriginalisport(clk:instd_logic; coin1:instd_logic; coin5:instd_logic; price2:instd_logic; price3:instd_logic; paid:outstd_logic_vector(3downto0); needed:outstd_logic_vector(3downto0); success:outstd_logic; failure:outstd_logic; showmoneyout:outstd_logic; moneyout:outstd_logic_vector(3downto0));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";neededtemp:="0000";backmoney:="0000";pricetemp:="0000";q<=0;showmoneyout<='0';moneyout<="0000";paid<="0000";needed<="0000";failure<='0';success<='0'; ifprice2='1'orprice3='1'thencurrent_state<=qb;ifprice2='1'thenpricetemp:=pricetemp+2;neededtemp:=pricetemp;Elsepricetemp:=pricetemp+3;neededtemp:=pricetemp;endif;endif;paid<=paidtemp;needed<=neededtemp; whenqb=>ifcoin1='1'orcoin5='1'then ifcoin1='1'thenpaidtemp:=paidtemp+1; else paidtemp:=paidtemp+5; 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; ifprice2='1'orprice3='1'thenq<=0; ifprice2='1'thenpricetemp:=pricetemp+2; neededtemp:=neededtemp+2; else pricetemp:=pricetemp+3; neededtemp:=neededtemp+3; 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+1;elsepaidtemp:=paidtemp+5;endif;ifpaidtemp>=pricetempthenneededtemp:="0000";backmoney:=paidtemp-pricetemp;current_state<=qd;elseneededtemp:=pricetemp-paidtemp;backmoney:="0000";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; whenqd=>success<='1'; ifbackmoney>"0000"thenshowmoneyout<='1';moneyout<=backmoney;endif;current_state<=qf;q<=0;whenqf=>ifq<4thenq<=q+1;elsecurrent_state<=qa;q<=0;endif;endcase;endif;endprocess;endbehav;二進(jìn)制譯碼模塊的完整程序如下:Libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycode1isport( b:instd_logic_vector(3downto0); bcd0:outstd_logic_vector(3downto0);bcd1:outstd_logic_vector(3downto0) );endcode1;architectureoneofcode1isbeginprocess(b)begincasebiswhen"0000"=>bcd0<="0000";bcd1<="0000";when"0001"=>bcd0<="0001";bcd1<="0000";when"0010"=>bcd0<="0010";bcd1<="0000";when"0011"=>bcd0<="0011";bcd1<="0000";when"0100"=>bcd0<="0100";bcd1<="0000";when"0101"=>bcd0<="0101";bcd1<="0000";when"0110"=>bcd0<="0110";bcd1<="0000";when"0111"=>bcd0<="0111";bcd1<="0000";when"1000"=>bcd0<="1000";bcd1<="0000";when"1001"=>bcd0<="1001";bcd1<="0000";when"1010"=>bcd0<="0000";bcd1<="0001";when"1011"=>bcd0<="0001";bcd1<="0001";when"1100"=>bcd0<="0010";bcd1<="0001";when"1101"=>bcd0<="0011";bcd1<="0001";when"1110"=>bcd0<="0100";bcd1<="0001";when"1111"=>bcd0<="0101";bcd1<="0001";whenothers=>null;endcase;endprocess;endone;BCD碼譯碼模塊的完整程序如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycode2isport(d:instd_logic_vector(3downto0);q:outstd_logic_vector(6downto0));endcode2;architectureoneofcode2isbeginprocess(d)begincasediswhen"0000"=>q<="1111110";when"0001"=>q<="0110000";when"0010"=>q<="1101101";when"0011"=>q<="1111001";when"0100"=>q<="0110011";when"0101"=>q<="1011011";when"0110"=>q<="1011111";when"0111"=>q<="1110000";when"1000"=>q<="1111111";when"1001"=>q<="1110011";whenothers=>q<="0000000";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,P2,P3:instd_logic;paid_lcd0,paid_lcd1,needed_lcd0,needed_lcd1,Mout_lcd0,Mout_lcd1:outstd_logic_vector(6downto0);s,f,showout:outstd_logic);endtop;architectureoneoftopiscomponentshouhuojioriginalport(clk:instd_logic; coin1:instd_logic; coin5:instd_logic; price2:instd_logic; price3:instd_logic; paid:outstd_logic_vector(3downto0); needed:outstd_logic_vector(3downto0); success:outstd_logic; failure:outstd_logic; s
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年銅材熱擠壓件項(xiàng)目投資可行性研究分析報告
- 金威啤酒公司的成本管理絕技
- 中國汽車HUD行業(yè)競爭格局分析及投資規(guī)劃研究報告
- 2025年度共享工作人員社會保險繳納合同
- 代理配股合同范例
- 勞動合同范本養(yǎng)殖
- 伐木砍伐工程合同范例
- 農(nóng)村舊房拆遷合同范本
- 代養(yǎng)鵝合同范本
- 公司轉(zhuǎn)讓協(xié)議合同范本
- 醫(yī)院感染及其危害
- 2025年三人合伙投資合作開店合同模板(三篇)
- 安徽省招生考試數(shù)學(xué)試卷
- 2024全國各省高考詩歌鑒賞真題及解析
- 高考日語閱讀理解練習(xí)2篇-高考日語復(fù)習(xí)
- 印刷基礎(chǔ)知識培訓(xùn)資料
- NB/T 11536-2024煤礦帶壓開采底板井下注漿加固改造技術(shù)規(guī)范
- 2024-2025學(xué)年人教版五年級(上)英語寒假作業(yè)(一)
- 【課件】九年級化學(xué)下冊(人教版2024)-【新教材解讀】義務(wù)教育教材內(nèi)容解讀課件
- GA/T 761-2024停車庫(場)安全管理系統(tǒng)技術(shù)要求
- 2025屆貴州省六盤水市第二中學(xué)高三適應(yīng)性調(diào)研考試數(shù)學(xué)試題含解析
評論
0/150
提交評論