基于Verilog語言的簡(jiǎn)單自動(dòng)售貨機(jī)_第1頁(yè)
基于Verilog語言的簡(jiǎn)單自動(dòng)售貨機(jī)_第2頁(yè)
基于Verilog語言的簡(jiǎn)單自動(dòng)售貨機(jī)_第3頁(yè)
基于Verilog語言的簡(jiǎn)單自動(dòng)售貨機(jī)_第4頁(yè)
基于Verilog語言的簡(jiǎn)單自動(dòng)售貨機(jī)_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、eda設(shè)計(jì)基礎(chǔ)實(shí)驗(yàn)課程論文eda設(shè)計(jì)基礎(chǔ)實(shí)驗(yàn)課程論文題 目 基于verilog語言的簡(jiǎn)單自動(dòng)售貨機(jī) 學(xué) 院 通信學(xué)院 專業(yè)班級(jí) 通信111班 學(xué)生姓名 指導(dǎo)教師 2013年 6月 12日27摘 要本設(shè)計(jì)是以現(xiàn)場(chǎng)可編程邏輯器件(fpga)為核心的自動(dòng)售貨機(jī),利用quartus軟件編寫verilog hdl硬件描述語言程序以實(shí)現(xiàn)自動(dòng)售貨功能。本設(shè)計(jì)主要以程序?yàn)橹鳎布矫鎰t使用實(shí)驗(yàn)箱,將程序各變量端口與實(shí)驗(yàn)箱管腳進(jìn)行相應(yīng)的配置,用八個(gè)開關(guān)分別代表商品價(jià)格、所投錢幣價(jià)格及確認(rèn)付款找零操作。當(dāng)選擇好商品并投幣后,數(shù)碼管顯示所選商品價(jià)格及投入錢幣價(jià)格;按下確認(rèn)付款開關(guān),數(shù)碼管顯示應(yīng)該找多少錢,蜂鳴器響,

2、對(duì)應(yīng)商品led燈亮。若所投錢幣不足所選商品價(jià)格,對(duì)應(yīng)警告錢幣不足的led燈亮。關(guān)鍵字:現(xiàn)場(chǎng)可編程邏輯器件 verilog hdl 自動(dòng)售貨機(jī) 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 realize the fu

3、nction 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 payment

4、 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 selected comm

5、odity prices, corresponding warning money shortage of led lights.keywords: fpga verilog hdl auto-vending machine quartus目 錄摘 要iabstractii第1章 緒論11.1 概述11.2 課題的背景、目的11.3 課題設(shè)計(jì)環(huán)境2 1.3.1 eda的應(yīng)用及發(fā)展趨勢(shì)2 1.3.2 quartus ii簡(jiǎn)介31.3.3 fpga介紹4第2章 系統(tǒng)設(shè)計(jì)52.1 系統(tǒng)設(shè)計(jì)52.2 系統(tǒng)設(shè)計(jì)方案比較52.2.1 總體設(shè)計(jì)52.2.2 設(shè)計(jì)方案比較5第3章 詳細(xì)設(shè)計(jì)73.1 自動(dòng)售貨機(jī)

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

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

8、設(shè)計(jì)(cad)、計(jì)算機(jī)輔助制造(cam)、計(jì)算機(jī)輔助測(cè)試(cat)和計(jì)算機(jī)輔助工程(cae)的概念發(fā)展而來的。verilog hdl是眾多eda軟件中的一個(gè),結(jié)合我們這學(xué)期所學(xué)課程,本次設(shè)計(jì)采用的是verilog公司推出的verilog硬件描述語言,目的是為了將我們所學(xué)應(yīng)用到實(shí)際生活中,同時(shí)加深我們對(duì)verilog硬件描述語言,fpga芯片等等的認(rèn)識(shí)與掌握。1.2 課題的背景、目的二十一世紀(jì)是信息化高速發(fā)展的世紀(jì),因此在二十一世紀(jì)掌握前沿技術(shù)是十分有必要的。本次課題是計(jì)算機(jī)組成原理的課程設(shè)計(jì),這次課題旨在通過自己對(duì)所需功能芯片的設(shè)計(jì)與實(shí)現(xiàn)來鞏固以前所學(xué)的計(jì)算機(jī)硬件基礎(chǔ)知識(shí),同時(shí)也提高動(dòng)手實(shí)踐的

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

10、設(shè)計(jì)環(huán)境1.3.1 eda的應(yīng)用及發(fā)展趨勢(shì)eda在教學(xué)、科研、產(chǎn)品設(shè)計(jì)與制造等各方面都發(fā)揮著巨大的作用。在教學(xué)方面,幾乎所有理工科(特別是電子信息)類的高校都開設(shè)了eda課程。主要是讓學(xué)生了解eda的基本概念和基本原理、掌握用hdl語言編寫規(guī)范、掌握邏輯綜合的理論和算法、使用eda工具進(jìn)行電子電路課程的實(shí)驗(yàn)并從事簡(jiǎn)單系統(tǒng)的設(shè)計(jì)。一般學(xué)習(xí)電路仿真工具(如ewb、pspice)和pld開發(fā)工具(如altera/xilinx的器件結(jié)構(gòu)及開發(fā)系統(tǒng)),為今后工作打下基礎(chǔ)??蒲蟹矫嬷饕秒娐贩抡婀ぞ撸╡wb或pspice)進(jìn)行電路設(shè)計(jì)與仿真;利用虛擬儀器進(jìn)行產(chǎn)品測(cè)試;將cpld/fpga器件實(shí)際應(yīng)用到儀

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

12、息化,積極開展計(jì)算機(jī)輔助設(shè)計(jì)(cad)、計(jì)算機(jī)輔助工程(cae)、計(jì)算機(jī)輔助工藝(capp)、計(jì)算機(jī)機(jī)輔助制造(cam)、產(chǎn)品數(shù)據(jù)管理(pdm)、制造資源計(jì)劃(mrpii)及企業(yè)資源管理(erp)等。有條件的企業(yè)可開展“網(wǎng)絡(luò)制造”,便于合作設(shè)計(jì)、合作制造,參與國(guó)內(nèi)和國(guó)際競(jìng)爭(zhēng)。開展“數(shù)控化”工程和“數(shù)字化”工程。自動(dòng)化儀表的技術(shù)發(fā)展趨勢(shì)的測(cè)試技術(shù)、控制技術(shù)與計(jì)算機(jī)技術(shù)、通信技術(shù)進(jìn)一步融合,形成測(cè)量、控制、通信與計(jì)算機(jī)(m3c)結(jié)構(gòu)。在asic和pld設(shè)計(jì)方面,向超高速、高密度、低功耗、低電壓方向發(fā)展。在eda軟件開發(fā)方面,目前主要集中在美國(guó)。但各國(guó)也正在努力開發(fā)相應(yīng)的工具。日本、韓國(guó)都有asic

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

14、erilog hdl以及ahdl(altera hardware description language)等多種設(shè)計(jì)輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整pld設(shè)計(jì)流程。quartus ii可以在xp、linux以及unix上使用,除了可以使用tcl腳本完成設(shè)計(jì)流程外,提供了完善的用戶圖形界面設(shè)計(jì)方式。具有運(yùn)行速度快,界面統(tǒng)一,功能集中,易學(xué)易用等特點(diǎn)。quartus ii支持altera的ip核,包含了lpm/megafunction宏功能模塊庫(kù),使用戶可以充分利用成熟的模塊,簡(jiǎn)化了設(shè)計(jì)的復(fù)雜性、加快了設(shè)計(jì)速度。對(duì)第三方eda工具的良好支持也使用戶可以在設(shè)

15、計(jì)流程的各個(gè)階段使用熟悉的第三方eda工具。此外,quartus ii 通過和dsp builder工具與matlab/simulink相結(jié)合,可以方便地實(shí)現(xiàn)各種dsp應(yīng)用系統(tǒng);支持altera的片上可編程系統(tǒng)(sopc)開發(fā),集系統(tǒng)級(jí)設(shè)計(jì)、嵌入式軟件開發(fā)、可編程邏輯設(shè)計(jì)于一體,是一種綜合性的開發(fā)平臺(tái)。maxplus ii 作為altera的上一代pld設(shè)計(jì)軟件,由于其出色的易用性而得到了廣泛的應(yīng)用。目前altera已經(jīng)停止了對(duì)maxplus ii 的更新支持,quartus ii 與之相比不僅僅是支持器件類型的豐富和圖形界面的改變。altera在quartus ii 中包含了許多諸如sign

16、altap ii、chip editor和rtl viewer的設(shè)計(jì)輔助工具,集成了sopc和hardcopy設(shè)計(jì)流程,并且繼承了maxplus ii 友好的圖形界面及簡(jiǎn)便的使用方法。altera quartus ii 作為一種可編程邏輯的設(shè)計(jì)環(huán)境, 由于其強(qiáng)大的設(shè)計(jì)能力和直觀易用的接口,越來越受到數(shù)字系統(tǒng)設(shè)計(jì)者的歡迎。quartus ii提供了完全集成且與電路結(jié)構(gòu)無關(guān)的開發(fā)包環(huán)境,具有數(shù)字邏輯設(shè)計(jì)的全部特性,包括:可利用原理圖、結(jié)構(gòu)框圖、verilog hdl、ahdl和vhdl完成電路描述,并將其保存為設(shè)計(jì)實(shí)體文件;芯片(電路)平面布局連線編輯;logiclock增量設(shè)計(jì)方法,用戶可建立并

17、優(yōu)化系統(tǒng),然后添加對(duì)原始系統(tǒng)的性能影響較小或無影響的后續(xù)模塊;功能強(qiáng)大的邏輯綜合工具;完備的電路功能仿真與時(shí)序邏輯仿真工具;定時(shí)/時(shí)序分析與關(guān)鍵路徑延時(shí)分析;可使用signaltap ii邏輯分析工具進(jìn)行嵌入式的邏輯分析;支持軟件源文件的添加和創(chuàng)建,并將它們鏈接起來生成編程文件;使用組合編譯方式可一次完成整體設(shè)計(jì)流程;自動(dòng)定位編譯錯(cuò)誤;高效的期間編程與驗(yàn)證工具;可讀入標(biāo)準(zhǔn)的edif網(wǎng)表文件、vhdl網(wǎng)表文件和verilog網(wǎng)表文件;能生成第三方eda軟件使用的vhdl網(wǎng)表文件和verilog網(wǎng)表文件。1.3.3 fpga介紹fpga是英文field programmable gate arra

18、y的縮寫,即現(xiàn)場(chǎng)可編程門陣列,它是在pal、gal、fpld等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(asic)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路有限的缺點(diǎn)。fpga采用了邏輯單元陣列l(wèi)ca這樣一個(gè)新概念,內(nèi)部包括可配置邏輯模塊clb(configurable logic block)、輸出輸入模塊iob(input output block)和內(nèi)部連線(interconnect)三個(gè)部分。fpga的基本特點(diǎn)主要有以下幾點(diǎn):一、fpga設(shè)計(jì)asic電路,用戶不需要投片生產(chǎn),就能得到合用的芯片。二、fpga可做其它全定制或半定制

19、asic電路中的試樣片。三、fpga內(nèi)部有豐富的觸發(fā)器和i / o引腳。四、fpga是asic電路中設(shè)計(jì)周期最短、開發(fā)費(fèi)用最低、風(fēng)險(xiǎn)最小的器件。可以說,fpga芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。目前fpga的品種很多,有xilinx的xc系列、ti公司的tpc系列、altera公司的fiex系列等。fpga是由存放在片內(nèi)ram中的程序來設(shè)置其工作狀態(tài)的,因此,工作時(shí)需要對(duì)片內(nèi)的ram進(jìn)行編程。用戶可以根據(jù)不同的配置模式,采用不同的編程方式。加電時(shí),fpga芯片將eprom中的數(shù)據(jù)讀入片內(nèi)編程ram中,配置完成后,fpga進(jìn)入工作狀態(tài)。掉電后,fpga恢復(fù)成白片,內(nèi)部邏輯關(guān)系

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

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

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

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

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

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

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

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

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

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

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

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

32、_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_price;/數(shù)碼

33、管顯示價(jià)錢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ù)碼管顯示標(biāo)志位reg beep=0;parameter count1 = 25d10000;/*分頻使數(shù)碼管顯示穩(wěn)定*/always (posedge clk)beginif(counter= 0)begin cou

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

35、ce_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;enddefau

36、lt: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;endendcaseendendelsebee

37、p = 0;endend/*分頻后將時(shí)鐘給數(shù)碼管,數(shù)碼管分別顯示放入錢的多少、商品價(jià)格*/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;endendcas

38、eend/*數(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_0011;defaul

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論