畢業(yè)論文-基于FPGA的藥品自動(dòng)售貨機(jī)設(shè)計(jì)與實(shí)現(xiàn)_第1頁
畢業(yè)論文-基于FPGA的藥品自動(dòng)售貨機(jī)設(shè)計(jì)與實(shí)現(xiàn)_第2頁
畢業(yè)論文-基于FPGA的藥品自動(dòng)售貨機(jī)設(shè)計(jì)與實(shí)現(xiàn)_第3頁
畢業(yè)論文-基于FPGA的藥品自動(dòng)售貨機(jī)設(shè)計(jì)與實(shí)現(xiàn)_第4頁
畢業(yè)論文-基于FPGA的藥品自動(dòng)售貨機(jī)設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、大連東軟信息學(xué)院本科畢業(yè)設(shè)計(jì)(論文)論文題目論文題目:基于FPGA的藥品自動(dòng)售貨機(jī)設(shè)計(jì)與實(shí)現(xiàn)系 所: 電子工程系 專 業(yè):電子信息工程(集成電路設(shè)計(jì)與系統(tǒng)方向) 學(xué)生姓名: 學(xué)生學(xué)號(hào): 指導(dǎo)教師: 導(dǎo)師職稱: 講師 完成日期: 2014年4月28日 大連東軟信息學(xué)院Dalian Neusoft University of Information大連東軟信息學(xué)院畢業(yè)設(shè)計(jì)(論文) 摘要 IV基于FPGA的藥品自動(dòng)售貨機(jī)設(shè)計(jì)與實(shí)現(xiàn)摘 要隨著經(jīng)濟(jì)發(fā)展,自動(dòng)藥品售貨機(jī)市場的發(fā)展呈現(xiàn)出多元化及個(gè)性化的需求,通過自動(dòng)藥品售貨機(jī)進(jìn)行自助購買生活中非處方藥品正逐漸成為市民的生活需要。本設(shè)計(jì)是基于現(xiàn)場可編程門陣列

2、(FPGA,F(xiàn)ield-Programmable Gate Array)的藥品售貨機(jī)。FPGA內(nèi)部電路的編程設(shè)計(jì)采用硬件描述語言對(duì)自動(dòng)藥品售貨機(jī)的功能進(jìn)行描述;選擇ALTERA公司的FPGA芯片為目標(biāo)器件。根據(jù)數(shù)字系統(tǒng)由上而下設(shè)計(jì)和實(shí)現(xiàn)的基本流程,包括整體流程圖的設(shè)計(jì)、數(shù)據(jù)通道和控制單元的設(shè)計(jì)、并用可綜合的Verilog語言實(shí)現(xiàn)、經(jīng)過ModelSIM做功能仿真、用Quartus進(jìn)行綜合布局布線,最終下載到FPGA開發(fā)板進(jìn)行實(shí)機(jī)驗(yàn)證。并在設(shè)計(jì)過程中不斷對(duì)電路性能進(jìn)行優(yōu)化。最終實(shí)現(xiàn)的自動(dòng)藥品售貨機(jī)系統(tǒng)具有投入貨幣,能在七段數(shù)碼管上顯示所投入的貨幣金額,通過撥動(dòng)開關(guān)能進(jìn)行16種藥品的選擇,能提供找零

3、,以及退幣等功能,能滿足用戶在日常生活中的實(shí)際需求,同時(shí)本設(shè)計(jì)還新增了庫存不足的報(bào)警功能,這個(gè)設(shè)計(jì)能為藥品的提供者與購買者提供便利。另外本設(shè)計(jì)基于FPGA,其內(nèi)部硬件功能可通過編程改變,并且具有處理速度高等特點(diǎn)。關(guān)鍵詞:FPGA,由上而下,Verilog大連東軟信息學(xué)院畢業(yè)設(shè)計(jì)(論文) AbstractDesign and Implementation of Automatic Drug Vending Machine Based on FPGA AbstractWith the development of economy, automatic drug dispenser market a

4、ppears diversified and personalized demanding. To buy prescription drugs by automatic drug vending machine is gradually becoming peoples needs.The design is vending machine based on FPGA. The programming of FPGA internal circuit make use of hardware description language to describe functions of the

5、drugs vending machine , and FPGA chip from ALTERA company is selected as the target device. According to a basic top-down process of the digital system design and implementation, it includes the design of the overall flowchart, the design of data channel and control unit, and uses synthesizable Veri

6、log language to achive its target, does functional simulation by ModelSIM, does integrated layout by Quartus , eventually downloads the program to the FPGA develop board to verify. During the design process, the performance of the circuit is continuously optimized.Drugs vending system has money inpu

7、t function. It also can display the amount of money input by the seven-segment digital tube. Toggling switch can make the choice of 16 kinds of drugs. It also can give change and has other functions. It can meet the actual needs of users in daily life. Meanwhile, the design also added an alarm funct

8、ion when inventory are inadequate. This design can facilitate drug providers and purchasers. In addition, the interior hardware functions of this design which based on FPGA can be programmed to help achieve high speed.Key words: FPGA, Top-down, Verilog大連東軟信息學(xué)院畢業(yè)設(shè)計(jì)(論文) 目錄目 錄 TOC o 1-3 u 摘 要 PAGEREF _

9、Toc385774171 h IAbstract PAGEREF _Toc385774172 h II第1章緒 論 PAGEREF _Toc385774173 h 11.1 課題研究背景與意義 PAGEREF _Toc385774174 h 11.2 課題研究現(xiàn)狀 PAGEREF _Toc385774175 h 1第2章關(guān)鍵技術(shù)介紹 PAGEREF _Toc385774176 h 32.1 關(guān)鍵技術(shù)一 PAGEREF _Toc385774177 h 32.2 關(guān)鍵技術(shù)二 PAGEREF _Toc385774178 h 42.3 關(guān)鍵技術(shù)三 PAGEREF _Toc385774179 h 4第3

10、章系統(tǒng)需求分析 PAGEREF _Toc385774180 h 63.1 系統(tǒng)功能概述 PAGEREF _Toc385774181 h 63.2 系統(tǒng)功能需求 PAGEREF _Toc385774182 h 63.3 系統(tǒng)開發(fā)環(huán)境73.4 系統(tǒng)可行性分析 PAGEREF _Toc385774184 h 83.5 系統(tǒng)流程圖10第4章系統(tǒng)設(shè)計(jì)124.1 系統(tǒng)設(shè)計(jì)指導(dǎo)原則124.2 系統(tǒng)初步設(shè)計(jì)124.3 系統(tǒng)詳細(xì)設(shè)計(jì) PAGEREF _Toc385774189 h 124.3.1 數(shù)據(jù)通道模塊設(shè)計(jì)154.3.2控制單元模塊設(shè)計(jì)184.4 芯片選擇194.5 顯示電路19第5章系統(tǒng)實(shí)現(xiàn)205.1

11、數(shù)據(jù)通道模塊205.2 控制單元模塊20第6章系統(tǒng)測試226.1 數(shù)據(jù)通道仿真226.2 控制單元仿真256.3 系統(tǒng)整體仿真25第7章結(jié)論26參考文獻(xiàn)27致 謝28大連東軟信息學(xué)院畢業(yè)設(shè)計(jì)(論文)- 第1章緒 論1.1 課題研究背景與意義隨著經(jīng)濟(jì)發(fā)展,傳統(tǒng)的固定地點(diǎn)人員售貨方式暴露出許多弊端:人力資源需求大;受所需服務(wù)地點(diǎn),地理?xiàng)l件的限制;而且在服務(wù)時(shí)間上不能最大限度的服務(wù)于消費(fèi)者。自動(dòng)售貨機(jī)的出現(xiàn)解決了這些難題。自動(dòng)售貨機(jī)市場的發(fā)展呈現(xiàn)出多元化及個(gè)性化的需求,通過自動(dòng)售貨機(jī)進(jìn)行自助購物正逐漸成為市民的一種新的消費(fèi)時(shí)尚和追求高品質(zhì)生活的需要。自動(dòng)售貨機(jī)的售貨領(lǐng)域非常廣泛,是發(fā)達(dá)國家商品零售的

12、一種主要方式。自動(dòng)售貨機(jī)作為一種先進(jìn)的消費(fèi)方式,已經(jīng)成為城市現(xiàn)代文明發(fā)達(dá)程度的重要標(biāo)志,其新穎、時(shí)尚的購物方式,24小時(shí)營業(yè)的特點(diǎn)給人們生活帶來了便利,美化了城市環(huán)境,受到消費(fèi)者的歡迎。如此多的優(yōu)點(diǎn)使得自動(dòng)售貨機(jī)在世界范圍內(nèi)得到廣泛的應(yīng)用?,F(xiàn)在生活的快節(jié)奏讓人們都越來越追求方便,對(duì)于日常必備品的需求也更加的追求便利。因此對(duì)于必備的常用藥品需求也不再是滿足于傳統(tǒng)的商店里購買,但對(duì)于目前的市場,自動(dòng)藥品售貨機(jī)的市場依然是呈現(xiàn)一種空白的區(qū)域。面對(duì)一些非處方藥,一些家里必備的感冒藥品,更多的人希望能在就近取得,藥品自動(dòng)售貨機(jī)的出現(xiàn)解決了這方面的問題,并且藥品自動(dòng)售貨機(jī)24小時(shí)營業(yè)的特點(diǎn)也給人們生活帶來

13、了很多的便利,解決了人們晚間生病時(shí)對(duì)于藥品的需求。藥品自動(dòng)售貨機(jī)能解決人們?nèi)粘K幤焚徺I的問題,大大的提高了人們生活的方便性。傳統(tǒng)的自動(dòng)售貨機(jī)控制系統(tǒng)采用單片機(jī)作為控制核心,不僅需要在輸入輸出接口上做大量的工作,而且系統(tǒng)的抗干擾性也比較差。FPGA具有可靠性高、編程簡單、維護(hù)方便等優(yōu)點(diǎn),已在工業(yè)控制領(lǐng)域得到廣泛應(yīng)用。但是在我國自動(dòng)售貨機(jī)的普及還不及發(fā)達(dá)國家,主要原因是我國電子設(shè)計(jì)自動(dòng)化(EDA,Electronic Design Automation)技術(shù)的應(yīng)用水平長期落后于發(fā)達(dá)國家。本設(shè)計(jì)要實(shí)現(xiàn)自動(dòng)售貨機(jī)的基本功能,可以實(shí)現(xiàn)投幣處理、計(jì)算投幣總額、輸出商品、輸出找零的控制。1.2 課題研究現(xiàn)狀

14、在中國,自動(dòng)售貨機(jī)將成為一個(gè)潛在的巨大產(chǎn)業(yè),繼百貨商店、超市之后掀起第三次零售業(yè)革命,其前景非常廣闊。售賣的商品可根據(jù)擺放場所的需要量身定制,包括冷熱飲料、零食、藥品及國外進(jìn)口的特色商品等。并且,通過這種高智能的自動(dòng)售貨機(jī),可以將各類相關(guān)信息反饋給商家與客戶,大大的提高了效率。此外,還支持各類金額的結(jié)算功能,為人們的生活提供了便利。 在2004年,國內(nèi)開始出現(xiàn)能通過手機(jī)購買商品的無線自動(dòng)售貨機(jī)。這種新款的自動(dòng)售貨機(jī),還能提供一種新型的廣告宣傳形式。在國外,自動(dòng)售貨機(jī)的發(fā)展相對(duì)于中國而言比較成熟。日本的自動(dòng)售貨業(yè)已經(jīng)有2000多種機(jī)型、6000多種商品。在美國,運(yùn)營商就多達(dá)10800家,并且與大

15、型的飲料代理商,食品代理商進(jìn)行合作。大大拓寬了自動(dòng)售貨機(jī)的產(chǎn)品種類,也為代理商拓寬了銷售的渠道。現(xiàn)在市場上大多數(shù)的人看到的還是對(duì)于食品的銷售,本設(shè)計(jì)是針對(duì)與藥品的自動(dòng)售貨機(jī)。在日常生活中,對(duì)于一些家庭常用藥可以通過自動(dòng)售貨機(jī)來購買,大大的人們的日常生活提供了方便。傳統(tǒng)的自動(dòng)售貨機(jī)控制系統(tǒng)采用單片機(jī)作為控制核心,不僅需要在輸入輸出接口上做大量的工作,而且系統(tǒng)的抗干擾性也比較差。本設(shè)計(jì)是基于FPGA自動(dòng)售貨機(jī)控制器,以EDA技術(shù)的基本特征為基礎(chǔ),用Verilog語言開發(fā)自動(dòng)售貨機(jī)系統(tǒng)設(shè)計(jì)。 大連東軟信息學(xué)院畢業(yè)設(shè)計(jì)(論文)第2章關(guān)鍵技術(shù)介紹基于EDA技術(shù)的基本特征為基礎(chǔ)而設(shè)計(jì),并且是通過硬件描述語

16、言Verilog針對(duì)藥品自動(dòng)售貨機(jī)進(jìn)行系統(tǒng)的設(shè)計(jì)。2.1 關(guān)鍵技術(shù)一EDA(Electronic Design Automation)是電子設(shè)計(jì)自動(dòng)化縮寫,是90年代開始對(duì)于計(jì)算機(jī)輔助設(shè)計(jì)(CAD,Computer Aided Design),計(jì)算機(jī)輔助制造(CAM,Computer Aided Manufacturing),計(jì)算機(jī)輔助測試(CAT,Computer Aided Testing)和計(jì)算機(jī)輔助工程(CAE,Computer Aided Engineering)這三者的概念繼承和發(fā)展。計(jì)算機(jī)是EDA技術(shù)的工具,硬件描述語言(HDL,Hardware Description lang

17、uage)是完成EDA設(shè)計(jì)文件的基礎(chǔ),EDA技術(shù)可以自動(dòng)地完成邏輯編譯、化簡、分割、綜合及優(yōu)化、布局布線、仿真以及對(duì)于特定目標(biāo)芯片的適配編譯和編程下載等工作?;贓DA工具的FPGA開發(fā)流程如下列所示:(1)首先對(duì)與文本或者/原理圖進(jìn)行編輯與修改。第一步利用EDA工具的文本或圖形編輯器將設(shè)計(jì)者的設(shè)計(jì)大致思想用文本或圖形的方式進(jìn)行表達(dá)。(2)然后編譯。完成設(shè)計(jì)描述后就可以通過編譯器進(jìn)行排錯(cuò)編譯,變成所指定的文本格式,同時(shí)為下一步進(jìn)行準(zhǔn)備工作。(3)綜合。這項(xiàng)技術(shù)是將軟件設(shè)計(jì)同硬件的可實(shí)現(xiàn)性進(jìn)行對(duì)應(yīng),綜合的這一個(gè)過程是將軟件轉(zhuǎn)化為硬件電路的關(guān)鍵性一步。綜合后HDL綜合器可生成ENIF,XNF或VH

18、DL等格式的網(wǎng)表文件,最基本的門電路結(jié)構(gòu)是從門級(jí)開始對(duì)其進(jìn)行描述的。(4)適配。將綜合后的網(wǎng)表文件通過FPGA或者較復(fù)雜的邏輯元件(CPLD,Complex Programable Logic Device)布局布線的適配器,對(duì)其具體的目標(biāo)器件進(jìn)行邏輯映射操作,其中包括的操作有底層器件配置,邏輯分割,邏輯優(yōu)化,布局布線。(5)功能仿真和時(shí)序仿真。該不仿真實(shí)接近真實(shí)器件運(yùn)行的方針,仿真過程已將器件的硬件特性考慮進(jìn)去了,因此仿真精度要高的多。(6)下載。如果以上的所有過程都沒有發(fā)現(xiàn)問題,就可以將適配器產(chǎn)生的下載文件通過FPGA/CPLD下載電纜載入目標(biāo)芯片F(xiàn)PGA或CPLD中。(7)硬件仿真與測試

19、。Quartus II軟件可以在XP、Linux以及Unix上使用,除了可以使用Tcl腳本完成設(shè)計(jì)流程外,提供了完善的用戶圖形界面設(shè)計(jì)方式。具有運(yùn)行速度快,界面統(tǒng)一,功能集中,易學(xué)易用等特點(diǎn)。2.2 關(guān)鍵技術(shù)二FPGA(FieldProgrammable Gate Array),即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC,Application Specific Integrated Circuit)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。構(gòu)成數(shù)字邏輯系統(tǒng)最基本

20、的單元是與門、或門、非門等,而門電路是由用二極管、 HYPERLINK /tech/zmdj/300010220012/30911.html t _blank 三極管和 HYPERLINK /tech/qtdz/200010160031/28957.html t _blank 電阻等元件構(gòu)成的,然后與門、或門、非門又構(gòu)成了各種觸發(fā)器實(shí)現(xiàn)狀態(tài)記憶。FPGA同樣也屬于數(shù)字邏輯電路的一種,也是由最基本的元件構(gòu)成的。因此FPGA打破了傳統(tǒng)的電子裝置的歷史,如今不僅面積與成本都大大的減小,可靠性得到了大幅度的提升。FPGA的特點(diǎn)如下列所示:(1)采用FPGA設(shè)計(jì)ASIC電路(專用集成電路),用戶不需要投

21、片生產(chǎn),就能得到合用的 HYPERLINK /doc/2573081.html t _blank 芯片。(2)FPGA可做其它全定制或半定制ASIC電路的中試樣片。(3)FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳。(4)FPGA是ASIC電路中設(shè)計(jì)周期最短、開發(fā)費(fèi)用最低、風(fēng)險(xiǎn)最小的器件之一。(5)FPGA采用高速CMOS工藝,功耗低,可以與CMOS、TTL電平兼容??梢哉f,F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、 HYPERLINK /doc/6675136.html t _blank 可靠性的最佳選擇之一。FPGA是由存放在片內(nèi)RAM中的程序來設(shè)置其工作狀態(tài)的,因此,工作時(shí)需要對(duì)片內(nèi)的RAM進(jìn)行

22、 HYPERLINK /doc/3390106.html t _blank 編程。用戶可以根據(jù)不同的配置模式,采用不同的編程方式。加電時(shí),F(xiàn)PGA芯片將EPROM中數(shù)據(jù)讀入片內(nèi)編程RAM中,配置完成后,F(xiàn)PGA進(jìn)入工作狀態(tài)。掉電后,F(xiàn)PGA恢復(fù)成白片,內(nèi)部邏輯關(guān)系消失,因此,F(xiàn)PGA能夠反復(fù)使用。FPGA的編程無須專用的FPGA編程器,只須用通用的EPROM、PROM編程器即可。當(dāng)需要修改FPGA功能時(shí),只需換一片EPROM即可。這樣,同一片F(xiàn)PGA,不同的編程數(shù)據(jù),可以產(chǎn)生不同的電路功能。因此,F(xiàn)PGA的使用非常靈活。2.3 關(guān)鍵技術(shù)三數(shù)字系統(tǒng)的設(shè)計(jì)方法通常分為自上而下設(shè)計(jì)和自下而上設(shè)計(jì)兩大

23、類。一般自上而下的設(shè)計(jì)是從系統(tǒng)級(jí)開始,系統(tǒng)被劃分為若干基本單元,然后每個(gè)基本單元又被劃分為下一層次的若干基本單元,以此類推,一直到可以直接用EDA元件庫中的基本元件來實(shí)現(xiàn)為止。在某種意義上講,自下而上的設(shè)計(jì)過程可以看作是自上而下設(shè)計(jì)的逆過程。同樣自下而上設(shè)計(jì)也是從系統(tǒng)級(jí)開始的,就是從設(shè)計(jì)樹的樹根開始對(duì)整個(gè)設(shè)計(jì)進(jìn)行逐次劃分,但是必須從已經(jīng)存在的基本單元出發(fā),所以劃分時(shí)首先考慮的是單元是否存在。最終設(shè)計(jì)最底層的單元或者是已經(jīng)制造出來的單元,或者是已開發(fā)好的單元或者是可以通過外購得到的基本單元。自下而上的設(shè)計(jì)流程包括:首先獨(dú)立的設(shè)計(jì)和優(yōu)化每個(gè)子模塊,然后在頂層的設(shè)計(jì)中集成所有已經(jīng)優(yōu)化好的子模塊,最后

24、進(jìn)行總體設(shè)計(jì)的驗(yàn)證。在綜合和優(yōu)化之后可以將每個(gè)子模塊具有的單獨(dú)的網(wǎng)表整合在頂層的設(shè)計(jì)中。這樣在頂層模塊設(shè)計(jì)中,各個(gè)子模塊之間的性能都不會(huì)相互影響。與此同時(shí),由于在高層次進(jìn)行設(shè)計(jì)的主要仿真和調(diào)試過程,所以能夠盡早的發(fā)現(xiàn)結(jié)構(gòu)設(shè)計(jì)上的錯(cuò)誤,減少了設(shè)計(jì)工作的浪費(fèi),同時(shí)又減少了模塊邏輯仿真的工作量。圖2.1為自上而下(top-down)的設(shè)計(jì)樹示意圖。圖2.1 自上而下的設(shè)計(jì)樹示意圖本論文是對(duì)于藥品自動(dòng)售貨機(jī)的設(shè)計(jì),就是采用自上而下(top-down)的正向設(shè)計(jì)方法。根據(jù)自上而下的設(shè)計(jì)思想,對(duì)系統(tǒng)進(jìn)行功能模塊劃分并優(yōu)化。各個(gè)功能模塊之間相互獨(dú)立并且可以相互引用,最后將各模塊集成到一個(gè)頂層模塊中,形成一個(gè)

25、完整的系統(tǒng)。大連東軟信息學(xué)院畢業(yè)設(shè)計(jì)(論文) 第3章系統(tǒng)需求分析3.1 系統(tǒng)功能概述本設(shè)計(jì)是以Quartus 為開發(fā)環(huán)境,采用EDA技術(shù)和Verilog語言,最終下載到FPGA開發(fā)板上做實(shí)機(jī)驗(yàn)證。本設(shè)計(jì)可以實(shí)現(xiàn)投幣,顯示金額,選擇貨幣,找零,退幣跟庫存不足報(bào)警的功能。3.2 系統(tǒng)功能需求根據(jù)功能需求確定本系統(tǒng)的功能模塊。通過3個(gè)按鍵來選擇輸入的貨幣價(jià)格,三個(gè)按鍵分別為1、5、10。同時(shí)四個(gè)撥動(dòng)開關(guān)來選擇貨物。并且顯示電路中可以顯示投入貨幣的金額跟買完物品后的金額,如果貨物庫存空缺,led燈會(huì)報(bào)警。功能模塊圖如圖3.1所示,該設(shè)計(jì)主要包含12個(gè)模塊:(1)分頻模塊。主要是將輸入的時(shí)鐘經(jīng)過分頻,輸

26、入到各個(gè)其他模塊。(2)投幣模塊。是利用外部輸入的金額,通過該模塊,將其轉(zhuǎn)換成二進(jìn)制的代碼,再進(jìn)入到下一模塊。(3)數(shù)據(jù)比較模塊。數(shù)據(jù)比較模塊是用于庫存是否大于0而準(zhǔn)備的。(4)減法模塊。減法模塊是執(zhí)行庫存減1的效果。(5)輸入貨幣寄存模塊。這個(gè)模塊相當(dāng)于一個(gè)計(jì)數(shù)的寄存器,可以準(zhǔn)確計(jì)算投幣的數(shù)額,來確??値胖?。(6)輸出顯示譯碼模塊。將輸入的值分別顯示到兩個(gè)七段數(shù)碼管上,一個(gè)輸出十位數(shù),一個(gè)輸出個(gè)位數(shù)字。(7)貨物選擇模塊。通過外部的四個(gè)撥動(dòng)開關(guān)完成商品選擇,在接收到對(duì)應(yīng)四個(gè)撥動(dòng)開關(guān)的信號(hào)時(shí)進(jìn)行編譯。(8)二選一選擇模塊。實(shí)現(xiàn)的功能就是選擇是將投幣的值輸出還是該退幣的金額進(jìn)行輸出。(9)庫存隨

27、機(jī)存取存儲(chǔ)器(Ram,Random Access Memory)模塊。這個(gè)模塊中存儲(chǔ)了每樣物品的庫存,并且能夠更新貨物的庫存。(10)貨物只讀寄存器(Rom,Read-Only Memory)模塊。存儲(chǔ)了每種貨物的價(jià)格,輸出連接加法器模塊。(11)加法器模塊。是來輸出輸入的貨幣金額跟物品的價(jià)格進(jìn)行比較。(12)控制模塊??刂聘鱾€(gè)動(dòng)作所要執(zhí)行的命令。 圖3.1 功能模塊圖3.3 系統(tǒng)開發(fā)環(huán)境本系統(tǒng)將在FPGA開發(fā)板上進(jìn)行驗(yàn)證,目前主流的FPGA有XILINX、ALTERA和ACTEL三家公司的產(chǎn)品。由于他們?cè)诳删幊虇卧突ヂ?lián)資源的結(jié)構(gòu)設(shè)計(jì)上各有特色,從而為使用者提供了靈活的選擇。Cyclone

28、II系列的器件是Altera公司開發(fā)的低成本Cyclone系列的第二代產(chǎn)品,因此,Cyclone II FPGA的成本也比第一代Cyclone器件降低了近30%,而且其邏輯容量也大3倍多。一般Cyclone II器件的容量有約460868416個(gè)邏輯單元,并且具有新的增強(qiáng)特性,其中包括1.1Mbit的嵌入存儲(chǔ)器、150個(gè)嵌入1818乘法器、支持外部存儲(chǔ)器接口及差分和單端的I/O標(biāo)準(zhǔn)等等。如今隨著EDA技術(shù)的不斷發(fā)展,采用硬件描述語言來設(shè)計(jì)CPLD/FPGA已經(jīng)逐漸成為一種趨勢。其中,硬件描述語言HDL就是一種采用形式化的方法來描述數(shù)字電路和設(shè)計(jì)數(shù)字邏輯系統(tǒng)的語言。對(duì)于數(shù)字邏輯電路設(shè)計(jì)者,首先可

29、以采用這種語言來描述自己的設(shè)計(jì)思想,接著使用電子設(shè)計(jì)自動(dòng)化的工具完成仿真工作,然后自動(dòng)綜合到門級(jí)電路,最后使用專門設(shè)計(jì)的集成電路(ASIC,Application Specific Integrated Circuit)和FPGA實(shí)現(xiàn)其預(yù)期的功能。目前,這種高層次的設(shè)計(jì)(High-Level-Design)的方法被業(yè)界廣泛的采用。硬件描述語言發(fā)展到今天大約已經(jīng)有了二十年多年的歷史,而且它被成功地應(yīng)用到設(shè)計(jì)的各個(gè)階段,例如仿真驗(yàn)證和綜合階段等。后來到80年代左右,業(yè)界竟然出現(xiàn)了上百種硬件描述語言,但是他們卻對(duì)設(shè)計(jì)自動(dòng)化起到了很好的促進(jìn)作用。由于這些復(fù)雜的語言通常各自面向特定的設(shè)計(jì)領(lǐng)域與層次,并且

30、眾多的語言也使很多的用戶無從選擇,最終只有VHDL和Verilog HDL兩種語言適應(yīng)了趨勢的要求先后成為了IEEE的標(biāo)準(zhǔn)。1983年,Gateway Design Automation公司為其模擬器產(chǎn)品開發(fā)了Verilog HDL語言。當(dāng)時(shí)它僅是一種專用的語言,但是由于該公司的模擬器仿真器產(chǎn)品被廣泛的應(yīng)用,使得Verilog HDL這種便于使用并且很實(shí)用的硬件描述語言逐漸被后來眾多的設(shè)計(jì)者接受。由此Verilog語言在1995年成為了IEEE標(biāo)準(zhǔn),它被稱為IEEE Std1364-1995。Verilog HDL語言是一種用于從算法級(jí)門級(jí)到開關(guān)級(jí)的多種抽象設(shè)計(jì)層次的數(shù)字系統(tǒng)建模語言。Veri

31、log HDL具有以下描述的能力包括:設(shè)計(jì)數(shù)據(jù)流的特性、設(shè)計(jì)行為特性、結(jié)構(gòu)組成與包含響應(yīng)的監(jiān)控以及設(shè)計(jì)驗(yàn)證方面的時(shí)延等。而所有的這些能力都可以使用同一種語言。此外,Verilog HDL語言提供的編程接口能夠在模擬和驗(yàn)證期間由設(shè)計(jì)的外部進(jìn)行設(shè)計(jì)的訪問。Quartus II軟件是Altera公司的綜合性的PLD開發(fā) HYPERLINK /view/37.htm t _blank 軟件。它具有強(qiáng)大的功能:支持原理圖、VHDL語言、Verilog HDL語言以及Altera公司用于描述數(shù)字邏輯的硬件描述語言(AHDL,Altera Hardware Description Language)等多種設(shè)

32、計(jì)輸入形式,并且軟件內(nèi)部嵌入綜合以及仿真器,從而可以使之完成從設(shè)計(jì)輸入到硬件配置的完整的設(shè)計(jì)流程。Quartus II軟件除了可以在XP、Linux以及Unix上使用,還可以利用Tcl HYPERLINK /view/54.htm t _blank 腳本完成設(shè)計(jì)流程,它提供了完整的用戶圖形界面設(shè)計(jì)方案。Quartus II軟件還具有運(yùn)行速度快、功能集中、界面統(tǒng)一、簡單易用等特點(diǎn)。Quartus II軟件支持Altera公司的IP核,它包含參數(shù)化模塊庫(LPM,Library of Parameterized Modules)/Mega Function等宏功能模塊庫,從而使用戶可以方便的利用成

33、熟的模塊,不僅簡化了設(shè)計(jì)的復(fù)雜性、而且加快了設(shè)計(jì)的速度。Quartus II良好支持第三方的EDA工具,使用戶可以在設(shè)計(jì)流程的各個(gè)階段快速的使用第三方的EDA工具。Quartus II軟件作為一種優(yōu)秀的可編程邏輯的設(shè)計(jì)環(huán)境,因其強(qiáng)大的設(shè)計(jì)能力和直觀易用的接口,被越來越多的 HYPERLINK /view/3114367.htm t _blank 數(shù)字系統(tǒng)設(shè)計(jì)者所接受。3.4 系統(tǒng)可行性分析本論文是采用的自上向下的設(shè)計(jì)思想,從系統(tǒng)級(jí)設(shè)計(jì)入手。從頂層進(jìn)行功能劃分和結(jié)構(gòu)設(shè)計(jì)。對(duì)整個(gè)系統(tǒng)有一定的認(rèn)識(shí)后,開始著手整體流程圖的設(shè)計(jì)。然后,通過流程圖提煉出相應(yīng)的控制單元和數(shù)據(jù)通道。數(shù)據(jù)通道的各個(gè)模塊包括:寄

34、存器模塊、算術(shù)運(yùn)算器模塊、二選一選擇器模塊、減法器模塊、譯碼器模塊、比較器模塊,貨物價(jià)格存儲(chǔ)器模塊、貨物選擇模塊??刂茊卧糠钟蔂顟B(tài)機(jī)來實(shí)現(xiàn),合理涉及各個(gè)狀態(tài)轉(zhuǎn)移??刂茊卧l(fā)送數(shù)據(jù)通道所需的控制信號(hào),接收來自數(shù)據(jù)通道的狀態(tài)信號(hào),監(jiān)控整個(gè)測試過程的運(yùn)行;數(shù)據(jù)通道處理來自控制單元的控制信號(hào),并把處理的結(jié)果反饋給控制單元。使用Altera公司開發(fā)的Quartus軟件,對(duì)每個(gè)模塊進(jìn)行開發(fā)。通過常用仿真軟件ModelSim對(duì)設(shè)計(jì)的所有模塊進(jìn)行仿真測試,確保整個(gè)開發(fā)流程順利進(jìn)行。最后在FPGA開發(fā)板上進(jìn)行功能測試,并且不斷地進(jìn)行優(yōu)化。本系統(tǒng)是采用verilog語言來實(shí)現(xiàn),經(jīng)過ModelSim做功能仿真,用

35、Quartus進(jìn)行布局布線,將自動(dòng)售貨機(jī)按照模塊來劃分。本系統(tǒng)將基于FPGA的開發(fā)板上進(jìn)行驗(yàn)證。因?yàn)楸鞠到y(tǒng)是FPGA的實(shí)際應(yīng)用,需要掌握verilog語言,編寫相關(guān)的程序,同時(shí)需要對(duì)EDA開發(fā)工具的熟練使用。其中用硬件描述語言開發(fā)FPGA的主要流程如下:設(shè)計(jì)輸入:用原理圖輸入方式、文本編輯器方式或者HDL編輯環(huán)境等都可以做為設(shè)計(jì)輸入。功能仿真:將設(shè)計(jì)文件放入HDL仿真軟件進(jìn)行功能仿真,檢查邏輯功能是否正確可以通過。對(duì)于一個(gè)獨(dú)立的設(shè)計(jì)項(xiàng)目而言,仿真文件的提供足可以證明設(shè)計(jì)的完整性。邏輯綜合:進(jìn)行綜合時(shí)需要把源文件調(diào)入綜合軟件中,就是把該語言轉(zhuǎn)換成若干個(gè)最簡化的布爾表達(dá)式,邏輯綜合后將會(huì)生成一個(gè)E

36、DA工業(yè)標(biāo)準(zhǔn)文件*.edf。該文件即可用于之后的布局布線工作。在綜合前可以加上若干的約束條件,以便不斷的對(duì)時(shí)間或位置進(jìn)行優(yōu)化。布局和布線:進(jìn)行布線時(shí),只需將*.edf文件放入器件商提供的軟件中,就是把設(shè)計(jì)好的邏輯安放到FPGA內(nèi)。此時(shí),將用到邏輯綜合生成的網(wǎng)表,并且根據(jù)CPLD/FPGA廠商的器件容量、結(jié)構(gòu)等進(jìn)行布局、布線。首先各個(gè)設(shè)計(jì)中的門根據(jù)網(wǎng)表和結(jié)構(gòu)被安置在在元器件的某個(gè)特定的部位,然后,按照網(wǎng)表中規(guī)定的所有門之間相互的連接關(guān)系,把每個(gè)門相對(duì)應(yīng)的輸入和輸出連接在一起。最后輸出一個(gè)可編程的文件。這就完成了在設(shè)計(jì)印制線路板(PCB,Printed Circuit Board)時(shí)的布局布線。時(shí)

37、序的仿真:這一步需利用在上一步中得到的參數(shù),然后使用仿真軟件對(duì)電路的時(shí)序的正確性進(jìn)行驗(yàn)證。一旦設(shè)計(jì)的電路不滿足要求的話,需要反復(fù)修改直到解決所有問題,否則就可以到下一步。器件編程的下載:CPLD/FPGA中最終要實(shí)現(xiàn)的是在器件中進(jìn)行編程設(shè)計(jì)。系統(tǒng)設(shè)計(jì)其實(shí)是把物理的設(shè)計(jì)實(shí)現(xiàn)轉(zhuǎn)換成了相應(yīng)的二進(jìn)制文件。該編程用于對(duì)FPGA進(jìn)行通常編程方式包括:硬件調(diào)試器、國際標(biāo)準(zhǔn)測試協(xié)議(JTAG,Joint Test Action Group)編程器、PROM文件等三種。通常情況下,進(jìn)行編程和下載燒寫程序的時(shí)候采用JTAG的方式比較多。使用Altera公司開發(fā)的Quartus 軟件,對(duì)每個(gè)模塊進(jìn)行開發(fā)。通過常用仿

38、真軟件ModelSim對(duì)設(shè)計(jì)的所有模塊進(jìn)行仿真測試,確保整個(gè)開發(fā)流程順利進(jìn)行。最后在進(jìn)行整體的功能測試,并且不斷地進(jìn)行優(yōu)化。因此本課題的選擇是可行的。3.5系統(tǒng)流程圖En6=1?En6=1?Original inventoryOriginal inventory-1idleEn2=1?initializewwwaaadSelect goodsok=1?Out goodsQuit=1&clear=0Refund moneyWaiting for the coinWaiting for the coinnnSelect goodsSelect goodsnnyyOut goodsOut goods

39、Quit=0&clear=0Quit=0&clear=0ynyyynyyyyRefund moneyRefund money圖3.2 系統(tǒng)流程圖首先,該系統(tǒng)進(jìn)入空閑狀態(tài),然后進(jìn)入初始化狀態(tài),對(duì)整個(gè)系統(tǒng)做初始化處理。初始化的處理后使整個(gè)系統(tǒng)進(jìn)入默認(rèn)的工作狀態(tài)也就是如圖所示的等待投幣狀態(tài);然后,判斷使能信號(hào)en2是否有效,有效的話系統(tǒng)進(jìn)入選貨狀態(tài),否則回到等待投幣狀態(tài)等待投幣;其次,進(jìn)入選貨狀態(tài)后,先判斷ok信號(hào)是否有效,有效則進(jìn)入出貨的狀態(tài),否則保持在選貨狀態(tài);接著,進(jìn)入出貨狀態(tài)后,判斷退幣信號(hào)與清零信號(hào)是否同時(shí)有效,有效則進(jìn)入退幣狀態(tài),否則再次判斷退幣信號(hào)與清零信號(hào)同時(shí)無效時(shí),則進(jìn)入選貨狀態(tài),

40、再則若只有清零信號(hào)有效,進(jìn)入等待退幣狀態(tài);在出貨的同時(shí)判斷使能信號(hào)是否有效,有效庫存減1,否則保持原值。最后,進(jìn)入退幣狀態(tài)后無條件跳轉(zhuǎn)到等待投幣狀態(tài)。第4章系統(tǒng)設(shè)計(jì)4.1 系統(tǒng)設(shè)計(jì)指導(dǎo)原則本設(shè)計(jì)是基于FPGA的藥品自動(dòng)售貨機(jī)的設(shè)計(jì)。該設(shè)計(jì)可以實(shí)現(xiàn)投入貨幣,顯示貨幣投入的金額以及要找零的金額。選擇藥品,找零,退幣以及庫存不足的報(bào)警功能。本設(shè)計(jì)是根據(jù)數(shù)字系統(tǒng)由上而下設(shè)計(jì)和實(shí)現(xiàn)的基本流程,包括整體流程圖的設(shè)計(jì)、數(shù)據(jù)通道和控制單元的設(shè)計(jì)、并用可綜合的Verilog語言實(shí)現(xiàn)、經(jīng)過ModelSIM做功能仿真、用Quartus進(jìn)行綜合布局布線,最終下載到FPGA開發(fā)板進(jìn)行實(shí)機(jī)驗(yàn)證。并在設(shè)計(jì)過程中不斷對(duì)電路性

41、能進(jìn)行優(yōu)化。4.2 系統(tǒng)初步設(shè)計(jì)通過外部的三個(gè)按鍵來進(jìn)行投幣的操作,投幣的金額分別為1元、5元、10元。并將這三個(gè)外部的輸入信號(hào)通過一個(gè)譯碼器(decoder)轉(zhuǎn)化成位寬為4位的二進(jìn)制數(shù)。當(dāng)時(shí)鐘信號(hào)有效時(shí),如果使能信號(hào)(en1)有效,則將投入的金額進(jìn)行累加,直到投幣這一個(gè)過程結(jié)束。選擇貨物是通過外部的四個(gè)撥動(dòng)開關(guān)來控制,當(dāng)時(shí)鐘信號(hào)有效時(shí),并且使能信號(hào)(en2)有效,將撥動(dòng)開關(guān)置為要選購的藥品,就可以對(duì)out_g這個(gè)變量進(jìn)行賦值操作。例如感冒藥的序號(hào)為1000,就將外部的四個(gè)撥動(dòng)開關(guān)置為1000,則所選擇的為感冒藥,并且1000會(huì)賦值給out_g這個(gè)變量。再將這個(gè)變量通過rom來找到對(duì)應(yīng)的藥品的

42、價(jià)格,再將藥品對(duì)應(yīng)的價(jià)格賦值給另一個(gè)變量。然后將投入貨幣的金額與藥品的價(jià)格進(jìn)行比較,判斷其是否為大于0的值,并且等到時(shí)鐘到來的時(shí)刻,且使能信號(hào)(en3)與投入貨幣的金額與藥品的價(jià)格大于0同時(shí)有效的時(shí)候,將其的差值賦值給out_c這個(gè)變量。并且執(zhí)行出貨,在出貨的同時(shí),系統(tǒng)內(nèi)部ram會(huì)進(jìn)行庫存減去一的操作,若庫存為零時(shí),led燈就會(huì)亮起,起報(bào)警的功能。最后將這個(gè)變量與之前投入貨幣的金額功能進(jìn)入到一個(gè)二選一的選擇器中,當(dāng)使能信號(hào)(en4)有效時(shí),會(huì)將找零的金額通過一個(gè)譯碼器輸入到七段數(shù)碼管中,讓其顯示要找零的金額。反之則會(huì)將之前投入的貨幣金額輸入到七段數(shù)碼管中,讓其顯示投幣的金額。4.3 系統(tǒng)詳細(xì)設(shè)

43、計(jì)自動(dòng)藥品售貨機(jī)的設(shè)計(jì)見圖4.1,端口包括與外圍控制電路與顯示電路連接的端口。自動(dòng)藥品售貨機(jī)模塊分為2個(gè)子模塊,分別是數(shù)據(jù)通道和控制單元。圖4.1為自動(dòng)售貨機(jī)的整體模塊。圖4.1 自動(dòng)藥品售貨機(jī)整體模塊自動(dòng)售貨機(jī)模塊管腳詳細(xì)端口說明見表4.1。表4.1 自動(dòng)售貨機(jī)模塊管腳信號(hào)I/O寬度功能描述input_1I1外部通過按鍵來實(shí)現(xiàn)輸入金額為1元input_5I1外部通過按鍵來實(shí)現(xiàn)輸入金額為5元input_10I1外部通過按鍵來實(shí)現(xiàn)輸入金額為10元goods_1I 1外部通過撥動(dòng)開關(guān)來實(shí)現(xiàn)輸入選擇喜歡的商品序號(hào)goods_2I1外部通過撥動(dòng)開關(guān)來實(shí)現(xiàn)輸入選擇喜歡的商品序號(hào)goods_3I1外部通過

44、撥動(dòng)開關(guān)來實(shí)現(xiàn)輸入選擇喜歡的商品序號(hào)goods_4I1外部通過撥動(dòng)開關(guān)來實(shí)現(xiàn)輸入選擇喜歡的商品序號(hào)en2I1使能信號(hào)okI1確認(rèn)買貨信號(hào)quitI1確認(rèn)退幣信號(hào)clk1I1外部輸入50MHz時(shí)鐘信號(hào)rst1I1系統(tǒng)復(fù)位信號(hào)out_d1O7與七段數(shù)碼管相連,輸出十位數(shù)out_d2O7與七段數(shù)碼管相連,輸出個(gè)位數(shù)out_d3O7與LED相連,實(shí)現(xiàn)報(bào)警數(shù)據(jù)通道模塊圖見4.2。圖4.2 數(shù)據(jù)通道模塊圖數(shù)據(jù)通道詳細(xì)管腳說明請(qǐng)見表4.2。表4.2 數(shù)據(jù)通道管腳信號(hào)I/O寬度功能描述clkI1將外部輸入的50HZ時(shí)鐘信號(hào)分頻完后的信號(hào)clk_50I1外部輸入50MHz時(shí)鐘信號(hào)en1I1使能信號(hào)en3I 1使

45、能信號(hào)en4I1使能信號(hào)en6I1使能信號(hào)quitI1確認(rèn)退幣信號(hào)restI1重置信號(hào)en2I1使能信號(hào)clearI1清零信號(hào)input_1I1外部通過按鍵來實(shí)現(xiàn)輸入金額為1元input_5I1外部通過按鍵來實(shí)現(xiàn)輸入金額為5元input_10I1外部通過按鍵來實(shí)現(xiàn)輸入金額為10元good_1I1外部通過撥動(dòng)開關(guān)來實(shí)現(xiàn)輸入選擇喜歡的商品序號(hào)good_2I1外部通過撥動(dòng)開關(guān)來實(shí)現(xiàn)輸入選擇喜歡的商品序號(hào)good_3I1外部通過撥動(dòng)開關(guān)來實(shí)現(xiàn)輸入選擇喜歡的商品序號(hào)good_4I1外部通過撥動(dòng)開關(guān)來實(shí)現(xiàn)輸入選擇喜歡的商品序號(hào)out_d1O7與七段數(shù)碼管相連,輸出十位數(shù)out_d2O7與七段數(shù)碼管相連,輸

46、出個(gè)位數(shù)out_d3O7與LED相連,實(shí)現(xiàn)報(bào)警en5O1使能信號(hào)havegoodsO1確定是否商品有庫存的信號(hào)clk_1O1將外部輸入的50HZ時(shí)鐘信號(hào)分頻完后的信號(hào)clearO1清零信號(hào)控制單元模塊圖見4.3。圖4.3 控制單元模塊圖控制單元詳細(xì)管腳說明請(qǐng)見表4.3。表4.3 控制單元管腳信號(hào)I/O寬度功能描述clkI1外部輸入的50HZ時(shí)鐘信號(hào)okI1確認(rèn)買貨信號(hào)en2I1使能信號(hào)en5I 1使能信號(hào)havegoodsI1確定是否商品有庫存的信號(hào)clearI1清零信號(hào)quitI1確認(rèn)退幣信號(hào)restI1重置信號(hào)自動(dòng)藥品售貨機(jī)模塊連接圖見4.4。圖4.4 自動(dòng)藥品售貨機(jī)模塊連接圖4.3.1

47、數(shù)據(jù)通道模塊設(shè)計(jì)如圖4.5所示,數(shù)據(jù)通道中包含11個(gè)小的模塊,分別是分頻模塊,投幣模塊,數(shù)據(jù)比較模塊,減法模塊,輸入貨幣寄存模塊,輸出顯示譯碼模塊,貨物選擇模塊,二選一選擇模塊,庫存Ram模塊,貨物Rom模塊,加法器模塊。圖4.5 數(shù)據(jù)通道內(nèi)部模塊圖時(shí)鐘分頻模塊是利用外來的時(shí)鐘信號(hào)clk生成時(shí)鐘信號(hào)clk1并送往其他各個(gè)部件。其中rst_1是復(fù)位信號(hào)。clk1信號(hào)是用作輸入貨幣寄存模塊,貨物選擇模塊,庫存Ram模塊,加法器模塊和狀態(tài)控制器的時(shí)鐘信號(hào)。時(shí)鐘分頻模塊見圖4.6。圖4.6 時(shí)鐘分頻模塊投幣模塊是利用外部輸入的數(shù)據(jù),將其轉(zhuǎn)換成二進(jìn)制的代碼,輸出給輸入貨幣寄存模塊。input_1,inp

48、ut_5 ,input_10分別為不同數(shù)額的輸入信號(hào)。投幣模塊見圖4.7。圖4.7 投幣模塊數(shù)據(jù)比較模塊是用于庫存是否大于0而準(zhǔn)備的,當(dāng)庫存如果大于0時(shí),則led燈不會(huì)亮起,如果庫存小于0時(shí),led燈則會(huì)亮起,起報(bào)警作用。數(shù)據(jù)比較模塊見圖4.8。圖4.8 數(shù)據(jù)比較模塊減法模塊是執(zhí)行庫存減1的效果,en_6是由狀態(tài)機(jī)控制的,是在出貨的同時(shí),令en_6有效,并且執(zhí)行庫存減1的操作,將其的結(jié)果輸出給貨物ram模塊。減法模塊見圖4.9。圖4.9 減法模塊輸入貨幣寄存器模塊,這個(gè)模塊相當(dāng)于一個(gè)計(jì)數(shù)的寄存器,可以準(zhǔn)確計(jì)算投幣的數(shù)額,來確保總幣值。當(dāng)清零信號(hào)或者復(fù)位信號(hào)有效時(shí),都將值賦值為0。en1是有狀態(tài)

49、控制器控制的,當(dāng)en1有效時(shí),來計(jì)算投幣的數(shù)額,輸出信號(hào)是輸出總幣值。輸入貨幣寄存模塊見圖4.10。圖4.10 輸入貨幣寄存模塊輸出顯示譯碼模塊是將輸入的值分別顯示到兩個(gè)七段數(shù)碼管上,一個(gè)輸出十位數(shù),一個(gè)輸出個(gè)位數(shù)字。輸出顯示譯碼模塊見圖4.11。圖4.11 輸出顯示譯碼模塊貨物選擇模塊是通過外部的四個(gè)撥動(dòng)開關(guān)完成商品選擇,在接收到對(duì)應(yīng)四個(gè)撥動(dòng)開關(guān)的信號(hào)時(shí)進(jìn)行編譯,rest為0時(shí)并且使能信號(hào)en2有效時(shí),商品可以進(jìn)行選擇。當(dāng)en2無效時(shí),四個(gè)商品選擇鍵無效。貨物選擇模塊見圖4.12。圖4.12 貨物選擇模塊二選一選擇模塊所實(shí)現(xiàn)的功能就是選擇是將投幣的值輸出還是該退幣的金額進(jìn)行輸出。當(dāng)使能信號(hào)有

50、效的時(shí)候就是將投入的金額輸出,當(dāng)使能信號(hào)無效時(shí)就將該退幣的金額進(jìn)行輸出。二選一選擇模塊見圖4.13。圖4.13 二選一選擇模塊庫存Ram模塊是經(jīng)過ip核生成的一個(gè)模塊,這個(gè)模塊中存儲(chǔ)了每樣物品的庫存,并且能夠更新貨物的庫存。庫存Ram模塊見圖4.14。圖4.14 庫存Ram模塊貨物Rom模塊是存儲(chǔ)了每種貨物的價(jià)格,輸出連接加法器模塊。貨物Rom模塊見圖4.15。圖4.15 貨物Rom模塊加法器模塊主要實(shí)現(xiàn)的功能是來輸出輸入的貨幣金額跟物品的價(jià)格進(jìn)行比較,看是否大于等于0,如若等于或大于0時(shí)則將他倆的差值輸出。加法器模塊見圖4.16。圖4.16 加法器模塊4.3.2控制單元模塊設(shè)計(jì) 狀態(tài)轉(zhuǎn)換圖,

51、見圖4.17所示。根據(jù)藥品自動(dòng)售貨機(jī)的特點(diǎn),將設(shè)計(jì)系統(tǒng)分為了5種狀態(tài),分別為等待投幣狀態(tài),投幣狀態(tài),選擇藥品狀態(tài),輸出藥品狀態(tài)和空閑狀態(tài)。同時(shí)還有一個(gè)庫存狀態(tài)。系統(tǒng)首先進(jìn)入等待投幣狀態(tài),如果使能信號(hào)en2有效,系統(tǒng)進(jìn)入選貨狀態(tài),如果判斷ok信號(hào)有效,則進(jìn)入出貨的狀態(tài),如果退幣信號(hào)與清零信號(hào)同時(shí)有效,有效則進(jìn)入退幣狀態(tài),在出貨的同時(shí)判斷使能信號(hào)是否有效,有效庫存減1,否則保持原值。最后進(jìn)入退幣狀態(tài)后無條件跳轉(zhuǎn)到等待投幣狀態(tài)。圖4.17 狀態(tài)轉(zhuǎn)換圖狀態(tài)說明圖見圖4.18。圖4.18 狀態(tài)說明圖4.4 FPGA開發(fā)板本文所用到的FPGA開發(fā)板是采用Altera公司推出的Cyclone系列芯片EP2C

52、8Q208C8芯片作為核心處理器進(jìn)行設(shè)計(jì),Cyclone系列芯片可以說是目前市場上性價(jià)比較高的芯片,比第一代的EP1C6或者EP1C12等芯片無論在芯片的設(shè)計(jì)上還是內(nèi)部的邏輯資源上都有了很大的改進(jìn),同時(shí)價(jià)格也可以被廣大的客戶所接受。該學(xué)習(xí)板包含時(shí)鐘,蜂鳴器8個(gè)LED燈顯示,5個(gè)按鍵開關(guān),因此該板子作為學(xué)習(xí)版是最合適不過的,滿足我們學(xué)生各方面的需求。4.5 顯示電路本設(shè)計(jì)是要將貨幣的金額進(jìn)行顯示,因此需要通過7段數(shù)碼管來顯示,七段數(shù)碼管圖如4.19所示。圖4.19 七段數(shù)碼管圖大連東軟信息學(xué)院畢業(yè)設(shè)計(jì)(論文)第5章系統(tǒng)實(shí)現(xiàn)5.1數(shù)據(jù)通道實(shí)例化代碼module top(input_1,input_

53、5,input_10,goods_1,goods_2,goods_3,goods_4,en2,ok,quit,clk1,Rst1,out_d1,out_d2,out_d3,rest);input input_1,input_5,input_10,goods_1,goods_2,goods_3,goods_4,clk1,Rst1,en2,ok,quit,rest; /輸入信號(hào)output 6:0out_d1,out_d2,out_d3;/輸出信號(hào)wire 3:0a,j;/ 定義線性的變量用于實(shí)例化時(shí),連接不同的模塊wire 6:0b,c,e,f;wire d,clk;wire 3:0q,q_1;

54、wire en1,en2,en3,en4,ok,quit,havegoods,change;wire 4:0k;assign k=1b0,j;decoder de(.input_1(input_1),.input_5(input_5),.input_10(input_10),.out_m(a);/實(shí)例化投幣模塊money mon(.input_m(a),.clk(clk),.rest(rest),.clear(d),.en1(en1),.outmoney(b); /實(shí)例化貨幣寄存模塊add ad(.input_a(b),.goods_u(e),.out_c(c),.clk(clk),.rest

55、(rest),.en3(en3),.en5(en5),.en2(en2); /實(shí)例化加法模塊decoder_2 de_2(.input_d2(f),.out_d1(out_d1),.out_d2(out_d2); /實(shí)例化輸出顯示譯碼模塊goods_select go_s(.goods_1(goods_1),.goods_2(goods_2),.goods_3(goods_3),.goods_4(goods_4),.en2(en2),.clk(clk),.rest(rest),.out_g(j); /實(shí)例化貨物選擇模塊goods_rom go_r(.input_g(j),.goods_m(e)

56、; /實(shí)例化貨物金額存儲(chǔ)模塊select_2 sel(.s_a(c),.s_b(b),.o_c(f),.en4(en4); /實(shí)例化二選一選擇模塊compare co(.input_co(f),.clear(d),.quit(quit),.q(q),.havegoods(havegoods),.out_d3(out_d3); /實(shí)例化比較模塊machine mach(.clk(clk),.rest(rest),.en1(en1),.en3(en3),.en4(en4),.clear(d),.quit(quit),.ok(ok),.en2(en2),.en5(en5),.en6(en6),.ha

57、vegoods(havegoods),.change(change); /實(shí)例化狀態(tài)機(jī)模塊sub sub(.q(q),.en6(en6),.q_1(q_1); /實(shí)例化減法模塊goods_ram goods_ram(.address(k),.clock(clk),.data(q_1),.wren(en3&(b-e0),.q(q);/實(shí)例化貨物庫存模塊hz t_hz(.clk_50(clk1),.clk_1(clk),.Rst1(Rst1); /實(shí)例化時(shí)鐘分頻模塊endmodule5.2控制單元模塊module machine(clk,rest,en1,en3,en4,clear,quit,ok

58、,en2,en5,en6,havegoods,change/*money_ld*/);input clk,rest,clear,quit,ok,en2,en5,havegoods;output en1,en3,en4,change,en6;reg2:0state,nextstate;wire en1,en2,en3,en4,havegoods;parameter Idle=3b000,Get_m=3b001,Select_g=3b010,Out_g=3b011,free=3b100,Out_m=3b100;/定義各個(gè)參數(shù)的值assign en1=(en2=0)?1b1:1b0;/判斷en2信號(hào)

59、是否等于0,若為0,則en1有效assign en3=(state=Select_g)?1b1:1b0;assign en4=(state=Get_m)?1b0:1b1;assign en6=(havegoods=1)?1b1:1b0;assign change=(state=free)?1b1:1b0;always(posedge clk)if(rest)state=Idle;else state=nextstate;always(*)case(state) Idle:nextstate=Get_m;./初始化的下一個(gè)狀態(tài)是投幣 Get_m:if(en2=1)/判斷使能信號(hào)是否有效 next

60、state=Select_g;/下一個(gè)狀態(tài)是選擇商品 else nextstate=Get_m; Select_g:if(ok=1)/判斷ok信號(hào)是否有效 nextstate=Out_g;/下一個(gè)狀態(tài)是出貨 else if(quit=1)/若退幣信號(hào)有效 nextstate=Out_m;/下一狀態(tài)為出幣 else nextstate=Select_g; Out_g:if(en5=1) begin/判斷使能信號(hào)是否有效 if(quit=1)&(clear=0)/判斷清零信號(hào)無效且退幣信號(hào)有效時(shí) nextstate=free;/下一狀態(tài)為等待狀態(tài) else if(quit=0)&(clear=0)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論