畢業(yè)論文-基于FPGA的投幣式多功能充電器控制電路設(shè)計(jì)與實(shí)現(xiàn)_第1頁
畢業(yè)論文-基于FPGA的投幣式多功能充電器控制電路設(shè)計(jì)與實(shí)現(xiàn)_第2頁
畢業(yè)論文-基于FPGA的投幣式多功能充電器控制電路設(shè)計(jì)與實(shí)現(xiàn)_第3頁
畢業(yè)論文-基于FPGA的投幣式多功能充電器控制電路設(shè)計(jì)與實(shí)現(xiàn)_第4頁
畢業(yè)論文-基于FPGA的投幣式多功能充電器控制電路設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、大連東軟信息學(xué)院畢業(yè)設(shè)計(jì)(論文) 摘要大連東軟信息學(xué)院本科畢業(yè)設(shè)計(jì)(論文)論文題目論文題目:基于FPGA的投幣式多功能充電器控制電路設(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ì)(論文) Abstract I基于FPGA的投幣式多功能充電器控制電路設(shè)計(jì)與實(shí)現(xiàn)摘 要隨著科學(xué)技術(shù)的發(fā)展,大量使用電池供電的便攜式電子產(chǎn)品進(jìn)入人們的日常生活中,如手機(jī)、數(shù)碼相

2、機(jī)、MP3等。這些電子產(chǎn)品給我們帶來了各種娛樂方式。但這些設(shè)備維持其功能性的關(guān)鍵在于自身電量的充足。充電器恰好能夠提高用電設(shè)備的續(xù)航能力。因此,設(shè)計(jì)一款投幣式多功能充電器顯的尤為重要。本文介紹的就是基于FPGA的投幣式多功能充電器控制電路設(shè)計(jì),功能是對投幣器檢測到的錢幣信息進(jìn)行計(jì)數(shù),并通過金額情況進(jìn)行對外充電電路的控制。主要模塊包括:投幣金額計(jì)數(shù)模塊、信息顯示控制模塊、充電計(jì)時(shí)控制模塊等。采用兩位數(shù)碼管顯示投幣數(shù)和倒計(jì)時(shí)的相關(guān)信息。該系統(tǒng)的控制電路基于FPGA,利用verilog HDL硬件描述語言實(shí)現(xiàn)。使用Quartus 軟件進(jìn)行設(shè)計(jì),運(yùn)用ModelSim就行仿真驗(yàn)證看是否達(dá)到預(yù)期功能。最終

3、借助開發(fā)板就行功能演示。關(guān)鍵詞:FPGA,投幣式,充電器Design of Coin Multi-function Charger Control Circuit Based on FPGAAbstractWith the science and technology developing, battery-powered portable electronic products come out, such as cell phone, digital camera, mp3 etc .We have colorful life because of using electronic pro

4、ducts .But we must ensure have good batteries in our portable electronic products. Using chargers can solve the problem. Therefore ,Its important that to design Coin multi-function charger .The paper is mainly about the design of coin multi-function charger control circuit. It contains with some mod

5、ules like Amount of coin counting module, Information display control module, charging controlling, charging timing control module, etc .Using nixietubes to displays relevantinformation.The design is based on FPGA and used verilog language. Using Quartus software to carry on the design .Using ModelS

6、im simulation to test the desired function .Finally Demofunctionality with the help of development board.Key words: FPGA,Coin,Charger大連東軟信息學(xué)院畢業(yè)設(shè)計(jì)(論文) 目錄目 錄 TOC o 1-3 u 摘 要 PAGEREF _Toc387691814 h IIAbstract PAGEREF _Toc387691815 h III第1章 緒論 PAGEREF _Toc387691816 h 11.1 背景和意義 PAGEREF _Toc387691817 h

7、11.2 目前蓄電池的現(xiàn)狀 PAGEREF _Toc387691818 h 11.3 電池發(fā)展趨勢 PAGEREF _Toc387691819 h 1第2章關(guān)鍵技術(shù)介紹 PAGEREF _Toc387691820 h 32.1關(guān)鍵性開發(fā)技術(shù)的介紹 PAGEREF _Toc387691821 h 32.1.1FPGA技術(shù) PAGEREF _Toc387691822 h 32.1.2Verilog HDL語言 PAGEREF _Toc387691823 h 32.1.3按鍵消抖技術(shù) PAGEREF _Toc387691824 h 32.1.4時(shí)鐘分頻技術(shù) PAGEREF _Toc387691825

8、 h 52.1.5數(shù)碼管顯示原理 PAGEREF _Toc387691826 h 52.2 開發(fā)軟件 PAGEREF _Toc387691827 h 62.2.1 QuartusII PAGEREF _Toc387691828 h 72.2.2ModelSim PAGEREF _Toc387691829 h 72.2.3 Microsoft Office Visio PAGEREF _Toc387691830 h 8第3章系統(tǒng)需求分析 PAGEREF _Toc387691831 h 93.1 構(gòu)架概述 PAGEREF _Toc387691832 h 93.2系統(tǒng)工作流程 PAGEREF _To

9、c387691833 h 103.3 系統(tǒng)設(shè)計(jì)方法 PAGEREF _Toc387691834 h 113.4系統(tǒng)設(shè)計(jì)的技術(shù)可行性分析 PAGEREF _Toc387691835 h 11第4章系統(tǒng)設(shè)計(jì) PAGEREF _Toc387691836 h 134.1 設(shè)計(jì)指導(dǎo)思想和原則 PAGEREF _Toc387691837 h 134.2 系統(tǒng)設(shè)計(jì)流程 PAGEREF _Toc387691838 h 134.3數(shù)據(jù)通道的設(shè)計(jì) PAGEREF _Toc387691839 h 144.4狀態(tài)轉(zhuǎn)換圖 PAGEREF _Toc387691840 h 154.5系統(tǒng)結(jié)構(gòu)圖 PAGEREF _Toc38

10、7691841 h 16第5章系統(tǒng)實(shí)現(xiàn) PAGEREF _Toc387691842 h 175.1 主要模塊的實(shí)現(xiàn) PAGEREF _Toc387691843 h 175.1.1時(shí)鐘分頻模塊 PAGEREF _Toc387691844 h 175.1.2控制充電電路模塊 PAGEREF _Toc387691845 h 175.1.3顯示模塊 PAGEREF _Toc387691846 h 185.1.4系統(tǒng)整體實(shí)現(xiàn) PAGEREF _Toc387691847 h 195.2 系統(tǒng)的代碼實(shí)現(xiàn) PAGEREF _Toc387691848 h 205.2.1時(shí)鐘模塊代碼實(shí)現(xiàn) PAGEREF _Toc

11、387691849 h 205.2.2控制模塊代碼實(shí)現(xiàn) PAGEREF _Toc387691850 h 205.2.3信息顯示控制模塊 PAGEREF _Toc387691851 h 23第6章系統(tǒng)測試 PAGEREF _Toc387691852 h 246.1 模塊仿真測試 PAGEREF _Toc387691853 h 246.1.1時(shí)鐘分頻模塊測試 PAGEREF _Toc387691854 h 246.1.2控制模塊測試 PAGEREF _Toc387691855 h 246.1.3顯示模塊測試 PAGEREF _Toc387691856 h 256.1.4系統(tǒng)整體測試 PAGEREF

12、 _Toc387691857 h 25第7章結(jié)論 PAGEREF _Toc387691858 h 27參考文獻(xiàn) PAGEREF _Toc387691861 h 28致 謝 PAGEREF _Toc387691862 h 30大連東軟信息學(xué)院畢業(yè)設(shè)計(jì)(論文)- 第1章 緒論1.1 背景和意義隨著越來越多的便攜式電器的出現(xiàn),對電池的續(xù)航能力要求也越來越高,為了解決這個(gè)問題各大電子公司都采取了各種方法,例如:優(yōu)化系統(tǒng)軟件,加強(qiáng)對新型電池的開發(fā)研究等。但如今電池的發(fā)展遠(yuǎn)達(dá)不到用戶的需求。在以快節(jié)奏生活為主的今天,在某些特殊的場合,人們總是被突如其來的電池沒電的問題帶來了很大的困擾,因此,在一些公共場合

13、投幣式多功能充電器的出現(xiàn)就顯的很有必要。本文論述的基于FPGA的投幣式多功能充電器控制電路設(shè)計(jì)正是基于以上社會(huì)背景。利用FPGA的優(yōu)越性設(shè)計(jì)一款方便、實(shí)用的充電器控制電路。該款充電器可適用于各種公共場合,通過投幣充電的方式解決手機(jī)等電子設(shè)備在急需使用的過程中出現(xiàn)了電池沒電的現(xiàn)象。1.2 目前蓄電池的現(xiàn)狀HYPERLINK /SEARCH/ART/%BB%AF%D1%A7%B5%E7%D4%B4.HTM化學(xué)電源是人類目前可以利用的HYPERLINK /SEARCH/ART/%B8%DF%D0%A7%C4%DC%D4%B4.HTM高效能源之一。HYPERLINK /SEARCH/ART/%D0%E

14、E%B5%E7%B3%D8.HTM蓄電池也稱作二次電源,它是一種把化學(xué)反應(yīng)所釋放出來的能量直接轉(zhuǎn)變成直流電能的裝置。近幾十年來,由于交通、通訊、計(jì)算機(jī)產(chǎn)業(yè)的高速發(fā)展,其產(chǎn)品系列、產(chǎn)品種類、產(chǎn)品性能發(fā)生了巨大變化,以此滿足不同用途的需要。目前,蓄電池主要應(yīng)用于各種車輛、船舶、飛機(jī)等內(nèi)燃機(jī)的起動(dòng)以及照明、蓄能、不間斷電源、移動(dòng)通訊、便攜式電動(dòng)工具、電動(dòng)玩具當(dāng)中。常用的蓄電池有鉛酸蓄電池、鎘鎳蓄電池、鐵鎳蓄電池、金屬氧化物蓄電池、鋅銀蓄電池、鋅鎳蓄電池、氫鎳蓄電池、鋰離子蓄電池等?,F(xiàn)在市場上的電池主要有鎳鎘電池、鎳氫電池和鋰電池。便攜式電子產(chǎn)品目前主要采用鎳鎘電池和鎳氫電池。鎳鎘電池價(jià)格低廉,但其體

15、積較大,而且受記憶效應(yīng)影響;鎳氫電池的性能比較好,但是壽命較短,價(jià)格也較高。鋰離子電池的性能最好,價(jià)格昂貴。所以就目前看來電池的更新遠(yuǎn)遠(yuǎn)達(dá)不到人類的需求,所以充電器的普及就變的很有必要了。1.3 電池發(fā)展趨勢盡管在相比其它種類的電池,鋰電池的性能最好,但是隨著電子產(chǎn)品的高度集成化,便攜式電子產(chǎn)品成為市場主流,人們?nèi)找孀非蠊δ軓?qiáng)大體積輕便的電子設(shè)備,這對電池的續(xù)航能力提出了更高的要求。顯然,鋰電池的續(xù)航能力并不能滿足人們的要求。隨著科學(xué)的社會(huì)的發(fā)展,科學(xué)的進(jìn)步,電池的發(fā)展也在不斷的進(jìn)步,目前微型固體分子燃料電池的研發(fā)進(jìn)行的如火如荼。大連東軟信息學(xué)院畢業(yè)設(shè)計(jì)(論文)第2章關(guān)鍵技術(shù)介紹2.1關(guān)鍵性開

16、發(fā)技術(shù)的介紹在本次設(shè)計(jì)的過程中,運(yùn)用到了許多專業(yè)知識(shí),也用到了較多的專業(yè)軟件,下面就對本次設(shè)計(jì)中涉及到的一些關(guān)鍵技術(shù)及相關(guān)軟件進(jìn)行簡要介紹。2.1.1FPGA技術(shù)FPGA(Field Programmable Gate Array)中文名稱現(xiàn)場可編程門陣列,它的主要組成部分為:可配置邏輯模塊HYPERLINK /wiki/CLB o CLBCLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和內(nèi)部連線(HYPERLINK /wiki/interconnect t _blank o interconnectinterconnect

17、)三個(gè)部分。一個(gè)FPGA中包含著許多的邏輯門、HYPERLINK /view/6159.htm t _blank寄存器和I/O接口資源。一片F(xiàn)PGAHYPERLINK /view/26651.htm t _blank芯片所能設(shè)計(jì)實(shí)現(xiàn)的系統(tǒng)可堪比數(shù)百片甚至更多標(biāo)準(zhǔn)的數(shù)字集成電路所實(shí)現(xiàn)的系統(tǒng)。FPGA的結(jié)構(gòu)十分靈活,用戶可通過對HYPERLINK /view/1520672.htm t _blank邏輯單元的編程、內(nèi)部連線的編程和I/O單元的編程,實(shí)現(xiàn)使用者所需要的邏輯功能,達(dá)到設(shè)計(jì)者的各種預(yù)期設(shè)計(jì)目標(biāo)。其主要的優(yōu)點(diǎn)有:運(yùn)行的速度快,功能消耗低,有極強(qiáng)的通用性,因而在復(fù)雜系統(tǒng)的設(shè)計(jì)中很受設(shè)計(jì)者的歡

18、迎。其次, 現(xiàn)場可編程門陣列還可以進(jìn)行動(dòng)態(tài)配置、在線系統(tǒng)重新組構(gòu)(可以在系統(tǒng)工作運(yùn)行的各個(gè)不同時(shí)間段,按設(shè)計(jì)者的需要對電路的功能就行重新修改,使系統(tǒng)具備多種與空間或時(shí)間相關(guān)的任務(wù))和硬件軟化、軟件硬化等功能。于此同時(shí),F(xiàn)PGA還可以使硬件的功能都用軟件來代替,也可以用軟件來實(shí)現(xiàn)硬件才能實(shí)現(xiàn)的功能。總的來說它是一款半定制的電路,在專用集成電路(ASIC)領(lǐng)域中得到了廣泛的應(yīng)用,既有效的解決了定制電路的一些缺點(diǎn),又克服了原有可編程邏輯器件門電路數(shù)量有限的缺點(diǎn)。在本次設(shè)計(jì)中就是基于FPGA進(jìn)行設(shè)計(jì)的。2.1.2Verilog HDL語言Verilog HDL是HYPERLINK /view/2527

19、8.htm t _blank硬件描述語言的一種硬件描述語音(HDL:Hardware Description Language),它以HYPERLINK /view/5777152.htm t _blank文本形式來描述HYPERLINK /view/987445.htm t _blank數(shù)字系統(tǒng)硬件的結(jié)構(gòu)和行為,用它可以表示邏輯電路圖、HYPERLINK /view/3524173.htm t _blank邏輯表達(dá)式,還可以表示HYPERLINK /view/494470.htm t _blank數(shù)字邏輯系統(tǒng)所完成的邏輯功能。使用Verilog描述硬件的基本設(shè)計(jì)單元是模塊(module)。設(shè)

20、計(jì)功能復(fù)雜的電子電路時(shí),主要是通過模塊的相互連接調(diào)用來實(shí)現(xiàn)的。模塊被包含在關(guān)鍵字module、endmodule之內(nèi)。Verilog語音中的模塊與C語言中的函數(shù)類似,它夠提供輸入、輸出端口,通過實(shí)例化調(diào)用其他模塊,也可以被其他模塊實(shí)例調(diào)用。設(shè)計(jì)模塊中可以包括組合邏輯部分、過程時(shí)序部分。2.1.3按鍵消抖技術(shù) 通常的按鍵大多數(shù)使用的是機(jī)械彈性開關(guān),其工作原理是機(jī)械觸點(diǎn)具有彈性作用,讓機(jī)械觸點(diǎn)打開、關(guān)閉。但是按鍵開關(guān)在關(guān)閉的時(shí)候不可能馬上就穩(wěn)定地接通,當(dāng)然在斷開時(shí)也不可能馬上實(shí)現(xiàn)斷開。所以在開關(guān)在打開和關(guān)閉的那一瞬間都會(huì)有一連串的抖動(dòng)的現(xiàn)象出現(xiàn),為了不產(chǎn)生這種現(xiàn)象而采取的措施就是按鍵消抖。如圖2.

21、1所示消抖是為了避免在按鍵按下或是抬起時(shí)電平劇烈抖動(dòng)帶來的影響。按鍵如果不消除抖動(dòng),那么檢測到的低電平的次數(shù)就不止一次,那我們按鍵一次,會(huì)檢測到多次,這是我們不希望看到的。在按鍵閉合達(dá)到穩(wěn)定的狀態(tài)時(shí)再讀取按鍵這是的狀態(tài),而且必須判別到安鍵釋放達(dá)到穩(wěn)定之后再進(jìn)行處理。 圖2.1按鍵示意圖按鍵的消抖方法,可以分為硬件或軟件兩種方法。在按鍵數(shù)較少情況下可采用硬件方法消除鍵抖動(dòng)。如圖2.2所示,是采用RS觸發(fā)器常用的硬件去抖方法。眾所周知,RS觸發(fā)器是由兩個(gè)與非門電路構(gòu)成的。當(dāng)按鍵沒有按下時(shí),電路輸出的結(jié)果是0;當(dāng)鍵按下的時(shí)候,其輸出的結(jié)果是1。這時(shí)按鍵的機(jī)械性能就發(fā)揮了作用,讓按鍵因彈性抖動(dòng)而產(chǎn)生瞬

22、間的斷開(抖動(dòng)跳開B),但是要確保按鍵不能回到A的原始狀態(tài),從而使得雙穩(wěn)態(tài)電路的狀態(tài)不發(fā)生改變,保持輸出為0,因此產(chǎn)生的波形不可能帶抖動(dòng)。換句話來說,即使在B點(diǎn)產(chǎn)生了抖動(dòng)的電壓波形,但經(jīng)過雙穩(wěn)態(tài)電路處理之后,其輸出的矩形波是正規(guī)的。 圖2.2硬件消抖示意圖如果按鍵的數(shù)量相對較多,那么經(jīng)常采用軟件的方法去實(shí)現(xiàn)消抖,具體方法是檢測到按鍵閉合信號(hào)后執(zhí)行一個(gè)延時(shí)程序,一般為5ms10ms的延時(shí),讓前沿抖動(dòng)消失后再一次檢測按鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認(rèn)為真正有鍵按下。當(dāng)檢測到按鍵釋放后,也要給5ms10ms的延時(shí),待后沿抖動(dòng)消失后才能轉(zhuǎn)入該鍵的處理程序。一般來說,軟件消抖的方法是不斷檢測按鍵

23、值,直到按鍵值穩(wěn)定。實(shí)現(xiàn)方法:假設(shè)未按鍵時(shí)輸入1,按鍵后輸入為0,抖動(dòng)時(shí)不定??梢宰鲆韵聶z測:檢測到按鍵輸入為0之后,延時(shí)5ms10ms,再次檢測,如果按鍵還為0,那么就認(rèn)為有按鍵輸入。延時(shí)的5ms10ms恰好避開了抖動(dòng)期。在本次設(shè)計(jì)中,本文采用的是Verilog HDL語言實(shí)現(xiàn)按鍵消抖。2.1.4時(shí)鐘分頻技術(shù)傳統(tǒng)頻率源一般只提供單一頻率,而且是由HYPERLINK /search?word=%E7%9F%B3%E8%8B%B1%E6%99%B6%E6%8C%AF&fr=qb_search_exp&ie=utf8 t _blank石英晶振器(Quartz Crystal OSC)通過振蕩產(chǎn)生,

24、體積大成本高不方便并且只能產(chǎn)生單一頻率;但是目前大多數(shù)HYPERLINK /search?word=%E7%94%B5%E5%AD%90%E7%B3%BB%E7%BB%9F&fr=qb_search_exp&ie=utf8 t _blank電子電路系統(tǒng)都要求有多種不同的頻率,以滿足設(shè)計(jì)中的不各種不同要求,并且很多器件或者是電路對頻率都一定的要求,它們只能在規(guī)定范圍的頻率信號(hào)下正常工作,這時(shí)就需要用HYPERLINK /search?word=%E5%88%86%E9%A2%91&fr=qb_search_exp&ie=utf8 t _blank分頻的技術(shù)對HYPERLINK /search?w

25、ord=%E6%97%B6%E9%92%9F%E9%A2%91%E7%8E%87&fr=qb_search_exp&ie=utf8 t _blank時(shí)鐘頻率進(jìn)行多樣的化分HYPERLINK /search?word=%E5%88%86%E9%A2%91&fr=qb_search_exp&ie=utf8 t _blank了,以滿足各種器件和電路正常工作的需求。一個(gè)數(shù)字系統(tǒng)中往往需要多種頻率的時(shí)鐘脈沖作為驅(qū)動(dòng)源,所以在FPGA中FPGA時(shí)鐘分頻使用的比較頻繁,在設(shè)計(jì)中,設(shè)計(jì)者通過分析在設(shè)計(jì)中所需要的時(shí)鐘頻率對FPGA的系統(tǒng)時(shí)鐘進(jìn)行頻率處理,使之達(dá)到原來的1/N倍頻率,以滿足設(shè)計(jì)的需要。分頻器主要的

26、類型可分為偶數(shù)分頻、奇數(shù)分頻、半整數(shù)分頻和小數(shù)分頻,如果在設(shè)計(jì)過程中采用參數(shù)化設(shè)計(jì),就可以隨時(shí)改變參量以得到不同的分頻需要。在對時(shí)鐘要求不是很嚴(yán)格的FPGA系統(tǒng)中,分頻通常都是通過計(jì)數(shù)器的循環(huán)計(jì)數(shù)來實(shí)現(xiàn)的。2.1.5數(shù)碼管顯示原理在FPGA開發(fā)板中,我們最常用的是顯示器件就是七段式或八段式LED數(shù)碼顯示管,它們兩者之間的區(qū)別就是八段比七段多了一個(gè)小數(shù)點(diǎn),其它的基本相同。所謂的八段就是指在數(shù)碼管里有八個(gè)發(fā)光的LED二極管,用戶通過定義控制不同的LED的亮和滅將所需的字形顯示出來。除此之外,數(shù)碼管又分為共陰極和共陽極兩種類型,其實(shí)共陰極就是將八個(gè)LED的陰極連在一起,讓它們接地,這樣給任何一個(gè)LE

27、D的另一端高電平,它便能點(diǎn)亮。而共陽極就是將八個(gè)LED的陽極連在一起。其原理圖如圖2.3所示。圖2.3數(shù)碼管原理示意圖其中引腳圖的兩個(gè)COM端連在一起,是公共端,共陰極數(shù)碼管要將其接地,共陽極數(shù)碼管將其接正5伏的電源。一個(gè)八段數(shù)碼管稱為一位,多個(gè)數(shù)碼管并列在一起可構(gòu)成多位數(shù)碼管,它們的段選線(即a,b,c,d,e,f,g,dp)連在一起,而各自的公共端稱為位選線。顯示時(shí),都從段選線送入字符編碼,而選中哪個(gè)位選線,那個(gè)數(shù)碼管便會(huì)被點(diǎn)亮。數(shù)碼管的8段,對應(yīng)一個(gè)字節(jié)的8位,a對應(yīng)最低位,dp對應(yīng)最高位。所以如果想讓數(shù)碼管顯示數(shù)字0,那么共陰數(shù)碼管的字符編碼為00111111,即0 x3f;共陽數(shù)碼管

28、的字符編碼為11000000,即0 xc0??梢钥闯鰞蓚€(gè)編碼的各位正好相反。如圖2.4所示。圖2.4數(shù)碼管示意圖2.2 開發(fā)軟件在本次設(shè)計(jì)中,我們運(yùn)用到了幾款專業(yè)的設(shè)計(jì)、仿真及畫圖軟件,它們的運(yùn)用給本次設(shè)計(jì)提供了極大的方便,對設(shè)計(jì)的成功完成起著關(guān)鍵性的作用。下面便對本次設(shè)計(jì)中,運(yùn)用到的相關(guān)開發(fā)軟件進(jìn)行簡要描述。2.2.1 QuartusIIQuartus II軟件是由Altera公司開發(fā)的一款軟件,該軟件功能強(qiáng)大,支持多種形式的設(shè)計(jì)輸入,例如VHDL、Verilog HDL以及AHDL(Altera Hardware Description Language)等,內(nèi)嵌綜合器以及仿真器,可以完成

29、從設(shè)計(jì)輸入到硬件配置的完整PLD設(shè)計(jì)流程。其次,它的兼容性是極強(qiáng)的,可以在多種操作系統(tǒng)下工作,例如windowXP、window7、Linux以及Unix等,在設(shè)計(jì)流程中,不僅可以使用TelHYPERLINK /view/54.htm t _blank腳本完成,而且還提供了完善的用戶圖形界面設(shè)計(jì)方式。最為重要的是它的運(yùn)行速度快,界面統(tǒng)一,功能集中,易學(xué)易用。QuartusII支持器件的數(shù)量也是極為可觀的,它支持Altera公司的一系列器件。用戶可以充分利用成熟的模塊,簡化設(shè)計(jì)的復(fù)雜程度、加快設(shè)計(jì)速度。Altera Quartus II作為一種可編程邏輯的設(shè)計(jì)環(huán)境,由于其強(qiáng)大的設(shè)計(jì)功能,受到數(shù)字

30、系統(tǒng)設(shè)計(jì)者廣泛的歡迎。作為一款廣受好評(píng)的可編程邏輯設(shè)計(jì)軟件,它主要功能及特點(diǎn)如下:首先它提供了完全集成的且與電路結(jié)構(gòu)無關(guān)的開發(fā)包環(huán)境,包括了數(shù)字邏輯設(shè)計(jì)中的全部,其中包括:可利用原理圖、結(jié)構(gòu)圖、VerilogHDL、AHDL和VHDL完成電路描述,并將其保存為設(shè)計(jì)實(shí)體文件。對電路芯片平面布局連線的編輯,并且內(nèi)置了強(qiáng)大的邏輯綜合工具。其次,它的仿真功能也不可忽略,它能對電路功能與時(shí)序邏輯進(jìn)行仿真。再者,軟件還具有一定的分析能力,可以對定時(shí)/時(shí)序與關(guān)鍵路徑延時(shí)進(jìn)行分析;使用組合編譯方式可以一次性完成整體設(shè)計(jì)流程,是一種高效的器件編程與驗(yàn)證工具;除此之外,QuartusII也可以支持第三方EDA工具

31、,對第三方EDA工具的良好支持也使用戶可以在設(shè)計(jì)流程的各個(gè)階段使用熟悉的第三放EDA工具。例如,生成EDA軟件使用的VHDL網(wǎng)表文件和Verilog網(wǎng)表文件。2.2.2ModelSimModelSim是由HYPERLINK /view/1667387.htm t _blankMentor公司推出的一款HYPERLINK /view/561380.htm t _blank仿真軟件,目前在業(yè)界被稱為最優(yōu)秀的硬件語言HYPERLINK /view/561380.htm t _blank仿真軟件,它能提供良好的仿真環(huán)境, 它支持HYPERLINK /view/2375980.htm t _blank單

32、內(nèi)核的VHDL和Verilog混合仿真的HYPERLINK /view/557623.htm t _blank仿真軟件,這點(diǎn)在業(yè)界來說是唯一的。它采用直接優(yōu)化的HYPERLINK /view/553519.htm t _blank編譯技術(shù)、Tcl/Tk技術(shù)、和單一內(nèi)核仿真技術(shù),具有編譯仿真速度快的特點(diǎn),其次,它與編譯的代碼和平臺(tái)無關(guān),這便于保護(hù)IP核。軟件具有個(gè)性化的圖形界面和HYPERLINK /view/1309799.htm t _blank用戶接口,為用戶加快調(diào)錯(cuò)提供強(qiáng)有力的手段,是FPGA/HYPERLINK /view/3080633.htm t _blankASIC設(shè)計(jì)的首選HY

33、PERLINK /view/561380.htm t _blank仿真軟件。作為一款優(yōu)秀的語言仿真軟件,它可以對RTL和門級(jí)進(jìn)行優(yōu)化,可以HYPERLINK /view/5708679.htm t _blank本地編譯結(jié)構(gòu),也可以跨平臺(tái)跨版本仿真,而且編譯仿真速度快。在軟件中還可以對HYPERLINK /view/60376.htm t _blank源代碼模版進(jìn)行管理及修改其次,軟件集成了眾多調(diào)試功能,其中包括:HYPERLINK /view/2466792.htm t _blank性能的分析、波形的比較、代碼覆蓋、數(shù)據(jù)流ChaseX、Signal Spy、虛擬對象Virtual Object

34、、Memory窗口、Assertion窗口、源碼窗口顯示信號(hào)值、信號(hào)條件HYPERLINK /view/278359.htm t _blank斷點(diǎn)等;除此之外,軟件對System C的直接支持,和HDL任意混合,支持HYPERLINK /view/842700.htm t _blankSystemVerilog的設(shè)計(jì),對系統(tǒng)級(jí)描述語言有最全面的支持,可以單獨(dú)或同時(shí)進(jìn)行行為(behavioral)、RTL級(jí)、和門級(jí)(gate-level)的代碼都是Modelsim顯著的優(yōu)點(diǎn)。在本次設(shè)計(jì)中,就是運(yùn)用該款軟件對設(shè)計(jì)進(jìn)行仿真,以驗(yàn)證功能的正確性。2.2.3 Microsoft Office Visio

35、Office Visio是一款功能強(qiáng)大的繪圖軟件,主要針對于IT和商務(wù)人員對復(fù)雜的信息、系統(tǒng)和流程進(jìn)行可視化處理、分析和交流。Microsoft Office Visio能創(chuàng)建具有專業(yè)外觀圖表,能記錄分析信息、數(shù)據(jù)、系統(tǒng)和過程。Visio與其他圖形軟件相比具有更高的可視性與直觀性,并且操作簡單對使用者無技能基礎(chǔ)要求。應(yīng)用此軟件,可以繪制多種圖表,例如組織結(jié)構(gòu)圖、日程表、狀態(tài)圖、流程圖等。在本次項(xiàng)目設(shè)計(jì)過程中,通過Visio可以方便快捷的繪制完成了系統(tǒng)流程圖、數(shù)據(jù)通道圖和狀態(tài)機(jī)等各種圖形的繪制工作。第3章系統(tǒng)需求分析3.1 構(gòu)架概述投幣式多功能充電器控制電路可以基于FPGA技術(shù)利用verilog

36、語言在Quartus開發(fā)環(huán)境中設(shè)計(jì)實(shí)現(xiàn)。該控制電路可以通過對投幣數(shù)量的多少的控制對充電時(shí)間進(jìn)行控制,并顯示相關(guān)信息。主要模塊包括:投幣金額計(jì)數(shù)模塊、信息顯示控制模塊、充電計(jì)時(shí)控制模塊、控制模塊,如圖3.1所示。 圖3.1功能模塊示意圖投幣金額計(jì)數(shù)模塊主要實(shí)現(xiàn)的功能是記錄使用者投放的硬幣數(shù)量,來確定充電模塊對充電電池進(jìn)行相應(yīng)時(shí)間的充電。信息顯示控制模塊主要實(shí)現(xiàn)的功能是利用數(shù)碼管來顯示投幣的數(shù)量、充電時(shí)間等信息,給使用者傳達(dá)一系列反饋信息,以達(dá)到人機(jī)互動(dòng)的目的。充電計(jì)時(shí)控制模塊主要功能是通過對使用者投幣數(shù)量的多少確定并控制充電時(shí)間。控制模塊主要功能是收集各模塊的信息,進(jìn)行處理,再根據(jù)處理結(jié)果給對應(yīng)

37、模塊下達(dá)下一步指示。特殊情況下,當(dāng)按下確認(rèn)健時(shí),即充電已經(jīng)開始,硬幣不能再投入,即便再投入,系統(tǒng)不累計(jì)金額,數(shù)碼管不再顯示投幣金額的增加,而顯示充電時(shí)間。3.2系統(tǒng)工作流程在設(shè)計(jì)的前期明確系統(tǒng)工作的流程至關(guān)重要,系統(tǒng)流程圖能表現(xiàn)出系統(tǒng)的工作流程,表達(dá)系統(tǒng)的流動(dòng)情況,是在對整個(gè)系統(tǒng)有一定的認(rèn)識(shí)后做出的。通過該圖能看出系統(tǒng)的合理性,明確設(shè)計(jì)目標(biāo),是設(shè)計(jì)前期的必要步驟。下圖便是本次設(shè)計(jì)的系統(tǒng)工作流程圖。 圖3.2系統(tǒng)流程圖如圖3.2所示,當(dāng)系統(tǒng)正常工作時(shí),首先進(jìn)入等待狀態(tài),等待用戶進(jìn)行投幣。在用戶進(jìn)行投幣行為后,系統(tǒng)判斷所投硬幣金額,當(dāng)確定為五角時(shí),系統(tǒng)計(jì)數(shù)加一,當(dāng)判斷所投硬幣為一元時(shí),計(jì)數(shù)加二。然

38、后進(jìn)入下一狀態(tài),用戶確定是否投幣結(jié)束,如果用戶未按確定鍵,則系統(tǒng)跳回等待投幣狀態(tài),表示可以繼續(xù)投幣,用戶可以繼續(xù)投幣,系統(tǒng)將繼續(xù)記錄投幣金額,如果用戶按下確定鍵,則表示投幣結(jié)束,進(jìn)入下一狀態(tài)及開始充電。此時(shí),用戶將無法繼續(xù)投幣。當(dāng)充電開始后,通過數(shù)碼顯示管顯示充電時(shí)間,以判斷是否充電結(jié)束,當(dāng)充電結(jié)束后,清除本次充電所記錄數(shù)據(jù),返回等待狀態(tài)。3.3 系統(tǒng)設(shè)計(jì)方法 數(shù)字系統(tǒng)的設(shè)計(jì)方法通常分為兩大類,分別是:自上而下設(shè)計(jì)和自下而上設(shè)計(jì)。一般自上而下的設(shè)計(jì)是從系統(tǒng)級(jí)開始設(shè)計(jì)的,首先,將系統(tǒng)劃分為若干個(gè)基本單元,然后每個(gè)在對基本單元進(jìn)行劃分為下一層次的若干基本單元,以此類推。從某種意義上來講,自下而上的

39、設(shè)計(jì)過程可以看作是自上而下設(shè)計(jì)的逆過程。同樣自下而上設(shè)計(jì)也是從系統(tǒng)級(jí)開始的,就是從設(shè)計(jì)的最底層開始對整個(gè)設(shè)計(jì)進(jìn)行逐次劃分,但是值得注意的是設(shè)計(jì)必須從已經(jīng)存在的基本單元出發(fā),所以在劃分的同時(shí)首先要考慮的是基本單元是否存在。最終我們要實(shí)現(xiàn)設(shè)計(jì)最底層的單元是已經(jīng)制造出來的單元,或者是已開發(fā)好的單元再或者是可以通過外購得到的基本單元。自下而上設(shè)計(jì)的基本流程:首先在劃分完模塊之后,獨(dú)立設(shè)計(jì)每個(gè)子模塊,設(shè)計(jì)完成后,在對設(shè)計(jì)好的模塊進(jìn)行優(yōu)化處理。然后在頂層的設(shè)計(jì)中集成所有已經(jīng)優(yōu)化好的子模塊,最后進(jìn)行總體設(shè)計(jì)的驗(yàn)證。在綜合和優(yōu)化之后將每個(gè)子模塊具有的單獨(dú)的網(wǎng)表整合在頂層的設(shè)計(jì)中。這樣在頂層模塊設(shè)計(jì)中,各個(gè)子模

40、塊之間的性能都不會(huì)相互影響。與此同時(shí),由于在高層次進(jìn)行設(shè)計(jì)的主要仿真和調(diào)試過程,所以能夠及時(shí)的發(fā)現(xiàn)結(jié)構(gòu)設(shè)計(jì)上的錯(cuò)誤,減少了設(shè)計(jì)工作的浪費(fèi),同時(shí)又減少了模塊邏輯仿真的工作量。本次設(shè)計(jì)使用的就是自上而下的設(shè)計(jì)方法。 3.4系統(tǒng)設(shè)計(jì)的技術(shù)可行性分析本文采用的設(shè)計(jì)思想是自上而下的設(shè)計(jì)思路,從系統(tǒng)級(jí)設(shè)計(jì)入手。首先對頂層進(jìn)行功能劃分和結(jié)構(gòu)模塊的設(shè)計(jì)。在完成對整個(gè)系統(tǒng)有一定的認(rèn)識(shí)后,開始著手整體流程圖的設(shè)計(jì)。首先明確系統(tǒng)的工作流程,畫出工作流程圖。然后,通過對工作流程圖的提煉和分析設(shè)計(jì)出相應(yīng)的數(shù)據(jù)通道和控制單元。數(shù)據(jù)通道的各個(gè)模塊包括:數(shù)據(jù)選擇模塊、累加器模塊、譯碼器模塊、寄存器模塊、計(jì)數(shù)器模塊、比較器模塊

41、、減法器模塊等??刂茊卧糠滞ㄟ^有限狀態(tài)機(jī)來設(shè)計(jì)實(shí)現(xiàn),合理設(shè)計(jì)各個(gè)狀態(tài)的控制及轉(zhuǎn)移??刂茊卧l(fā)送數(shù)據(jù)通道所需的控制信號(hào),接收來自數(shù)據(jù)通道的狀態(tài)信號(hào),監(jiān)控整個(gè)系統(tǒng)的運(yùn)行;數(shù)據(jù)通道接受并處理來自控制單元的控制信號(hào),并把處理的結(jié)果反饋給控制單元。此外,利用Altera公司開發(fā)的Quartus軟件,對每個(gè)模塊進(jìn)行設(shè)計(jì)。然后通過仿真軟件ModelSim對設(shè)計(jì)的各個(gè)模塊進(jìn)行仿真測試,確保整個(gè)設(shè)計(jì)的順利進(jìn)行。最后利用FPGA開發(fā)板進(jìn)行功能測試,并且不斷地進(jìn)行優(yōu)化。第4章系統(tǒng)設(shè)計(jì)4.1 設(shè)計(jì)指導(dǎo)思想和原則 本課題是基于FPGA的投幣式多功能充電器控制電路設(shè)計(jì)。該電路的設(shè)計(jì)基于FPGA利用verilog硬件描述

42、語音實(shí)現(xiàn),系統(tǒng)根據(jù)數(shù)字系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)的基本流程及基本規(guī)則采用由上而下的設(shè)計(jì)方法進(jìn)行設(shè)計(jì),主要流程包括對整體流程圖的設(shè)計(jì)、數(shù)據(jù)通道和控制單元的設(shè)計(jì)、利用硬件描述語音及Verilog語言描述實(shí)現(xiàn)、最后通過ModelSim仿真軟件對各個(gè)模塊和整體系統(tǒng)進(jìn)行功能仿真,并在設(shè)計(jì)過程中不斷的進(jìn)行優(yōu)化。4.2 系統(tǒng)設(shè)計(jì)流程本次設(shè)計(jì)基本按照以下流程進(jìn)行,如圖4.1所示圖4.1 項(xiàng)目設(shè)計(jì)流程(1)規(guī)劃與設(shè)計(jì)階段充分合理的規(guī)劃設(shè)計(jì)對一個(gè)項(xiàng)目及時(shí)如質(zhì)如量完成具有不可忽視的作用,設(shè)計(jì)者必須做好前期各項(xiàng)準(zhǔn)備,包括了解該設(shè)計(jì)的背景環(huán)境、開發(fā)軟硬件等。明確設(shè)計(jì)所需實(shí)現(xiàn)的功能。對設(shè)計(jì)所需用到的方法及各項(xiàng)知識(shí)做出歸納。(2)數(shù)據(jù)

43、通道及狀態(tài)機(jī)的設(shè)計(jì)數(shù)據(jù)通道與狀態(tài)機(jī)的設(shè)計(jì)能很好的體現(xiàn)出設(shè)計(jì)的思路,能初步看出設(shè)計(jì)的可行性。(3)模塊劃分在對設(shè)計(jì)整體有了深入的了解后對系統(tǒng)結(jié)構(gòu)進(jìn)行優(yōu)化,決定系統(tǒng)模塊組成部分并且確定各個(gè)模塊已經(jīng)具備的各種功能。(4)代碼編寫根據(jù)前期的設(shè)計(jì)與優(yōu)化后,利用verilog硬件描述語言對各個(gè)模塊就行描述。(5)功能仿真在完成代碼的編寫過程后,就進(jìn)入到測試仿真階段,利用ModelSim工具進(jìn)行邏輯測試與仿真,確保設(shè)計(jì)正確性,功能的完整性。(6)開發(fā)板驗(yàn)證 基于FPGA特點(diǎn),利用開發(fā)板模擬實(shí)現(xiàn)設(shè)計(jì),驗(yàn)證預(yù)期目標(biāo)是否實(shí)現(xiàn)。4.3數(shù)據(jù)通道的設(shè)計(jì)數(shù)據(jù)通道大致能表現(xiàn)出系統(tǒng)的實(shí)現(xiàn)思路,是設(shè)計(jì)環(huán)節(jié)中最為重要的步驟之一。

44、下圖便是本次設(shè)計(jì)中的數(shù)據(jù)通道。通過該圖可以基本看出,本次設(shè)計(jì)的設(shè)計(jì)思路。 圖4.2數(shù)據(jù)通道圖如圖4.2所示,首先當(dāng)有投幣信號(hào)進(jìn)入時(shí),通過一個(gè)選擇器input_m判斷硬幣金額,然后在確定投幣金額后通過譯碼器decoder將所投幣的金額轉(zhuǎn)換為時(shí)間,這個(gè)時(shí)間就是充電時(shí)間,將時(shí)間信號(hào)分別送給一個(gè)寄存器Reg_time和減法器Sub,然后減法器通過周期為1S的時(shí)鐘對所等數(shù)據(jù)進(jìn)行逐一遞減,然后通過數(shù)碼顯示管顯示充電信息。其次,循環(huán)計(jì)數(shù)器Time_counter與Reg_time中的時(shí)間進(jìn)行比對,通過比較器Time_equal比對,當(dāng)兩者數(shù)值相等是,則表示充電完成,然后輸出充電完成信號(hào),反之充電未完成。模塊

45、圖詳細(xì)端口說明見表4.1表4.1 端口說明表信號(hào)名稱I/O功能描述Input_1I輸入一元按鍵Input_5I輸入五角按鍵OutO輸出投幣金額Charge_timeI充電時(shí)間Data_timeO/I充電時(shí)間ClkI時(shí)鐘RstI復(fù)位En2I使能Clear2I清除Data_counterO/I充電計(jì)數(shù)EqualityO比較En2I使能Led_inI數(shù)碼管輸入Led_outO數(shù)碼管輸出4.4狀態(tài)轉(zhuǎn)換圖狀態(tài)轉(zhuǎn)換圖,它表現(xiàn)的是系統(tǒng)中各個(gè)狀態(tài)的互相轉(zhuǎn)換及轉(zhuǎn)換所需要的條件??刂茊卧l(fā)送數(shù)據(jù)通道所需的控制信號(hào),接收來自數(shù)據(jù)通道的狀態(tài)信號(hào),對整個(gè)系統(tǒng)的運(yùn)行進(jìn)行監(jiān)控,以保證系統(tǒng)的正常運(yùn)行。這是設(shè)計(jì)環(huán)節(jié)中極為重要和

46、關(guān)鍵的步驟。下圖便是本次設(shè)計(jì)中的狀態(tài)轉(zhuǎn)換圖。圖4.3狀態(tài)轉(zhuǎn)換圖如圖4.3所示,idel狀態(tài):準(zhǔn)備狀態(tài)。投幣狀態(tài):等待投幣信號(hào),通過sum數(shù)值是否發(fā)生改變,判斷是否投幣以便進(jìn)入下一個(gè)狀態(tài)。在這個(gè)狀態(tài)中,首先有2個(gè)信號(hào)add1,add2。分別表示投入的是5角還是1元硬幣。當(dāng)檢測完所投硬幣的類型后,在將信號(hào)送給下一狀態(tài)。同時(shí),這個(gè)狀態(tài)中還要接收下一狀態(tài)傳來的信號(hào),已確定不投幣無效,即已經(jīng)開始充電,不在接受投幣。這一狀態(tài)當(dāng)接收到上以狀態(tài)發(fā)出的add1和add2后分別做出sum+1,sum+2的處理,然后還有一個(gè)確定投幣結(jié)束信號(hào),當(dāng)該信號(hào)有效時(shí),則跳轉(zhuǎn)到下一狀態(tài),并且將信號(hào)給予wait狀態(tài),然后進(jìn)入下一

47、狀態(tài)。充電狀態(tài):接受投幣結(jié)束信號(hào)后,開始充電。并通過計(jì)數(shù)器進(jìn)行充電計(jì)時(shí)。完成狀態(tài):當(dāng)充電時(shí)間結(jié)束后,發(fā)出結(jié)束信號(hào)給下一狀態(tài)。接受到充電完成信號(hào)后,數(shù)據(jù)清零,回到idle狀態(tài)。4.5系統(tǒng)結(jié)構(gòu)圖通過對設(shè)計(jì)的深入研究,對系統(tǒng)進(jìn)行一些列的優(yōu)化,最終確定系統(tǒng)的各個(gè)模塊及模塊功能。基本構(gòu)架分為三部分:計(jì)時(shí)鐘分頻模塊,充電控制模塊,最后是充電顯示模塊。詳細(xì)系統(tǒng)結(jié)構(gòu)框圖如圖4.4所示。圖4.4系統(tǒng)結(jié)構(gòu)框第5章系統(tǒng)實(shí)現(xiàn)5.1 主要模塊的實(shí)現(xiàn)在投幣式多功能充電器控制電路設(shè)計(jì)過程中,系統(tǒng)主要由三大模塊組成,分別為時(shí)鐘分頻模塊、控制充電電路模塊、顯示模塊。下面分別介紹一下這三大模塊。5.1.1時(shí)鐘分頻模塊如圖5.1所

48、示,根據(jù)設(shè)計(jì)所需,將原時(shí)鐘分成三種時(shí)鐘頻率,分別是1HZ、1000HZ、50HZ。1HZ的時(shí)鐘周期為1S的時(shí)鐘主要,用于倒計(jì)時(shí)。1000HZ的時(shí)鐘周期為1ms用于數(shù)碼管的顯示所需。50HZ的時(shí)鐘周期為20ms,用于控制電路充電模塊。時(shí)鐘分頻的本質(zhì)就是計(jì)數(shù)器記到一定的數(shù)值進(jìn)行一次反轉(zhuǎn)。所以一般用計(jì)數(shù)器實(shí)現(xiàn)分頻。在時(shí)鐘分頻模塊中,各個(gè)端口說明表見表5.1。圖5.1時(shí)鐘分頻模塊表5.1時(shí)鐘分頻模塊端口說明表端口I/O功能描述ClkI原始時(shí)鐘RstnI復(fù)位功能Clk 1O1HZ時(shí)鐘分頻Clk 1000O1000HZ時(shí)鐘分頻Clk 50O50HZ時(shí)鐘分頻5.1.2控制充電電路模塊控制充電模塊,是本次設(shè)計(jì)

49、中的核心模塊之一,由該模塊控制統(tǒng)計(jì)投幣數(shù)量的多少,及確定是否投幣完成,并由金額確定充電時(shí)間。在設(shè)計(jì)實(shí)現(xiàn)的該模塊的過程中,考慮到現(xiàn)實(shí)和實(shí)驗(yàn)之間的差別,特將1S看成1min,進(jìn)行設(shè)計(jì)。下這個(gè)模塊中,由于設(shè)計(jì)的需要,要使用到撥動(dòng)開關(guān),所以這里需要使用按鍵防抖技術(shù)。以確保按鍵功能的實(shí)現(xiàn)。各個(gè)端口的詳細(xì)說明見表5.2。圖5.2控制充電電路模塊表5.2控制充電電路模塊端口說明表端口I/O功能描述clkI原始時(shí)鐘rstnI復(fù)位信號(hào)Key in1I投幣五角按鍵Key in2I投幣一元按鍵Key in3I確定投幣按鍵Clk 50I50HZ時(shí)鐘Clk 1I1HZ時(shí)鐘Second 1O輸出秒的個(gè)位Second 2O

50、輸出秒的十位Cnt 1O統(tǒng)計(jì)五角投幣數(shù)量Cnt 22O統(tǒng)計(jì)一元投幣數(shù)量5.1.3顯示模塊顯示模塊是顯示投幣金額數(shù)量、充電時(shí)間的模塊,是本次設(shè)計(jì)的重要模塊之一。在顯示模塊中,使用數(shù)碼管顯示相關(guān)信息。各個(gè)端口的詳細(xì)說明見表5.3。圖5.3顯示模塊表5.3顯示模塊端口說明表端口名稱I/O功能說明ClkI原始時(shí)鐘Clk 1000I1000HZ時(shí)鐘rstnI復(fù)位信號(hào)Key in4I顯示切換Second 1I輸入秒的十位Second 2I輸入秒的十位Cnt1I統(tǒng)計(jì)投幣數(shù)量Cnt22I統(tǒng)計(jì)投幣數(shù)量rten_smg_dataO數(shù)碼管輸出sm_bit_rO數(shù)碼管輸出5.1.4系統(tǒng)整體實(shí)現(xiàn)在Quartus II軟

51、件中,通過添加頂層文件與各模塊之間連接上,形成完整系統(tǒng)。系統(tǒng)整體實(shí)現(xiàn)如圖5.4所示。圖5.4項(xiàng)目整體RTL綜合5.2 系統(tǒng)的代碼實(shí)現(xiàn)5.2.1時(shí)鐘模塊代碼實(shí)現(xiàn)時(shí)鐘分頻的本質(zhì)就是計(jì)數(shù)器記到一定的數(shù)值就進(jìn)行一次翻轉(zhuǎn),所以在verilog語音中用計(jì)數(shù)器實(shí)現(xiàn)時(shí)鐘分頻。具體代碼如下。always ( posedge clk or negedge rstn )if( !rstn )count1 = 26d0;else if( count1 = HZ_1 )count1 = 26d0;elsecount1 = count1 + 1b1;always ( posedge clk or negedge rstn

52、 )if( !rstn )count2 = 20d0;else if( count2 = HZ_50 )count2 = 20d0;elsecount2 = count2 + 1b1;always ( posedge clk or negedge rstn )if( !rstn )count3 = 16d0;else if( count3 = HZ_1000 )count3 = 16d0;elsecount3 = count3 + 1b1;5.2.2控制模塊代碼實(shí)現(xiàn)在控制模塊中,由于系統(tǒng)后期利用FPGA開發(fā)板驗(yàn)證功能,用到了機(jī)械開關(guān),所以在這個(gè)模塊中運(yùn)用到了防抖技術(shù)。消抖是為了避免在按鍵按下或

53、是抬起時(shí) HYPERLINK /search?word=%E7%94%B5%E5%B9%B3&fr=qb_search_exp&ie=utf8 t _blank 電平劇烈抖動(dòng)帶來的影響。一般來說,軟件消抖的方法是不斷檢測按鍵值,直到按鍵值穩(wěn)定。實(shí)現(xiàn)方法:假設(shè)未按鍵時(shí)輸入1,按鍵后輸入為0,抖動(dòng)時(shí)不定??梢宰鲆韵聶z測:檢測到按鍵輸入為0之后,延時(shí)20ms,再次檢測,如果按鍵還為0,那么就認(rèn)為有按鍵輸入。在本次設(shè)計(jì)中,通過寄存器,將按鍵信號(hào)延時(shí)一個(gè)周期的方式,所用時(shí)鐘頻率為50HZ及20ms一個(gè)周期,延時(shí)的20ms恰好避開了抖動(dòng)期。從而實(shí)現(xiàn)按鍵的消抖。具體代碼如下。always (posedge

54、clk or negedge rstn) if (!rstn) low_sw1 = 1b1; else if( clk_50 ) low_sw1 = key_in1;always (posedge clk or negedge rstn)if (!rstn) low_sw2 = 1b1; else if( clk_50 ) low_sw2 = key_in2; always (posedge clk or negedge rstn) if (!rstn) low_sw3= 1b1; else if( clk_50 ) low_sw3 = key_in3; reg low_sw_r1; reg

55、low_sw_r2; reg low_sw_r3; always ( posedge clk or negedge rstn ) if (!rstn) low_sw_r1 = 1b1; else low_sw_r1 = low_sw1; always ( posedge clk or negedge rstn ) if (!rstn) low_sw_r2 = 1b1; else low_sw_r2 = low_sw2;always ( posedge clk or negedge rstn ) if (!rstn) low_sw_r3 = 1b1;else low_sw_r3 = low_sw

56、3;用硬件描述語言對狀態(tài)機(jī)進(jìn)行描述,具有一定靈活性,通過一些規(guī)范的描述風(fēng)格,我們可以使描述更加安全、規(guī)范。分段式是最為常用的一種方法。根據(jù)狀態(tài)機(jī)的三要素,我們知道對狀態(tài)機(jī)的描述,需要描述清楚三點(diǎn)關(guān)鍵內(nèi)容:第一,各個(gè)狀態(tài)的轉(zhuǎn)移情況;第二,每個(gè)狀態(tài)的輸出是信號(hào)什么;第三,各個(gè)狀態(tài)之間轉(zhuǎn)移所需要的相關(guān)條件。由于受可綜合條件的限制,描述方法一般分成三種:一段式,二段式及三段式。所謂的一段式,就是將整個(gè)狀態(tài)機(jī)寫在一個(gè)always模塊里,該模塊既描述了狀態(tài)的轉(zhuǎn)移又描述狀態(tài)的輸入和輸出。但這種方法往往缺乏條理,不便閱讀,不利于維護(hù)和修改,還經(jīng)常受到不可綜合的問題,所以不建議使用這種方法,一般推薦使用二段式或

57、三段式。所謂二段式,這種方法就是在用硬件描述語言描述時(shí)用兩個(gè)always模塊進(jìn)行描述,一個(gè)always模塊主要描述狀態(tài)轉(zhuǎn)移,可以采取同步時(shí)序的方法。而另一個(gè)always模塊則描述狀態(tài)轉(zhuǎn)移條件和狀態(tài)轉(zhuǎn)移的規(guī)律,在這個(gè)always模塊中一般采用組合邏輯的方式。而三段式描述方法是在兩段式描述方法的基礎(chǔ)上發(fā)展而來的,顧名思義,這種寫法就是利用三個(gè)always模塊對狀態(tài)機(jī)進(jìn)行描述,其中一個(gè)always模塊采用同步時(shí)序的方式對狀態(tài)轉(zhuǎn)移進(jìn)行描述;另一個(gè)always模塊采用組合邏輯的方式判斷狀態(tài)轉(zhuǎn)移所要的條件和描述狀態(tài)轉(zhuǎn)移規(guī)律;還有一個(gè)always模塊則使用同步時(shí)許電路描述每個(gè)狀態(tài)的輸出。在本次設(shè)計(jì)中采用二段

58、式描述方法。在控制模塊中通過狀態(tài)機(jī)控制投幣的次數(shù)(即投幣的金額)和充電的時(shí)間。具體代碼如下。case( state ) s0 : begin if( led_ctrl3 = 1 )state = s1;else state = s0;ends1 : begin state = s1;flag= 1;case( cnt_3 ) 5d1 : begincharge_time7:4= 4d0;charge_time3:0= 4d5;end5d2 : begincharge_time7:4= 4d1;charge_time3:0= 4d0;end5d3 : begincharge_time7:4= 4

59、d1;charge_time3:0= 4d5;end5d4 : begincharge_time7:4= 4d2;charge_time3:0= 4d0;end default : begincharge_time7:4=4d0;charge_time3:0=4d0;end endcase end default : begincharge_time = 4d0;state = s0;endendcase endreg 2:0 state_time;parameter s2 = 3d1, s3 = 3d2;always ( posedge clk or negedge rstn ) if( !

60、rstn ) begin second_1 = 4d0;second_2 = 4d0;state_time = s2;led = 0;endelse begincase( state_time ) s2 : beginif( flag = 1 )beginsecond_1 = charge_time7:4;second_2 = charge_time3:0 ;state_time = s3;endend s3: beginstate_time = s3;if( clk_1 ) beginif( second_2 != 4h0 ) beginsecond_2 = second_2 - 1b1;l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論