基于Verilog語言的簡單自動售貨機_第1頁
基于Verilog語言的簡單自動售貨機_第2頁
基于Verilog語言的簡單自動售貨機_第3頁
基于Verilog語言的簡單自動售貨機_第4頁
基于Verilog語言的簡單自動售貨機_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、EDA設計基礎實驗課程論文EDA設計基礎實驗課程論文題 目 基于Verilog語言的簡單自動售貨機 學 院 通信學院 專業(yè)班級 通信111班 學生姓名 大彬哥 指導教師 大力會 2013年 6月 12日26摘 要本設計是以現(xiàn)場可編程邏輯器件(FPGA)為核心的自動售貨機,利用Quartus軟件編寫Verilog HDL硬件描述語言程序以實現(xiàn)自動售貨功能。本設計主要以程序為主,硬件方面則使用實驗箱,將程序各變量端口與實驗箱管腳進行相應的配置,用八個開關分別代表商品價格、所投錢幣價格及確認付款找零操作。當選擇好商品并投幣后,數(shù)碼管顯示所選商品價格及投入錢幣價格;按下確認付款開關,數(shù)碼管顯示應該找多

2、少錢,蜂鳴器響,對應商品LED燈亮。若所投錢幣不足所選商品價格,對應警告錢幣不足的LED燈亮。關鍵字:現(xiàn)場可編程邏輯器件 Verilog HDL 自動售貨機 Quartus AbstractThis design is an auto-vending machine based on field programmable logic devices (FPGA) . We use Quartusto write procedure in verilog HDL which is a language to describe hardware. The procedure will realiz

3、e the function of auto-vending machine.This design is mainly about procedure. For the hardware, we use experimental box. We allocate all variable quantities in the procedure to the feet in experimental box. We use eight switch respectively represent commodity prices and throw money price and confirm

4、 payment change operation. When choosing good commodities and coin, digital pipe display selected commodity prices and money price. When pressing confirm payment switch, digital pipe display should find how much money, buzzer sounded, corresponding commodity LED lights. If throw money shortage selec

5、ted commodity prices, corresponding warning money shortage of LED lights.Keywords: FPGA Verilog HDL auto-vending machine Quartus目 錄摘 要IAbstractII第1章 緒論11.1 概述11.2 課題的背景、目的11.3 課題設計環(huán)境2 1.3.1 EDA的應用及發(fā)展趨勢2 1.3.2 Quartus II簡介31.3.3 FPGA介紹4第2章 系統(tǒng)設計52.1 系統(tǒng)設計52.2 系統(tǒng)設計方案比較52.2.1 總體設計52.2.2 設計方案比較5第3章 詳細設計73

6、.1 自動售貨機狀態(tài)描述73.2 設計思路及原理73.2.1 模塊描述與實現(xiàn)73.2.2 電路原理圖93.3 自動售貨機狀態(tài)描述1134 詳細狀態(tài)描述113.4.1 初始狀態(tài)113.4.2 選商品狀態(tài)113.4.3 投幣狀態(tài)113.4.4 找零狀態(tài)11第4章 軟件設計134.1 分析與設計思路134.2 框圖144.3 程序總流程圖154.4 程序15第5章 結果與討論225.1 實驗調試225.1.1 調試步驟225.1.2 實驗現(xiàn)象235.2 結果與分析23結論24參考文獻25附錄26致謝27第1章 緒論1.1 概述隨著電子技術的發(fā)展,現(xiàn)場可編程門陣列FPGA和復雜可編程邏輯器件CPLD的

7、出現(xiàn),使得電子系統(tǒng)的設計者利用與器件相應的電子CAD軟件,在實驗室里就可以設計自己的專用集成電路ASIC器件。這種可編程ASIC不僅使設計的產(chǎn)品達到小型化、集成化和高可靠性,而且器件具有用戶可編程特性,大大縮短了設計周期,減少了設計費用,降低了設計風險。目前數(shù)字系統(tǒng)的設計可以直接面向用戶需求,根據(jù)系統(tǒng)的行為和功能要求,自上至下地逐層完成相應的描述綜合優(yōu)化仿真與驗證,直到生成器件,實現(xiàn)電子設計自動化。其中電子設計自動化(EDA)的關鍵技術之一就是可以用硬件描述語言(HDL)來描述硬件電路。EDA是電子設計自動化(Electronic Design Automation)的縮寫,在20世紀60年代

8、中期從計算機輔助設計(CAD)、計算機輔助制造(CAM)、計算機輔助測試(CAT)和計算機輔助工程(CAE)的概念發(fā)展而來的。Verilog HDL是眾多EDA軟件中的一個,結合我們這學期所學課程,本次設計采用的是Verilog公司推出的Verilog硬件描述語言,目的是為了將我們所學應用到實際生活中,同時加深我們對Verilog硬件描述語言,F(xiàn)PGA芯片等等的認識與掌握。1.2 課題的背景、目的二十一世紀是信息化高速發(fā)展的世紀,因此在二十一世紀掌握前沿技術是十分有必要的。本次課題是計算機組成原理的課程設計,這次課題旨在通過自己對所需功能芯片的設計與實現(xiàn)來鞏固以前所學的計算機硬件基礎知識,同時

9、也提高動手實踐的能力,還有為將來進行更大規(guī)模更復雜的開發(fā)積累經(jīng)驗。自動售貨是20世紀70年代在日本、歐美發(fā)展起來的一種全新的消費方式,自動售貨機(Vending Machines)商業(yè)起源于本世紀的六十年代,由美國的Mars家族發(fā)明。自動售貨機又被稱為24小時營業(yè)的微型自助超市,它的售貨領域非常廣泛,是發(fā)達國家商品零售的一種主要方式。自動售貨機作為一種先進的消費方式,已經(jīng)成為城市現(xiàn)代文明發(fā)達程度的重要標志,其新穎、時尚的購物方式,24小時營業(yè)的特點給人們生活帶來了便利,美化了城市環(huán)境,受到消費者的歡迎。但是在我國自動售貨機的普及還不及發(fā)達國家,主要原因是我國EDA技術的應用水平長期落后于發(fā)達國

10、家。1.3 課題設計環(huán)境1.3.1 EDA的應用及發(fā)展趨勢EDA在教學、科研、產(chǎn)品設計與制造等各方面都發(fā)揮著巨大的作用。在教學方面,幾乎所有理工科(特別是電子信息)類的高校都開設了EDA課程。主要是讓學生了解EDA的基本概念和基本原理、掌握用HDL語言編寫規(guī)范、掌握邏輯綜合的理論和算法、使用EDA工具進行電子電路課程的實驗并從事簡單系統(tǒng)的設計。一般學習電路仿真工具(如EWB、PSPICE)和PLD開發(fā)工具(如Altera/Xilinx的器件結構及開發(fā)系統(tǒng)),為今后工作打下基礎??蒲蟹矫嬷饕秒娐贩抡婀ぞ撸‥WB或PSPICE)進行電路設計與仿真;利用虛擬儀器進行產(chǎn)品測試;將CPLD/FPGA

11、器件實際應用到儀器設備中;從事PCB設計和ASIC設計等。從目前的EDA技術來看,其發(fā)展趨勢是政府重視、使用普及、應用文泛、工具多樣、軟件功能強大。中國EDA市場已漸趨成熟,不過大部分設計工程師面向的是PC主板和小型ASIC領域,僅有小部分(約11%)的設計人員研發(fā)復雜的片上系統(tǒng)器件。為了與臺灣和美國的設計工程師形成更有力的競爭,中國的設計隊伍有必要購入一些最新的EDA技術。在信息通信領域,要優(yōu)先發(fā)展高速寬帶信息網(wǎng)、深亞微米集成電路、新型元器件、計算機及軟件技術、第三代移動通信技術、信息管理、信息安全技術,積極開拓以數(shù)字技術、網(wǎng)絡技術為基礎的新一代信息產(chǎn)品,發(fā)展新興產(chǎn)業(yè),培育新的經(jīng)濟增長點。要

12、大力推進制造業(yè)信息化,積極開展計算機輔助設計(CAD)、計算機輔助工程(CAE)、計算機輔助工藝(CAPP)、計算機機輔助制造(CAM)、產(chǎn)品數(shù)據(jù)管理(PDM)、制造資源計劃(MRPII)及企業(yè)資源管理(ERP)等。有條件的企業(yè)可開展“網(wǎng)絡制造”,便于合作設計、合作制造,參與國內和國際競爭。開展“數(shù)控化”工程和“數(shù)字化”工程。自動化儀表的技術發(fā)展趨勢的測試技術、控制技術與計算機技術、通信技術進一步融合,形成測量、控制、通信與計算機(M3C)結構。在ASIC和PLD設計方面,向超高速、高密度、低功耗、低電壓方向發(fā)展。在EDA軟件開發(fā)方面,目前主要集中在美國。但各國也正在努力開發(fā)相應的工具。日本、

13、韓國都有ASIC設計工具,但不對外開放。中國華大集成電路設計中心,也提供IC設計軟件,但性能不是很強。相信在不久的將來會有更多更好的設計工具有各地開花并結果。據(jù)最新統(tǒng)計顯示,中國和印度正在成為電子設計自動化領域發(fā)展最快的兩個市場,年復合增長率分別達到了50%和30%。EDA技術發(fā)展迅猛,完全可以用日新月異來描述。EDA技術的應用廣泛,現(xiàn)在已涉及到各行各業(yè)。EDA水平不斷提高,設計工具趨于完美的地步。EDA市場日趨成熟,但我國的研發(fā)水平很有限,需迎頭趕上。1.3.2 Quartus簡介本次課題設計方案要用到的開發(fā)環(huán)境是Altera公司的綜合性PLD/FPGA開發(fā)軟件Quartus II,支持原理

14、圖、VHDL、Verilog HDL以及AHDL(Altera Hardware Description Language)等多種設計輸入形式,內嵌自有的綜合器以及仿真器,可以完成從設計輸入到硬件配置的完整PLD設計流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl腳本完成設計流程外,提供了完善的用戶圖形界面設計方式。具有運行速度快,界面統(tǒng)一,功能集中,易學易用等特點。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模塊庫,使用戶可以充分利用成熟的模塊,簡化了設計的復雜性、加快了設計速度。對第三方EDA工具的良好支持

15、也使用戶可以在設計流程的各個階段使用熟悉的第三方EDA工具。此外,Quartus II 通過和DSP Builder工具與Matlab/Simulink相結合,可以方便地實現(xiàn)各種DSP應用系統(tǒng);支持Altera的片上可編程系統(tǒng)(SOPC)開發(fā),集系統(tǒng)級設計、嵌入式軟件開發(fā)、可編程邏輯設計于一體,是一種綜合性的開發(fā)平臺。Maxplus II 作為Altera的上一代PLD設計軟件,由于其出色的易用性而得到了廣泛的應用。目前Altera已經(jīng)停止了對Maxplus II 的更新支持,Quartus II 與之相比不僅僅是支持器件類型的豐富和圖形界面的改變。Altera在Quartus II 中包含了

16、許多諸如SignalTap II、Chip Editor和RTL Viewer的設計輔助工具,集成了SOPC和HardCopy設計流程,并且繼承了Maxplus II 友好的圖形界面及簡便的使用方法。Altera Quartus II 作為一種可編程邏輯的設計環(huán)境, 由于其強大的設計能力和直觀易用的接口,越來越受到數(shù)字系統(tǒng)設計者的歡迎。Quartus II提供了完全集成且與電路結構無關的開發(fā)包環(huán)境,具有數(shù)字邏輯設計的全部特性,包括:可利用原理圖、結構框圖、Verilog HDL、AHDL和VHDL完成電路描述,并將其保存為設計實體文件;芯片(電路)平面布局連線編輯;LogicLock增量設計方

17、法,用戶可建立并優(yōu)化系統(tǒng),然后添加對原始系統(tǒng)的性能影響較小或無影響的后續(xù)模塊;功能強大的邏輯綜合工具;完備的電路功能仿真與時序邏輯仿真工具;定時/時序分析與關鍵路徑延時分析;可使用SignalTap II邏輯分析工具進行嵌入式的邏輯分析;支持軟件源文件的添加和創(chuàng)建,并將它們鏈接起來生成編程文件;使用組合編譯方式可一次完成整體設計流程;自動定位編譯錯誤;高效的期間編程與驗證工具;可讀入標準的EDIF網(wǎng)表文件、VHDL網(wǎng)表文件和Verilog網(wǎng)表文件;能生成第三方EDA軟件使用的VHDL網(wǎng)表文件和Verilog網(wǎng)表文件。1.3.3 FPGA介紹FPGA是英文Field Programmable G

18、ate Array的縮寫,即現(xiàn)場可編程門陣列,它是在PAL、GAL、FPLD等可編程器件的基礎上進一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路有限的缺點。FPGA采用了邏輯單元陣列LCA這樣一個新概念,內部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和內部連線(Interconnect)三個部分。FPGA的基本特點主要有以下幾點:一、FPGA設計ASIC電路,用戶不需要投片生產(chǎn),就能得到合用的芯片。二、FPGA可做其

19、它全定制或半定制ASIC電路中的試樣片。三、FPGA內部有豐富的觸發(fā)器和I / O引腳。四、FPGA是ASIC電路中設計周期最短、開發(fā)費用最低、風險最小的器件??梢哉f,F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。目前FPGA的品種很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等。FPGA是由存放在片內RAM中的程序來設置其工作狀態(tài)的,因此,工作時需要對片內的RAM進行編程。用戶可以根據(jù)不同的配置模式,采用不同的編程方式。加電時,F(xiàn)PGA芯片將EPROM中的數(shù)據(jù)讀入片內編程RAM中,配置完成后,F(xiàn)PGA進入工作狀態(tài)。掉電后,F(xiàn)PGA恢復成白

20、片,內部邏輯關系消失,因此,F(xiàn)PGA能夠反復使用。FPGA的編程無須專用的FPGA編程器,只須用通用的EPROM、PROM編程即可。當需要修改FPGA功能時,只須換一塊EPROM第8頁即可。這樣,同一片F(xiàn)PGA,不同的編程數(shù)據(jù),可以產(chǎn)生不同的電路功能。因此,F(xiàn)PGA的使用非常靈活。FPGA的配置模式非常靈活,它可以有多種配置方式:平行主模式為一片F(xiàn)PGA加一片EPROM的方式;主從模式為多片F(xiàn)PGA加一片PROM;串行模式可以采用串行PROM 編程FPGA外設模式可以將FPGA作為微處理器的外設,由微處理器對其編程。第2章 系統(tǒng)設計2.1 系統(tǒng)設計 (1)用四個發(fā)光二極管分別模擬售出價值為5角

21、、1元、1.5元和2元的小商品,購買者可以通過開關選擇任意一種標價中的小商品。(2)燈亮時表示該小商品售出。(3)用開關分別模擬5角、1元硬幣和5元紙幣投入,可以用幾只發(fā)光二極管(或數(shù)碼管)分別代表找回剩余的硬幣。(4)每次只能售出一種小商品,當所投硬幣達到或超過購買者所選面值時,售出貨物并找回剩余的硬幣,回到初始狀態(tài);(5)當所投硬幣值不足面值時,可通過一個復位鍵退回所投硬幣,回到初始狀態(tài)。2.2 系統(tǒng)設計方案比較2.2.1 總體設計總體設計采用FPGA來設計的原理圖如圖1-1所示它由控制輸入電路、FPGA顯示電路和電機驅動組成。圖1-1 采用FPGA設計的自動售貨機原理方框圖控制輸入電路主

22、要是為用戶設計的,起到一個輸入控制的作用。FPGA是現(xiàn)場可編程邏輯器件,也是本設計方案的核心內容,它是實現(xiàn)自動售貨機運作的主要控制模塊。將編寫好的HDL程序燒制到現(xiàn)場可編程邏輯器件FPGA中,然后通過控制輸入電路把信號輸入到FPGA,由八個開關控制輸入信號即消費者選擇商品和消費者投幣及確認消費,動態(tài)數(shù)碼管顯示輸出信號即找零環(huán)節(jié)和所選擇的商品、消費者投幣。2.2.2 總體設計設計方案比較本設計可以通過多種方案來實現(xiàn),下面就主要的三種方案進行闡述和比較。方案一:采用數(shù)字邏輯電路制作,用IC 器件連接焊接外圍電路實現(xiàn),這種電路很直觀,簡單方便。但應用數(shù)字邏輯電路制作,使用的器件較多,連接復雜,體積大

23、,功耗大。電路中焊點和線路較多會,使成品的穩(wěn)定度和精度大大降低。方案二:使用現(xiàn)場可編程邏輯器件(FPGA)制作,利用Verilog HDL硬件描述語言編程進行控制,然后燒寫實現(xiàn)。方案三: 單片機現(xiàn)在已經(jīng)達到很成熟的階段了,它的應用也十分廣泛。采用單片機來實現(xiàn)自動售貨機,它的原理方框圖與用FPGA來實現(xiàn)的原理方框圖類似,如圖1.2所示。圖1-2 采用單片機實現(xiàn)自動售貨機的原理方框圖圖1-1和圖1-2的基本原理都相同,唯一不同的是一個是用FPGA來制作,一個是用單片機來實現(xiàn)。采用單片機來實現(xiàn)自動售貨機,主要的核心是單片機程序的設計。方案比較:對于自動售貨機的設計,三個方案均可以實現(xiàn),但是第一個方案

24、中采用的是數(shù)字邏輯電路來制作,該電路硬件所需的器材多,體積龐大,比較復雜,而且精度和穩(wěn)定度都不是很高。第二個方案采用的是現(xiàn)場可編程邏輯器件來實現(xiàn), 它的優(yōu)點是所有電路集成在一塊芯片上,此方案所需的外圍電路簡單,這樣它的體積就減少了,同時還提高了系統(tǒng)的穩(wěn)定度。還可以用軟件Quartus軟件進行仿真和調試等。可以充分利用HDL硬件描述語言方便的編程,提高開發(fā)效率,縮短研發(fā)周期,降低研發(fā)成本;而且易于進行功能的擴展,實現(xiàn)方法靈活調試方便,修改容易.方案三也有它的優(yōu)點,但同時也存在缺點。它對設計者的要求比較高,設計者對軟硬件必須十分熟悉。和方案二來比它的實驗仿真沒有方案二簡單直觀,調試也有一定的難度。

25、在外界環(huán)境相同的條件下,方案三設計出來的產(chǎn)品精度和穩(wěn)定度要比方案二稍微差一些。因此,自動售貨機的設計我們選擇方案二來實現(xiàn)。第3章 詳細設計3.1 自動售貨機主要功能自動售貨機控制要求對機內商品信息進行識別,對投入的貨幣進行運算,并根據(jù)所投入的貨幣數(shù)值判斷是否能夠購買某種商品,并做出相應的反應。本文設計的自動售貨機控制系統(tǒng)主要可以實現(xiàn)投幣處理、計算投幣總額、輸出商品,輸出找零等功能,系統(tǒng)工作流程如圖3-1 所示圖3-1 自動售貨機系統(tǒng)工作流程圖3.2 設計思路及原理3.2.1 模塊描述與實現(xiàn)自動售貨機的問題實際上就是狀態(tài)轉換的問題,不同的狀態(tài)對應不同的輸出,具體的來說就是輸入不同幣值的錢后對應著

26、不同的作用結果。因此將此問題分為兩部分來考慮,即輸入和輸出。 輸入部分包括時鐘信號、投幣信號、商品選擇信號、貨物信號、確定信號、復位信號。因為幣值只考慮5角、1元和5元的情況,因此可以分別用三個輸入端代替。同樣對于四種商品的選擇也可用四個輸入端代替。 輸出部分包括幣值顯示信號、輸出貨物信號、警告信號以及找零信號。綜上,給出如下輸入輸出變量:輸入變量:時鐘信號(clk):每個時鐘的上升沿觸發(fā)系統(tǒng)的狀態(tài)轉換。復位信號(reset):上升沿觸發(fā),按下后自動回到初始狀態(tài)。投幣信號(btn_mon):有5角、1元、5元高電平有效。貨物信號(btn_sell):有四種,高電平有效確定信號(ok):高電平有

27、效。輸出變量:顯示信號(dis_mony):顯示投入的幣額。貨物信號(led):對應賣出的貨物。顯示信號(dis_price):貨物對應的價錢。警告信號(led_warn):錢不足時發(fā)出警告信號。3.2.2 電路原理圖 圖3-2-2 電路仿真圖3.3 自動售貨機狀態(tài)描述判斷開關被按下的個數(shù)N。若N=2表示所選本次選擇無效,返回初始狀態(tài);若N=1則顯示所選商品,并繼續(xù)執(zhí)行下面的流程。4個開關分別代表四種商品。3個開關分別代表投入0.5元,1元,5元,統(tǒng)計投入總額。投入總額與商品價格做比較,如果總額=商品價格,則繼續(xù)執(zhí)行下面的程序。找零=總額-商品價格,數(shù)碼管顯示找零金額。狀態(tài)如圖3-2所示:圖3

28、-1 自動售貨機狀態(tài)圖3.4 詳細狀態(tài)描述自動售貨機控制系統(tǒng)的工作過程中,可分為四個狀態(tài):初始狀態(tài)、選商品狀態(tài)、投幣狀態(tài)和找零狀態(tài)。在每一個狀態(tài)中完成特定的功能。3.4.1 初始狀態(tài)在初始狀態(tài)下,自動售貨機通電,初始化機內商品信息(包括商品種類、每種商品的數(shù)量以及價格)。3.4.2 選商品狀態(tài) 分別有價格為0.5元、1元、1.5元和2元的商品,每次選擇商品前,設置一個標志位btn_sell表示選擇商品狀態(tài)。此自動售貨機每一次售貨時只能一次選擇一種商品,當同時選擇兩種以上時,選擇商品無效,數(shù)碼管顯示清零,重新進行商品選擇。選擇商品后,數(shù)碼管顯示所選商品價格。3.4.3 投幣狀態(tài)當選好商品后,開始

29、投幣。同樣有一標志位btn_price表示投幣金額。投幣口只接受三種面值的錢幣0.5元、2元和5元,可以同時投入多種面值錢幣。投完幣后,先有一個確認買商品的過程,若投了幣但又不購買商品了,就將全部投幣金額退回;若確認購買商品,則進入下一狀態(tài)找零狀態(tài)。3.4.4 找零狀態(tài)投完幣,并確認購買商品后,進入找零狀態(tài)。首先要將所投的金額與所選商品的價格做比較,若所投金額小于商品價格,則退回所投錢幣;若大于等于商品價格,則兩者做差,得到需要找零的錢。第4章 軟件設計4.1 分析與設計思路自動售貨機控制系統(tǒng)的功能模塊邏輯上劃分為商品信息存儲模塊、商品選擇模塊、投幣處理模塊,找零模塊和顯示模塊。1 商品信息存

30、儲模塊該模塊的功能是將商品的單價、數(shù)量存儲到自動售貨機中,price、quantity 分別表示商品的單價與數(shù)量數(shù)據(jù)信號,item 為商品的種類。2 商品選擇模塊該模塊功能是對商品進行選擇與購買。當對四種商品進行選擇時,由sel 的選擇信號的個數(shù)來表示所選擇的商品類型。get 為對商品進行確認購買的信號。3 投幣處理模塊該模塊是對投入的硬幣進行處理的過程,輸出參數(shù)coin 為投幣數(shù)值計數(shù)器,以0.5 元為單位進行計算。整個模塊功能類似于計錢器,可準確計算投入的硬幣數(shù),記錄并保存投入的總幣值。4 找零模塊該模塊主要完成找零操作。通過計錢器coin 計算余額,然后輸出找零的控制信號act5、act

31、10。5 顯示模塊該模塊用來顯示錢數(shù)和商品數(shù)量。用于錢數(shù)顯示時,將計錢器coin轉換成BCD 碼,然后經(jīng)譯碼器譯碼并顯示。用于商品數(shù)量顯示時,將計算得出的最終商品數(shù)量quantity 先轉換成BCD 碼,然后經(jīng)譯碼器譯碼并顯示。程序可分為以下模塊1)分頻模塊。2)計時模塊。用于控制確認鍵后到恢復初始化的3秒計時。3)識別模塊。將每種硬幣、貨品的撥碼開關信號轉變?yōu)榫幋a。4)清零模塊。用于銷售總額的清零。5)初始化模塊6)控制模塊。用于數(shù)據(jù)讀入、投幣不足、交易成功狀態(tài)的控制及轉化。7)顯示模塊4.2 框圖4.3 程序總流程圖4.4 程序module auto_seller(clk,rst,dis_

32、mony,dis_price,btn_ok,btn_mon,btn_sell,led_warn,led,beep);input clk,rst,btn_ok;input 2:0 btn_mon;/選擇放入的錢input 3:0 btn_sell;/選擇商品bbt_5,gz_10,kqs_15,kl_20output 3:0 led;/led_5,led_10,led_15,led_20output led_warn;/錢不足,指示燈output 11:0 dis_mony;/數(shù)碼管顯示投入面值,dia_mony10:7=com位選,dis_mony7:0=段碼output 11:0 dis_p

33、rice;/數(shù)碼管顯示價錢output beep;reg clk_500Hz;reg 3:0 led;/led_5,led_10,led_15,led_20reg led_warn;/警告放入錢不足reg 11:0 dis_mony;reg 11:0 dis_price; reg 31:0 counter;reg 9:0 price,price_all;reg 1:0 flag = 2b00;/數(shù)碼管顯示標志位reg beep=0;parameter COUNT1 = 25d10000;/*分頻使數(shù)碼管顯示穩(wěn)定*/always (posedge clk)beginif(counter= 0)b

34、egin counter = COUNT1;clk_500Hz = clk_500Hz;endelsecounter = counter-1;endalways (negedge rst or posedge clk)beginif(!rst)beginled = 4b0000;/LED滅price_all = 0;/價格清零led_warn = 0;price = 0;beep = 0;endelsebegin/*三種面值共8種組合*/case(btn_mon)3b001:begin price_all = 5;end3b010:begin price_all = 10;end3b100:b

35、egin price_all = 50;end3b011:begin price_all = 15;end3b101:begin price_all = 55;end3b110:begin price_all = 60;end3b111:begin price_all = 65;enddefault:begin price_all = 0;endendcasecase(btn_sell)4b0001:begin price = 5;end 4b0010:begin price = 10;end4b0100:begin price = 15;end4b1000:begin price = 20;

36、enddefault:begin price = 0;endendcaseif(btn_ok = 1)beginif(price_all price) /放入錢不足beginled_warn = 1;price = 0;endelsebegin /金錢足夠price_all = price_all-price;beep = 1;case(price) /LED燈顯示貨物賣出5: begin led = 4b0001;end10:begin led = 4b0010;end15:begin led = 4b0100;end20:begin led = 4b1000;endendcaseenden

37、delsebeep = 0;endend/*分頻后將時鐘給數(shù)碼管,數(shù)碼管分別顯示放入錢的多少、商品價格*/always (posedge clk_500Hz)begincase(flag)2b00:begindis_mony = 4b1110,led7(price_all%10),1b1;dis_price = 4b1110,led7(price%10),1b1;flag = 2b01;end2b01:begindis_mony = 4b1101,led7(price_all/10),1b0;dis_price = 4b1101,led7(price/10),1b0;flag = 2b00;e

38、ndendcaseend/*數(shù)碼管段碼表*/function 6:0 led7; input 3:0 dis_input;begincase (dis_input)0 : led7 = 7b111_1110;1 : led7 = 7b011_0000;2 : led7 = 7b110_1101;3 : led7 = 7b111_1001;4 : led7 = 7b011_0011;5 : led7 = 7b101_1011;6 : led7 = 7b101_1111;7 : led7 = 7b111_0000;8 : led7 = 7b111_1111;9 : led7 = 7b111_001

39、1;default : led7 = 7b111_1111;endcaseendendfunctionendmodule第5章 標題5.1 實驗調試5.1.1 調試步驟軟件調試:運行Quartus II軟件,觀看仿真波形,仿真波形如下: 圖5-1-1 波形圖硬件調試:運行Quartus II軟件,新建工程。建立文本文件Verilog HDL File。在文件中寫入程序。保存,編譯。分配管腳。保存,編譯。將生成的.sof文件寫入FPGA試驗箱中。根據(jù)要求選擇幾種買東西的可能情況,在實驗箱上實驗,觀察記錄結果。 5.1.2 實驗現(xiàn)象1.選擇買0.5元的商品,投5元的金額,調試現(xiàn)象如下: 選擇0.5元商品數(shù)碼管顯示0.5再選擇一種商品,數(shù)碼管顯示清零,重新進行商品選擇。按下5元投幣鍵,對應數(shù)碼管顯示5.0。按下確認購買開關,找零時,對應數(shù)碼管顯示4.5,蜂鳴器響,對應0.5元商品的LED燈亮。2.選擇1.5元

溫馨提示

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

評論

0/150

提交評論