版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 基于FPGA的空調(diào)控制系統(tǒng)設(shè)計</p><p><b> 摘要</b></p><p> 近幾年來,隨著中國科學(xué)技術(shù)的進(jìn)步和人民生活水平的不斷提高,各種產(chǎn)業(yè)在迅速發(fā)展,當(dāng)然,空調(diào)業(yè)也包括其中,空調(diào)在公共場所,專用場地和普通家庭等場所都廣泛應(yīng)用。但是隨著空調(diào)數(shù)量的增加,相應(yīng)的負(fù)面問題也隨之出現(xiàn),耗能的日益增加已成為我國部分地區(qū)能源及電力供需矛盾
2、的主要原因之一,當(dāng)務(wù)之急必須采取有效措施降低空調(diào)的能耗。如何降低空調(diào)能耗,實現(xiàn)空調(diào)自動控制,利用空調(diào)改善室內(nèi)溫度,延長空調(diào)使用壽命已成為當(dāng)前首要課題。</p><p> 本文介紹了空調(diào)控制器的設(shè)計,提出了一種采用現(xiàn)場可編程門陣列器件FPGA實現(xiàn)空調(diào)控制器的方法,該設(shè)計采用采用Altera公司高性價比FPGA,CycloneIV 系列EP4CE6E22C8做主控制器,使用高精度的溫度傳感器DS18B20采集環(huán)境溫
3、度,LCD1602用于顯示控制溫度情況,并用按鍵調(diào)節(jié)控制溫度和定時,LED燈模擬空調(diào)電機狀態(tài),本設(shè)計給出了用Verilog HDL語言實現(xiàn)高效率空調(diào)控制器的設(shè)計,最后給出了其在FPGA硬件上實現(xiàn) </p><p> 關(guān)鍵詞:空調(diào)控制器 FPGA CycloneIV Verilog HDL </p><p><b> Abstract</b></p>
4、<p> In recent years , with the continuous improvement of scientific and technological progress and the Chinese people's living standards , the rapid development of various industries in the course, which als
5、o includes the air-conditioning industry , air conditioners are widely used in public places , special venues and ordinary families and other places. However, with the increasing number of air-conditioning , the correspo
6、nding negative issues appeared, increasing energy consumption has become one </p><p> 關(guān)鍵詞:空調(diào)控制器 FPGA CycloneIV Verilog HDL 溫度傳感器 LCD1602</p><p> Keywords: air conditioning controller, FPGA, Cy
7、cloneIV, Verilog HDL</p><p><b> 目錄</b></p><p><b> 摘要I</b></p><p> AbstractII</p><p><b> 目錄III</b></p><p><b&g
8、t; 前言1</b></p><p> 1 FPGA的概述2</p><p> 1.1 FPGA的特點2</p><p> 1.2 本設(shè)計中使用的FPGA具有的特點3</p><p> 2 系統(tǒng)方案論證與確定4</p><p> 2.1方案的選擇4</p><p&
9、gt;<b> 方案1:4</b></p><p><b> 方案2:5</b></p><p> 2.2方案論證與確定6</p><p> 3 硬件電路設(shè)計7</p><p> 3.1硬件整體結(jié)構(gòu)及原理7</p><p><b> 3.2電源
10、部分8</b></p><p><b> 3.3時鐘電路9</b></p><p><b> 3.4按鍵電路9</b></p><p> 3.5溫度傳感器DS18B20的特點9</p><p> 3.6 DS18B20的測溫原理10</p><p&g
11、t; 3.7程序下載12</p><p><b> 4.軟件設(shè)計13</b></p><p> 4.1頂層結(jié)構(gòu)框圖:14</p><p> 4.2 DS18B20的狀態(tài)機框圖:15</p><p> 4.3 LCD1602的狀態(tài)機框圖:17</p><p> 5 Models
12、im仿真及仿真19</p><p> 5.1 Modelsim介紹19</p><p> 5.2 書寫testbench激勵信號20</p><p> 5.3 時鐘模塊仿真20</p><p> 5.3.1 時鐘模塊的激勵信號testbench20</p><p> 5.3.2 時鐘仿真波形及分析
13、22</p><p> 5.4 溫度數(shù)據(jù)處理及空調(diào)電機仿真23</p><p> 5.4.1 LED模塊激勵信號testbench23</p><p> 5.4.2 LED模塊仿真結(jié)果及分析25</p><p> 6 實際運行結(jié)果及總結(jié)26</p><p> 6.1 配置管腳26</p>
14、<p> 6.2 燒錄程序27</p><p> 6.3運行結(jié)果分析27</p><p><b> 致謝29</b></p><p><b> 參考文獻(xiàn)30</b></p><p> 附件 程序代碼31</p><p> 頂層模塊Veril
15、ogHDL代碼:31</p><p> DS18B20模塊VerilogHDL代碼:33</p><p> LCD1602模塊VerilogHDL代碼:48</p><p> clock模塊VerilogHDL代碼:55</p><p> 按鍵模塊VerilogHDL代碼:57</p><p> L
16、ED模塊VerilogHDL代碼:59</p><p><b> 前言</b></p><p> 本論文主要任務(wù)是設(shè)計基于FPGA的空調(diào)控制系統(tǒng)的設(shè)計。本課題的設(shè)計采用了溫度傳感器DS18B20作為前端溫度采集,采用Altera公司高性價比FPGA:CycloneIV 系列EP4CE6E22C8做主控制器??刂破鞑糠衷赒uartus II 平臺使用Verilog
17、HDL語言編寫,主體程序采用了狀態(tài)機作為主要控制方式。并使用Modelsim進(jìn)行軟件功能仿真,排除設(shè)計錯誤,提高軟件設(shè)計效率。</p><p> 硬件主要有五大模塊:溫度設(shè)置模塊、定時模塊、LCD顯示模塊、分頻模塊、FPGA控制器模塊。最后實現(xiàn)使用FPGA比較設(shè)置溫度與測量所得溫度,并發(fā)出指令給空調(diào)電機執(zhí)行部分,使用LED燈模擬,根據(jù)按鍵設(shè)置溫度實現(xiàn)升溫或降溫,當(dāng)設(shè)定溫度與測量溫度相等時,不執(zhí)行調(diào)節(jié)溫度功能。另
18、外要能根據(jù)輸入數(shù)據(jù)的變化和溫度傳感器測量得到的溫度同步變化LCD上顯示。</p><p> 該課題的研究將有助于采用FPGA的系列產(chǎn)品的開發(fā)。同時可以大大縮短FPGA的開發(fā)時間。另外,由于模塊的易用性,也將使得更多的采用FPGA產(chǎn)品應(yīng)用于溫控領(lǐng)域,為行業(yè)和我們的生活帶來新的變化。</p><p><b> 1 FPGA的概述</b></p><
19、p> 1.1 FPGA的特點</p><p> FPGA(Field-Programmable Gate Array),即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。目前以硬件描述語言(Verilog HDL或VHDL)所完成的電路設(shè)
20、計,可以經(jīng)過簡單的綜合與布局,快速的燒錄至FPGA上進(jìn)行測試,是現(xiàn)代 IC 設(shè)計驗證的技術(shù)主流。這些可編輯元件可以被用來實現(xiàn)一些基本的邏輯門電路(比如AND、OR、XOR、NOT)或者更復(fù)雜一些的組合功能比如解碼器或數(shù)學(xué)方程式。在大多數(shù)的FPGA里面,這些可編輯的元件里也包含記憶元件例如觸發(fā)器(Flip-flop)或者其他更加完整的記憶塊。系統(tǒng)設(shè)計師可以根據(jù)需要通過可編輯的連接把FPGA內(nèi)部的邏輯塊連接起來,就好像一個電路試驗板被放在了
21、一個芯片里。一個出廠后的成品FPGA的邏輯塊和連接可以按照設(shè)計者而改變,所以FPGA可以完成所需要的邏輯功能。</p><p> FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個概念,內(nèi)部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸出輸入模塊IOB(Input Output Block)和內(nèi)部連線(Interconnect)三個部分。FPGA的基本
22、特點主要有:</p><p> ?。?) 采用FPGA設(shè)計ASIC電路,用戶不需要投片生產(chǎn)就能得到合用的芯片;</p><p> (2) FPGA可做其他全定制或半定制ASIC電路的試樣片;</p><p> ?。?) FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳;</p><p> (4) FPGA是ASIC電路中設(shè)計周期最短、開發(fā)費用最低、
23、風(fēng)險最小的器件之一;</p><p> ?。?) FPGA采用高速CHMOS工藝,功耗低,可以與CMOS、TTL電平兼容。</p><p> 可以說,F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度和可靠性的最佳選擇之一。目前FPGA的品種很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等。</p><p> FPGA是由存放在片內(nèi)RA
24、M中的程序來設(shè)置其工作狀態(tài)的。因此,工作時需要對片內(nèi)的RAM進(jìn)行編程。用戶可以根據(jù)不同的配置模式采用不同的編程方式。加電時,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功能時,只需換一片EPROM即可。這樣,同一片F(xiàn)PG
25、A、不同的編程數(shù)據(jù),可以產(chǎn)生不同的電路功能。因此,F(xiàn)PGA的使用非常靈活。</p><p> 1.2 本設(shè)計中使用的FPGA具有的特點</p><p> (1) Altera新的Cyclone®IV FPGA器件系列擴展了Cyclone系列EP4CE6E22C8,成本最低,功耗最低的FPGA。</p><p> (2) 具有6272個邏輯單元(LE)
26、。</p><p> (3) 50MHz時鐘輸入。</p><p> (4) 高達(dá)270Kbits 嵌入式存儲器。</p><p> (5) 15個嵌入式18x18乘法器。</p><p> (6) 2通用PLL鎖相環(huán)。</p><p> (7) 8個用戶I/O塊,提供91個I/0口。</p>
27、<p> 2 系統(tǒng)方案論證與確定</p><p><b> 2.1方案的選擇</b></p><p> 目前大多數(shù)的的空調(diào)溫度控制系統(tǒng)都采用了以單片機作為控制器的設(shè)計,但是隨著可編程邏輯器件的發(fā)展,家用電器的控制部分也越來越多地使用可編程邏輯器件來實現(xiàn),所以下面提供了以單片機和可編程邏輯器件(FPGA)為核心控制器件的2個方案進(jìn)行選擇。</p&g
28、t;<p><b> 方案1:</b></p><p> 該方案采用的是AT89C51單片機為核心控制器件,用它來處理各個單元電路的工作以及檢測其運行情況。首先通過溫度傳感器對空氣進(jìn)行溫度采集,將采集的溫度信號作A/D轉(zhuǎn)換,使其模擬信號轉(zhuǎn)變成數(shù)字信號,然后輸給單片機,再由單片機控制顯示,并比較采集的溫度與設(shè)定的溫度是否一致,然后驅(qū)動空調(diào)機的加熱或降溫循環(huán)對空氣進(jìn)行處理,從而
29、模擬實現(xiàn)空調(diào)溫度控制單元的工作情況,本設(shè)計中我們采用的是AD590溫度傳感器,通過溫度系統(tǒng)采集電路采集相關(guān)溫度數(shù)值,再由AD0809組成的A/D轉(zhuǎn)換電路進(jìn)行轉(zhuǎn)換,最終的到數(shù)字信號,將其直接輸給單片機,然后由單片機機根據(jù)內(nèi)部程序判斷,執(zhí)行相關(guān)控制程序,驅(qū)動個單元電路的工作。其方框圖如圖2.1所示:</p><p><b> 方案2:</b></p><p> 該方案
30、以FPGA為核心控制器件,采用數(shù)字溫度傳感器DS18B20進(jìn)行溫度采集,將采集到的溫度數(shù)字直接以數(shù)字信號傳輸給FPGA控制器,控制器通過比較采集的溫度和用戶設(shè)定的溫度來做出發(fā)送降溫還是加熱的控制信號給空調(diào)機。同時通過FPGA芯片還可以實現(xiàn)定時和控制顯示,使用LCD1602將傳感器測量到的溫度,設(shè)定的溫度、定時時長都顯示出來。其方框圖如下圖2.2所示:</p><p> 2.2方案論證與確定</p>
31、<p> 通過比較兩個方案,方案1采用單片機為核心控制器件,該方案的優(yōu)點是容易控制,系統(tǒng)原理比較簡單,電路可靠,容易實現(xiàn)控制目的。但是該方案中的溫度測量電路,譯碼電路復(fù)雜,容易產(chǎn)生誤差和由電路復(fù)雜而導(dǎo)致的設(shè)備使用壽命低等一系列問題。</p><p> 方案2采用的是以FPGA為核心控制器件,同時溫度傳感器采用的是高精度的數(shù)字溫度傳感器DS18B20,通過該傳感器采集的溫度信息不需要經(jīng)過信號放大和A
32、/D轉(zhuǎn)換直接以數(shù)字信號的形式傳遞給控制芯片,使得電路的連接大大的簡化了,減小了電路復(fù)雜所帶來的誤差等問題。而且FPGA芯片所具有的可編程修改的特點以及其強大的邏輯功能都是單片機難以達(dá)到的,這樣不但給設(shè)計過程中帶來一系列的便利,而且在空調(diào)的功能日趨人性化和智能話的發(fā)展趨勢下,以FPGA為控制器件的設(shè)計無疑更加具有市場競爭力。</p><p> 所以同過上面的對兩個方案的比較論證,本次設(shè)計采用方案2來實現(xiàn)。<
33、/p><p><b> 3 硬件電路設(shè)計</b></p><p> 3.1硬件整體結(jié)構(gòu)及原理</p><p> 硬件電路主要包括電源電路、石英晶振、溫度傳感器、FPGA控制器、LCD1602顯示、按鍵組成。本設(shè)計采用Altera公司高性價比FPGA,CycloneIV 系列EP4CE6E22C8做主控制器,溫度傳感器采用高精度數(shù)字溫度傳感器D
34、S18B20。整個電路的工作原理是由50MHz石英晶振FPGA提供時鐘信號,數(shù)字式溫度傳感器DS18B20將采集的溫度信息以數(shù)字信號的形式直接傳遞給FPGA芯片,用戶也可通過按鈕根據(jù)需要自己設(shè)定溫度值。采集溫度和設(shè)定溫度都送給FPGA控制器,控制器通過對兩個溫度值的比較做出判斷,當(dāng)測量溫度大于設(shè)定溫度時就想空調(diào)的電機發(fā)出制冷的控制信號;當(dāng)測量溫度小于設(shè)定溫度時,則發(fā)出一加熱的控制信號 ;當(dāng)兩者相等時則不制冷也不加熱。通過執(zhí)行機構(gòu)工作狀態(tài)
35、的轉(zhuǎn)換來達(dá)到改變環(huán)境溫度的目的。同時,F(xiàn)PGA還可以對設(shè)定溫度進(jìn)行定時,并將定時的時間、測量溫度和設(shè)定溫度的值通過LCD1602顯示出來。整個硬件的框圖如圖3.1所示:</p><p> 圖 3.1 硬件框圖</p><p><b> 3.2電源部分 </b></p><p> 使用DC/DC電源芯片AMS1117系列的1117‐3.3
36、V、1117‐2.5V、1117‐1.2V,分別給FPGA提供3.3V I/0口電壓, 2.5V輔助電壓和1.2V內(nèi)核電壓。</p><p> AMS1117是一個正向低壓降穩(wěn)壓器,在1A電流下壓降為1.2V。固定輸出電壓為1.5V、1.8V、2.5V、2.85V、3.0V、3.3V、5.0V和可調(diào)版本,具有 1%的精度。AMS1117內(nèi)部集成過熱保護(hù)和限流電路。其電路原理圖如圖3.2所示:</p>
37、<p> 圖 3.2 電源電路 </p><p><b> 3.3時鐘電路 </b></p><p> 為系統(tǒng)提供50MHz的穩(wěn)定時鐘,如圖3.3所示。</p><p> 圖 3.3 時鐘電路</p><p><b> 3.4按鍵電路</b></p><p
38、> 通過一個10K的上拉電阻使I/O保持確定狀態(tài),如圖3.5所示。</p><p><b> 圖3.5 按鍵電路</b></p><p> 3.5溫度傳感器DS18B20的特點 </p><p> DS18B20是美國DALLS公司生產(chǎn)的單線數(shù)字溫度傳感器。它具有微型化、低功耗、高性能、抗干攏能力強、易配微處理器等優(yōu)點。特別適合于
39、構(gòu)成多點溫度測控系統(tǒng)??芍苯訉囟绒D(zhuǎn)化成串行數(shù)字信號供微機處理,而且每片DS18B20都有唯一的產(chǎn)品號并可存入其ROM中。以便在構(gòu)成大型溫度測控系統(tǒng)時在單線上掛接任意多個DS18B20芯片。DS18B20的性能特點如下:</p><p> ?。?)獨特的單線接口引腳進(jìn)行通信;</p><p> (2)多個DS18B20可以并聯(lián)在唯一的三線上,實現(xiàn)多點組網(wǎng)功能;</p>&l
40、t;p> (3)無須外部器件;</p><p> ?。?)可以通過數(shù)據(jù)線供電,電壓范圍3.0~5.5V;</p><p><b> ?。?)零待機功耗;</b></p><p> ?。?)溫度以9或12位數(shù)字讀出;</p><p> ?。?)用戶可定義的非易失性溫度報警設(shè)置;</p><p&g
41、t; 報警搜索命令識別并標(biāo)志超過程序限定溫度(溫度報警條件)的器件;負(fù)電壓特性,電源極性接反時,溫度計不會因發(fā)熱而燒毀,但不能正常工作。</p><p> 3.6 DS18B20的測溫原理</p><p> 經(jīng)過單線接口訪問DS18B20的協(xié)議如下: </p><p><b> 1、初始化 </b></p><p&g
42、t;<b> 2、 ROM操作 </b></p><p> 3、RAM存貯器操作 </p><p><b> 4、處理數(shù)據(jù) </b></p><p> 每次訪問單總線器件,必須嚴(yán)格遵守這個協(xié)議(即操作序列),如果出現(xiàn)序列混亂,則單總線器件不會響應(yīng)主機。但是,這個準(zhǔn)則對于搜索ROM 命令和報警搜索命令例外,在執(zhí)行兩者
43、中任何一條命令之后,主機不能執(zhí)行其后的功能命令,必須返回至第一步。 </p><p><b> ?、懦跏蓟?</b></p><p> 基于單總線上的所有傳輸過程都是以初始化開始的,初始化過程由主機發(fā)出的復(fù)位脈沖和從機響應(yīng)的應(yīng)答脈沖組成。應(yīng)答脈沖使主機知道總線上有從機設(shè)備且準(zhǔn)備就緒。 </p><p><b> ⑵ROM操作 &l
44、t;/b></p><p> 在主機檢測到應(yīng)答脈沖后,就可以發(fā)出ROM 命令。這些命令與各個從機設(shè)備的唯一64 位ROM 代碼相關(guān),允許主機在單總線上連接多個從機設(shè)備時,指定操作某個從機設(shè)備。這些命令還允許主機能夠檢測到總線上有多少個從機設(shè)備以及其設(shè)備類型,或者有沒有設(shè)備處于報警狀態(tài)。從機設(shè)備可能支持5 種ROM 命令(實際情況與具體型號有關(guān)),每種命令長度為8 位。主機在發(fā)出存貯器操作命令之前,必須送出
45、合適的ROM</p><p> ⑶RAM存貯器操作 </p><p> 在主機發(fā)出ROM 命令,以訪問某個指定的DS18B20 ,接著就可以發(fā)出DS18B20 支持的某個存貯器操作命令。</p><p><b> ⑷數(shù)據(jù)處理 </b></p><p> 數(shù)據(jù)處理是當(dāng)主機通過前三步的通信,在從機上得到了需要的數(shù)據(jù),
46、再進(jìn)行進(jìn)一步處理的環(huán)節(jié),這部分根據(jù)用戶的需要而定。 </p><p> 電路原理圖如圖3.6:</p><p> 圖 3.6 溫度傳感器電路</p><p><b> 3.7程序下載 </b></p><p> 通過JTAG接口電路,使用Altera的USB blaster程序下載器,通過計算機的USB接口可對
47、Altera的FPGA/CPLD以及配置芯片進(jìn)行編程、調(diào)試等操作,對程序燒錄的FPGA里面。 </p><p> 圖 3.6 程序下載電路</p><p><b> 4.軟件設(shè)計</b></p><p> 在Quartus II 11.0平臺使用VerilogHDL語言編寫,主體程序采用了狀態(tài)機作為主要控制方式。程序中主要使用了狀態(tài)機對D
48、S18B20進(jìn)行了時序控制,通過一些命令使DS18B20采集獲得溫度值傳送到FPGA控制器。最后將數(shù)據(jù)送給LCD顯示電路進(jìn)行顯示,從而可以實時地觀察到溫度變化,同時LED閃爍進(jìn)行模擬空調(diào)電機運作。</p><p> 編寫好VerilgHDL代碼后,在Modelsim 6.5平臺上進(jìn)行前仿真。同時通過Modelsim書寫testbench,經(jīng)行RTL級功能仿真。主旨在于驗證電路的功能是否符合設(shè)計要求,其特點是不考
49、慮電路門延遲與線延遲,主要是驗證電路與理想情況是否一致??删C合FPGA代碼是用RTL級代碼語言描述的,其輸入為RTL級代碼與Testbench.。在設(shè)計的最初階段發(fā)現(xiàn)問題,可節(jié)省大量的精力</p><p> 4.1頂層結(jié)構(gòu)框圖:</p><p> 軟件設(shè)計分為六大模塊,頂層模塊,DS18B20模塊,時鐘分頻模塊,按鍵輸入模塊,LCD1602模塊,LED模塊。如圖4.1所示:</p
50、><p> 圖 4.1頂層結(jié)構(gòu)框圖</p><p> 4.2 DS18B20的狀態(tài)機框圖:</p><p> DS18B20模塊采用狀態(tài)機方法設(shè)計,然而DS18B20對時序要求比較嚴(yán)格,所以設(shè)計中不得不使用非常多的狀態(tài)來解決這一問題。設(shè)計中采用格雷碼來進(jìn)行狀態(tài)機編碼,使用格雷碼每個相鄰的狀態(tài)切換只有一個bit的信號跳變,其DS18B20的狀態(tài)機框圖如圖4.2所示。
51、</p><p> // 格雷碼 狀態(tài)機</p><p> parameter S00 = 5'h00;</p><p> parameter S0 = 5'h01;</p><p> parameter S1 = 5'h03;</p><p> para
52、meter S2 = 5'h02;</p><p> parameter S3 = 5'h06;</p><p> parameter S4 = 5'h07;</p><p> parameter S5 = 5'h05;</p><p> parameter S6
53、 = 5'h04;</p><p> parameter S7 = 5'h0C;</p><p> parameter WRITE0 = 5'h0D;</p><p> parameter WRITE1 = 5'h0F;</p><p> parameter WRITE00 =
54、5'h0E;</p><p> parameter WRITE01 = 5'h0A;</p><p> parameter READ0 = 5'h0B;</p><p> parameter READ1 = 5'h09;</p><p> parameter READ2 = 5'h0
55、8;</p><p> parameter READ3 = 5'h18;</p><p> 圖4.2 DS18B20的狀態(tài)機框圖</p><p> 4.3 LCD1602的狀態(tài)機框圖:</p><p> 要實現(xiàn)LCD1602的顯示,程序設(shè)計同樣采用狀態(tài)機的設(shè)計方法,鑒于狀態(tài)機的個數(shù)并不多,這里采用獨熱碼編碼機制。使用獨熱碼
56、,狀態(tài)機中為每一種狀態(tài)分配一個觸發(fā)器。只有一個觸發(fā)器當(dāng)前設(shè)置為高位,其余均設(shè)置為低位。</p><p> 其狀態(tài)機框圖如圖4.3所示。</p><p> //獨熱碼 狀態(tài)機編碼 //</p><p> parameter </p><p> idle = 10'b000000000,//初始狀態(tài),下一個狀態(tài)為CLE
57、AR</p><p> clear= 10'b000000001, //清屏</p><p> set_function= 10'b000000010, //功能設(shè)置:8位數(shù)據(jù)接口/2行顯示/5*8點</p><p><b> 陣字符</b></p><p> switch_mode=
58、 10'b000000100, //顯示開關(guān)控制:開顯示,光標(biāo)和閃爍關(guān)</p><p><b> 閉</b></p><p> set_mode = 10'b000001000, //輸入方式設(shè)置:數(shù)據(jù)讀寫操作后,</p><p> 地址自動加一/畫面不動</p><p> shift
59、 = 10'b000010000, //光標(biāo)、畫面位移設(shè)置:光標(biāo)向左平移一個字符位(光標(biāo)顯示是關(guān)閉的,所以實際上設(shè)置是看不出效果的)</p><p> set_ddram1 = 10'b000100000, //設(shè)置DDRAM的地址:第一行起始為 </p><p> 0x00(注意輸出時DB7一定要為1)</p><p> set_
60、ddram2 = 10'b001000000, //設(shè)置DDRAM的地址:第二行為0x40(注 </p><p> 意輸出時DB7一定要為1)</p><p> write_ram1 = 10'b010000000, //數(shù)據(jù)寫入DDRAM相應(yīng)的地址 write_ram2 = 10'b100000000; //
61、數(shù)據(jù)寫入DDRAM相應(yīng)的地址</p><p> 圖 4.3 LCD1602的狀態(tài)機框圖</p><p> 5 Modelsim仿真及仿真</p><p> 5.1 Modelsim介紹</p><p> ModelSim是業(yè)界最優(yōu)秀的HDL語言仿真器。 它提供最友好的調(diào)試環(huán)境,是唯一的單內(nèi)核支持VHDL和Verilog混合仿真的仿真器
62、。是作FPGA/ASIC設(shè)計的RTL級和門級電路仿真的首選。它采用直接優(yōu)化的編譯技術(shù)、Tcl/Tk技術(shù)、和單一內(nèi)核仿真技術(shù),編譯仿真速度快,編譯的代碼與平臺無關(guān),便于保護(hù)IP核,個性化的圖形界面和用戶接口,為用戶加快調(diào)錯提供強有力的手段。全面支持VHDL和Verilog語言的IEEE 標(biāo)準(zhǔn),支持C/C++功能調(diào)用和調(diào)試。主要特點:RTL和門級優(yōu)化,本地編譯結(jié)構(gòu),編譯仿真速度快;單內(nèi)核VHDL和Verilog混合仿真;源代碼模版和助手,項
63、目管理;集成了性能分析、波形比較、代碼覆蓋等功能;數(shù)據(jù)流ChaseX;Signal Spy;C和Tcl/Tk接口,C調(diào)試?!?它支持Verilog、VHDL以及他們的混合仿真,它可以將整個程序分步執(zhí)行,使設(shè)計者直接看到他的程序下一步要執(zhí)行的語句,而且在程序執(zhí)行的任何步驟任何時刻都可以查看任意變量的當(dāng)前值,可以在Dataflow窗口查看某一單元或模塊的輸入輸出的連續(xù)變化等,比Quartus自帶的仿真器功能強大的多,是目前業(yè)</p
64、><p> 5.2 書寫testbench激勵信號</p><p> testbench是一種驗證的手段。首先,任何設(shè)計都是會有輸入輸出的。但是在軟環(huán)境中沒有激勵輸入,也不會對你設(shè)計的輸出正確性進(jìn)行評估。那么此時便有一種,模擬實際環(huán)境的輸入激勵和輸出校驗的一種“虛擬平臺”的產(chǎn)生。在這個平臺上你可以對你的設(shè)計從軟件層面上進(jìn)行分析和校驗,這個就是testbench的含義。</p>
65、<p> 5.3 時鐘模塊仿真</p><p> 5.3.1 時鐘模塊的激勵信號testbench</p><p> 本設(shè)計驗證功能,對時間不進(jìn)行嚴(yán)格控制,為方便觀看仿真結(jié)果,在測試文件中將延時調(diào)小了。testbench代碼如下:</p><p> `timescale 1ps/1ps</p><p> module U
66、SER_test_clock;</p><p><b> reg clk;</b></p><p> reg rst_n; </p><p> wire [7:0] hour;</p><p> wire [7:0] min;</p><p> wire [7:0] second; &l
67、t;/p><p><b> clock m</b></p><p><b> (</b></p><p> .clk(clk),</p><p> .rst_n(rst_n),</p><p> .hour(hour),</p><p> .m
68、in(min),</p><p> .second(second)</p><p><b> );</b></p><p><b> initial</b></p><p><b> begin </b></p><p><b> c
69、lk=0;</b></p><p><b> while(1)</b></p><p> #1 clk=~clk; //給出時鐘激勵信號</p><p><b> end</b></p><p><b> initial </b></p>
70、<p><b> begin </b></p><p> rst_n= 1; </p><p> #100 rst_n = 0; //給出復(fù)位激勵信號</p><p> #100 rst_n =1;</p><p><b> end</b></p>&l
71、t;p><b> endmodule</b></p><p> 5.3.2 時鐘仿真波形及分析</p><p> 時鐘波形仿真結(jié)果如下圖5.3所示:</p><p> clk 表示時鐘信號</p><p> rst_n 表示復(fù)位信號</p><p> se
72、cond 表示秒計數(shù) </p><p> min 表示分計數(shù)</p><p> hour 表示小時計數(shù) </p><p> 觀察波形,當(dāng)給出復(fù)位信號時,時間全部清零</p><p> 當(dāng)秒計數(shù)到59秒時,秒計數(shù)清零,同時分計數(shù)加一;</p><p> 當(dāng)分計數(shù)到59秒時,分計數(shù)清零,同時小
73、時計數(shù)加一;</p><p> 當(dāng)小時計數(shù)到23秒時,小時計數(shù)清零;</p><p> 圖5.3 時鐘仿真波形圖</p><p> 5.4 溫度數(shù)據(jù)處理及空調(diào)電機仿真</p><p> 設(shè)計中采用4位LED燈來模擬空調(diào)電機的運轉(zhuǎn),LED[0]表示空調(diào)電機處于待機狀態(tài);LED[2]表示空調(diào)電機進(jìn)行升溫控制;LED[3]表示空調(diào)進(jìn)行降溫控
74、制;LED[1]保留;以上數(shù)據(jù)位低電平有效。</p><p> 5.4.1 LED模塊激勵信號testbench</p><p> 本設(shè)計驗證功能,對時間不進(jìn)行嚴(yán)格控制,為方便觀看仿真結(jié)果,在測試文件中將延時調(diào)小了。testbench代碼如下:</p><p> `timescale 1ps/1ps</p><p> module U
75、SER_test_led;</p><p><b> reg clk;</b></p><p> reg rst_n; </p><p> reg [15:0]data; </p><p> reg [23:0] t;</p><p> reg [7:0] s_time;</p&
76、gt;<p> reg [7:0] s_tmp;</p><p> wire [3:0] led ;</p><p><b> led l</b></p><p><b> (</b></p><p> .clk(clk),</p><p> .rs
77、t_n(rst_n),</p><p> .data(data),</p><p><b> .t(t),</b></p><p> .s_tmp(s_tmp),</p><p> .s_time(s_time),</p><p> .led(led) </p><p
78、><b> );</b></p><p><b> initial</b></p><p><b> begin </b></p><p><b> clk=0;</b></p><p><b> while(1)</b&g
79、t;</p><p> #10 clk=~clk; //給出時鐘激勵信號</p><p><b> end</b></p><p><b> initial </b></p><p><b> begin </b></p><p> r
80、st_n= 1; </p><p> #200 rst_n = 0; //給出復(fù)位激勵信號</p><p> #20 rst_n =1;</p><p><b> end</b></p><p><b> initial </b></p><p><
81、;b> begin</b></p><p> t=0; //初始化時間</p><p> s_time=0; //初始化設(shè)置時間</p><p> s_tmp=0; //初始化設(shè)置溫度</p><p> data=0; //初始化溫度</p><p>&
82、lt;b> end</b></p><p><b> initial</b></p><p><b> begin</b></p><p> #300 data[15:0]=16'h0240;s_tmp[7:0]=8'h25; //給出信號data和s_tmp</p>
83、<p> #350 data=0; </p><p><b> end</b></p><p><b> initial</b></p><p><b> begin</b></p><p> #400 data[15:0]=16'h0250;
84、s_tmp[7:0]=8'h25; //給出信號data和s_tmp</p><p> #450 data=0; </p><p><b> end</b></p><p><b> initial</b></p><p><b> begin</b>&l
85、t;/p><p> #500 data[15:0]=16'h0260;s_tmp[7:0]=8'h25; //給出信號data和s_tmp</p><p> #550 data=0; </p><p><b> end </b></p><p><b> initial<
86、/b></p><p><b> begin</b></p><p> #600 t[23:0]=24'h002200; s_time[7:0]=8'h22;</p><p> #650 t=0; </p><p><b> end</b></p>
87、<p><b> endmodule</b></p><p> 5.4.2 LED模塊仿真結(jié)果及分析</p><p> 仿真結(jié)果如圖5.4所示,clk表示時鐘輸入信號,rst_n表示復(fù)位信號,data表示實際溫度數(shù)據(jù),s_tmp表示設(shè)置的溫度值,t表示實時時間,t_time表示設(shè)置的定時時間。根據(jù)仿真結(jié)果,可以得出以下結(jié)論:</p>&l
88、t;p> 1、設(shè)置溫度(t_tmp)為25,當(dāng)實時溫度(data)為24,led結(jié)果為1011和1111交替變換,表示LED[2]在閃爍,說明空調(diào)電機正在進(jìn)行升溫控制;</p><p> 2、設(shè)置溫度為25(t_tmp),當(dāng)實時溫度(data)為25,led結(jié)果為1110,表示LED[0]長亮,說明空調(diào)電機處于待機模式;</p><p> 3、設(shè)置溫度為25(t_tmp),當(dāng)實
89、時溫度為(data)為26,led結(jié)果為0111和1111交替變換,表示LED[3]在閃爍,說明空調(diào)電機正在進(jìn)行降溫控制;</p><p> 4、設(shè)置定時時間(s_time)為22分,當(dāng)實時時間(t)為22時, led結(jié)果為1111,表示所有的LED燈都處于關(guān)閉狀態(tài),說明空調(diào)電機處于關(guān)機模式,停止工作;</p><p> 圖5.4LED模塊波形仿真圖</p><p&
90、gt; 6 實際運行結(jié)果及總結(jié)</p><p><b> 6.1 配置管腳</b></p><p> 在quartus II 11.0中通過Pin planner配置好相應(yīng)管腳。設(shè)計中對于DS18B20的數(shù)據(jù)位設(shè)計為上拉電阻,所以在DS18B20的數(shù)據(jù)位管腳配置時設(shè)置為上拉模式。未用引腳需要設(shè)定約束,否則會出現(xiàn)未知情況。</p><p>
91、 set_location_assignmentPIN_24-toRESET</p><p> set_location_assignmentPIN_23-toCLK</p><p> set_location_assignmentPIN_32-toDQ</p><p> set_location_assignmentPIN_89-to
92、KEY[0]</p><p> set_location_assignmentPIN_90-toKEY[1]</p><p> set_location_assignmentPIN_91 -toKEY[2]</p><p> set_location_assignmentPIN_25-toKEY[3]</p><p>
93、 set_location_assignmentPIN_88-toKEY[4]</p><p> set_location_assignmentPIN_70-toLED[0]</p><p> set_location_assignmentPIN_71-toLED[1]</p><p> set_location_assignmentPI
94、N_72-toLED[2]</p><p> set_location_assignmentPIN_73-toLED[3]</p><p> set_location_assignmentPIN_84-toLCD1</p><p> set_location_assignmentPIN_85-toLCD2</p><p
95、> set_location_assignmentPIN_98-toLCD3</p><p> set_location_assignmentPIN_99-toLCD4</p><p> set_location_assignmentPIN_100-toLCD5</p><p> set_location_assignmentPIN
96、_101-toLCD6</p><p> set_location_assignmentPIN_103-toLCD7</p><p> set_location_assignmentPIN_104-toLCD8</p><p> set_location_assignmentPIN_105-toLCD9</p><p&
97、gt; set_location_assignmentPIN_106-toLCD10</p><p> set_location_assignmentPIN_110-toLCD11</p><p><b> 6.2 燒錄程序</b></p><p> 通過JTAG接口電路,使用Altera的USB blaster程序下載器,
98、通過計算機的USB接口可對Altera的FPGA/CPLD以及配置芯片進(jìn)行編程、調(diào)試等操作,對程序燒錄的FPGA里面。</p><p><b> 6.3運行結(jié)果分析</b></p><p> 運行結(jié)果如下圖6.1所示,分析結(jié)果如下:</p><p> 1、LCD1602第一行顯示實時溫度,以及設(shè)置溫度。LCD1602第二行顯示實時時間以及
99、定時時間。當(dāng)設(shè)置溫度和設(shè)置時間均為0時表示未設(shè)置相關(guān)操作,即不設(shè)置定時和溫度。</p><p> 2、當(dāng)給外界環(huán)境進(jìn)行升溫或降溫時,可以看到LCD1602的顯示數(shù)值不斷增大或減小,說明DS18B20工作正常。</p><p> 3、當(dāng)設(shè)定好設(shè)置溫度時,如果外界環(huán)境溫度低于設(shè)定溫度時,LED[2]不斷閃爍,表明模擬空調(diào)電機正在進(jìn)行升溫操作。</p><p> 4
100、、當(dāng)設(shè)定好設(shè)置溫度時,如果外界環(huán)境溫度高于設(shè)定溫度時,LED[3]不斷閃爍,表明模擬空調(diào)電機正在進(jìn)行降溫操作。</p><p> 5、當(dāng)設(shè)定好設(shè)置溫度時,如果外界溫度和設(shè)定溫度相等,LED[0]長亮,表明模擬空調(diào)電機處于待機模式。</p><p> 6、當(dāng)設(shè)置好定時時間時,如果實時時間和定時時間相等,LED燈全部熄滅,表明空調(diào)電機處于關(guān)機模式。</p><p>
101、 在實際的FPGA開發(fā)板上的運行結(jié)果,跟在Modelsim中運行完全一致,這也驗證了軟件程序設(shè)計的正確性。</p><p> 同時通按鍵的加減來設(shè)置的溫度和設(shè)置的定時都能夠順利實現(xiàn),LED能按設(shè)定要求經(jīng)行閃爍,完成了對空調(diào)電機的模擬控制。</p><p> 圖6.1 實際運行結(jié)果圖</p><p><b> 致謝</b></p&g
102、t;<p> 非常感謝各位老師在我大學(xué)的最后學(xué)習(xí)階段——畢業(yè)設(shè)計階段給自己的指導(dǎo),從最初的定題,到資料收集,到寫作、修改,到論文定稿,給了我耐心的指導(dǎo)和無私的幫助,在此表示我誠摯的謝意。同時,感謝所有任課老師和所有同學(xué)在這四年來給自己的指導(dǎo)和幫助,是他們教會了我專業(yè)知識,教會了我如何學(xué)習(xí),教會了我如何做人。正是由于他們,我才能在各方面取得顯著的進(jìn)步,在此向他們表示我由衷的謝意,并祝所有的老師培養(yǎng)出越來越多的優(yōu)秀人才,桃李
103、滿天下!</p><p> 通過這一階段的努力,我的畢業(yè)論文《基于FPGA的空調(diào)控制系統(tǒng)設(shè)計》終于完成了,這意味著大學(xué)生活即將結(jié)束。在大學(xué)階段,我在學(xué)習(xí)上和思想上都受益非淺,這除了自身的努力外,與各位老師、同學(xué)和朋友的關(guān)心、支持和鼓勵是分不開的。</p><p> 寫作畢業(yè)論文是一次再系統(tǒng)學(xué)習(xí)的過程,畢業(yè)論文的完成,同樣也意味著新的學(xué)習(xí)生活的開始。我將銘記我曾是一名理工學(xué)子,在今后的工
104、作中把“窮究于理,成就于工”的優(yōu)良傳統(tǒng)發(fā)揚光大。</p><p> 感謝各位老師的批評指導(dǎo)!</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 夏宇聞,VerlogHDL 數(shù)字系統(tǒng)設(shè)計教程,北京航空航天大學(xué)出版社。2009</p><p> [2] 杜慧敏,基于VerilogHDL的FPGA設(shè)
105、計基礎(chǔ),西安電子科技大學(xué)出版社。2009</p><p> [3] 黃志偉.FPGA系統(tǒng)設(shè)計與實踐[M].北京:清華大學(xué)出版社。2005</p><p> [4] 袁俊泉,孫敏琪,曹瑞.Verilog HDL數(shù)字系統(tǒng)設(shè)計及其應(yīng)用[M].西安:西安電子出版社。2003</p><p> [5] 王金明.數(shù)字系統(tǒng)設(shè)計與Verilog HDL[M].北京:電子工業(yè)出
106、版社。2011</p><p><b> 附件 程序代碼</b></p><p> 頂層模塊VerilogHDL代碼:</p><p> module UESR_test( </p><p> clk, </p><p><b> rst,</b><
107、/p><p><b> DQ,</b></p><p><b> lcd_rs ,</b></p><p><b> lcd_rw ,</b></p><p><b> lcd_en ,</b></p><p><b>
108、; lcd_data,</b></p><p><b> key_in ,</b></p><p><b> led</b></p><p><b> ); </b></p><p> input clk,rst ;//輸入50MHz時鐘&
109、lt;/p><p> inout DQ; //溫度數(shù)據(jù)總線</p><p> input [3:0]key_in; //按鍵輸入</p><p> output [3:0] led; //led燈輸出</p><p> output lcd_rs; //LCD1602片選信號
110、</p><p> output lcd_rw; //LCD1602讀寫信號</p><p> output lcd_en; //LCD1602使能信號</p><p> output [7:0] lcd_data; //LCD1602數(shù)據(jù)位</p><p> wire [3: 0]
111、key_value; </p><p> wire [15:0] temperature ;</p><p> wire [23:0] timed;</p><p> wire [7:0] set_tmp; </p><p> wire [7:0] set_time; </p><
112、p> DS18B20 Q1 ( //DS18B20模塊</p><p> .clk(clk),</p><p> //.rst_n(rst), </p><p> .one_wire(DQ),</p><p> .temperature (temperature )</p
113、><p><b> );</b></p><p> key_scan K0 ( .sys_clk(clk), //按鍵掃描模塊</p><p> .sys_rstn(rst),</p><p> .key_in(key_in),</p><p> .key_value(k
114、ey_value),</p><p><b> ); </b></p><p> clock c0 (.clk(clk), //時鐘分頻計時模塊</p><p> .timed(timed) </p><p><b> );</b><
115、/p><p> lcd1602 s0( //LCD顯示模塊</p><p> .sys_clk(clk), </p><p> .sys_rstn(rst),</p><p> .lcd_rs(lcd_rs),</p><p> .lcd_rw(lcd_r
116、w),</p><p> .lcd_en(lcd_en),</p><p> .lcd_data(lcd_data), </p><p> .display_data(temperature ),</p><p> .display_time(timed),</p><p> .set_temp(ke
117、y_value),</p><p> .set_time(set_time),</p><p> .set_tmp(set_tmp)</p><p><b> );</b></p><p> led d0( //led閃爍模塊</p
118、><p> .clk(clk), </p><p> .sys_rstn(rst),</p><p> .led(led),</p><p> .data(temperature),</p><p> .t(timed),</p><p> .s_time(set_time),<
119、/p><p> .s_tmp(set_tmp)</p><p><b> );</b></p><p> endmodule</p><p> DS18B20模塊VerilogHDL代碼:</p><p> module DS18B20(</p><p>
120、input clk, // 50MHz時鐘</p><p> //input rst_n, // 異步復(fù)位</p><p> inout one_wire, // One-Wire總線</p><p> outpu
121、t [15:0] temperature // 輸出溫度值</p><p><b> );</b></p><p> reg rst_n;</p><p> reg [19:0]count;</p><p> always@(posedge clk)</p><p>
122、;<b> begin</b></p><p> if(count<20'h80000)</p><p><b> begin</b></p><p><b> rst_n<=1;</b></p><p> count<=count+1;&l
123、t;/p><p><b> end</b></p><p> else if(count<20'h8ffff)</p><p><b> begin</b></p><p> rst_n<=0; </p><p> count<=count+1
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 空調(diào)控制系統(tǒng)畢業(yè)論文
- 畢業(yè)設(shè)計--基于fpga的空調(diào)控制系統(tǒng)設(shè)計
- 畢業(yè)論文-基于fpga的空調(diào)控制器的設(shè)計
- 基于單片機的空調(diào)控制系統(tǒng)設(shè)計畢業(yè)論文
- 基于plc的中央空調(diào)控制系統(tǒng)設(shè)計畢業(yè)論文
- 基于plc的中央空調(diào)控制系統(tǒng)設(shè)計畢業(yè)論文
- 中央空調(diào)控制系統(tǒng)畢業(yè)論文
- 畢業(yè)論文--基于單片機的智能空調(diào)控制系統(tǒng)設(shè)計
- 基于plc-的中央空調(diào)控制系統(tǒng)設(shè)計畢業(yè)論文
- 基于fpga的溫度控制系統(tǒng)設(shè)計【畢業(yè)論文】
- 基于fpga的空調(diào)控制畢業(yè)設(shè)計畢業(yè)設(shè)計論文
- 基于fpga電梯控制系統(tǒng)畢業(yè)論文
- 基于fpga的運動控制系統(tǒng)-畢業(yè)論文
- 汽車空調(diào)控制系統(tǒng)設(shè)計本科畢業(yè)論文
- 2017畢業(yè)論文-基于plc的醫(yī)院中央空調(diào)控制系統(tǒng)設(shè)計
- 基于組態(tài)軟件環(huán)境下的中央空調(diào)控制系統(tǒng)設(shè)計【畢業(yè)論文】
- 基于fpga的交通燈控制系統(tǒng)設(shè)計【畢業(yè)論文】
- 空調(diào)控制系統(tǒng)畢業(yè)設(shè)計
- 畢業(yè)論文——基于avr單片機的汽車空調(diào)控制系統(tǒng)
- 基于fpga的自動售貨機控制系統(tǒng)設(shè)計畢業(yè)論文
評論
0/150
提交評論