




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、大連東軟信息學院畢業(yè)設計(論文) 摘要大連東軟信息學院本科畢業(yè)設計(論文)論文題目論文題目:基于FPGA的投幣式多功能充電器控制電路設計與實現(xiàn)系 所: 電子工程系 專 業(yè):電子信息工程(集成電路設計與系統(tǒng)方向) 學生姓名: 學生學號: 指導教師: 導師職稱: 講 師 完成日期: 2014年 4月 28日 大連東軟信息學院Dalian Neusoft University of Information大連東軟信息學院畢業(yè)設計(論文) Abstract I基于FPGA的投幣式多功能充電器控制電路設計與實現(xiàn)摘 要隨著科學技術的發(fā)展,大量使用電池供電的便攜式電子產品進入人們的日常生活中,如手機、數(shù)碼相
2、機、MP3等。這些電子產品給我們帶來了各種娛樂方式。但這些設備維持其功能性的關鍵在于自身電量的充足。充電器恰好能夠提高用電設備的續(xù)航能力。因此,設計一款投幣式多功能充電器顯的尤為重要。本文介紹的就是基于FPGA的投幣式多功能充電器控制電路設計,功能是對投幣器檢測到的錢幣信息進行計數(shù),并通過金額情況進行對外充電電路的控制。主要模塊包括:投幣金額計數(shù)模塊、信息顯示控制模塊、充電計時控制模塊等。采用兩位數(shù)碼管顯示投幣數(shù)和倒計時的相關信息。該系統(tǒng)的控制電路基于FPGA,利用verilog HDL硬件描述語言實現(xiàn)。使用Quartus 軟件進行設計,運用ModelSim就行仿真驗證看是否達到預期功能。最終
3、借助開發(fā)板就行功能演示。關鍵詞: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大連東軟信息學院畢業(yè)設計(論文) 目錄目 錄 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章關鍵技術介紹 PAGEREF _Toc387691820 h 32.1關鍵性開發(fā)技術的介紹 PAGEREF _Toc387691821 h 32.1.1FPGA技術 PAGEREF _Toc387691822 h 32.1.2Verilog HDL語言 PAGEREF _Toc387691823 h 32.1.3按鍵消抖技術 PAGEREF _Toc387691824 h 32.1.4時鐘分頻技術 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 構架概述 PAGEREF _Toc387691832 h 93.2系統(tǒng)工作流程 PAGEREF _To
9、c387691833 h 103.3 系統(tǒng)設計方法 PAGEREF _Toc387691834 h 113.4系統(tǒng)設計的技術可行性分析 PAGEREF _Toc387691835 h 11第4章系統(tǒng)設計 PAGEREF _Toc387691836 h 134.1 設計指導思想和原則 PAGEREF _Toc387691837 h 134.2 系統(tǒng)設計流程 PAGEREF _Toc387691838 h 134.3數(shù)據(jù)通道的設計 PAGEREF _Toc387691839 h 144.4狀態(tài)轉換圖 PAGEREF _Toc387691840 h 154.5系統(tǒng)結構圖 PAGEREF _Toc38
10、7691841 h 16第5章系統(tǒng)實現(xiàn) PAGEREF _Toc387691842 h 175.1 主要模塊的實現(xiàn) PAGEREF _Toc387691843 h 175.1.1時鐘分頻模塊 PAGEREF _Toc387691844 h 175.1.2控制充電電路模塊 PAGEREF _Toc387691845 h 175.1.3顯示模塊 PAGEREF _Toc387691846 h 185.1.4系統(tǒng)整體實現(xiàn) PAGEREF _Toc387691847 h 195.2 系統(tǒng)的代碼實現(xiàn) PAGEREF _Toc387691848 h 205.2.1時鐘模塊代碼實現(xiàn) PAGEREF _Toc
11、387691849 h 205.2.2控制模塊代碼實現(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時鐘分頻模塊測試 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章結論 PAGEREF _Toc387691858 h 27參考文獻 PAGEREF _Toc387691861 h 28致 謝 PAGEREF _Toc387691862 h 30大連東軟信息學院畢業(yè)設計(論文)- 第1章 緒論1.1 背景和意義隨著越來越多的便攜式電器的出現(xiàn),對電池的續(xù)航能力要求也越來越高,為了解決這個問題各大電子公司都采取了各種方法,例如:優(yōu)化系統(tǒng)軟件,加強對新型電池的開發(fā)研究等。但如今電池的發(fā)展遠達不到用戶的需求。在以快節(jié)奏生活為主的今天,在某些特殊的場合,人們總是被突如其來的電池沒電的問題帶來了很大的困擾,因此,在一些公共場合
13、投幣式多功能充電器的出現(xiàn)就顯的很有必要。本文論述的基于FPGA的投幣式多功能充電器控制電路設計正是基于以上社會背景。利用FPGA的優(yōu)越性設計一款方便、實用的充電器控制電路。該款充電器可適用于各種公共場合,通過投幣充電的方式解決手機等電子設備在急需使用的過程中出現(xiàn)了電池沒電的現(xiàn)象。1.2 目前蓄電池的現(xiàn)狀HYPERLINK /SEARCH/ART/%BB%AF%D1%A7%B5%E7%D4%B4.HTM化學電源是人類目前可以利用的HYPERLINK /SEARCH/ART/%B8%DF%D0%A7%C4%DC%D4%B4.HTM高效能源之一。HYPERLINK /SEARCH/ART/%D0%E
14、E%B5%E7%B3%D8.HTM蓄電池也稱作二次電源,它是一種把化學反應所釋放出來的能量直接轉變成直流電能的裝置。近幾十年來,由于交通、通訊、計算機產業(yè)的高速發(fā)展,其產品系列、產品種類、產品性能發(fā)生了巨大變化,以此滿足不同用途的需要。目前,蓄電池主要應用于各種車輛、船舶、飛機等內燃機的起動以及照明、蓄能、不間斷電源、移動通訊、便攜式電動工具、電動玩具當中。常用的蓄電池有鉛酸蓄電池、鎘鎳蓄電池、鐵鎳蓄電池、金屬氧化物蓄電池、鋅銀蓄電池、鋅鎳蓄電池、氫鎳蓄電池、鋰離子蓄電池等?,F(xiàn)在市場上的電池主要有鎳鎘電池、鎳氫電池和鋰電池。便攜式電子產品目前主要采用鎳鎘電池和鎳氫電池。鎳鎘電池價格低廉,但其體
15、積較大,而且受記憶效應影響;鎳氫電池的性能比較好,但是壽命較短,價格也較高。鋰離子電池的性能最好,價格昂貴。所以就目前看來電池的更新遠遠達不到人類的需求,所以充電器的普及就變的很有必要了。1.3 電池發(fā)展趨勢盡管在相比其它種類的電池,鋰電池的性能最好,但是隨著電子產品的高度集成化,便攜式電子產品成為市場主流,人們日益追求功能強大體積輕便的電子設備,這對電池的續(xù)航能力提出了更高的要求。顯然,鋰電池的續(xù)航能力并不能滿足人們的要求。隨著科學的社會的發(fā)展,科學的進步,電池的發(fā)展也在不斷的進步,目前微型固體分子燃料電池的研發(fā)進行的如火如荼。大連東軟信息學院畢業(yè)設計(論文)第2章關鍵技術介紹2.1關鍵性開
16、發(fā)技術的介紹在本次設計的過程中,運用到了許多專業(yè)知識,也用到了較多的專業(yè)軟件,下面就對本次設計中涉及到的一些關鍵技術及相關軟件進行簡要介紹。2.1.1FPGA技術FPGA(Field Programmable Gate Array)中文名稱現(xiàn)場可編程門陣列,它的主要組成部分為:可配置邏輯模塊HYPERLINK /wiki/CLB o CLBCLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和內部連線(HYPERLINK /wiki/interconnect t _blank o interconnectinterconnect
17、)三個部分。一個FPGA中包含著許多的邏輯門、HYPERLINK /view/6159.htm t _blank寄存器和I/O接口資源。一片F(xiàn)PGAHYPERLINK /view/26651.htm t _blank芯片所能設計實現(xiàn)的系統(tǒng)可堪比數(shù)百片甚至更多標準的數(shù)字集成電路所實現(xiàn)的系統(tǒng)。FPGA的結構十分靈活,用戶可通過對HYPERLINK /view/1520672.htm t _blank邏輯單元的編程、內部連線的編程和I/O單元的編程,實現(xiàn)使用者所需要的邏輯功能,達到設計者的各種預期設計目標。其主要的優(yōu)點有:運行的速度快,功能消耗低,有極強的通用性,因而在復雜系統(tǒng)的設計中很受設計者的歡
18、迎。其次, 現(xiàn)場可編程門陣列還可以進行動態(tài)配置、在線系統(tǒng)重新組構(可以在系統(tǒng)工作運行的各個不同時間段,按設計者的需要對電路的功能就行重新修改,使系統(tǒng)具備多種與空間或時間相關的任務)和硬件軟化、軟件硬化等功能。于此同時,F(xiàn)PGA還可以使硬件的功能都用軟件來代替,也可以用軟件來實現(xiàn)硬件才能實現(xiàn)的功能??偟膩碚f它是一款半定制的電路,在專用集成電路(ASIC)領域中得到了廣泛的應用,既有效的解決了定制電路的一些缺點,又克服了原有可編程邏輯器件門電路數(shù)量有限的缺點。在本次設計中就是基于FPGA進行設計的。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)硬件的結構和行為,用它可以表示邏輯電路圖、HYPERLINK /view/3524173.htm t _blank邏輯表達式,還可以表示HYPERLINK /view/494470.htm t _blank數(shù)字邏輯系統(tǒng)所完成的邏輯功能。使用Verilog描述硬件的基本設計單元是模塊(module)。設
20、計功能復雜的電子電路時,主要是通過模塊的相互連接調用來實現(xiàn)的。模塊被包含在關鍵字module、endmodule之內。Verilog語音中的模塊與C語言中的函數(shù)類似,它夠提供輸入、輸出端口,通過實例化調用其他模塊,也可以被其他模塊實例調用。設計模塊中可以包括組合邏輯部分、過程時序部分。2.1.3按鍵消抖技術 通常的按鍵大多數(shù)使用的是機械彈性開關,其工作原理是機械觸點具有彈性作用,讓機械觸點打開、關閉。但是按鍵開關在關閉的時候不可能馬上就穩(wěn)定地接通,當然在斷開時也不可能馬上實現(xiàn)斷開。所以在開關在打開和關閉的那一瞬間都會有一連串的抖動的現(xiàn)象出現(xiàn),為了不產生這種現(xiàn)象而采取的措施就是按鍵消抖。如圖2.
21、1所示消抖是為了避免在按鍵按下或是抬起時電平劇烈抖動帶來的影響。按鍵如果不消除抖動,那么檢測到的低電平的次數(shù)就不止一次,那我們按鍵一次,會檢測到多次,這是我們不希望看到的。在按鍵閉合達到穩(wěn)定的狀態(tài)時再讀取按鍵這是的狀態(tài),而且必須判別到安鍵釋放達到穩(wěn)定之后再進行處理。 圖2.1按鍵示意圖按鍵的消抖方法,可以分為硬件或軟件兩種方法。在按鍵數(shù)較少情況下可采用硬件方法消除鍵抖動。如圖2.2所示,是采用RS觸發(fā)器常用的硬件去抖方法。眾所周知,RS觸發(fā)器是由兩個與非門電路構成的。當按鍵沒有按下時,電路輸出的結果是0;當鍵按下的時候,其輸出的結果是1。這時按鍵的機械性能就發(fā)揮了作用,讓按鍵因彈性抖動而產生瞬
22、間的斷開(抖動跳開B),但是要確保按鍵不能回到A的原始狀態(tài),從而使得雙穩(wěn)態(tài)電路的狀態(tài)不發(fā)生改變,保持輸出為0,因此產生的波形不可能帶抖動。換句話來說,即使在B點產生了抖動的電壓波形,但經過雙穩(wěn)態(tài)電路處理之后,其輸出的矩形波是正規(guī)的。 圖2.2硬件消抖示意圖如果按鍵的數(shù)量相對較多,那么經常采用軟件的方法去實現(xiàn)消抖,具體方法是檢測到按鍵閉合信號后執(zhí)行一個延時程序,一般為5ms10ms的延時,讓前沿抖動消失后再一次檢測按鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認為真正有鍵按下。當檢測到按鍵釋放后,也要給5ms10ms的延時,待后沿抖動消失后才能轉入該鍵的處理程序。一般來說,軟件消抖的方法是不斷檢測按鍵
23、值,直到按鍵值穩(wěn)定。實現(xiàn)方法:假設未按鍵時輸入1,按鍵后輸入為0,抖動時不定??梢宰鲆韵聶z測:檢測到按鍵輸入為0之后,延時5ms10ms,再次檢測,如果按鍵還為0,那么就認為有按鍵輸入。延時的5ms10ms恰好避開了抖動期。在本次設計中,本文采用的是Verilog HDL語言實現(xiàn)按鍵消抖。2.1.4時鐘分頻技術傳統(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)通過振蕩產生,
24、體積大成本高不方便并且只能產生單一頻率;但是目前大多數(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)都要求有多種不同的頻率,以滿足設計中的不各種不同要求,并且很多器件或者是電路對頻率都一定的要求,它們只能在規(guī)定范圍的頻率信號下正常工作,這時就需要用HYPERLINK /search?word=%E5%88%86%E9%A2%91&fr=qb_search_exp&ie=utf8 t _blank分頻的技術對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時鐘頻率進行多樣的化分HYPERLINK /search?word=%E5%88%86%E9%A2%91&fr=qb_search_exp&ie=utf8 t _blank了,以滿足各種器件和電路正常工作的需求。一個數(shù)字系統(tǒng)中往往需要多種頻率的時鐘脈沖作為驅動源,所以在FPGA中FPGA時鐘分頻使用的比較頻繁,在設計中,設計者通過分析在設計中所需要的時鐘頻率對FPGA的系統(tǒng)時鐘進行頻率處理,使之達到原來的1/N倍頻率,以滿足設計的需要。分頻器主要的
26、類型可分為偶數(shù)分頻、奇數(shù)分頻、半整數(shù)分頻和小數(shù)分頻,如果在設計過程中采用參數(shù)化設計,就可以隨時改變參量以得到不同的分頻需要。在對時鐘要求不是很嚴格的FPGA系統(tǒng)中,分頻通常都是通過計數(shù)器的循環(huán)計數(shù)來實現(xiàn)的。2.1.5數(shù)碼管顯示原理在FPGA開發(fā)板中,我們最常用的是顯示器件就是七段式或八段式LED數(shù)碼顯示管,它們兩者之間的區(qū)別就是八段比七段多了一個小數(shù)點,其它的基本相同。所謂的八段就是指在數(shù)碼管里有八個發(fā)光的LED二極管,用戶通過定義控制不同的LED的亮和滅將所需的字形顯示出來。除此之外,數(shù)碼管又分為共陰極和共陽極兩種類型,其實共陰極就是將八個LED的陰極連在一起,讓它們接地,這樣給任何一個LE
27、D的另一端高電平,它便能點亮。而共陽極就是將八個LED的陽極連在一起。其原理圖如圖2.3所示。圖2.3數(shù)碼管原理示意圖其中引腳圖的兩個COM端連在一起,是公共端,共陰極數(shù)碼管要將其接地,共陽極數(shù)碼管將其接正5伏的電源。一個八段數(shù)碼管稱為一位,多個數(shù)碼管并列在一起可構成多位數(shù)碼管,它們的段選線(即a,b,c,d,e,f,g,dp)連在一起,而各自的公共端稱為位選線。顯示時,都從段選線送入字符編碼,而選中哪個位選線,那個數(shù)碼管便會被點亮。數(shù)碼管的8段,對應一個字節(jié)的8位,a對應最低位,dp對應最高位。所以如果想讓數(shù)碼管顯示數(shù)字0,那么共陰數(shù)碼管的字符編碼為00111111,即0 x3f;共陽數(shù)碼管
28、的字符編碼為11000000,即0 xc0??梢钥闯鰞蓚€編碼的各位正好相反。如圖2.4所示。圖2.4數(shù)碼管示意圖2.2 開發(fā)軟件在本次設計中,我們運用到了幾款專業(yè)的設計、仿真及畫圖軟件,它們的運用給本次設計提供了極大的方便,對設計的成功完成起著關鍵性的作用。下面便對本次設計中,運用到的相關開發(fā)軟件進行簡要描述。2.2.1 QuartusIIQuartus II軟件是由Altera公司開發(fā)的一款軟件,該軟件功能強大,支持多種形式的設計輸入,例如VHDL、Verilog HDL以及AHDL(Altera Hardware Description Language)等,內嵌綜合器以及仿真器,可以完成
29、從設計輸入到硬件配置的完整PLD設計流程。其次,它的兼容性是極強的,可以在多種操作系統(tǒng)下工作,例如windowXP、window7、Linux以及Unix等,在設計流程中,不僅可以使用TelHYPERLINK /view/54.htm t _blank腳本完成,而且還提供了完善的用戶圖形界面設計方式。最為重要的是它的運行速度快,界面統(tǒng)一,功能集中,易學易用。QuartusII支持器件的數(shù)量也是極為可觀的,它支持Altera公司的一系列器件。用戶可以充分利用成熟的模塊,簡化設計的復雜程度、加快設計速度。Altera Quartus II作為一種可編程邏輯的設計環(huán)境,由于其強大的設計功能,受到數(shù)字
30、系統(tǒng)設計者廣泛的歡迎。作為一款廣受好評的可編程邏輯設計軟件,它主要功能及特點如下:首先它提供了完全集成的且與電路結構無關的開發(fā)包環(huán)境,包括了數(shù)字邏輯設計中的全部,其中包括:可利用原理圖、結構圖、VerilogHDL、AHDL和VHDL完成電路描述,并將其保存為設計實體文件。對電路芯片平面布局連線的編輯,并且內置了強大的邏輯綜合工具。其次,它的仿真功能也不可忽略,它能對電路功能與時序邏輯進行仿真。再者,軟件還具有一定的分析能力,可以對定時/時序與關鍵路徑延時進行分析;使用組合編譯方式可以一次性完成整體設計流程,是一種高效的器件編程與驗證工具;除此之外,QuartusII也可以支持第三方EDA工具
31、,對第三方EDA工具的良好支持也使用戶可以在設計流程的各個階段使用熟悉的第三放EDA工具。例如,生成EDA軟件使用的VHDL網表文件和Verilog網表文件。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、內核的VHDL和Verilog混合仿真的HYPERLINK /view/557623.htm t _blank仿真軟件,這點在業(yè)界來說是唯一的。它采用直接優(yōu)化的HYPERLINK /view/553519.htm t _blank編譯技術、Tcl/Tk技術、和單一內核仿真技術,具有編譯仿真速度快的特點,其次,它與編譯的代碼和平臺無關,這便于保護IP核。軟件具有個性化的圖形界面和HYPERLINK /view/1309799.htm t _blank用戶接口,為用戶加快調錯提供強有力的手段,是FPGA/HYPERLINK /view/3080633.htm t _blankASIC設計的首選HY
33、PERLINK /view/561380.htm t _blank仿真軟件。作為一款優(yōu)秀的語言仿真軟件,它可以對RTL和門級進行優(yōu)化,可以HYPERLINK /view/5708679.htm t _blank本地編譯結構,也可以跨平臺跨版本仿真,而且編譯仿真速度快。在軟件中還可以對HYPERLINK /view/60376.htm t _blank源代碼模版進行管理及修改其次,軟件集成了眾多調試功能,其中包括:HYPERLINK /view/2466792.htm t _blank性能的分析、波形的比較、代碼覆蓋、數(shù)據(jù)流ChaseX、Signal Spy、虛擬對象Virtual Object
34、、Memory窗口、Assertion窗口、源碼窗口顯示信號值、信號條件HYPERLINK /view/278359.htm t _blank斷點等;除此之外,軟件對System C的直接支持,和HDL任意混合,支持HYPERLINK /view/842700.htm t _blankSystemVerilog的設計,對系統(tǒng)級描述語言有最全面的支持,可以單獨或同時進行行為(behavioral)、RTL級、和門級(gate-level)的代碼都是Modelsim顯著的優(yōu)點。在本次設計中,就是運用該款軟件對設計進行仿真,以驗證功能的正確性。2.2.3 Microsoft Office Visio
35、Office Visio是一款功能強大的繪圖軟件,主要針對于IT和商務人員對復雜的信息、系統(tǒng)和流程進行可視化處理、分析和交流。Microsoft Office Visio能創(chuàng)建具有專業(yè)外觀圖表,能記錄分析信息、數(shù)據(jù)、系統(tǒng)和過程。Visio與其他圖形軟件相比具有更高的可視性與直觀性,并且操作簡單對使用者無技能基礎要求。應用此軟件,可以繪制多種圖表,例如組織結構圖、日程表、狀態(tài)圖、流程圖等。在本次項目設計過程中,通過Visio可以方便快捷的繪制完成了系統(tǒng)流程圖、數(shù)據(jù)通道圖和狀態(tài)機等各種圖形的繪制工作。第3章系統(tǒng)需求分析3.1 構架概述投幣式多功能充電器控制電路可以基于FPGA技術利用verilog
36、語言在Quartus開發(fā)環(huán)境中設計實現(xiàn)。該控制電路可以通過對投幣數(shù)量的多少的控制對充電時間進行控制,并顯示相關信息。主要模塊包括:投幣金額計數(shù)模塊、信息顯示控制模塊、充電計時控制模塊、控制模塊,如圖3.1所示。 圖3.1功能模塊示意圖投幣金額計數(shù)模塊主要實現(xiàn)的功能是記錄使用者投放的硬幣數(shù)量,來確定充電模塊對充電電池進行相應時間的充電。信息顯示控制模塊主要實現(xiàn)的功能是利用數(shù)碼管來顯示投幣的數(shù)量、充電時間等信息,給使用者傳達一系列反饋信息,以達到人機互動的目的。充電計時控制模塊主要功能是通過對使用者投幣數(shù)量的多少確定并控制充電時間??刂颇K主要功能是收集各模塊的信息,進行處理,再根據(jù)處理結果給對應
37、模塊下達下一步指示。特殊情況下,當按下確認健時,即充電已經開始,硬幣不能再投入,即便再投入,系統(tǒng)不累計金額,數(shù)碼管不再顯示投幣金額的增加,而顯示充電時間。3.2系統(tǒng)工作流程在設計的前期明確系統(tǒng)工作的流程至關重要,系統(tǒng)流程圖能表現(xiàn)出系統(tǒng)的工作流程,表達系統(tǒng)的流動情況,是在對整個系統(tǒng)有一定的認識后做出的。通過該圖能看出系統(tǒng)的合理性,明確設計目標,是設計前期的必要步驟。下圖便是本次設計的系統(tǒng)工作流程圖。 圖3.2系統(tǒng)流程圖如圖3.2所示,當系統(tǒng)正常工作時,首先進入等待狀態(tài),等待用戶進行投幣。在用戶進行投幣行為后,系統(tǒng)判斷所投硬幣金額,當確定為五角時,系統(tǒng)計數(shù)加一,當判斷所投硬幣為一元時,計數(shù)加二。然
38、后進入下一狀態(tài),用戶確定是否投幣結束,如果用戶未按確定鍵,則系統(tǒng)跳回等待投幣狀態(tài),表示可以繼續(xù)投幣,用戶可以繼續(xù)投幣,系統(tǒng)將繼續(xù)記錄投幣金額,如果用戶按下確定鍵,則表示投幣結束,進入下一狀態(tài)及開始充電。此時,用戶將無法繼續(xù)投幣。當充電開始后,通過數(shù)碼顯示管顯示充電時間,以判斷是否充電結束,當充電結束后,清除本次充電所記錄數(shù)據(jù),返回等待狀態(tài)。3.3 系統(tǒng)設計方法 數(shù)字系統(tǒng)的設計方法通常分為兩大類,分別是:自上而下設計和自下而上設計。一般自上而下的設計是從系統(tǒng)級開始設計的,首先,將系統(tǒng)劃分為若干個基本單元,然后每個在對基本單元進行劃分為下一層次的若干基本單元,以此類推。從某種意義上來講,自下而上的
39、設計過程可以看作是自上而下設計的逆過程。同樣自下而上設計也是從系統(tǒng)級開始的,就是從設計的最底層開始對整個設計進行逐次劃分,但是值得注意的是設計必須從已經存在的基本單元出發(fā),所以在劃分的同時首先要考慮的是基本單元是否存在。最終我們要實現(xiàn)設計最底層的單元是已經制造出來的單元,或者是已開發(fā)好的單元再或者是可以通過外購得到的基本單元。自下而上設計的基本流程:首先在劃分完模塊之后,獨立設計每個子模塊,設計完成后,在對設計好的模塊進行優(yōu)化處理。然后在頂層的設計中集成所有已經優(yōu)化好的子模塊,最后進行總體設計的驗證。在綜合和優(yōu)化之后將每個子模塊具有的單獨的網表整合在頂層的設計中。這樣在頂層模塊設計中,各個子模
40、塊之間的性能都不會相互影響。與此同時,由于在高層次進行設計的主要仿真和調試過程,所以能夠及時的發(fā)現(xiàn)結構設計上的錯誤,減少了設計工作的浪費,同時又減少了模塊邏輯仿真的工作量。本次設計使用的就是自上而下的設計方法。 3.4系統(tǒng)設計的技術可行性分析本文采用的設計思想是自上而下的設計思路,從系統(tǒng)級設計入手。首先對頂層進行功能劃分和結構模塊的設計。在完成對整個系統(tǒng)有一定的認識后,開始著手整體流程圖的設計。首先明確系統(tǒng)的工作流程,畫出工作流程圖。然后,通過對工作流程圖的提煉和分析設計出相應的數(shù)據(jù)通道和控制單元。數(shù)據(jù)通道的各個模塊包括:數(shù)據(jù)選擇模塊、累加器模塊、譯碼器模塊、寄存器模塊、計數(shù)器模塊、比較器模塊
41、、減法器模塊等。控制單元部分通過有限狀態(tài)機來設計實現(xiàn),合理設計各個狀態(tài)的控制及轉移。控制單元發(fā)送數(shù)據(jù)通道所需的控制信號,接收來自數(shù)據(jù)通道的狀態(tài)信號,監(jiān)控整個系統(tǒng)的運行;數(shù)據(jù)通道接受并處理來自控制單元的控制信號,并把處理的結果反饋給控制單元。此外,利用Altera公司開發(fā)的Quartus軟件,對每個模塊進行設計。然后通過仿真軟件ModelSim對設計的各個模塊進行仿真測試,確保整個設計的順利進行。最后利用FPGA開發(fā)板進行功能測試,并且不斷地進行優(yōu)化。第4章系統(tǒng)設計4.1 設計指導思想和原則 本課題是基于FPGA的投幣式多功能充電器控制電路設計。該電路的設計基于FPGA利用verilog硬件描述
42、語音實現(xiàn),系統(tǒng)根據(jù)數(shù)字系統(tǒng)設計和實現(xiàn)的基本流程及基本規(guī)則采用由上而下的設計方法進行設計,主要流程包括對整體流程圖的設計、數(shù)據(jù)通道和控制單元的設計、利用硬件描述語音及Verilog語言描述實現(xiàn)、最后通過ModelSim仿真軟件對各個模塊和整體系統(tǒng)進行功能仿真,并在設計過程中不斷的進行優(yōu)化。4.2 系統(tǒng)設計流程本次設計基本按照以下流程進行,如圖4.1所示圖4.1 項目設計流程(1)規(guī)劃與設計階段充分合理的規(guī)劃設計對一個項目及時如質如量完成具有不可忽視的作用,設計者必須做好前期各項準備,包括了解該設計的背景環(huán)境、開發(fā)軟硬件等。明確設計所需實現(xiàn)的功能。對設計所需用到的方法及各項知識做出歸納。(2)數(shù)據(jù)
43、通道及狀態(tài)機的設計數(shù)據(jù)通道與狀態(tài)機的設計能很好的體現(xiàn)出設計的思路,能初步看出設計的可行性。(3)模塊劃分在對設計整體有了深入的了解后對系統(tǒng)結構進行優(yōu)化,決定系統(tǒng)模塊組成部分并且確定各個模塊已經具備的各種功能。(4)代碼編寫根據(jù)前期的設計與優(yōu)化后,利用verilog硬件描述語言對各個模塊就行描述。(5)功能仿真在完成代碼的編寫過程后,就進入到測試仿真階段,利用ModelSim工具進行邏輯測試與仿真,確保設計正確性,功能的完整性。(6)開發(fā)板驗證 基于FPGA特點,利用開發(fā)板模擬實現(xiàn)設計,驗證預期目標是否實現(xiàn)。4.3數(shù)據(jù)通道的設計數(shù)據(jù)通道大致能表現(xiàn)出系統(tǒng)的實現(xiàn)思路,是設計環(huán)節(jié)中最為重要的步驟之一。
44、下圖便是本次設計中的數(shù)據(jù)通道。通過該圖可以基本看出,本次設計的設計思路。 圖4.2數(shù)據(jù)通道圖如圖4.2所示,首先當有投幣信號進入時,通過一個選擇器input_m判斷硬幣金額,然后在確定投幣金額后通過譯碼器decoder將所投幣的金額轉換為時間,這個時間就是充電時間,將時間信號分別送給一個寄存器Reg_time和減法器Sub,然后減法器通過周期為1S的時鐘對所等數(shù)據(jù)進行逐一遞減,然后通過數(shù)碼顯示管顯示充電信息。其次,循環(huán)計數(shù)器Time_counter與Reg_time中的時間進行比對,通過比較器Time_equal比對,當兩者數(shù)值相等是,則表示充電完成,然后輸出充電完成信號,反之充電未完成。模塊
45、圖詳細端口說明見表4.1表4.1 端口說明表信號名稱I/O功能描述Input_1I輸入一元按鍵Input_5I輸入五角按鍵OutO輸出投幣金額Charge_timeI充電時間Data_timeO/I充電時間ClkI時鐘RstI復位En2I使能Clear2I清除Data_counterO/I充電計數(shù)EqualityO比較En2I使能Led_inI數(shù)碼管輸入Led_outO數(shù)碼管輸出4.4狀態(tài)轉換圖狀態(tài)轉換圖,它表現(xiàn)的是系統(tǒng)中各個狀態(tài)的互相轉換及轉換所需要的條件??刂茊卧l(fā)送數(shù)據(jù)通道所需的控制信號,接收來自數(shù)據(jù)通道的狀態(tài)信號,對整個系統(tǒng)的運行進行監(jiān)控,以保證系統(tǒng)的正常運行。這是設計環(huán)節(jié)中極為重要和
46、關鍵的步驟。下圖便是本次設計中的狀態(tài)轉換圖。圖4.3狀態(tài)轉換圖如圖4.3所示,idel狀態(tài):準備狀態(tài)。投幣狀態(tài):等待投幣信號,通過sum數(shù)值是否發(fā)生改變,判斷是否投幣以便進入下一個狀態(tài)。在這個狀態(tài)中,首先有2個信號add1,add2。分別表示投入的是5角還是1元硬幣。當檢測完所投硬幣的類型后,在將信號送給下一狀態(tài)。同時,這個狀態(tài)中還要接收下一狀態(tài)傳來的信號,已確定不投幣無效,即已經開始充電,不在接受投幣。這一狀態(tài)當接收到上以狀態(tài)發(fā)出的add1和add2后分別做出sum+1,sum+2的處理,然后還有一個確定投幣結束信號,當該信號有效時,則跳轉到下一狀態(tài),并且將信號給予wait狀態(tài),然后進入下一
47、狀態(tài)。充電狀態(tài):接受投幣結束信號后,開始充電。并通過計數(shù)器進行充電計時。完成狀態(tài):當充電時間結束后,發(fā)出結束信號給下一狀態(tài)。接受到充電完成信號后,數(shù)據(jù)清零,回到idle狀態(tài)。4.5系統(tǒng)結構圖通過對設計的深入研究,對系統(tǒng)進行一些列的優(yōu)化,最終確定系統(tǒng)的各個模塊及模塊功能?;緲嫾芊譃槿糠郑河嫊r鐘分頻模塊,充電控制模塊,最后是充電顯示模塊。詳細系統(tǒng)結構框圖如圖4.4所示。圖4.4系統(tǒng)結構框第5章系統(tǒng)實現(xiàn)5.1 主要模塊的實現(xiàn)在投幣式多功能充電器控制電路設計過程中,系統(tǒng)主要由三大模塊組成,分別為時鐘分頻模塊、控制充電電路模塊、顯示模塊。下面分別介紹一下這三大模塊。5.1.1時鐘分頻模塊如圖5.1所
48、示,根據(jù)設計所需,將原時鐘分成三種時鐘頻率,分別是1HZ、1000HZ、50HZ。1HZ的時鐘周期為1S的時鐘主要,用于倒計時。1000HZ的時鐘周期為1ms用于數(shù)碼管的顯示所需。50HZ的時鐘周期為20ms,用于控制電路充電模塊。時鐘分頻的本質就是計數(shù)器記到一定的數(shù)值進行一次反轉。所以一般用計數(shù)器實現(xiàn)分頻。在時鐘分頻模塊中,各個端口說明表見表5.1。圖5.1時鐘分頻模塊表5.1時鐘分頻模塊端口說明表端口I/O功能描述ClkI原始時鐘RstnI復位功能Clk 1O1HZ時鐘分頻Clk 1000O1000HZ時鐘分頻Clk 50O50HZ時鐘分頻5.1.2控制充電電路模塊控制充電模塊,是本次設計
49、中的核心模塊之一,由該模塊控制統(tǒng)計投幣數(shù)量的多少,及確定是否投幣完成,并由金額確定充電時間。在設計實現(xiàn)的該模塊的過程中,考慮到現(xiàn)實和實驗之間的差別,特將1S看成1min,進行設計。下這個模塊中,由于設計的需要,要使用到撥動開關,所以這里需要使用按鍵防抖技術。以確保按鍵功能的實現(xiàn)。各個端口的詳細說明見表5.2。圖5.2控制充電電路模塊表5.2控制充電電路模塊端口說明表端口I/O功能描述clkI原始時鐘rstnI復位信號Key in1I投幣五角按鍵Key in2I投幣一元按鍵Key in3I確定投幣按鍵Clk 50I50HZ時鐘Clk 1I1HZ時鐘Second 1O輸出秒的個位Second 2O
50、輸出秒的十位Cnt 1O統(tǒng)計五角投幣數(shù)量Cnt 22O統(tǒng)計一元投幣數(shù)量5.1.3顯示模塊顯示模塊是顯示投幣金額數(shù)量、充電時間的模塊,是本次設計的重要模塊之一。在顯示模塊中,使用數(shù)碼管顯示相關信息。各個端口的詳細說明見表5.3。圖5.3顯示模塊表5.3顯示模塊端口說明表端口名稱I/O功能說明ClkI原始時鐘Clk 1000I1000HZ時鐘rstnI復位信號Key in4I顯示切換Second 1I輸入秒的十位Second 2I輸入秒的十位Cnt1I統(tǒng)計投幣數(shù)量Cnt22I統(tǒng)計投幣數(shù)量rten_smg_dataO數(shù)碼管輸出sm_bit_rO數(shù)碼管輸出5.1.4系統(tǒng)整體實現(xiàn)在Quartus II軟
51、件中,通過添加頂層文件與各模塊之間連接上,形成完整系統(tǒng)。系統(tǒng)整體實現(xiàn)如圖5.4所示。圖5.4項目整體RTL綜合5.2 系統(tǒng)的代碼實現(xiàn)5.2.1時鐘模塊代碼實現(xiàn)時鐘分頻的本質就是計數(shù)器記到一定的數(shù)值就進行一次翻轉,所以在verilog語音中用計數(shù)器實現(xiàn)時鐘分頻。具體代碼如下。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控制模塊代碼實現(xiàn)在控制模塊中,由于系統(tǒng)后期利用FPGA開發(fā)板驗證功能,用到了機械開關,所以在這個模塊中運用到了防抖技術。消抖是為了避免在按鍵按下或
53、是抬起時 HYPERLINK /search?word=%E7%94%B5%E5%B9%B3&fr=qb_search_exp&ie=utf8 t _blank 電平劇烈抖動帶來的影響。一般來說,軟件消抖的方法是不斷檢測按鍵值,直到按鍵值穩(wěn)定。實現(xiàn)方法:假設未按鍵時輸入1,按鍵后輸入為0,抖動時不定??梢宰鲆韵聶z測:檢測到按鍵輸入為0之后,延時20ms,再次檢測,如果按鍵還為0,那么就認為有按鍵輸入。在本次設計中,通過寄存器,將按鍵信號延時一個周期的方式,所用時鐘頻率為50HZ及20ms一個周期,延時的20ms恰好避開了抖動期。從而實現(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)機進行描述,具有一定靈活性,通過一些規(guī)范的描述風格,我們可以使描述更加安全、規(guī)范。分段式是最為常用的一種方法。根據(jù)狀態(tài)機的三要素,我們知道對狀態(tài)機的描述,需要描述清楚三點關鍵內容:第一,各個狀態(tài)的轉移情況;第二,每個狀態(tài)的輸出是信號什么;第三,各個狀態(tài)之間轉移所需要的相關條件。由于受可綜合條件的限制,描述方法一般分成三種:一段式,二段式及三段式。所謂的一段式,就是將整個狀態(tài)機寫在一個always模塊里,該模塊既描述了狀態(tài)的轉移又描述狀態(tài)的輸入和輸出。但這種方法往往缺乏條理,不便閱讀,不利于維護和修改,還經常受到不可綜合的問題,所以不建議使用這種方法,一般推薦使用二段式或
57、三段式。所謂二段式,這種方法就是在用硬件描述語言描述時用兩個always模塊進行描述,一個always模塊主要描述狀態(tài)轉移,可以采取同步時序的方法。而另一個always模塊則描述狀態(tài)轉移條件和狀態(tài)轉移的規(guī)律,在這個always模塊中一般采用組合邏輯的方式。而三段式描述方法是在兩段式描述方法的基礎上發(fā)展而來的,顧名思義,這種寫法就是利用三個always模塊對狀態(tài)機進行描述,其中一個always模塊采用同步時序的方式對狀態(tài)轉移進行描述;另一個always模塊采用組合邏輯的方式判斷狀態(tài)轉移所要的條件和描述狀態(tài)轉移規(guī)律;還有一個always模塊則使用同步時許電路描述每個狀態(tài)的輸出。在本次設計中采用二段
58、式描述方法。在控制模塊中通過狀態(tài)機控制投幣的次數(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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 乳制品企業(yè)產品盈利能力分析研究
- DB11/T 1009-2013 供熱系統(tǒng)節(jié)能改造技術規(guī)程
- 天津市水務事業(yè)項目融資的前景研究
- 儲值卡采購合同范例
- 2025年地毯、掛毯類工藝品項目合作計劃書
- 企業(yè)投資個人合同范例
- 二手居民住宅購房合同范例
- pvc塑膠地板合同范例
- 人工草皮轉讓合同范例
- 信息投資合同范例
- 口腔健康全身健康課件
- 2024年國家公務員考試公共法律知識考試題庫及答案(共530題)
- 數(shù)字出版概論 課件 第一章 數(shù)字出版及其發(fā)展歷程
- 英語語言與文化智慧樹知到答案2024年華僑大學
- 2024年江蘇教師資格證中學綜合素質試卷及解答
- Wonderware InTouch:報警與事件處理機制技術教程.Tex.header
- 《中國近現(xiàn)代史綱要》課件-第一章
- TSG+23-2021氣瓶安全技術規(guī)程
- 北京2024年北京服裝學院第一批人才招聘筆試歷年典型考題及考點附答案解析
- 第十六章 中國特色大國外交和推動構建人類命運共同體 (1)附有答案
- 田園風光(教案)2023-2024學年美術二年級下冊
評論
0/150
提交評論