版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 題目:自動售貨機的設計 </p><p><b> 目 錄</b></p><p><b> 摘 要1</b></p><p> ABSTRACT2</p><p><b> 一、前言3</b></p><p&
2、gt;<b> ?。ㄒ唬┱n題簡介3</b></p><p><b> (二)文獻綜述3</b></p><p><b> (三)方案比較7</b></p><p> 二、開發(fā)工具簡介8</p><p> ?。ㄒ唬¬HDL介紹8</p><p&
3、gt; ?。ǘ㏎uartusII軟件簡介8</p><p> 三、自動售貨機系統的總體設計9</p><p><b> ?。ㄒ唬┰O計思路9</b></p><p> ?。ǘ┳詣邮圬洐C的工作流程9</p><p> ?。ㄈ顟B(tài)裝換圖10</p><p> 四、自動售貨機系統的VH
4、DL設計12</p><p> ?。ㄒ唬┥唐愤x擇模塊12</p><p> (二)投幣模塊12</p><p> (三)送出商品模塊14</p><p> ?。ㄋ模┯嫊r模塊14</p><p> 五、自動售貨機的仿真結果及分析16</p><p><b> 結束語
5、19</b></p><p><b> 致謝20</b></p><p><b> 參考文獻21</b></p><p> 附錄A:程序源代碼22</p><p><b> 摘 要</b></p><p> 本文是在VHDL
6、的基礎上對自動售貨機進行設計來實現其基本功能的,采用了Altera的開發(fā)軟件Quarts II。通過在該軟件平臺上進行數字電路設計和仿真的方法,闡述了VHDL(Very High Speed Integrated Circuit Hardware Description Language)超高速集成電路硬件描述語言的一些特點及語法結構,介紹了自動售貨機的基本原理、系統組成和主要功能,并分析討論了用VHDL語言開發(fā)自動售貨機系統的設計流程
7、。本設計采用VHDL硬件描述語言編程的設計方法設計系統核心電路的硬件程序,在Quartus II軟件平臺上進行編譯和仿真,最后生成的目標文件下載到實驗臺內的FPGA芯片以模擬實現該系統,并在實驗臺上對設計進行驗證。</p><p> 文章首先簡述了自動售貨機系統的意義和發(fā)展現狀以及VHDL語言的特點,然后介紹了自動售貨機的設計要求、設計思路,并給出了總體設計框圖,通過分析設計寫出VHDL程序源代碼,將代碼在Qu
8、artus II軟件平臺上進行編譯仿真,波形基本符合設計要求。最終完成的自動售貨機系統具有商品選擇,投幣處理、出貨找零、異常退幣等主要功能,整個系統的開發(fā)體現了在Quartus II軟件平臺上用VHDL設計數字控制系統的實用性。</p><p> 關鍵詞:自動售貨機,硬件描述語言VHDL, Quarts II,FPGA</p><p><b> ABSTRACT</b&
9、gt;</p><p> This article is to achieve its basic functions,the automat system on the basis of the VHDL design using Altera's development software Quarts II. Digital circuit design and simulation in the
10、software platform on some of the features of the VHDL (Very High Speed ??Integrated Circuit the Hardware Description Language) language and grammatical structures, the basic principles of the automat system, system compo
11、sition and main functions and analyzed and discussed the development of the automat system</p><p> The article first outlines the meaning of the automat system and development as well as the characteristics
12、 of the VHDL language, then the vending machine design, design ideas, and gives the block diagram of the overall design, analysis and design to write the VHDL source codethe code in the Quartus II software platform compi
13、lation simulation waveforms in line with the design requirements. The vending machine system has the final selection of merchandise, coin processing, purchase withdrawn, the</p><p> Keywords: the automat sy
14、stem, the hardware description languageVHDL, Quarts II, the FPGA</p><p><b> 一、前言</b></p><p><b> ?。ㄒ唬┱n題簡介</b></p><p><b> 設計目標</b></p><
15、;p> 設計一臺能夠出售1元、5元、10元三種商品的自動售貨機,具有錢幣識別,自動售貨,自動找錢、警告等功能,此機可接收的錢幣為1元,5元和10元。</p><p> 2、設計任務和要求:</p><p> 2.1自動售貨機能出售1元、5元、10元三種商品;</p><p> 2.2顧客投入硬(紙)幣的錢數有1元、5元、10元三種,假設每次只能投入其中
16、的一種幣,投幣后用數碼管將投幣額顯示出來;</p><p> 2.3投幣額足夠時自動送出貨物(送出的貨物用相應不同的指示燈顯示來模擬),同時多余的錢找回,找回的錢數用數碼管顯示出來;</p><p> 2.4本設計中假設商品存貨無限,找零錢幣無限;</p><p> 2.5顧客一次只能購買一種商品的一個,若需要更多商品,需要重復操作。</p>&
17、lt;p><b> ?。ǘ┪墨I綜述</b></p><p> 我選擇的課題是自動售貨機的設計,為了加深對自動售貨機的了解,將專業(yè)相關的理論融會貫通,理解VHDL語言的應用,學會分析問題、解決問題、學以致用。通過查閱各種資料,編寫程序,并在電腦軟件上仿真,加深了對VHDL語言的應用與理解 。</p><p><b> 1、研究背景簡介</b&
18、gt;</p><p> 自動售貨機是能根據投入的錢幣自動付貨的機器。它是商業(yè)自動化的常用設備,不受時間、地點的限制,能節(jié)省人力、方便交易,是一種全新的商業(yè)零售形式,又被稱為24小時營業(yè)的微型超市。1962年,出現了以自動售貨機為主體的流通領域的革命,到了20世紀80年代,自動售貨機在美國和日本被廣泛使用,后逐漸散步世界各地,主要是發(fā)達國家,成為一種全新的消費方式,它的售貨領域非常廣泛,是發(fā)達國家商品零售的一種
19、主要方式。自動售貨機作為一種先進的消費方式,已經成為城市現代文明發(fā)達程度的重要標志,其新穎、時尚的購物方式,24小時營業(yè)的特點給人們生活帶來了便利,美化了城市環(huán)境,受到消費者的歡迎。但是在我國自動售貨機的普及還不及發(fā)達國家,主要原因是我國EDA技術的應用水平長期落后于發(fā)達國家。</p><p> 在中國,自動售貨機將成為一個潛在的巨大產業(yè),繼百貨商店、超市之后掀起第三次零售業(yè)革命,其前景非常廣闊。售賣的商品課根
20、據擺放場所的需要量身定制,包括冷熱飲料、零食、電話卡及國外進口的特色商品等。并且,透過這種智能售貨系統,存貨、銷售、物流信息可以準確、及時地反饋給客戶和管理人員,。此外,還支持多種交易支付模式,同時方便實現較大金額的支付和交易結算。在2004年,通過手機購物的無線自動售貨機在國內開始出現,天津南開戈德公司已研制此種類型的自動售貨機。這種新一代自動售貨機除了更方便售賣貨品之外,還被視為一種傳播廣泛的廣告媒介。在國外,自動售貨機發(fā)展相對成熟
21、。日本的自動售貨機已經有2000多種機型、6000多種商品。在美國,運營商就多大10800家,并且具有與大飲料商、大食品商的合作經驗。在日本,由于其無所不在,24小時供應,自動售貨機很受特別忙碌的人歡迎。隨著經濟發(fā)展,傳統的固定地點人員售貨方式暴露出許多弊端:人力資源需求大;受所需服務地點,地理條件的限制;而且在服務時間上不能最大限度的服務于消費者。自動售貨機的出現解決了這些難題。</p><p> 隨著EDA
22、技術的高速發(fā)展,電子系統的設計技術和工具發(fā)生了深刻的變化,大規(guī)模可編程邏輯器件CPLD/FPGA的出現,給設計人員帶來了諸多方便。利用它進行產品開發(fā),不僅成本低、周期短、可靠性高,而且具有完全的知識產權。本文利用VHDL語言設計自動售貨機,使其實現自動售貨,找零錢等功能,突出了其作為硬件描述語言的良好的可讀性、可移植性和易讀性等優(yōu)點。程序通過下載到特定芯片后,可應用于實際的自動售貨機系統中,從而有效解決了成本,質量,運營等諸多問題。隨著
23、中國經濟的快速發(fā)展和社會的巨大進步,自動售貨機的實際需求會更加大,必將深入到生活中的方方面面。</p><p><b> 2、研究動態(tài)</b></p><p> 目前,我國在研制自動售貨機等方面有可喜的成果,但總的來說還沒有形成真正的產業(yè)。在自動售貨機相關的所有研究領域中,全球對其關鍵技術的研究主要集中在系統內部銷售動作實現方式的研究、資金結算及銷售信息統計管理的
24、實現方式研究、功耗節(jié)省模式的研究。根據相關文獻資料,系統內部銷售動作實現方式的研究已基本成熟,研究最多的主要集中在資金結算及銷售信息統計管理的實現方式和功耗節(jié)省模式上。在FPGA基礎上,采用VHDL描述語言實現自動售貨機系統的銷售動作,并完成整個系統的其他相關功能。自動售貨機的機體內部結構已經相當完善,影響其普及的關鍵因素:在現有的各種通信網路平臺上如何呢讓自動售貨機形成一種銷售連鎖網,為其提供更方便的營銷方式和管理機制,能最大限度地降
25、低生產、運營成本。目前,無論是基于internet還是基于移動通信網或其他網絡平臺,其運作的機制都不太成熟,不過這并不影響自動售貨機的發(fā)展?jié)摿ΑR虼?,自動售貨機未來的發(fā)展趨勢是將其納入到一個更廣闊、更便利的移動商務網絡平臺。</p><p> 社會將會更加需要能夠合理利用能源的工業(yè)產品,因此自動售貨機的發(fā)展也會向著這個方向發(fā)展,節(jié)能、環(huán)保型的自動售貨機將是未來社會所需要的主流產品。因此,開發(fā)出高性價比的自動售貨
26、機,保持與國外同類產品在性價比同步的同時,打破國外技術壟斷和封鎖,對發(fā)展我國電子業(yè)有非常重大的意義,具有廣泛的應用前景,加緊對這類產品的研制顯得非常緊迫。</p><p><b> 3、研究方法的分析</b></p><p> 本文是在VHDL的基礎上對自動售貨機進行設計來實現其基本功能的。由于以往的設計主要是通過兩種方式:通過數字電路和模擬電路設計、基于單片機的
27、設計。第一種方式的缺點既所設計的整體電路規(guī)模較大,所用的器件較多,造成故障率高,導致計價器不夠準確;而基于單片機的設計,雖然其有著開發(fā)及制作成本低,能較大程度的利用資源,但其外圍電路較多,且調試復雜,抗干擾能力差。而本文所用到的VHDL具有穩(wěn)定性好、抗干擾能力強等特點,且非常適合作為自動售貨機的控制核心,所以選擇用VHDL來對自動售貨機進行設計來實現其功能。</p><p> 本文對自動售貨機的設計主要分為選擇
28、商品,投入貨幣,送出商品,3秒計時四個模塊,在設計各個模塊時文獻中有很多不同的方法,但總的來說都是用VHDL語言來逐步按照各個模塊通過其狀態(tài)描述實現其功能。綜述如下:</p><p> 對自動售貨機的研究中,通過文獻《科技情報開發(fā)與經濟》2003年第12期中的文章《一種新型自動售貨機的研制》和《北方交通大學學報》第6期中的文章《人民幣識別器與自動售貨機通信的設計與實現》以及《哈爾濱商業(yè)大學學報(自然科學版)》中
29、的第一期文章《自動售貨機結構安全機制的研究》中,提出了自動售貨機內部結構和具體銷售動作方面的改進和一些具體細節(jié)的完善。自動售貨機的國內外的發(fā)展現狀通過查閱《電子商務》2005年第3期白麗的文章《自動售貨機: 第三次零售業(yè)革命》。在文獻《微型電腦應用》2005年第5期文章《基于Verilong -HDL 自動售貨機的設計與實現》提到,在FPGA 或ASIC 等基礎上,采用VHDL 描述語言實現自動售貨機系統的銷售動作,并完成整個系統的其他
30、相關功能,其設計思想為:用有限狀態(tài)機進行系統狀態(tài)描述,自動售貨機通電復位時,自動進入系統初始狀態(tài),隨外界(消費者)輸入信號的觸發(fā)轉換到不同狀態(tài)。在不同狀態(tài)下,自動售貨機對外界的反應是不同的,可以進入接受信號(投幣)狀態(tài),也可以進入銷售狀態(tài),或者是找零狀態(tài)。在文獻黃科,艾瓊龍,李磊主編,《EDA與數字系統設計案例實踐》[M]清華大學</p><p> 本設計是基于VHDL進行編程,然后在Quartus II進行波
31、形仿真,對主體FPGA的設計書本《數字邏輯EDA設計與實踐》.劉昌華是這樣描述的:該電路的核心就是技術分頻電路,通過VHDL語言的順序語句if—then—else 根據一個或者一組條件來選擇某一特定的執(zhí)行通道,生成商品選擇,貨幣計算等。寫完VHDL語言編程之后,各個模塊的程序都完成后需要在Quartus II上進行仿真,利用Quartus II軟件仿真的方法通過查閱潘松,黃繼業(yè)編著,《EDA技術實用教程——VHDL版》(第四版)[M]科
32、學出版社,2010年一書中的第95頁到135頁。其中,本論文的主要內容都是參考潘松,黃繼業(yè)編著,《EDA技術實用教程——VHDL版》(第四版)[M]科學出版社,2010年這一本書,書中的很多內容都簡單易懂。</p><p> 通過對以上文獻的分析及綜合,得出了本設計的設計思路和設計框圖,并通過實際編程,進行仿真來實現了自動售貨機的功能,最終完成了本論文的設計。</p><p><b
33、> (三)方案比較</b></p><p> 方案一:用單片機實現:通過軟件編程,仿真,調試,符合要求后將程序用編程器寫入到單片機芯片上。利用單片機的中斷響應錢幣識別或者售出貨物的請求,進行相應的處理。利用寄存器存放錢幣處理系統運行狀態(tài),從而可以根據整個錢幣處理的狀態(tài)進行找零出貨。</p><p> 方案二:用VHDL(硬件描述語言)實現:利用硬件描述語言編程,仿真
34、調試后下載到可編程邏輯器件(CPLD)上實現??梢詫ψ詣邮圬洐C整個過程進行判斷、處理。整個過程完全實現了自動化和智能化。</p><p> 比較而言,方案一的開發(fā)及制作成本較低,能較大程度地利用資源,但外圍電路較多,調試復雜,抗干擾能力差,且對設計者的要求比較高,設計者對軟硬件都必須非常熟悉,由于主要是軟件運作,容易出錯,造成系統不穩(wěn)定,可能會出現投入錢幣卻不出售貨物的情況。方案二將所有器件集成在一塊芯片上,體
35、積大大減小的同時還提高了穩(wěn)定性,并且可應用EDA軟件仿真,調試,易于進行功能擴展,外圍電路較少,采用硬件邏輯電路實現,其最大的優(yōu)點是穩(wěn)定性好,抗干擾能力強,非常適合作為自動售貨機系統的控制核心?;趯σ陨细鱾€因素的考慮,又由于FPGA中有限狀態(tài)機FSM(Finite StateMachine)及其設計技術是實用數字系統設計中實現高效率、高可靠邏輯控制的重要途徑。所有的狀態(tài)均可表達為CASE-WHEN結構中的一條CASE語句,而狀態(tài)的轉移
36、則通過IF-THEN-ELSE語句實現。此外,與VHDL的其它描述方式相比,狀態(tài)機的VHDL表達豐富多樣,程序層次分明,結構清晰,易讀易懂;在排錯、修改和模塊移植方面也有其獨到的特點。因此,決定選用以VHDL為核心,用VHDL有限狀態(tài)機編程來實現自動售貨機的設計。</p><p><b> 二、開發(fā)工具簡介</b></p><p><b> ?。ㄒ唬¬HD
37、L介紹</b></p><p> 硬件描述語言(HDL)是一種用于設計硬件電子系統的計算機語言,它用軟件編程的方式來描述電子系統的邏輯功能、電路結構和連接形式,與傳統的門級描述方式相比,它更適合大規(guī)模系統的設計。例如一個32位的加法器,利用圖形輸入軟件需要輸人500至1000個門,而利用VHDL語言只需要書寫一行“A=B+C” 即可。而且 VHDL語言可讀性強,易于修改和發(fā)現錯誤。早期的硬件描述語言
38、,如ABEL、HDL、AHDL,由不同的EDA廠商開發(fā),互不兼容,而且不支持多層次設計,層次間翻譯工作要由人工完成。為了克服以上不足,1985年美國國防部正式推出了高速集成電路硬件描述語言VHDL,1987年IEEE采納VHDL為硬件描述語言標準(IEEE-STD-1076)。</p><p> ?。ǘ㏎uartusII軟件簡介</p><p> Quartus II 是Altera公
39、司的綜合性PLD開發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設計輸入形式,內嵌自有的綜合器以及仿真器,可以完成從設計輸入到硬件配置的完整PLD設計流程。 Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl腳本完成設計流程外,提供了完善的用戶圖形界面設計方式。具有運行速度快,界面統一,功能集中,易學易用等特點
40、。 </p><p> Maxplus II 作為Altera的上一代PLD設計軟件,由于其出色的易用性而得到了廣泛的應用。目前Altera已經停止了對Maxplus II 的更新支持,Quartus II 與之相比不僅僅是支持器件類型的豐富和圖形界面的改變。Altera在Quartus II 中包含了許多諸如SignalTap II、Chip Editor和RTL Viewer的設計輔助工具,集成了SOPC和
41、HardCopy設計流程,并且繼承了Maxplus II 友好的圖形界面及簡便的使用方法。 </p><p> Altera Quartus II 作為一種可編程邏輯的設計環(huán)境, 由于其強大的設計能力和直觀易用的接口,越來越受到數字系統設計者的歡迎。</p><p> 三、自動售貨機系統的總體設計</p><p><b> ?。ㄒ唬┰O計思路</b
42、></p><p> 一般的自動售貨機由錢幣裝置、指示裝置、貯藏售貨裝置等組成。錢幣裝置是售貨機的核心,其主要功能是確認投入錢幣的真?zhèn)?,分選錢幣的種類,計算金額。如果投入的金額達到購買物品的數值即發(fā)出售貨信號,售出貨物并找出余錢。指示裝置用以指示顧客所選商品的品種。貯藏售貨裝置保存商品,接收出售指示信號,把顧客選擇的商品送至出貨口。一般售貨機的錢幣裝置由投幣口、選別裝置、確認錢幣真?zhèn)蔚臋z查裝置、計算金額的
43、計算裝置和找錢裝置組成。</p><p> 本文在VHDL基礎上,采用VHDL硬件描述語言模擬實現自動售貨機系統的銷售動作,用有限狀態(tài)機進行系統狀態(tài)描述,并完成整個系統的其他相關功能。自動售貨機通電復位時,自動進入到系統初始狀態(tài),隨外界(消費者)輸入信號的觸發(fā)轉換到不同狀態(tài)。在不同狀態(tài)下,自動售貨機對外界的反應時不同的,可以進入接受信號(投幣)狀態(tài),也可以進入銷售狀態(tài),或者是找零狀態(tài)。</p>&
44、lt;p> ?。ǘ┳詣邮圬洐C的工作流程</p><p> 根據自動售貨機的工作過程,為了論文研究的需要簡化成了四個部分:初始狀態(tài)、選擇商品、投入貨幣、送出商品并找零。若操作失誤或投幣不足會報警3秒。同時,在售貨過程中,投入的貨幣和找零的貨幣會用數碼管顯示出來,在本文中數碼顯示管默認為硬件中已經存在,故不多做研究。</p><p> 自動售貨機能出售1元、5元、10元三種商品。本
45、設計中假設商品存貨無限,找零錢幣無限。三種商品分別設為三個按鍵(sel1、sel5、sel10),出售哪種商品可由顧客按動相應的一個按鍵即可,并同時用數碼管(digit)顯示出此商品的價格;顧客投入硬(紙)幣的錢數也是有1元、5元、10元三種,假設每次只能投入其中的一種幣(put1、put5、put10),此操作通過按動相應的一個按鍵來模擬,并同時用數碼管將投幣額顯示出來(digit);顧客投幣后,按一次確認鍵(sure),如果投幣額不
46、足時則報警,報警時間3秒(jing)。如果投幣額足夠時自動送出貨物(送出的貨物用相應不同的指示燈顯示來模擬),同時多余的錢應找回,找回的錢數用數碼管顯示出來;顧客一旦按動確認鍵3秒后,自動售貨機即可自動恢復到初始狀態(tài),此時才允許顧客進行下一次購貨操作;顧客一次只能購買一種商品的一個,若需要更多商品,需要重復操作。</p><p> 本文主要研究自動售貨機工作過程中的主要控制部分,流程圖如下圖3.1所示:<
47、/p><p> 圖3.1工作過程流程圖</p><p><b> ?。ㄈ顟B(tài)裝換圖</b></p><p> 在本文的設計中,通過采用有限狀態(tài)機的方式完成設計,根據工作流程和編程需要,總共有21個狀態(tài),其中S0為初始狀態(tài)。本設計的程序編寫及工作過程均按照狀態(tài)裝換圖。狀態(tài)轉換圖如下圖3.2所示:</p><p><
48、b> 圖3.2狀態(tài)轉換圖</b></p><p> S0為初始狀態(tài),S1、S2、S3為1元、5元、10元商品選擇狀態(tài);S4、S5、S6為選擇1元商品,分別投入1元、5元、10元貨幣;S7、S8、S9為選擇5元商品分別投入1元、5元、10元貨幣;S10、S11、S12為選擇10元商品分別投入1元、5元、10元貨幣;S13、S14、S15、S16、S17、S18、S19、S20、S21分別對應的
49、為出貨、找零、貨幣不足并警告等狀態(tài);最后返回到初始狀態(tài)S0.</p><p> 四、自動售貨機系統的VHDL設計</p><p> 因為本設計采用的是狀態(tài)機的設計,各個模塊通過狀態(tài)的選擇有機的聯系在一起,根據設計流程圖和狀態(tài)圖將程序分為商品選擇模塊,投幣模塊,送出貨物模塊。其中,為了編寫程序方便對程序中的各個執(zhí)行動作用了相應的符號表示:sel1、sel5、sel10分別控制選擇1元、5
50、元、10元三種商品,put1、put5、put10分別是顧客投入硬(紙)幣的錢數1元、5元、10元,sure是確認輸入,rst是由商家控制的整體復位控制輸入;jing是警告輸出,out1、out,out10分別是1元、5元、10元三種商品輸出指示,digit用于顯示顧客投幣錢數和找零錢數。各個模塊對應的程序如下所示:</p><p><b> ?。ㄒ唬┥唐愤x擇模塊</b></p>
51、<p> 當顧客選擇1元、5元或10元三種商品時分別由狀態(tài)S0跳轉至S1、S2、S3狀態(tài),否則停留在S0狀態(tài),選擇貨物的錢數在數碼管上顯示出來,程序代碼如下所示:</p><p> when s0=>jing<='0';out1<='0';out5<='0';out10<='0';digit<=0
52、;</p><p> if sel1='1' and sel5='0' and sel10='0' then</p><p><b> ns<=s1;</b></p><p> elsif sel1='0' and sel5='1' and sel10=
53、'0' then</p><p><b> ns<=s2;</b></p><p> elsif sel1='0' and sel5='0' and sel10='1' then</p><p><b> ns<=s3;</b></p&
54、gt;<p><b> else</b></p><p><b> ns<=s0;</b></p><p><b> end if;</b></p><p><b> ?。ǘ┩稁拍K</b></p><p> 1.當顧客投幣為
55、1元、5元或10元時,若當前為S1狀態(tài),則分別跳轉至S4、S5、S6三種狀態(tài),投幣錢數顯示在數碼管上,否則停留在S1狀態(tài),程序如下所示:</p><p> when s1=>digit<=1;</p><p> if put1='1' and put5='0' and put10='0' then</p><
56、;p><b> ns<=s4;</b></p><p> elsif put1='0' and put5='1' and put10='0' then</p><p><b> ns<=s5;</b></p><p> elsif put1='
57、;0' and put5='0' and put10='1' then</p><p><b> ns<=s6;</b></p><p><b> else</b></p><p><b> ns<=s1;</b></p><
58、;p><b> end if;</b></p><p> 2.當顧客投幣為1元、5元或10元時,若當前為S2狀態(tài),則分別跳轉至S7、S8、S9三種狀態(tài),投幣錢數顯示在數碼管上,否則停留在S2狀態(tài),程序如下所示:</p><p> when s2=>digit<=5;</p><p> if put1='1
59、9; and put5='0' and put10='0' then</p><p><b> ns<=s7;</b></p><p> elsif put1='0' and put5='1' and put10='0' then</p><p><
60、b> ns<=s8;</b></p><p> elsif put1='0' and put5='0' and put10='1' then</p><p><b> ns<=s9;</b></p><p><b> else</b>&l
61、t;/p><p><b> ns<=s2;</b></p><p><b> end if;</b></p><p> 3.當顧客投幣為1元、5元或10元時,若當前為S3狀態(tài),則分別跳轉至S10、S11、S12三種狀態(tài),投幣錢數顯示在數碼管上,否則停留在S3狀態(tài),程序如下所示:</p><p&g
62、t; when s3=>digit<=10;</p><p> if put1='1' and put5='0' and put10='0' then</p><p><b> ns<=s10;</b></p><p> elsif put1='0' an
63、d put5='1' and put10='0' then</p><p><b> ns<=s11;</b></p><p> elsif put1='0' and put5='0' and put10='1' then</p><p><b>
64、; ns<=s12;</b></p><p><b> else</b></p><p><b> ns<=s3;</b></p><p><b> end if;</b></p><p><b> ?。ㄈ┧统錾唐纺K</b&g
65、t;</p><p> 假設選擇的1元商品,投入1元貨幣并按下確認,送出商品后延時3秒回到初始狀態(tài);投入5元并確認后,數碼管顯示4元找零,送出商品并找出零錢,3秒延時后回到初始狀態(tài);投入10元并確認后數碼管顯示9元找零,送出商品并找出零錢,3秒延時后回到初始狀態(tài)。程序如下所示:</p><p> when s13=>out1<='1';out5<=
66、39;0';out10<='0';jing<='0';digit<=0;</p><p> if b='1' then</p><p> ns<=s0;--延時控制</p><p><b> else</b></p><p><b
67、> ns<=s13;</b></p><p><b> end if;</b></p><p> when s14=>out1<='1';out5<='0';out10<='0';jing<='0';digit<=4;</p>
68、<p> if b='1' then</p><p><b> ns<=s0;</b></p><p><b> else</b></p><p><b> ns<=s14;</b></p><p><b> end
69、if;</b></p><p> when s15=>out1<='1';out5<='0';out10<='0';jing<='0';digit<=9;</p><p> if b='1' then</p><p><b>
70、 ns<=s0;</b></p><p><b> else</b></p><p><b> ns<=s15;</b></p><p><b> end if;</b></p><p><b> ?。ㄋ模┯嫊r模塊</b>&
71、lt;/p><p> 本文的設計中要求售貨過程結束后有一個3秒復位以及出錯后有3秒的警告時間,需要通過延時來實現,延時程序如下所示:</p><p> if rst='1'then</p><p> ps<=s0;--當復位信號有效時,s0賦給現態(tài)</p><p> elsif clk'event and c
72、lk='1' then</p><p> ps<=ns;--當上升沿到來時,次態(tài)賦值給現態(tài)</p><p> if(a='1')then</p><p> temp:=temp+1;</p><p> if(temp=3)then</p><p><b> b&
73、lt;='1';</b></p><p><b> else</b></p><p><b> b<='0';</b></p><p><b> end if;</b></p><p><b> else<
74、;/b></p><p><b> temp:=0;</b></p><p><b> end if;</b></p><p> end if;--延時程序</p><p> end process;</p><p> 五、自動售貨機的仿真結果及分析</
75、p><p> 在時序仿真中,將仿真時間軸設置在一個合理的時間區(qū)域上十分重要。通常設置的時間范圍在數十微妙間:選擇edit—end time 命令,在彈出窗口中的time 文本框中輸入50,單位選us,本設計的整個仿真域的時間即設定為50us。通過view—utility windows—node finder命令將端口信號節(jié)點選入波形編輯器中,編輯輸入波形后開始仿真。本設計中時鐘clk周期為200ns,rst為低電
76、平。設置好后仿真,選擇processing—start simulation命令,直到出現simulation was successful,仿真結束。本設計的仿真程序見附錄,結果如下所示:</p><p> 1、當所選商品錢數與投幣錢數相等時波形仿真結果圖如圖5.1所示</p><p> 圖5.1投幣正好波形仿真圖</p><p> 由波形仿真結果可以看到:
77、當按下選擇5元商品時(sel5為高電平),digit輸出為5,當投幣為5元時(put5為高電平),digit輸出為5,當按下確認(sure為高電平)后digit輸出為0,即找零為0。并且顯示5元商品輸出(out5為高電平),三個上升沿即3秒后復位,所有輸出為0;</p><p> 2、當所選商品錢數比投幣錢數多時波形仿真結果圖如圖5.2所示:</p><p> 圖5.2投幣不足波形仿真
78、圖</p><p> 由波形仿真結果可以看到:當按下選擇5元商品時(sel5為高電平),digit輸出為5,當投幣為1元時(put1為高電平),digit輸出為1,當按下確認(sure為高電平)后digit輸出為1,即找回1元并且無商品輸出,警告(jing為高電平)經過3個上升沿即3秒后復位,所有輸出為0。</p><p> 3、當所選商品錢數比投幣錢數少時波形仿真結果圖如圖5.3所示
79、:</p><p> 圖5.3投幣多的波形仿真圖</p><p> 由波形仿真結果可以看到:當按下選擇1元商品時(sel1為高電平),digit輸出為1,當投幣為5元時(put5為高電平),digit輸出為5,當按下確認(sure為高電平)后digit輸出為4,即找回4元并且1元商品輸出(out1為高電平),經過3個上升沿即3秒后復位,所有輸出為0。</p><p&
80、gt;<b> 結束語</b></p><p> 通過設計簡單的自動售貨機,詳細了解了自動售貨機的投幣模塊,商品選擇模塊,主控模塊等模塊的軟件設計與實現主要功能的模塊的仿真。經過仿真與實踐,整個系統的工作穩(wěn)定可靠,具有較強的適應性,基本完成了自動售貨機的工作過程。不過缺點是只能完成相對比較簡單的自動售貨機功能,實現金額計算,發(fā)放商品,找零,退幣等功能。由于其中是商品存貨無限,找零無限,因
81、此不會出現找零錢幣與商品存貨不足的情況。解決辦法是通過增加模塊與輸入信號來解決。</p><p> 本設計在VHDL進行設計時通過以下步驟來實現的:①采用分模塊的設計方法將整個系統分為延時模塊,商品選擇模塊,投幣模塊,送出商品模塊,以及警告,使每個模塊的設計功能相對單一,降低了設計難度,也便于程序調試。②系統中很多模塊的VHDL程序設計中,均涉及多個控制信號,多個控制信號的作用通過嵌套的條件語句完成的,這些條件
82、信號的作用時機(是先作用還是后作用)和作用方式(是高、低電平還是上升沿、下降沿)非常有技巧,特別值得注意。③由于本文采用的狀態(tài)機來完成實驗,所以程序各個模塊中涉及到很多狀態(tài),通過對各個狀態(tài)實現的功能做詳細的劃分,從而使程序簡單明了的實現了相應的功能。</p><p> 在做自動售貨機的設計的過程中,通過查閱資料了解了自動售貨機的一些相關知識,它是集光、機、電、機械加工、制冷、加溫、防偽識別及電子軟件技術于一體的
83、高新技術產品,同時也發(fā)現了其中的一些弊端。由于時代的發(fā)展,自動售貨機是現代社會中的一種商務工具,在生活中應用愈加廣泛,根據日本、美國等國家的經驗,自動售貨機將在全球范圍內得到更大的普及,但是在對我們的生活帶來方便的同時,由于它本身固有的特點,同時也不可避免的產生一些負面的影響,比如青少年的不良飲食習慣和吸煙等現象等在一定程度上是由于自動售貨機所致,自動售貨機便于銷售香煙,含糖飲料,這些沒有營養(yǎng)的含糖飲料像蘇打水,果汁飲料及冰茶等直接影響
84、青少年肥胖病盛行的原因之一。自動售貨機的發(fā)展目標是為社會和生活帶來最大的便利,這就要求不但要具備實現其本身固有的功能,更重要的是要求不會給社會和日常生活帶來各種各樣的負面影響。</p><p><b> 致謝</b></p><p> 在這次畢業(yè)論文的撰寫過程中,得到了許多人的幫助。首先我要感謝我的指導老師在畢業(yè)設計上給予我們的指導、提供給我的支持和幫助,這是我能
85、順利完成這次報告的主要原因,更重要的是老師耐心的幫我解決了許多技術上的難題,讓我能把系統做得更加完善。</p><p> 在此寫畢業(yè)論文期間,我不僅學到了許多新的知識,而且也開闊了視野,提高了自己的設計能力。在此,我也要感謝幫助過我們的同學們,他們?yōu)槲医鉀Q了不少我不太明白的難題。同時也感謝學院為我提供良好的做畢業(yè)設計的環(huán)境。最后再一次感謝所有在設計中曾經幫助過我的良師益友和同學。</p><
86、p><b> 參考文獻</b></p><p> [1]白麗.自動售貨機:第三次零售業(yè)革命[ J].電子商務,2005,(3)</p><p> [2]王雯雋.基于Verilong-HDL 自動售貨機的設計與實現[ J].微型電腦應用,2005,21(5) </p><p> [3]裴進靈.一種新型自動售貨機的研制[J].科技情報
87、開發(fā)與經濟, 2003,13(12)</p><p> [4]鄭大宇,紀鵬.自動售貨機結構安全機制的研究[ J].哈爾濱商業(yè)大學學報(自然科學版),2006,22(1)</p><p> [5]鄭大宇,劉立晶.自動售貨機送出機構的設計及優(yōu)化[ J].黑龍江商學院學報(自然科學版), 2000,6(3)</p><p> [6]黃科 艾瓊龍 李磊主編 《EDA與
88、數字系統設計案例實踐》[M].清華大學出版社,2010.年</p><p> [7]郭照南 主編 《電子技術與EDA技術課程設計》[M].中南大學出版社,2010年</p><p> [8]包明 編著 《EDA技術與可編程器件的應用》[M].北京航空航天大學出版社,2007年</p><p> [9]潘松 黃繼業(yè) 編著 《EDA技術實用教程——VHDL版》(第
89、四版)[M].科學出版社,2010年</p><p> [10]劉紹漢 林灶生 劉新民 編著 《VHDL芯片設計》[M].清華大學出版社,2004年</p><p> [11]鄒彥 編著 《EDA技術與數字系統設計》[M].電子工業(yè)出版社,2007.4 </p><p> [12]王永華 《現代電氣控制及PLC應用技術》【M】.2版.北京:北京航空航天大學出版
90、社</p><p> [13]朱正偉 主編 《EDA技術及應用》[M].清華大學出版社,2005.10</p><p> [14]廖超平 主編 《EDA技術與VHDL使用教程》[M].高等教育出版社,2007年</p><p> [15]章彬宏 主編 《EDA應用技術》[M].北京:北京理工大學出版社,2007.7</p><p>&l
91、t;b> 附錄</b></p><p><b> 附錄A:程序源代碼</b></p><p> library ieee;--庫聲明</p><p> use ieee.std_logic_1164.all;</p><p> entity automat is</p><
92、p> port(sel1,sel5,sel10,put1,put5,put10,sure,clk,rst:in std_logic;</p><p> jing,out1,out5,out10:out std_logic;</p><p> digit:out integer range 0 to 15);</p><p> end automat;-
93、-實體</p><p> architecture bhv of automat is</p><p> type state is(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,</p><p> s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21);--結構體,定義21個狀態(tài)</p>
94、<p> signal ps,ns:state;</p><p> signal a,b:std_logic;--聲明a,b兩個信號,用于延時</p><p><b> begin</b></p><p> process(clk,rst)</p><p> variable temp:integer
95、 range 0 to 3;</p><p><b> begin</b></p><p> if rst='1'then</p><p> ps<=s0;--當復位信號有效時,s0賦給現態(tài)</p><p> elsif clk'event and clk='1' t
96、hen</p><p> ps<=ns;--當上升沿到來時,次態(tài)賦值給現態(tài)</p><p> if(a='1')then</p><p> temp:=temp+1;</p><p> if(temp=3)then</p><p><b> b<='1';
97、</b></p><p><b> else</b></p><p><b> b<='0';</b></p><p><b> end if;</b></p><p><b> else</b></p>
98、;<p><b> temp:=0;</b></p><p><b> end if;</b></p><p> end if;--延時程序</p><p> end process;</p><p> process(sel1,sel5,sel10,put1,put5,pu
99、t10,sure,b,ps)</p><p><b> begin</b></p><p> if((ps=s0)or(ps=s1)or(ps=s2)or(ps=s3)or(ps=s4)or(ps=s5)or(ps=s6)or(ps=s7)or(ps=s8)or(ps=s9)or(ps=s10)or(ps=s11)or(ps=s12))then</p>
100、<p><b> a<='0';</b></p><p><b> else</b></p><p><b> a<='1';</b></p><p> end if;--對控制延時信號a賦值</p><p>
101、 case ps is</p><p> when s0=>jing<='0';out1<='0';out5<='0';out10<='0';digit<=0;--狀態(tài)及狀態(tài)轉換情況</p><p> if sel1='1' and sel5='0' an
102、d sel10='0' then</p><p><b> ns<=s1;</b></p><p> elsif sel1='0' and sel5='1' and sel10='0' then</p><p><b> ns<=s2;</b>
103、;</p><p> elsif sel1='0' and sel5='0' and sel10='1' then</p><p><b> ns<=s3;</b></p><p><b> else</b></p><p><b&g
104、t; ns<=s0;</b></p><p><b> end if;</b></p><p> when s1=>digit<=1;</p><p> if put1='1' and put5='0' and put10='0' then</p>
105、<p><b> ns<=s4;</b></p><p> elsif put1='0' and put5='1' and put10='0' then</p><p><b> ns<=s5;</b></p><p> elsif put1
106、='0' and put5='0' and put10='1' then</p><p><b> ns<=s6;</b></p><p><b> else</b></p><p><b> ns<=s1;</b></p>
107、<p><b> end if;</b></p><p> when s4=>digit<=1;</p><p> if sure='1' then</p><p><b> ns<=s13;</b></p><p><b> el
108、se</b></p><p><b> ns<=s4;</b></p><p><b> end if;</b></p><p> when s5=>digit<=5;</p><p> if sure='1' then</p>&
109、lt;p><b> ns<=s14;</b></p><p><b> else</b></p><p><b> ns<=s5;</b></p><p><b> end if;</b></p><p> when s6=&g
110、t;digit<=10;</p><p> if sure='1' then</p><p><b> ns<=s15;</b></p><p><b> else</b></p><p><b> ns<=s6;</b></p&
111、gt;<p><b> end if;</b></p><p> when s2=>digit<=5;</p><p> if put1='1' and put5='0' and put10='0' then</p><p><b> ns<=s7
112、;</b></p><p> elsif put1='0' and put5='1' and put10='0' then</p><p><b> ns<=s8;</b></p><p> elsif put1='0' and put5='0
113、9; and put10='1' then</p><p><b> ns<=s9;</b></p><p><b> else</b></p><p><b> ns<=s2;</b></p><p><b> end if;&l
114、t;/b></p><p> when s7=>digit<=1;</p><p> if sure='1' then</p><p><b> ns<=s16;</b></p><p><b> else</b></p><p&g
115、t;<b> ns<=s7;</b></p><p><b> end if;</b></p><p> when s8=>digit<=5;</p><p> if sure='1' then</p><p><b> ns<=s17;&
116、lt;/b></p><p><b> else</b></p><p><b> ns<=s8;</b></p><p><b> end if;</b></p><p> when s9=>digit<=10;</p><
117、p> if sure='1' then</p><p><b> ns<=s18;</b></p><p><b> else</b></p><p><b> ns<=s9;</b></p><p><b> end if
118、;</b></p><p> when s3=>digit<=10;</p><p> if put1='1' and put5='0' and put10='0' then</p><p><b> ns<=s10;</b></p><p&
119、gt; elsif put1='0' and put5='1' and put10='0' then</p><p><b> ns<=s11;</b></p><p> elsif put1='0' and put5='0' and put10='1' the
120、n</p><p><b> ns<=s12;</b></p><p><b> else</b></p><p><b> ns<=s3;</b></p><p><b> end if;</b></p><p&g
121、t; when s10=>digit<=1;</p><p> if sure='1' then</p><p><b> ns<=s19;</b></p><p><b> else</b></p><p><b> ns<=s10;&l
122、t;/b></p><p><b> end if;</b></p><p> when s11=>digit<=5;</p><p> if sure='1' then</p><p><b> ns<=s20;</b></p><
123、;p><b> else</b></p><p><b> ns<=s11;</b></p><p><b> end if;</b></p><p> when s12=>digit<=10;</p><p> if sure='1&
124、#39; then</p><p><b> ns<=s21;</b></p><p><b> else</b></p><p><b> ns<=s12;</b></p><p><b> end if;</b></p>
125、<p> when s13=>out1<='1';out5<='0';out10<='0';jing<='0';digit<=0;</p><p> if b='1' then</p><p> ns<=s0;--延時控制</p>&l
126、t;p><b> else</b></p><p><b> ns<=s13;</b></p><p><b> end if;</b></p><p> when s14=>out1<='1';out5<='0';out10<
127、;='0';jing<='0';digit<=4;</p><p> if b='1' then</p><p><b> ns<=s0;</b></p><p><b> else</b></p><p><b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 自動售貨機畢業(yè)論文
- 畢業(yè)論文自動售貨機
- 自動售貨機plc設計畢業(yè)論文
- plc簡單自動售貨機畢業(yè)論文
- 自動售貨機畢業(yè)論文--動售貨機plc控制系統背景概述
- 畢業(yè)論文范文——plc自動售貨機
- plc自動售貨機設計畢業(yè)論文
- 畢業(yè)論文自動售貨機的系統設計
- 基于plc的自動售貨機畢業(yè)論文
- 自動售貨機畢業(yè)設計論文
- 畢業(yè)論文----自動售貨機的plc系統設計
- vhdl描述的自動售貨機系統畢業(yè)論文
- 自動售貨機plc控制系統-畢業(yè)論文
- 基于plc自動售貨機的設計畢業(yè)論文
- 自動售貨機
- 自動售貨機plc控制系統設計-畢業(yè)論文
- 基于plc的自動售貨機設計-畢業(yè)論文
- 畢業(yè)論文--自動售貨機控制系統的設計
- 自動售貨機plc控制系統設計畢業(yè)論文
- 自動售貨機plc控制系統設計畢業(yè)論文
評論
0/150
提交評論