基于FPGA自動售貨機_第1頁
基于FPGA自動售貨機_第2頁
基于FPGA自動售貨機_第3頁
基于FPGA自動售貨機_第4頁
基于FPGA自動售貨機_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、摘 要本課題是基于verilog hdl語言的小型自動售貨機。采用verilog hdl在modelsimse6.2b軟件平臺進行編譯和仿真。在此次設(shè)計中,主要采用有限狀態(tài)機(fsm)的設(shè)計,在投幣選貨狀態(tài)和找零狀態(tài)在這兩個狀態(tài)間進行轉(zhuǎn)移。從而實現(xiàn)貨物的選擇、貨幣運算、出貨控制、余額顯示以及找零等功能。該售貨機系統(tǒng)能夠識別兩種硬幣,兩種紙幣。有五種不同價格的商品可供選擇,并且通過顯示譯碼電路,可在led顯示器顯示余額,同時具備找零、機器存有硬幣不足led亮起報警、缺貨led亮起報警等功能?,F(xiàn)代的自動售貨機有使用方便快捷,可以全天候24小時工作,占地少,成本低,維護簡單等優(yōu)點,有著廣闊的前景。采

2、用fpga方式用verilog hdl硬件描述語言,設(shè)計簡易的自動售貨機,其編程簡單,開發(fā)周期短,硬件運行速度快,開發(fā)成本低,穩(wěn)定性高等優(yōu)點。關(guān)鍵詞:自動售貨機; verilog hdl; 有限狀態(tài)機;modelsim; abstractthis topic design a simple vending machine is based on the fpga chip. ep2c35 chip, and de2 development board for the hardware platform, the use of verilog hdl to compile and simulat

3、ion in the quartus software platform, and through the de2 development achieve the basic functions of a simple vending machine.board by to download code to the chip. in this design,it used of finite state machine (fsm) design, choice of goods state, shipment status and give change coin state in the t

4、hree inter-state transfer, in order to achieve the choice of goods, monetary operations, the cargo control, features such as display and give change. the vending machine system to identify three kinds of coins, there are five kinds of goods at different prices to choose from, and by showing decoding

5、 circuit, in de2 onboard led display shows the balance, both functions give change. modern vending machines are convenient, it can work 24 hours a day, covers an area of small, low cost, simple maintenance, there are broad prospects. manner with the use of fpga hardware description language verilog

6、hdl, design simple vending machine, the programming is simple, short development cycles, fast hardware, the development of low cost, high stability.key words: vending machines; verilog hdl; finite state machine; fpga; de2 development board;目 錄緒 論1第一章 系統(tǒng)方案設(shè)計31.1 人機交換界面設(shè)計31.2 系統(tǒng)方案設(shè)計412.1 系統(tǒng)方案確定5第二章 系統(tǒng)

7、各模塊硬件設(shè)計72.1 de2開發(fā)板介紹72.2 自動售貨機各模塊設(shè)計82.2.1 自動售貨機主體設(shè)計82.2.2 led顯示設(shè)計方案92.2.3 貨幣輸入信號設(shè)計方案102.2.4 出貨顯示設(shè)計方案11第三章 系統(tǒng)的軟件設(shè)計123.1 eda工具軟件介紹133.2 軟件設(shè)計總方案143.3 售貨機主芯片程序設(shè)計方案153.4 bcd-led七段數(shù)碼顯示譯碼器173.5 硬幣輸入信號程序設(shè)計方案183.6 出貨顯示程序設(shè)計方案193.7 自動售貨機各部分組合連接設(shè)計20第四章 調(diào)試及仿真214.1 用quartus 完成pfga設(shè)計步驟214.2 自動售貨機波形仿真結(jié)果214.2.1 自動售貨

8、機波形仿真214.2.2 輸入信號處理程序波形仿真234.2.3 bcd-led七段數(shù)碼顯示譯碼器波形仿真234.2.4 出貨顯示譯碼器波形仿真244.2.5 自動售貨機主芯片程序仿真波形254.3 下載、仿真及測試25結(jié)論26致 謝27參考文獻28附錄1(程序源代碼)29附錄2(整體設(shè)計原理圖)35緒 論自動售貨機最早出現(xiàn)在二十世紀五、六十年代的西歐,英國是較早實行自動售貨機售貨的國家之一。1942年,在食品銷售中首先推廣了自動售貨的銷售方式。1950年,英國食品雜貨行有500家采用自動售貨機售貨。1969年,采用自動售貨機售貨的商家增加到23000家,銷售的商品擴展到文化用品、唱片、香煙、

9、食品等多個方面。進入70年代后,約有40多萬家香煙、飲料店采用自動售貨機。1980年英國有50余萬臺自動售貨機,年銷售額達8.81億英鎊。70年代后,日本、美歐等發(fā)達國家和地區(qū)自動售貨機迅猛的發(fā)展,短短30年,發(fā)達國家自動售貨機產(chǎn)業(yè)已發(fā)展到相當(dāng)大規(guī)模。自動售貨機被廣泛地布放于車站、油站、碼頭、機場、賓館、寫字樓、娛樂場所及大街小巷和公路旁,人們通過自動售貨機可以買到食品、香煙、飲料、報紙、票、卡甚至鮮花和小寵物等物品。自動售貨機實現(xiàn)了商品需求化、性能多樣化的發(fā)展,又原來只能有限商品品種,轉(zhuǎn)變?yōu)槔^百貨公司、超級市場、便民店之后,以消費者與售貨機“一對一”自動售貨的無店鋪銷售業(yè)態(tài)。 目前自動售貨機

10、是集聲、光、機電一體化的高新智能化產(chǎn)品,在我國也開始得到應(yīng)用。在中國人們可以看到現(xiàn)代化的自動售貨機擺放在一些大商場門口、繁華街道兩旁、公園入口處以及其它熱鬧的場所。自動售貨機的新奇、文明、高檔、晝夜服務(wù)、占地小、靈活方便深受許多地區(qū)市民的青睞,甚至出現(xiàn)許多排隊購買的現(xiàn)象。專輯測算,中國的自動售貨機在市場容量最保守算應(yīng)該有四十七萬臺,一年的銷售額可達三百五十億元若按人均臺數(shù)計算全年可達五百億,自動售貨機在日本達到平均每二三十人一臺,在美國達到每四十人一臺,在歐洲每六十人一臺,由于中國經(jīng)濟與上述國家還有一定差距,按每五百人一臺計算。因此,自動售貨機在中國有著廣闊的發(fā)展前景。 現(xiàn)在,自動售貨機產(chǎn)業(yè)正

11、在走向信息化并進一步實現(xiàn)合理化。例如實行聯(lián)機方式,通過電話線路將自動售貨機內(nèi)的庫存信息及時地傳送各營業(yè)點的電腦中,從而確保了商品的發(fā)送、補充以及商品選定的順利進行。并且,為防止地球暖化,自動售貨機的開發(fā)致力于能源的節(jié)省,節(jié)能型清涼飲料自動售貨機成為該行業(yè)的主流。在夏季電力消費高峰時,這種機型的自動售貨機即使在關(guān)掉冷卻器的狀況下也能保持低溫,與以往的自動售貨機相比,它能夠節(jié)約15的電力。進入21世紀時,自動售貨機也將進一步向節(jié)省資源和能源以及高功能化的方向發(fā)展。自動售貨機是商業(yè)自動化的常用設(shè)備,它不受時間、地點的限制,能節(jié)省人力、方便交易。一般的自動售貨機由錢幣裝置、指示裝置、貯藏售貨裝置等組成

12、。錢幣裝置是售貨機的核心,其主要功能是確認投入錢幣的真?zhèn)?,分選錢幣的種類,計算金額。如果投入的金額達到購買物品的數(shù)值即發(fā)出售貨信號,并找出余錢。指示裝置用以指示顧客所選商品的品種。貯藏售貨裝置保存商品,接收出售指示信號,把顧客選擇的商品送至付貨口。一般售貨機的錢幣裝置由投幣口、選別裝置、確認錢幣真?zhèn)蔚臋z查裝置、計算金額的計算裝置和找錢裝置組成。70年代以來,出現(xiàn)了采用微型計算機控制的各種新型自動售貨機和利用信用卡代替錢幣并與計算機連接的更大規(guī)模的無人售貨系統(tǒng),如無人自選商場、車站的自動售票和檢票系統(tǒng)、銀行的現(xiàn)金自動支付機等。 近年來,隨著電子系統(tǒng)設(shè)計自動化(eda)和超大規(guī)??删幊踢壿嬈骷涂?/p>

13、速發(fā)展,硬件描述語言(hdl)這一新型電子系統(tǒng)開發(fā)工具正在迅速普及,是計算機設(shè)計和編程人員和電子器件廠商都尋找的一種工具,是芯片設(shè)計人員和生產(chǎn)伙伴之間建立溝通和交換數(shù)據(jù)的橋梁。已經(jīng)是從事eda電子工程師必須掌握的工具。 hdl使得電路的編程和設(shè)計者能夠自由表述電路的特征,它可以描述和仿真電子元件的特性,這些電子元件的規(guī)??梢詮膯蝹€門電路直到一塊完整的多層印刷的電路板。hdl的主要操縱對象是高速集成電路和現(xiàn)場可編程門陣列(fpga)。hdl的仿真功能使設(shè)計者在產(chǎn)品投入大規(guī)模生產(chǎn)前可以分別測試各個元件及其之間的連接,用仿真的方式完成以前必須設(shè)計和建造好的樣機才能進行的電子電路特性的說明和調(diào)試,并可

14、以仿真器上測試所設(shè)計的電路功能是否正確。從而在芯片和器件的復(fù)雜性不斷以驚人的速度增長的同時降低系統(tǒng)開發(fā)的成本和時間。本課題中需要實現(xiàn)至少3種不同價格貨物的買賣操作。要用3個撥動開關(guān)表示3種硬幣,用5個鍵表示5種不同價格的商品。投入貨幣后用數(shù)碼管顯示錢數(shù)。買東西時,先按物品鍵,再投入硬幣,若成交,用數(shù)碼管顯示物品輸出。若輸入余額大于所選物品的價格,退回多余的錢,若少于物品的價格,則退錢。在這次設(shè)計中,已實現(xiàn)上述功能,并且能夠下載到de2開發(fā)板上進行仿真。下面的論述中,第一章介紹系統(tǒng)的方案設(shè)計,包括人機交換界面的設(shè)計,系統(tǒng)方案設(shè)計和系統(tǒng)的方案的確定,還有系統(tǒng)方案的總體設(shè)計原理圖。第二章介紹系統(tǒng)各模

15、塊硬件設(shè)計,包括de2開發(fā)板的介紹和各個硬件部分設(shè)計的介紹。包括自動售貨機的主芯片、余額顯示譯碼器、輸入處理芯片和出貨顯示譯碼器,以及他們的設(shè)計原理圖。第三章介紹軟件系統(tǒng)設(shè)計,各個部分軟件設(shè)計原理及過程。包括主程序,顯示譯碼器程序,輸入處理程序和顯示譯碼程序以及他們的原理圖。第四章介紹了編譯調(diào)試過程以及各部分的調(diào)試波形,并對波形進行了分析。最后是結(jié)論、致謝、參考文獻和附錄。第一章 系統(tǒng)方案設(shè)計1.1 人機交換界面設(shè)計人機交換界面圖,對人機交換的按鍵一目了然。這次設(shè)計中,用到de2開發(fā)板作為設(shè)計平臺,它的界面比較大眾化,所有的按鍵顯示都是放在一起,但有了這個界面圖結(jié)合下面的介紹,很容易就可以了解

16、這個自動售貨機的操作步驟以及使用方法。yj元顯示角顯示出貨顯示edcbawjiyin上面是5種貨物選擇開關(guān) 上面是貨幣輸入和找零開關(guān)角找零元找零overflowr復(fù)位開關(guān)圖1.1 自動售貨機人機交換界面簡圖首先,確定可以對5種不同種類的貨物進行自動售貨,價格分別為a=1.00,b=1.50,c=1.80,d=3.10,e=5.00。當(dāng)a、b、c、d、e五種貨物輸出時,為了在de2開發(fā)板上能夠顯示出來,識別方便,加一個譯碼器,如果貨物a出貨時,通過譯碼器,在led顯示器上顯示數(shù)字1。同理b、c、d、e分別顯示2、3、4、5。其次,自動售貨機選擇可以接受一元、五角、一角三種硬幣(即有三種輸入信號i

17、y代表投入一元,wj代表投入五角,yj代表投入一角)。這三種貨幣的輸入在de2開發(fā)板上分別用三個開關(guān)來表示,當(dāng)每次來回撥動一次開關(guān),就代表投一次硬幣,及相應(yīng)的面額的硬幣加1。用2個4位7段led(高位代表元、低位代表角)顯示投入的總錢數(shù),最大輸入金額是9.90元。如果大于該金額輸出信號為overflow,代表最后投入的硬幣會退出。選擇貨物的輸入信號ia,ib,ic,id,ie和一個放棄信號in,放棄信號是將余額找出來。輸出信號元找零和角找零。同時還有一個r復(fù)位信號。如圖1.1所示,人機交換界面圖簡圖。在操作時候,先按復(fù)位鍵,是將里面的各個輸入輸出口以及寄存器全部清零。其次選擇貨物,再投幣,當(dāng)投

18、的金額等于貨物的價格的時候,出貨,同時led顯示器上上面的金額清零。當(dāng)大于貨物的價格時候,出貨同時,顯示剩余的金額。如果按找零開關(guān),找零,led顯示清零。當(dāng)金額大于9.9元時,把最后一次投幣退出來。1.2 系統(tǒng)方案設(shè)計要實現(xiàn)自動售貨機的功能,如果只靠一個芯片一個程序是很難完成系統(tǒng)的設(shè)計,所以自動售貨機系統(tǒng)有4個部分組成。 自動售貨機的主芯片。主要實現(xiàn)自動售貨機的基本功能。它可以選擇5種不同的貨物,當(dāng)選擇貨物后,進入投幣狀態(tài),投入硬幣后,系統(tǒng)會自動記錄下所所投入硬幣的金額,并且將投入的硬幣的余額以bcd碼的形式輸出,當(dāng)金額大于9.9元的時候,系統(tǒng)會自動將最后一次投入的貨幣輸出;輸出信號為over

19、flow。當(dāng)上面的金額等于貨物的價格的時候,系統(tǒng)會自動出貨,五種貨物與之相對應(yīng)的有五個輸出管腳,當(dāng)出貨時,高電平有效;當(dāng)金額大于貨物的價格時候,系統(tǒng)出貨,并且進行找零,當(dāng)金額小于貨物的價格的時候,系統(tǒng)會等待著再次投幣。如果有in找零信號輸入,直接進入找零狀態(tài)。輸入信號處理芯片。輸入信號的時候,每次輸入信號高電平的周期不能正好是一個clk脈沖信號的周期,所以要設(shè)計一個信號處理程序。在輸入貨幣和找零信號的時候,無論產(chǎn)生高電平的時間的多長,都會產(chǎn)生一個和clk周期相同的高電平。bcd-led七段數(shù)碼顯示譯碼器。自動售貨機主芯片產(chǎn)生的是bcd碼,bcd碼不方便的識別,所以要用這個芯片,來處理bcd碼的

20、信號,使之變成能夠識別的數(shù)字信號。出貨顯示譯碼器。在出貨的時候,由于采用de2開發(fā)板,主頻過高,達到50mhz,人的肉眼根本無法識別信號的變化,我們需要設(shè)計一個出貨顯示譯碼器,當(dāng)出貨物a,b,c,d,e的時候,在led顯示器上就相應(yīng)的產(chǎn)生1、2、3、4、5的數(shù)字,這樣就可以輕松的看到是那種貨物出來了。將這四個部分有機的組合起來,就可以實現(xiàn)自動售貨機的功能,如圖1.2所示。 自動售貨機主芯片出貨顯示譯碼器1元輸入處理5角輸入處理1角輸入處理找零輸入處理元顯示譯碼 器選擇貨物a選擇貨物b角顯示譯碼 器選擇貨物c選擇貨物d元找零選擇貨物e角找零復(fù)位roverflow 圖1.2 系統(tǒng)方案原理圖1.21

21、 系統(tǒng)方案確定 自動售貨機的主芯片程序主要采用有限狀態(tài)機(fsm),在選擇貨物狀態(tài),投幣出貨狀態(tài)和找零狀態(tài)這個3個狀態(tài)間進行跳轉(zhuǎn),來實現(xiàn)自動售貨機的基本功能。選擇貨物狀態(tài)主要是貨物的選擇的處理等功能,如果在選擇貨物之前投硬幣,系統(tǒng)進入貨幣找零狀態(tài),就將貨幣退出來,否則就停留在這個狀態(tài)。如果先選擇貨物,系統(tǒng)會自動進入投幣出貨的狀態(tài),否則停留在這個狀態(tài)。投幣出貨狀態(tài)主要是對投入貨幣運算和出貨控制處理等功能。如果余額大于9.9元的時候,系統(tǒng)會把最后一次投入的硬幣找出來。如果余額大于所選貨物的價格,系統(tǒng)會自動出貨并且進入找零狀態(tài),把剩余的零錢找出來。如果余額等于所選貨物的價格,系統(tǒng)會自動出貨,并且把余

22、額清零。當(dāng)余額小于所選貨物的價格,系統(tǒng)會停留在這個狀態(tài)。如果發(fā)現(xiàn)有找零信號輸入的時候,系統(tǒng)進入找零狀態(tài)。找零狀態(tài)主要是對零錢進行找零功能。當(dāng)每次clk脈沖來臨時候,如果上面的余額不為零,系統(tǒng)會自動減一。這樣反復(fù)進行,直到上面的余額為零。輸入的信號的處理,使它不能誤判貨幣的投入次數(shù),采用判斷是否有上升沿,以確定投幣的次數(shù),當(dāng)出現(xiàn)幾次上升沿,就代表幾次投幣,這樣來防止貨幣投入次數(shù)誤判。靜態(tài)led七段數(shù)碼顯示譯碼器,把bcd碼識別成人可以識別的數(shù)字,顯示數(shù)字0-9,用于表示元和角單位上的余額。出貨顯示譯碼器,顯示1-5五個數(shù)字,分別代表貨物的名稱。這樣組成一個完整的簡易自動售貨機。能夠?qū)崿F(xiàn)識別3種的

23、硬幣,有5種商品可以選擇,找零和余額顯示功能。同時在de2開發(fā)板板上進行仿真。以更為直觀的方式展現(xiàn)自動售貨機的操作過程。第二章 系統(tǒng)各模塊硬件設(shè)計2.1 de2開發(fā)板介紹本課題采用ep2c35芯片及de2開發(fā)板。數(shù)字電子領(lǐng)域中三種基本的器件類型為存儲器,微處理器和邏輯器件。存儲器是用來存儲數(shù)據(jù)表,數(shù)據(jù)庫,程序代碼等隨機信息。微處理器通過執(zhí)行軟件指令來完成如文字處理,視頻處理及工業(yè)控制等各種任務(wù);邏輯器件提供器件間的接口,數(shù)據(jù)通信,信號處理,數(shù)據(jù)顯示,時序和控制操作以及系統(tǒng)運行等各種特定功能。而邏輯器件又可以分為兩大類。即固定邏輯器件和可編程邏輯器件。目前,電子產(chǎn)品的生命周期越來越短,許多消費類

24、電子產(chǎn)品的生命周期只有一年左右的時間,因此必須縮短產(chǎn)品的開發(fā)周期。可編程邏輯器件和固定邏輯器件相比,可大大縮短產(chǎn)品的開發(fā)周期,而隨著集成電路制造工藝的進步,可編程邏輯器件的設(shè)計水平不斷提高,其成本已經(jīng)降低到可以在消費類電子產(chǎn)品中大量使用的程度。從當(dāng)前技術(shù)發(fā)展的趨勢來看,可編程邏輯器件將逐漸取代大部分的禿頂邏輯器件。 軟核處理器的出現(xiàn)以及可編程邏輯器件的片上存儲器容量的增大,使得可編程邏輯器件已經(jīng)可以覆蓋數(shù)字電子領(lǐng)域的中的所有應(yīng)用。altera公司推出的可編程芯片系統(tǒng)(system on a programmable chip,sopc)以及nios ii軟核處理器進一步明確了這種概念。alte

25、ra公司與2000年發(fā)布了nios軟核處理器該處理器是一款risc處理器,是世界第一款專為可編程邏輯優(yōu)化的可配置處理器。nios處理器的最新版本nios處理器是沒欠使用得最為管飯的軟核處理器。 de2開發(fā)平臺是altera公司針對大學(xué)及研究機構(gòu)推出的一款多媒體開發(fā)平臺。美國最大的wright-patterson空軍研發(fā)基地公開評論altera de2(包括硬件,軟件,教學(xué)文件)為有史以來最好的一款多媒體fpga開發(fā)板卡。目前,全球眾多名校(如密西根大學(xué)安埃布爾分校,麻省理工學(xué)院,喬治亞理工學(xué)院,滑鐵盧大學(xué)及多倫多大學(xué)等)都將altera de2平臺大批用于數(shù)字邏輯,微處理器及多媒體嵌入式系統(tǒng)教

26、學(xué)眾多大廠也都以de2為平臺來從事ic設(shè)計,國內(nèi)已有150多所大學(xué)在使用de2平臺。de2平臺作為一個非常優(yōu)秀的fpga設(shè)計平臺,具有強大的多媒體特性,能夠應(yīng)用在多門課程的教學(xué)中,這些課程設(shè)計包括“數(shù)字邏輯設(shè)計”、“數(shù)字電路”、“數(shù)字信號處理”、“微機原理”、“計算機組成原理”、“數(shù)字圖像處理”、 “sopc技術(shù)”等。 這此次設(shè)計采用的cyclone 系列的fpga中的ep2c35, cyclone 系列是繼cyclone系列低成本的fpga在市場上去的成功之后,altera公司推出的更低成本的fpga,它將成本fpga的密度擴展到了68416個邏輯單元,從而可以在低成本fpga上實現(xiàn)復(fù)雜的數(shù)

27、字系統(tǒng)。cyclone 系列fpga采用90nm工藝,與競爭對手采用的90nm工藝的fpga相比,其性能高出60%而功耗減低一半,而其價格則幾乎可以與asic產(chǎn)品競爭。優(yōu)異的性價比使cyclone 系類的fpga可以廣泛的應(yīng)用與汽車電子、消費電子、音/視頻處理、通信以及測試測量等終端產(chǎn)品市場。2.2 自動售貨機各模塊設(shè)計2.2.1 自動售貨機主體設(shè)計自動售貨機主要利用有限狀態(tài)機(finite state machine,fsm),自動售貨機工作的時候,在不同的狀態(tài)跳轉(zhuǎn),從而實現(xiàn)其功能。 方案一:以余額數(shù)目為狀態(tài),當(dāng)每次投幣的時候,根據(jù)余額數(shù)目跳到相應(yīng)的狀態(tài),這個狀態(tài)下,進行相應(yīng)的進行找零,出貨

28、物等操作。用case語句語句來描述各個狀態(tài)之間轉(zhuǎn)移關(guān)系。parameter 參數(shù)定義相應(yīng)的一些狀態(tài),d代表不同時刻不同狀態(tài),在系統(tǒng)復(fù)位后機器后開始運行,每一次出售貨物的過程中由d記錄其狀態(tài),表示已經(jīng)投入錢幣的變化。有限的狀態(tài)機從本質(zhì)上講是有寄存器和組合邏輯構(gòu)成時序電路,各個狀態(tài)之間的轉(zhuǎn)移總是在時鐘的觸發(fā)下進行的,也可以在設(shè)計時將時序邏輯部分和組合邏輯部分分在兩個“always”過程塊中進行描述,這樣以減少一些不必要的寄存器。這種設(shè)計方案思路簡單,容易看懂。但是,由于設(shè)計時候,投入的錢幣數(shù)量多,所以相應(yīng)的狀態(tài)就多,從而增加了源代碼所占用的空間,使得源代碼不夠簡練精干。方案二:這個方案是采用很少的

29、狀態(tài)完成自動售貨機的工作,可以將它分成選擇貨物的狀態(tài),投幣出貨的狀態(tài)和找零的狀態(tài)這三種狀態(tài)。這三種狀態(tài)的情況下,可以完成系統(tǒng)的基本工作,如圖2.1所示。這個方案,用case語句來選擇控制各個狀態(tài)的改變,選擇貨物狀態(tài)是開始狀態(tài),等待買家選擇貨物,如果買家沒有選擇貨物也沒有投幣時,則在這個狀態(tài)自跳轉(zhuǎn),如果買家選擇了貨物,即(ia | ib | ic | id | ie)=1時,狀態(tài)會跳入投幣出貨的狀態(tài),要是買家先投幣,即(iy | iwj | iyj)=1時,投出來的錢幣會進入找零的狀態(tài),把投入的錢幣退出來。投幣出貨狀態(tài)。買家先要進行投幣,每次投得相應(yīng)的面額。硬幣的金額都會自動記錄下來,相當(dāng)于一個

30、計數(shù)器,同時將已經(jīng)投的貨幣的總金額在led顯示器上顯示出來。當(dāng)金額等于貨物的價格,即count = price時,會自動出貨。系統(tǒng)自動跳到選擇貨物狀態(tài)。led上顯示為零,如果金額大于貨物的價格的時候,即countprice時,出貨,并且自動跳到找零的狀態(tài),把多余的零錢找出來。當(dāng)再投幣金額大于9.9元的時候,系統(tǒng)會自動把最后一次投的錢幣找出來,當(dāng)買家按找零開關(guān)的時,即in=1時,系統(tǒng)也會自動跳到找零的狀態(tài),把多余的零錢找出來,當(dāng)金額小于貨物的價格的時候,系統(tǒng)會自跳,保持在這個狀態(tài),等待貨幣再次投入,直到投入的金額大于或等于貨物的金額。找零狀態(tài)。這個部分相當(dāng)于一個減法計數(shù)器,當(dāng)元的單位上不等于0的

31、時候,在每個clk上升沿來臨的時候,元單位上就自動減一,直至為0,每減少一次就在元找零輸出上輸出一次高電平,同樣也適用于在角單位上。當(dāng)他們都為0,即count=0時,代表找零結(jié)束,回到貨物選擇狀態(tài)。貨物選擇狀態(tài)start投幣出貨狀態(tài) prossces找零狀態(tài) changecount = price(iy | iwj | iyj)=1countprice或in=1(ia | ib | ic | id | ie)=1count=0圖2.1 方案2有限狀態(tài)機狀態(tài)圖這種方法狀態(tài)簡單,但思路要清晰明確,設(shè)計簡單,編程的源代碼不需要占用大量的空間,程序精干簡約。易于看懂。故本課題選擇第二種設(shè)計方案。 2.

32、2.2 led顯示設(shè)計方案led顯示就是把bcd碼變成led顯示出來能夠被人能識別的數(shù)字,led顯示在通常情況下分為動態(tài)顯示和靜態(tài)顯示,它們各自有各自的優(yōu)點。方案一:動態(tài)顯示。如圖2.3所示,動態(tài)顯示是應(yīng)用非常常見的顯示模式,主要在單片機上應(yīng)用,動態(tài)顯示主要利用人眼的視覺暫留,只要延時時間足夠短,就能夠使得數(shù)碼的顯示看起來非常的穩(wěn)定清楚。這種方法應(yīng)用在很多地方,大部分的電子器件的現(xiàn)實設(shè)備都是采用動態(tài)顯示,由于刷新頻率高,人眼幾乎不能分辨出它在閃爍,由于頻率在變,不是一直供電,所以功耗會降低很多,但與靜態(tài)的led現(xiàn)實比起來,亮度不夠。當(dāng)verilog hdl設(shè)計顯示器時,采用動態(tài)顯示的源代碼設(shè)計

33、就比較繁瑣,需要設(shè)計狀態(tài)機。給設(shè)計帶來一定的工作量。方案二:靜態(tài)顯示。靜態(tài)顯示和動態(tài)顯示正好相反,它一直亮著,所以亮度高、功耗相對高。同時在用verilog hdl設(shè)計的時候,非常簡單,所以采用靜態(tài)顯示來做led的現(xiàn)實方案。顯示控制模塊圖2.2 動態(tài)顯示原理圖顯示控制模塊 圖2.3 靜態(tài)顯示原理圖如圖2.2是動態(tài)顯示原理圖,下面的兩條線是控制led數(shù)碼管工作與否的顯示,當(dāng)要求左面那個數(shù)碼管顯示的時候,連接左面數(shù)碼管的控制線設(shè)置為有效,右面的數(shù)碼管連接線設(shè)置為無效,左面的led數(shù)碼管就會顯示相應(yīng)的數(shù)字,同理要求右邊的數(shù)碼管顯示,右邊的控制線設(shè)置有效。輸入的數(shù)據(jù)和控制線同時變化。如圖2.3所示,是

34、靜態(tài)顯示原理圖,代碼直接傳送給led數(shù)碼管,直接在上面顯示相應(yīng)的數(shù)據(jù)。這樣編程設(shè)計簡單,容易實現(xiàn),易于理解。2.2.3 貨幣輸入信號設(shè)計方案 在設(shè)計自動售貨機的過程中,投幣是采用電平觸發(fā)的方式,為了防止系統(tǒng)錯誤是認為多次投幣,造成誤差。需要設(shè)計一個貨幣投入輸入信號的處理,使之無論投幣產(chǎn)生電平的時間多長,只產(chǎn)生一個和clk信號周期一樣的高電平。 clk in out 圖2.4 投幣輸入信號處理理想波形圖如圖2.4,采用clk上升沿觸發(fā)的方式,在clk是上升沿時,在判斷是in高電平時,是則out就產(chǎn)生一個和clk一個周期的高電平。2.2.4 出貨顯示設(shè)計方案 由于使用de2的開發(fā)板,當(dāng)出貨時,用l

35、ed數(shù)碼顯示器顯示何種貨物輸出,就需要一個譯碼器,產(chǎn)生可以識別的數(shù)字。如出貨物a、b、c、d、e,就在led數(shù)碼顯示器上,對應(yīng)顯示1、2、3、4、5,如圖2.5所示。貨物顯示譯碼器貨物a 貨物b 貨物c 貨物d 貨物e 圖2.5 出貨顯示譯碼器原理圖第三章 系統(tǒng)的軟件設(shè)計3.1 eda工具軟件介紹eda (electronic design automation) 是電子設(shè)計自動化縮寫,是90年代初從cad(計算機輔助設(shè)計).cam(計算機輔助制造).cat(計算機輔助測試)和cae(計算機輔助工程)的概念發(fā)展而來的。eda技術(shù)是以計算機為工具,根據(jù)硬件描述語言hdl(hardware des

36、cription language)完成的設(shè)計文件,自動地完成邏輯編譯、化簡、分割、綜合及優(yōu)化、布局布線、仿真以及對于特定目標芯片的適配編譯和編程下載等工作。典型的eda工具中必須包含兩個特殊的軟件包,即綜合器和適配器。綜合器的功能就是將設(shè)計者在eda平臺上完成的針對某個系統(tǒng)項目的hdl.原理圖或狀態(tài)圖形描述,針對給定的硬件系統(tǒng)組件,進行編譯、優(yōu)化、轉(zhuǎn)換和綜合,最終獲得我們欲實現(xiàn)功能的描述文件。基于eda工具的fpga開發(fā)流程:1.文本/原理圖編輯與修改。首先利用eda工具的文本或圖形編輯器將設(shè)計者的設(shè)計意圖用文本或圖形方式表達出來。2.編譯。完成設(shè)計描述后即可通過編譯器進行排錯編譯,變成特定

37、的文本格式,為下一步的綜合做準備。3.綜合。這是將軟件設(shè)計與硬件的可實現(xiàn)性掛鉤,是將軟件轉(zhuǎn)化為硬件電路的關(guān)鍵步驟。綜合后hdl綜合器可生成enif.xnf或vhdl等格式的網(wǎng)表文件,從門級開始描述了最基本的門電路結(jié)構(gòu)。4.適配。利用fpga/cpld布局布線適配器將綜合后的網(wǎng)表文件針對某一具體的目標器件進行邏輯映射操作,其中包括底層器件配置。邏輯分割。邏輯優(yōu)化。布局布線。該操作完成后,eda軟件將產(chǎn)生針對此項設(shè)計的適配報告和jed下載文件等多項結(jié)果。適配報告指明了芯片內(nèi)資源的分配與利用。引腳鎖定。設(shè)計的布爾方程描述情況。5.功能仿真和時序仿真。該不仿真實接近真實器件運行的方針,仿真過程已將器件

38、的硬件特性考慮進去了,因此仿真精度要高的多。6.下載。如果以上的所有過程都沒有發(fā)現(xiàn)問題,就可以將適配器產(chǎn)生的下載文件通過fpga/cpld下載電纜載入目標芯片fpga或cpld中。7.硬件仿真與測試。quartus ii軟件可以在xp、linux以及unix上使用,除了可以使用tcl腳本完成設(shè)計流程外,提供了完善的用戶圖形界面設(shè)計方式。具有運行速度快,界面統(tǒng)一,功能集中,易學(xué)易用等特點。verilog hdl的最大特點就是易學(xué)易用,如果有c語言的編程經(jīng)驗,可以在一個較短的時間內(nèi)很快的學(xué)習(xí)和掌握,因而可以把verilog hdl內(nèi)容安排在與asic設(shè)計等相關(guān)課程內(nèi)部進行講授,由于hdl語言本身是

39、專門面向硬件與系統(tǒng)設(shè)計的,這樣的安排可以使學(xué)習(xí)者同時獲得設(shè)計實際電路的經(jīng)驗。與之相比,vhdl的學(xué)習(xí)要困難一些。3.2 軟件設(shè)計總方案 自動售貨機主要利用有限狀態(tài)機(fsm)的狀態(tài)改變來進行工作,所以需要編寫一個實現(xiàn)自動售貨機的基本功能的一個主程序,并且封裝成一個芯片的符號,但是要想在de2板子上能夠?qū)崿F(xiàn),還需要一些其他的程序,并且封裝成芯片的符號,用原理圖方式連接后,來輔助完成自動售貨機的功能。主程序輸出的是bcd碼,當(dāng)需要led數(shù)碼管顯示出能夠識別的數(shù)字的時候,需要bcd碼led七段數(shù)碼顯示譯碼器。在判斷撥動開關(guān)的時候,電平輸入的時間很長,但是由于clk脈沖信號很快,這樣就會在一個電平輸入

40、的時候,系統(tǒng)會誤判投入很多次貨幣,避免這樣的問題,我們還需要加上key一個這樣的程序,無論撥動開關(guān)撥動后,停留的時間有多長,只產(chǎn)生和clk脈沖周期一樣的高電平。由于clk脈沖信號很快,輸出貨物的時候,產(chǎn)生一個脈沖,但是clk的脈沖高達50mhz,人眼根本無法識別。所以加上一個譯碼器,讓它顯示數(shù)字,代表出了何種貨物出貨判斷譯碼器 售貨機主程序led七段數(shù)碼顯示譯碼器輸入處理程序key 如圖3.1 系統(tǒng)設(shè)計總原理圖設(shè)計方案3.3 售貨機主芯片程序設(shè)計方案開始各個寄存器清零數(shù)據(jù)初始化進入貨物選擇狀態(tài)進入投幣出貨狀態(tài)進入找零狀態(tài)貨物選擇?出貨找零?零錢找完?如先投錢y余額大于或等于商品價格時候出貨ny

41、yynnn 圖3.2 自動售貨機主芯片程序流程圖如圖3.2自動售貨機主芯片流程圖,程序開始后,先將各個寄存器清零數(shù)據(jù)初始化。進入貨物選擇狀態(tài),判斷是否選擇了貨物,如果沒有選擇貨物,返回貨物選擇狀態(tài)。如果選擇了貨物,進入投幣出貨狀態(tài)。如果先投入了貨幣,直接進入找零狀態(tài),否則返回貨物選擇狀態(tài);在進入投幣出貨狀態(tài)時,余額大于或等于商品的價格時出貨。判斷是否要找錢,如果是則進入找錢狀態(tài),否則返回投幣出貨狀態(tài);進入找零狀態(tài),判斷零錢是否都找完,如果找完進入選擇貨物狀態(tài),否則返回找零狀態(tài)。在程序設(shè)計的時候,在程序的開始把各個寄存器都清零,數(shù)據(jù)初始化。采用always過程語句,always ( posedg

42、e clk ) 在clk上升沿觸發(fā),在每次上升沿來臨時,就執(zhí)行一次begin到end之間的程序,這樣適合用來狀態(tài)機在各個狀態(tài)的循環(huán)。同時,需要設(shè)計一個復(fù)位鍵,使在復(fù)位后,各個寄存器都清零,這樣在程序啟動后,在取完一次貨物后,按復(fù)位鍵,又能使各個狀態(tài)都恢復(fù)到初始狀態(tài)。 在開始的狀態(tài)(即start)選擇貨物的狀態(tài)下,當(dāng)先投幣的時候,應(yīng)該把投入的錢退出來。所有就需要有設(shè)置兩個條件語句,當(dāng)選擇貨物時,進入process(即投幣找零狀態(tài))狀態(tài)。當(dāng)如果投幣的時候,則進入change(即找零狀態(tài))。當(dāng)選擇貨物的時候用if( ia | ib | ic | id | ie )和如果投幣則用else if( iy

43、 | iwj | iyj )這樣就可以把他們選擇貨物和投入錢幣分開,|是邏輯或的意思,再選擇貨物后,就進入將相應(yīng)貨物的價格放到一個寄存器price上,同時出貨物的狀態(tài)也給product這個寄存器上。如果選擇了貨物,就再下個process狀態(tài)。如果輸入了貨幣,寄存器count就相應(yīng)加上貨幣的面額,直接跳到找零change狀態(tài)上,進行找零。case( state )start: begincount = 0; next = start; product = 0;if( ia | ib | ic | id | ie )begin if( ia ) begin price = a; product =

44、 5b00001;endelse if( ib ) begin price = b; product = 5b00010;endelse if( ic ) begin price = c; product = 5b00100;endelse if( id ) begin price = d; product = 5b01000;endelse( ie ) begin price = e; product = 5b10000;endnext = process;end elseif( iy | iwj | iyj )beginif( iy )count7:4 = 1;else if( iwj )

45、 count3:0 = 5; else ( iyj ) count3:0 = 1;next = change;endend 當(dāng)進入process狀態(tài)時,首先要判斷是否有貨幣投入,如果有貨幣投入,則記錄下投幣的金額。如投入一元,再count7:4加1,count7:4代表以元為單位進行計數(shù),如果投入五角count4:0加1,count4:0如果超過9,count4:0就加6,count7:4加1,當(dāng)投入1角時,count4:0如果等于9時,count4:0就等于0,而count7:4加1。這樣就完成了進位。當(dāng)選擇找零in時,就自動跳入change找零狀態(tài)。如果當(dāng)count7:0上面的錢超過了9.

46、9元的時候。系統(tǒng)會自動把最后一次投入的錢幣退出來即overflow=1;同時在跳到找零change狀態(tài)。如果投入的金額等于選中貨物的價格的時候,出貨同時把count7:0清零。當(dāng)count大于選中商品的價格時,出貨同時減去貨物的價錢即count = count - price;再跳到change狀態(tài)。如果當(dāng)金額小于貨物的價格的時候,就會在process狀態(tài)自跳,等待在投幣,直至滿足以上的狀態(tài)。begin next = process; if( in )next = change; if( iy ) count7:4 = count7:4 + 1; if( iwj )begincount3:0

47、= count3:0 + 5;if( count3:0 9 ) begin count3:0 = count3:0 + 6;count7:4 = count7:4 + 1; end endif( iyj ) beginif( count3:0 = 9 )begincount3:0 = 0;count7:4 = count7:4 + 1; endelse count3:0 = count3:0 + 1;end if (count8h99) begin overflow=1; next=change; se, sd, sc, sb, sa =5b00000; price=0; yuan=0; ji

48、ao=0; endelse if( count = price )begin se, sd, sc, sb, sa = product; next=start; endelse if (countprice)begin se, sd, sc, sb, sa = product; if ( count3:0 0 ) beginyuan = 1; count7:4 = count7:4 - 1; end if( count3:0 0 ) beginjiao = 1; count3:0 = count3:0 - 1;end end3.4 bcd-led七段數(shù)碼顯示譯碼器 bcd-led七段數(shù)碼顯示譯

49、碼器主要是把余額通過led數(shù)碼顯示器顯示出來,這個程序主要把bcd碼在led顯示器變成我們可以識別的數(shù)字。顯示0-9的十個數(shù)字。采用低電平有效,在低電平時相應(yīng)的led上的燈亮。開始當(dāng)有輸入bcd碼輸入時轉(zhuǎn)變成led顯示的數(shù)字結(jié)束 圖3.3 bcd-led七段數(shù)碼顯示譯碼器軟件流程圖module decode47( in, out ); input3:0 in; output6:0 out; reg6:0 out; always ( in ) begin case(in)4b0000:out = 7b1000000; /顯示04b0001:out = 7b1111001;/ 顯示14b0010:out = 7b0100100;/顯示24b0011:out = 7b0110000;/顯示34b0100:out = 7b0011001;/顯示44b0101:out = 7b0010010;/顯示54b0110:out = 7b0000010;/顯示64b0111:out = 7b1111000;/顯示74b100

溫馨提示

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

最新文檔

評論

0/150

提交評論