畢業論文-基于FPGA的藥品自動售貨機設計與實現_第1頁
畢業論文-基于FPGA的藥品自動售貨機設計與實現_第2頁
畢業論文-基于FPGA的藥品自動售貨機設計與實現_第3頁
畢業論文-基于FPGA的藥品自動售貨機設計與實現_第4頁
畢業論文-基于FPGA的藥品自動售貨機設計與實現_第5頁
已閱讀5頁,還剩31頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

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

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

3、,以及退幣等功能,能滿足用戶在日常生活中的實際需求,同時本設計還新增了庫存不足的報警功能,這個設計能為藥品的提供者與購買者提供便利。另外本設計基于FPGA,其內部硬件功能可通過編程改變,并且具有處理速度高等特點。關鍵詞:FPGA,由上而下,Verilog大連東軟信息學院畢業設計(論文) 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大連東軟信息學院畢業設計(論文) 目錄目 錄 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 課題研究現狀 PAGEREF _Toc385774175 h 1第2章關鍵技術介紹 PAGEREF _Toc385774176 h 32.1 關鍵技術一 PAGEREF _Toc385774177 h 32.2 關鍵技術二 PAGEREF _Toc385774178 h 42.3 關鍵技術三 PAGEREF _Toc385774179 h 4第3

10、章系統需求分析 PAGEREF _Toc385774180 h 63.1 系統功能概述 PAGEREF _Toc385774181 h 63.2 系統功能需求 PAGEREF _Toc385774182 h 63.3 系統開發環境73.4 系統可行性分析 PAGEREF _Toc385774184 h 83.5 系統流程圖10第4章系統設計124.1 系統設計指導原則124.2 系統初步設計124.3 系統詳細設計 PAGEREF _Toc385774189 h 124.3.1 數據通道模塊設計154.3.2控制單元模塊設計184.4 芯片選擇194.5 顯示電路19第5章系統實現205.1

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

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

13、了很多的便利,解決了人們晚間生病時對于藥品的需求。藥品自動售貨機能解決人們日常藥品購買的問題,大大的提高了人們生活的方便性。傳統的自動售貨機控制系統采用單片機作為控制核心,不僅需要在輸入輸出接口上做大量的工作,而且系統的抗干擾性也比較差。FPGA具有可靠性高、編程簡單、維護方便等優點,已在工業控制領域得到廣泛應用。但是在我國自動售貨機的普及還不及發達國家,主要原因是我國電子設計自動化(EDA,Electronic Design Automation)技術的應用水平長期落后于發達國家。本設計要實現自動售貨機的基本功能,可以實現投幣處理、計算投幣總額、輸出商品、輸出找零的控制。1.2 課題研究現狀

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

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

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

17、uage)是完成EDA設計文件的基礎,EDA技術可以自動地完成邏輯編譯、化簡、分割、綜合及優化、布局布線、仿真以及對于特定目標芯片的適配編譯和編程下載等工作。基于EDA工具的FPGA開發流程如下列所示:(1)首先對與文本或者/原理圖進行編輯與修改。第一步利用EDA工具的文本或圖形編輯器將設計者的設計大致思想用文本或圖形的方式進行表達。(2)然后編譯。完成設計描述后就可以通過編譯器進行排錯編譯,變成所指定的文本格式,同時為下一步進行準備工作。(3)綜合。這項技術是將軟件設計同硬件的可實現性進行對應,綜合的這一個過程是將軟件轉化為硬件電路的關鍵性一步。綜合后HDL綜合器可生成ENIF,XNF或VH

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

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

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

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

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

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

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

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

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

27、機存取存儲器(Ram,Random Access Memory)模塊。這個模塊中存儲了每樣物品的庫存,并且能夠更新貨物的庫存。(10)貨物只讀寄存器(Rom,Read-Only Memory)模塊。存儲了每種貨物的價格,輸出連接加法器模塊。(11)加法器模塊。是來輸出輸入的貨幣金額跟物品的價格進行比較。(12)控制模塊??刂聘鱾€動作所要執行的命令。 圖3.1 功能模塊圖3.3 系統開發環境本系統將在FPGA開發板上進行驗證,目前主流的FPGA有XILINX、ALTERA和ACTEL三家公司的產品。由于他們在可編程單元和互聯資源的結構設計上各有特色,從而為使用者提供了靈活的選擇。Cyclone

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

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

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

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

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

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

34、存器模塊、算術運算器模塊、二選一選擇器模塊、減法器模塊、譯碼器模塊、比較器模塊,貨物價格存儲器模塊、貨物選擇模塊。控制單元部分由狀態機來實現,合理涉及各個狀態轉移。控制單元發送數據通道所需的控制信號,接收來自數據通道的狀態信號,監控整個測試過程的運行;數據通道處理來自控制單元的控制信號,并把處理的結果反饋給控制單元。使用Altera公司開發的Quartus軟件,對每個模塊進行開發。通過常用仿真軟件ModelSim對設計的所有模塊進行仿真測試,確保整個開發流程順利進行。最后在FPGA開發板上進行功能測試,并且不斷地進行優化。本系統是采用verilog語言來實現,經過ModelSim做功能仿真,用

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

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

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

38、真軟件ModelSim對設計的所有模塊進行仿真測試,確保整個開發流程順利進行。最后在進行整體的功能測試,并且不斷地進行優化。因此本課題的選擇是可行的。3.5系統流程圖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 系統流程圖首先,該系統進入空閑狀態,然后進入初始化狀態,對整個系統做初始化處理。初始化的處理后使整個系統進入默認的工作狀態也就是如圖所示的等待投幣狀態;然后,判斷使能信號en2是否有效,有效的話系統進入選貨狀態,否則回到等待投幣狀態等待投幣;其次,進入選貨狀態后,先判斷ok信號是否有效,有效則進入出貨的狀態,否則保持在選貨狀態;接著,進入出貨狀態后,判斷退幣信號與清零信號是否同時有效,有效則進入退幣狀態,否則再次判斷退幣信號與清零信號同時無效時,則進入選貨狀態,

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

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

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

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

44、撥動開關來實現輸入選擇喜歡的商品序號goods_4I1外部通過撥動開關來實現輸入選擇喜歡的商品序號en2I1使能信號okI1確認買貨信號quitI1確認退幣信號clk1I1外部輸入50MHz時鐘信號rst1I1系統復位信號out_d1O7與七段數碼管相連,輸出十位數out_d2O7與七段數碼管相連,輸出個位數out_d3O7與LED相連,實現報警數據通道模塊圖見4.2。圖4.2 數據通道模塊圖數據通道詳細管腳說明請見表4.2。表4.2 數據通道管腳信號I/O寬度功能描述clkI1將外部輸入的50HZ時鐘信號分頻完后的信號clk_50I1外部輸入50MHz時鐘信號en1I1使能信號en3I 1使

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

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

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

48、ut_5 ,input_10分別為不同數額的輸入信號。投幣模塊見圖4.7。圖4.7 投幣模塊數據比較模塊是用于庫存是否大于0而準備的,當庫存如果大于0時,則led燈不會亮起,如果庫存小于0時,led燈則會亮起,起報警作用。數據比較模塊見圖4.8。圖4.8 數據比較模塊減法模塊是執行庫存減1的效果,en_6是由狀態機控制的,是在出貨的同時,令en_6有效,并且執行庫存減1的操作,將其的結果輸出給貨物ram模塊。減法模塊見圖4.9。圖4.9 減法模塊輸入貨幣寄存器模塊,這個模塊相當于一個計數的寄存器,可以準確計算投幣的數額,來確??値胖怠.斍辶阈盘柣蛘邚臀恍盘栍行r,都將值賦值為0。en1是有狀態

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

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

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

52、8Q208C8芯片作為核心處理器進行設計,Cyclone系列芯片可以說是目前市場上性價比較高的芯片,比第一代的EP1C6或者EP1C12等芯片無論在芯片的設計上還是內部的邏輯資源上都有了很大的改進,同時價格也可以被廣大的客戶所接受。該學習板包含時鐘,蜂鳴器8個LED燈顯示,5個按鍵開關,因此該板子作為學習版是最合適不過的,滿足我們學生各方面的需求。4.5 顯示電路本設計是要將貨幣的金額進行顯示,因此需要通過7段數碼管來顯示,七段數碼管圖如4.19所示。圖4.19 七段數碼管圖大連東軟信息學院畢業設計(論文)第5章系統實現5.1數據通道實例化代碼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; /輸入信號output 6:0out_d1,out_d2,out_d3;/輸出信號wire 3:0a,j;/ 定義線性的變量用于實例化時,連接不同的模塊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);/實例化投幣模塊money mon(.input_m(a),.clk(clk),.rest(rest),.clear(d),.en1(en1),.outmoney(b); /實例化貨幣寄存模塊add ad(.input_a(b),.goods_u(e),.out_c(c),.clk(clk),.rest

55、(rest),.en3(en3),.en5(en5),.en2(en2); /實例化加法模塊decoder_2 de_2(.input_d2(f),.out_d1(out_d1),.out_d2(out_d2); /實例化輸出顯示譯碼模塊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); /實例化貨物選擇模塊goods_rom go_r(.input_g(j),.goods_m(e)

56、; /實例化貨物金額存儲模塊select_2 sel(.s_a(c),.s_b(b),.o_c(f),.en4(en4); /實例化二選一選擇模塊compare co(.input_co(f),.clear(d),.quit(quit),.q(q),.havegoods(havegoods),.out_d3(out_d3); /實例化比較模塊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); /實例化狀態機模塊sub sub(.q(q),.en6(en6),.q_1(q_1); /實例化減法模塊goods_ram goods_ram(.address(k),.clock(clk),.data(q_1),.wren(en3&(b-e0),.q(q);/實例化貨物庫存模塊hz t_hz(.clk_50(clk1),.clk_1(clk),.Rst1(Rst1); /實例化時鐘分頻模塊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;/定義各個參數的值assign en1=(en2=0)?1b1:1b0;/判斷en2信號

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;./初始化的下一個狀態是投幣 Get_m:if(en2=1)/判斷使能信號是否有效 next

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

溫馨提示

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

評論

0/150

提交評論