基于FPGA的智能溫度控制系統(tǒng)設計_第1頁
基于FPGA的智能溫度控制系統(tǒng)設計_第2頁
基于FPGA的智能溫度控制系統(tǒng)設計_第3頁
基于FPGA的智能溫度控制系統(tǒng)設計_第4頁
基于FPGA的智能溫度控制系統(tǒng)設計_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、湖南文理學院課程設計報告課程名稱: 通信系統(tǒng)課程設計 專業(yè)班級: 通信1101班 學號(06位 )學生姓名: 指導教師: 戴正科 完成時間: 2014年 11 月 21 日 報告成績:評閱意見: 評閱教師 日期 2014.11.21 基于FPGA的智能溫度控制的設計目錄1.設計題目12.設計要求13.設計作用與目的14.所用設備(儀器)和軟件25.系統(tǒng)設計方案25.1 系統(tǒng)總體設計25.2 工作原理35.2.1 溫度控制系統(tǒng)特性研究36.智能溫度控制器系統(tǒng)硬件設計46.1 系統(tǒng)方案設計46.1.1 FPGA與DAC0832結(jié)合的目的46.1.2 系統(tǒng)需求分析46.1.3系統(tǒng)需求分析56.2系統(tǒng)

2、結(jié)構(gòu)66.2.1調(diào)試/配置電路67.智能溫度控制系統(tǒng)軟件設計87.1 軟件總體設計87.1.1 設定定義87.1.2 VHDL實現(xiàn)87.2 軟件程序設計97.2.1 分頻模塊97.2.2 鍵盤模塊107.2.3 ADC0809 控制模塊117.2.4 三模塊連接在一塊137.3 本章小結(jié)158.實驗調(diào)試結(jié)果158.1 實驗條件158.2 實驗結(jié)果及分析158.3 本章小結(jié)179.設計中的問題及解決方法1710.設計心得1811.參考文獻1812.附錄181.設計題目基于FPGA的智能溫度控制的設計2.設計要求通過前向溫度采集電路,采集當前孵化器內(nèi)部的溫度信號,將采集到的模擬信號通過ADC080

3、9模數(shù)轉(zhuǎn)換芯片,轉(zhuǎn)變?yōu)镕PGA可控的數(shù)字信號,F(xiàn)PGA芯片根據(jù)輸入的當前實際溫度,控制輸出合理的數(shù)字信號,再由DAC0832轉(zhuǎn)換為模擬信號,輸入到后向加熱執(zhí)行電路,以此來完成對整個孵化器的溫度控制。整個系統(tǒng)中,帶有溫度傳感器的前向溫度采集電路作為系統(tǒng)的反饋環(huán)節(jié),實時反映當前環(huán)境的具體溫度。3.設計作用與目的在空間生命科學試驗中,生命培養(yǎng)模擬地面環(huán)境要求,主要研究宇空間因素,如失重、宇宙輻射、真空、高溫(或低溫)等對生命過程的影響。其中溫度對空間生命的生存有直接作用,是空間生物學研究的主要對象。同時由于空間、體積、電功率的限制,對電功率加熱器和控制電路方面盡量做到節(jié)能、低功耗、小體積。假設模擬地

4、面培養(yǎng)箱內(nèi)的溫度在18。這樣對控制精度和芯片必須有更高的要求。傳統(tǒng)的溫度控制方法以設定 為臨界點,超出設定允許范圍即進行溫度調(diào)控,低于設定值就加熱,反之就停止或降溫。這種方法實現(xiàn)簡單、成本低,但控制效果不理想,控制溫度精度不高、達到穩(wěn)定點的時間也長,因此,只能用在精度要求不高的場合。對于空間生命科學的溫度控制,這樣的控制過程遠遠達不到控制要求。FPGA是通過硬件語言描述實現(xiàn)并行計算機功能的硬件電路。應用FPGA實現(xiàn)PID控制可以提高PID運算的速度,避免了用單片機實現(xiàn)PID控制按順序執(zhí)行命令對運行速度延時性,非線性的影響。同時FPGA實現(xiàn)的PID控制的內(nèi)在電路可以根據(jù)現(xiàn)實需要進行修改,提高了系

5、統(tǒng)的靈活性。采用智能PID控制溫度則具有測量控制精度高、成本低、體積小、功耗低的優(yōu)點。將傳統(tǒng)的電路溫度控制用芯片取代,因此利用FPGA實現(xiàn)PID的智能溫度控制具有深遠的意義4.所用設備(儀器)和軟件整個系統(tǒng)的主芯片采用PFGA即現(xiàn)場可編程門陣列,F(xiàn)PGA在結(jié)構(gòu)上由邏輯功能塊排列為陣列,并且有可編程的內(nèi)部連線連接功能塊實現(xiàn)的一定的邏輯功能。FPGA由掩膜可編程門陣列可編程邏輯器件演變而來,它具有門陣列的高邏輯密度和通用性,還具有用戶可編程的特性。利用功率繼電器的通斷作為自動開關,控制設定值與控制輸入量的關系,通過串口模塊和上位機進行通訊,進一步實現(xiàn)在用戶操作界面上進行在線修改,時間采樣、圖形顯示

6、、數(shù)據(jù)保存等功能5.系統(tǒng)設計方案5.1系統(tǒng)總體設計近百年來,溫度傳感器的發(fā)展大致經(jīng)歷以下三個階段:第一階段是傳統(tǒng)的分立式溫度傳感器(含敏感元件);第二個階段是模擬集成的溫度傳感器/控制器;第三個階段是智能溫度傳感器。在近幾年中,國際上的許多國家已經(jīng)研發(fā)出關于智能溫度控制器的系列產(chǎn)品。智能溫度控制器具有可以輸出溫度控制量以及與溫度數(shù)據(jù)相關的,適配各種微型控制器特點;并且它是在硬件的基礎上通過軟件實現(xiàn)測試控制功能的,其智能化程度取決于軟件的開發(fā)水平。智能溫度傳感器最大的有點就是能對現(xiàn)場測量到溫度值進行數(shù)據(jù)處理和傳輸,并與上位機進行數(shù)據(jù)通信。二十世紀九十年代中期智能溫度控制器問世了,智能溫度控制器是

7、在微電子技術與計算機技術還有自動測試技術的結(jié)合產(chǎn)物。二十一世紀以后,智能溫度傳感器正朝著精度高、功能強、標準化總線、安全性、可靠性、進一步開發(fā)虛擬網(wǎng)絡溫度控制器、研制溫度測量還有溫度控制系統(tǒng),這些高科技的方向迅速發(fā)展。1.改善低精度和低分辨率過去生產(chǎn)的智能溫度傳感器存在著精度低和分辨力差的缺點,并且均采用最常用的8位數(shù)模轉(zhuǎn)化器?,F(xiàn)在很多智能溫度的廠家都針對提升精度和提高分辨力方面做足了工作,分辨力達到了0.50.0625,測溫精度達到±0.5,數(shù)模轉(zhuǎn)換器也從8位擴展到了9到12位。很多國外的公司在現(xiàn)有成就的基礎上,又生產(chǎn)出不需要數(shù)模轉(zhuǎn)換的,13位二進制數(shù)據(jù)傳輸精度為±0.2

8、、分辨力最高可達到0.03125的智能溫度傳感器。2.增加多通道功能為了給研制和開發(fā)多路溫度測量控制系統(tǒng)提供良好條件,許多智能溫度傳感器正從單通道向多通道發(fā)展,同時新型智能溫度傳感器的測試功能也在不斷增強,還在芯片中增加存儲功能。3.總線技術的標準化和規(guī)范化總線技術實現(xiàn)標準化和規(guī)范化,例如:一線總線、I2C總線、SM Bus總線和SPI總線等總線方式。4.安全性和可靠性5.2工作原理5.2.1 溫度控制系統(tǒng)特性研究工程生產(chǎn)中,模擬的建立應該盡量簡化,我們將溫度控制中的各個參數(shù)當作置于溫度有關的函數(shù)來處理。熱量的傳播方向總是從高溫物體傳向低溫物體,就算在同一個問題內(nèi)部進行熱傳導,也是從高溫部分傳

9、向低溫部分。電熱杯加熱系統(tǒng)中,主要是通過電熱絲產(chǎn)生即通過氣體的相互碰撞產(chǎn)生熱量進行熱傳遞。溫度在傳遞過程中一定存在時間延時,這個延時時間可能是由于體積的大小產(chǎn)生的。電熱杯的傳遞函數(shù)寫成GS=K1+TSe-ts 式5-1其中參數(shù)K:系統(tǒng)的放大系數(shù)、T:時間、t延遲時間、s:復變量。1. 放大系數(shù)K放大系數(shù)K,是被控制對象再次達到平衡狀態(tài)時,變化輸出量和變量輸入量的比值。在輸入變化作用相同的情況下,K值越大,變化輸出量就越大,被控對象的自身穩(wěn)定性也會越差;相反,K值越小,被控對象的自身穩(wěn)定性就越好。2. 時間常數(shù)T時間常數(shù)T,是指被控對象輸入影響后,輸出變量達到新穩(wěn)態(tài)值的快慢。時間常數(shù)T,決定動態(tài)

10、過程的時間快慢,是被控制對象的動態(tài)特性參數(shù)。3. 延遲時間t滯后時間t是描述這種現(xiàn)象的動態(tài)參數(shù)。 6.智能溫度控制器系統(tǒng)硬件設計6.1 系統(tǒng)方案設計6.1.1 FPGA與DAC0832結(jié)合的目的溫度,是一種具有慣性大、滯后性大、非線性和時變性強等等特點,因此傳統(tǒng)的控制方法想達到很高的控制要求使很難實現(xiàn)的。在控制過程中,在溫度不斷變化的過程中,環(huán)境在不斷的變化,同時隨著加熱和降溫,加熱器件的特性也會變化,這些都是導致溫度時變的原因;溫度升高外界環(huán)境對加熱系統(tǒng)吸收熱量的程度不同,直接導致了溫度的非線性變化。但是隨著科學創(chuàng)新,工業(yè)發(fā)展的強烈需求,各行各業(yè)對溫度控制的適應性、精度、穩(wěn)定性方面

11、都提出了更高層次的要求,同時使溫度控制進入了智能化的階段。DAC0832溫度傳感器是數(shù)字型的溫度傳感器。在溫度采集時,不需要通過模數(shù)轉(zhuǎn)換器對溫度值進行轉(zhuǎn)換,而且在使用時不需要溫度標準,就可以直接連接到電路中,因此為硬件電路搭建提供了很大的方便,可以使硬件電路結(jié)構(gòu)簡化。同時,DAC0832溫度傳感器還具有速度快,精度高,成本低的有點。FPGA有豐富的I/O引腳和觸發(fā)器的資源,同時還具有動態(tài)重構(gòu)、可反復編程的特點,并且可以利用計算機對器件進行功能仿真。仿真過程中如果出現(xiàn)問題,可以及時調(diào)整設計方案,極大的提高了FPGA的靈活性和通用性。FPGA還具有體積小、集成度高、結(jié)構(gòu)標準化、可移植性好和并行運算

12、的有點。如果將FPGA和DAC0832結(jié)合,利用FPGA控制器實現(xiàn)DAC0832溫度傳感器的溫度采集和控制處理的工作再結(jié)合PID智能控制,不但可以提高溫度控制的速度、精度、而且還可以提高系統(tǒng)的穩(wěn)定性。6.1.2 系統(tǒng)需求分析本設計以這種模擬電路控制在實際應用中很難做到恒溫控制,溫度會在最終歸的預設值附近上下浮動,影響禽蛋的孵化。而且,孵化器的溫度設置也是模擬電路,這樣是完全達不到精準的溫度設置。通過學習FPGA,我設想運用數(shù)字電路來對禽蛋孵化器內(nèi)部溫度進行控制,來實現(xiàn)可控,可調(diào),溫度恒定的禽蛋孵化器。具體的設計框架如下 圖6-1 設計框架 6.1.3系統(tǒng)需求分析本設計應用FPGA控制溫度整體框

13、圖如圖6-2所示。硬件系統(tǒng)可以由兩部分組成,一部分是信號采集裝置,主要是由溫度傳感器、UART(串口數(shù)據(jù)通訊電路)組成,另一部分是信號處理裝置,主要由JTAG(聯(lián)機測試的接口)、液晶顯示器、FPGA、上位機、繼電器、報警器、電源管理。 圖6-2 FPGA控制溫度整體框圖本方案通過前向溫度采集電路,采集當前孵化器內(nèi)部的溫度信號,將采集到的模擬信號通過ADC0809模數(shù)轉(zhuǎn)換芯片,轉(zhuǎn)變?yōu)镕PGA可控的數(shù)字信號,F(xiàn)PGA芯片根據(jù)輸入的當前實際溫度,控制輸出合理的數(shù)字信號,再由DAC0832轉(zhuǎn)換為模擬信號,輸入到后向加熱執(zhí)行電路,以此來完成對整個孵化器的溫度控制。整個系統(tǒng)中,帶有溫度傳感器的前向溫度采集

14、電路作為系統(tǒng)的反饋環(huán)節(jié),實時反映當前環(huán)境的具體溫度,具體的電路圖如下。 圖6-3 前向溫度采集電路圖6.2系統(tǒng)結(jié)構(gòu)在整個設計系統(tǒng)的硬件中主要包括FPGA、調(diào)制/配置電路、時鐘電路、復位電路/重配置電路、系統(tǒng)電源電路、繼電器、外存儲器、LED、獨立按鍵和撥碼開關等構(gòu)成。6.2.1調(diào)試/配置電路此電路設計以AD590作為溫度觸感器,通過添加相應的調(diào)節(jié)電阻,讓溫度與輸出電壓保持一個相對線性的關系其中: :為調(diào)零電阻. :為調(diào)滿度電阻.最終得到的溫度與輸出電壓的關系式為: 式6-1 模數(shù)轉(zhuǎn)換芯片采用的是ADC0809,具體的連接電路圖如下圖6-4 ADC0809與FPGA的連接IN0IN7管角中任選一

15、路作為前向溫度采集電路的輸入,VCC與同時接+5V電壓,與GND接地,OUT1OUT8數(shù)據(jù)輸出端連接FPGA,START,OE,EOC,ADDA-C均連接FPGA,根據(jù)ADC0809的工作時序圖,由FPGA給出相應的信號控制ADC0809。數(shù)模轉(zhuǎn)換部分采用的是DAC0832,具體連接圖如下圖6-5 DAC0832的連接圖DI0-DI7分別于FPGA的8位數(shù)據(jù)輸出端相連,因為DAC0832工作在連續(xù)的負反饋電路中,故采用直通的工作方式,將WR1與WR2直接與地相連,ILE與CS,Xfer引腳均接至FPGA,有FPGA發(fā)送控制信號來控制DAC0832的工作。輸出引腳Iout1與Iout2連接一個流

16、壓轉(zhuǎn)換器,將輸出的電流信號轉(zhuǎn)換為需要的電壓信號,并進行適當?shù)姆糯?。最后輸出到孵化器的加熱電路。FPGA模塊控制ADC0809的工作狀態(tài),并接收來自ADC0809的數(shù)字信號,與鍵盤輸入的預設信號進行比較后,將控制信息傳送給DAC0832,經(jīng)由數(shù)模轉(zhuǎn)換器轉(zhuǎn)換后加在發(fā)熱裝置兩端,對整個孵化器內(nèi)部溫度進行控制。7.智能溫度控制系統(tǒng)軟件設計7.1 軟件總體設計7.1.1 設定定義在系統(tǒng)設計之前,首先需要提出方案、系統(tǒng)設計和FPGA芯片選擇等前期工作。然后針對系統(tǒng)指標和復位程度,根據(jù)芯片的成本、資源等各方面進行衡量,選擇出合理的設計方案和芯片類型。一般情況下,對FPGA的設計采用自頂向下的設計方法,先把整

17、個系統(tǒng)分為幾個基本單元,再把每個基本單元劃分為下一層的基本單元,按照上述步驟進行,直至可以使用元件庫中的元件。7.1.2 VHDL實現(xiàn) VHDL實現(xiàn)就是在設計的系統(tǒng)和電路中用硬件描述語言(VHDL)表示出來,并輸入給EDA工具的過程。為了避免以往繪制原理圖時的可移植性差、效率低下、不易維護的缺點,目前在實際開發(fā)中廣泛應用的是HDL語言輸入法,利用文本描述設計。最常用的兩種語言HDL和VDL和VHDL是美國電氣與電子工程師協(xié)會(IEEE)的標準,它們共同的優(yōu)點是:語言與芯片工藝無關,利用自頂向下的設計方法,可移植性好,便于模塊的劃分與移植,具有很強的邏輯描述和方針功能。圖7-1 FPGA的開發(fā)流

18、程圖7.2 軟件程序設計 本文所設計運用程序模塊化編程思想將系統(tǒng)各功能模塊化,軟件系統(tǒng)基本可以分為三個個模塊:分頻模塊、鍵盤模塊、ADC0809控制模塊、下面對每個模塊進行詳細介紹。7.2.1 分頻模塊圖7-2 分頻模塊由于外界的時鐘源一般都較高,而ADC0809以及鍵盤掃描模塊需要的時鐘頻率較低,故需要對外界時鐘源進行分頻,這里外界輸入時鐘源為20MHz,對其進行64分頻。波形仿真圖如下:圖7-3 分頻波形仿真圖從波形圖可以看出,clk每經(jīng)過64個脈沖,clk1跳轉(zhuǎn)一次。分頻模塊工作正常.7.2.2 鍵盤模塊圖7-4 鍵盤模塊鍵盤模塊的脈沖輸入來自分頻模塊。其中,輸入端口為兩位二進制數(shù),分別

19、接兩個按鍵,來對預設溫度進行加減調(diào)控。輸出有兩個端口,xianshi端口作為保留端口,存儲著當前預設溫度的數(shù)值,可外接顯示設備。zhi端口為信息傳送端口,其存儲值為當前預設溫度值經(jīng)由采集電路溫度電壓公式換算后的十進制數(shù)值。換算公式如下: 式7-1例:38攝氏度對應的ADC0809輸出數(shù)據(jù)為5*38*256/100/5,得到十進制值為97;波形仿真圖如下:圖7-5 溫度減按鍵圖7-6 溫度加按鍵圖中,圖7-5為溫度減按鍵,圖7-6為溫度加按鍵,相應的預設溫度對應相應的ADC0809輸出值,由圖2得,當預設溫度為38攝氏度時,對應換算后的ADC0809輸出數(shù)據(jù)為97,與計算相符。鍵盤輸入模塊工作正

20、常7.2.3 ADC0809 控制模塊圖7-7 ADC0809控制模塊經(jīng)查閱資料,DAC0832需采用直通式,故,將DAC0832的控制語句直接寫在了ADC0809的控制語句塊內(nèi)。ile為輸出到ADC0832的輸入鎖存允許信號,cont為ADC0832WR1,WR2,CS等引腳。Wendu為預設溫度的輸入引腳。din為ADC0809轉(zhuǎn)換后的輸出信號,dout為受FPGA控制的輸出到DAC0832的控制信號。clk8為來自為頻器的時鐘信號。根據(jù)ADC0809的時序圖,總結(jié)出相應的狀態(tài)轉(zhuǎn)移圖,一次來編寫控制ADC0809的VHDL語言文件,狀態(tài)轉(zhuǎn)移圖如下圖7-8 狀態(tài)轉(zhuǎn)移圖具體波形仿真圖如下:圖7

21、-9控制ADC0809的仿真圖波形仿真建立在預設溫度為38攝氏度的條件下。前面提到,38攝氏度對應的ADC0809輸出值為97,VHDL程序中設定,當ADC0809輸入值大于或等于97時(當前溫度大于或等于預設溫度),F(xiàn)PGA輸出到DAC0832的控制信號為0,即停止加熱。當ADC0809輸入值小于92(即36攝氏度,與設定溫度相差大于兩度)時,F(xiàn)PGA輸出到DAC0832的控制信號為255,即以最大功率加熱。當ADC0809輸入值小于92時,將會細分為5個階段,即以逐次遞減的功率加熱。由圖可知,ADC0809工作正常。7.2.4 三模塊連接在一塊 最后,將三個模塊運用元件例化語句連接在一塊,

22、并進行電路觀察,生成相應的邏輯電路,如下圖:圖7-10 三模塊連接圖總體波形仿真如下圖:圖7-11 總仿真圖波形分析:剛開始,F(xiàn)PGAjia置1,預設溫度逐漸增加,如下圖:圖7-12 溫度增加仿真圖 當溫度到達38攝氏度后停止增加,即將38攝氏度作為預設溫度,隨后,觀察FPGAin與FPGAout。當預設溫度為38攝氏度時,輸入為97時,對應輸出為0,當為92時,對應輸出為5,當為96時,對應輸出為1,當輸入不在92-97之間,輸入大于97時,輸出為0,輸入小與92時,輸出為255.觀察上圖波形仿真,完全符合程序設計。7.3 本章小結(jié)本章運用了模塊化思想,將系統(tǒng)各個部分模塊化,應用主函數(shù)調(diào)用其

23、他相應的模塊,大大的提高了編程效率,減少程序修改,整合過程的工作量。8.實驗調(diào)試結(jié)果8.1 實驗條件實驗是在恒溫下調(diào)試出的結(jié)果。8.2 實驗結(jié)果及分析以下圖8-1、圖8-2、圖8-3、圖8.4分別是分頻模塊、鍵盤模塊、ADC0809控制模塊、三模塊連接在一起時在仿真正常的統(tǒng)計報告圖:圖8-1 分頻模塊分頻模塊的VHDL文件見附錄1圖8-2 鍵盤模塊鍵盤模塊的VHDL文件見附錄2圖8-3 ADC0809控制模塊ADC0809模塊的VHDL仿真文件見附錄3圖8-4 三模塊連接圖總體的VHDL程序見附錄48.3 本章小結(jié)應用設計出的軟件、硬件對實際的電熱杯溫度信息測量和控制,得到最適合被設計的智能溫

24、度控制器為微分先行PID控制器。9.設計中的問題及解決方法在本次設計中主要遇到的問題是對于FPGA芯片不是很了解,需要查閱很多資料去了解FPGA芯片的一系列管腳即其功能。10.設計心得本文從智能控制的角度出發(fā),在控制領域中應用FPGA,設計并實現(xiàn)了基本FPGA的智能溫度控制,我在這次設計中遇到了很多的困難,資料不齊全,而且是很零散的,還重新學習了,但是我都沒有放棄,還是一步一步的實現(xiàn),在這次設計中剛開始我在網(wǎng)上找到的圖片是很模糊的,所以我就用protel99這個軟件重新畫圖,但是我已經(jīng)很久沒有畫了,都差不多都忘了protel99,我就開始重新學習了,把圖給畫好了,在這次設計中我學會了怎么在網(wǎng)上

25、自己獨立的尋找資料,還知道了自己有哪些不足的地方,自己日后則可以知道忘哪些地方學習咯11.參考文獻1.劉美霞,智能溫度控制系統(tǒng)(碩士學位論文)南京航空航天大學,2003.2. 韓雪,將國平,馬幼軍。數(shù)字式溫度傳感器DS18B20在溫室環(huán)境檢測中的應用,儀表技術與傳感器,2002(9):29-313. 肖衡,陳春俊。PID溫度控制裝置的電路設計。計量與測試技術,2003(1):10-114陳文軍,陳理君。FPGA在窯爐溫度模糊控制系統(tǒng)設計。鹽城工學報,2006(12):40-43 12.附錄附錄1程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;US

26、E IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity fenpin isport(clk :in std_logic; -外部輸入時鐘源 clk1: out std_logic);end fenpin; -分頻后的時鐘源architecture b of fenpin is signal count : std_logic_vector(7 downto 0); -信號定義 signal clk2 : std_logic; beginprocess(clk) beginif(clk'event and clk

27、='1') then -計數(shù)脈沖上升沿if(count="01000000") thencount<=(others=>'0');clk2<=not clk2; -當達到64個脈沖時count置0,clk2取反else count<=count+1; -未達到64脈沖時繼續(xù)計數(shù); end if;end if;clk1<=clk2; 將產(chǎn)生的分頻信號給輸出端口end process;end b;附錄2: library ieee;use ieee.std_logic_1164.all;use ieee.std_lo

28、gic_arith.all;use ieee.std_logic_unsigned.all;entity jianpan isport(clk:in std_logic; -分頻后的時鐘輸入shuru:in std_logic_vector(1 downto 0);-輸入端,按鍵加0位,按鍵減1位 zhi :out integer; -預設溫度轉(zhuǎn)化為ADC0809輸出值 xianshi :out integer); -當前預設溫度 end entity;architecture beha of jianpan is signal x:integer range 0 to 200; -定義信號b

29、eginprocess(clk)begin if(clk'event and clk='1') then case shuru is -檢測是否有輸入 when "01"=>x<=x+1; -按鍵加按下,溫度+1 when "10"=>if(x=0)then x<=0; -按鍵減按下,判斷溫度是否為0 else x<=x-1; -若為0,則依舊為0,否則,溫度-1 end if; when others=>x<=x; -其他按鍵情況,溫度不變 end case; end if; xians

30、hi<=x; -將溫度賦給顯示輸出端zhi<=x*5*256/100/5; -將溫度轉(zhuǎn)化后賦給輸出端end process;end beha;附錄3:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity ADC0809 isport(din :in std_logic_vector(7 downto 0); -ADC0809輸出的采樣數(shù)據(jù) clk8 :in std_logic; -時鐘信號 eoc :in std_log

31、ic; -ADC0809轉(zhuǎn)換結(jié)束指示,高電平有效 ale :out std_logic; -ADC0809地址鎖存次信號 ile: out std_logic; -DAC0832數(shù)據(jù)鎖存允許 cont: out std_logic; -DAC0832控制信號(WR1,WR2,CS,Xfer) start :out std_logic; -ADC0809轉(zhuǎn)換啟動信號 oe :out std_logic; -ADC0809數(shù)據(jù)輸出允許信號 wendu:in integer; -溫度顯示 adda :out std_logic; -ADC0809信號通道控制位 addb :out std_logic

32、; -ADC0809信號通道控制位 addc :out std_logic; -ADC0809信號通道控制位 lock0 :out std_logic; -ADC0809觀察數(shù)據(jù)鎖存時鐘 dout :out std_logic_vector(7 downto 0); -輸出到DAC0832的8位數(shù)據(jù)end ADC0809;architecture beha of ADC0809 is type states is(st0,st1,st2,st3,st4); -定義ADC0809工作狀態(tài) signal current_state,next_state:states:=st0; -定義信號 sig

33、nal regl :std_logic_vector(7 downto 0); signal shuchu :std_logic_vector(7 downto 0); signal lock :std_logic; signal count :std_logic_vector(7 downto 0);begin adda<='1' -地址輸入001,選擇IN1 addb<='0' addc<='0' dout<=shuchu; -將處理后的數(shù)據(jù)傳輸?shù)捷敵龆丝?lock0<=lock; -數(shù)據(jù)傳輸 ile<=&

34、#39;1' -DAC0832的控制信號 cont<='0' com:process(current_state,eoc) -狀態(tài)轉(zhuǎn)移 begin case current_state is when st0=>ale<='0'start<='0'lock<='0'oe<='0'next_state<=st1; when st1=>ale<='1'start<='1'lock<='0'oe<

35、;='0'next_state<=st2; when st2=>ale<='0'start<='0'lock<='0'oe<='0'next_state<=st1; if(eoc='1')then next_state<=st3; else next_state<=st2; end if; when st3=>ale<='0'start<='0'lock<='0'oe<

36、='1'next_state<=st4; when st4=>ale<='0'start<='0'lock<='1'oe<='1'next_state<=st0; when others=>next_state<=st0; end case; end process com;reg:process(clk8) begin if(clk8'event and clk8='1') then current_state<=next_sta

37、te; -在時鐘上升沿改變狀態(tài) end if; end process reg;latch1:process(lock) begin if lock='1'and lock'event then regl<=din; -將輸入數(shù)據(jù)賦給中間變量 end if;end process latch1;kongzhi:process(regl) begin if(regl<wendu) then -判斷輸入數(shù)據(jù)與預設溫度的大小 case wendu-regl is -判斷輸入數(shù)據(jù)與預設溫度的 when "00000101"=>shuchu&

38、lt;="00000101" -差值為5時輸出控制信號5 when "00000100"=>shuchu<="00000100" -差值為4時輸出控制信號4 when "00000011"=>shuchu<="00000011" -差值為3時輸出控制信號3 when "00000010"=>shuchu<="00000010" -差值為2時輸出控制信號2 when "00000001"=>shu

39、chu<="00000001" -差值為1時輸出控制信號1 when others=>shuchu<="11111111" -差值大于5時輸出255 end case; else shuchu<="00000000" -當前溫度大于預設溫度,輸出0 end if;end process kongzhi; end beha;附錄4:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_

40、arith.all;entity FPGA isport(clkin:in std_logic; -定義外部時鐘端口 FPGAeoc:in std_logic; FPGAin :in std_logic_vector(7 downto 0); FPGAout:out std_logic_vector(7 downto 0); FPGAale :out std_logic; FPGAjia :in std_logic; FPGAjian :in std_logic; FPGAwendu:out integer; FPGAile: out std_logic; FPGAcont: out std_

41、logic; FPGAstart :out std_logic; FPGAoe :out std_logic; FPGAadda :out std_logic; FPGAaddb :out std_logic; FPGAaddc :out std_logic);end entity;architecture beha of FPGA iscomponent ADC0809 is -元件例化聲明port(din :in std_logic_vector(7 downto 0); clk8 :in std_logic; eoc :in std_logic; ale :out std_logic;

42、ile: out std_logic; cont: out std_logic; start :out std_logic; wendu:in integer; oe :out std_logic; adda :out std_logic; addb :out std_logic; addc :out std_logic; lock0 :out std_logic; dout :out std_logic_vector(7 downto 0); end component;component fenpin is -元件例化聲明 port(clk :in std_logic; clk1: out

43、 std_logic);end component;component jianpan is port(clk:in std_logic; shuru:in std_logic_vector(1 downto 0); zhi :out integer; xianshi:out integer);end component; signal c:std_logic; -定義中間變量signal n:integer; beginU0:fenpin port map(clk=>clkin,clk1=>c); -元件例化U1:ADC0809 port map(clk8=>c,wendu

44、=>n,din=>FPGAin,eoc=>FPGAeoc,dout=>FPGAout,ale=>FPGAale,ile=>FPGAile, cont=>FPGAcont,start=>FPGAstart,oe=>FPGAoe,adda=>FPGAadda,addb=>FPGAaddb,addc=>FPGAaddc);U2:jianpan port map(clk=>c,shuru(1)=>FPGAjian,shuru(0)=>FPGAjia,zhi=>n,xianshi=>FPGAwendu)

45、;end beha;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity fenpin isport(clk :in std_logic; -外部輸入時鐘源 clk1: out std_logic);end fenpin; -分頻后的時鐘源architecture b of fenpin is signal count : std_logic_vector(7 downto 0); -信號定義 signal clk2 : std_l

46、ogic; beginprocess(clk) beginif(clk'event and clk='1') then -計數(shù)脈沖上升沿if(count="01000000") thencount<=(others=>'0');clk2<=not clk2; -當達到64個脈沖時count置0,clk2取反else count<=count+1; -未達到64脈沖時繼續(xù)計數(shù); end if;end if;clk1<=clk2; 將產(chǎn)生的分頻信號給輸出端口end process;end b;library

47、ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity jianpan isport(clk:in std_logic; -分頻后的時鐘輸入 shuru:in std_logic_vector(1 downto 0); -輸入端,按鍵加0位,按鍵減1位 zhi :out integer; -預設溫度轉(zhuǎn)化為ADC0809輸出值 xianshi :out integer); -當前預設溫度 end entity;architecture beha of

48、jianpan is signal x:integer range 0 to 200; -定義信號beginprocess(clk)begin if(clk'event and clk='1') then case shuru is -檢測是否有輸入 when "01"=>x<=x+1; -按鍵加按下,溫度+1 when "10"=>if(x=0)then x<=0; -按鍵減按下,判斷溫度是否為0 else x<=x-1; -若為0,則依舊為0,否則,溫度-1 end if; when others=>x<=x; -其他按鍵情況,溫度不變 end case; end if; xians

溫馨提示

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

評論

0/150

提交評論