基于FPGA的數(shù)字溫度計(jì)設(shè)計(jì)_第1頁(yè)
基于FPGA的數(shù)字溫度計(jì)設(shè)計(jì)_第2頁(yè)
基于FPGA的數(shù)字溫度計(jì)設(shè)計(jì)_第3頁(yè)
基于FPGA的數(shù)字溫度計(jì)設(shè)計(jì)_第4頁(yè)
基于FPGA的數(shù)字溫度計(jì)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于FPGA的數(shù)字溫度設(shè)計(jì)摘要:本設(shè)計(jì)有效的克服了傳統(tǒng)的數(shù)字溫度計(jì)的缺點(diǎn),采用EDA技術(shù)自上而下的設(shè)計(jì)思路,繪制出了具體的邏輯電路,最后又在硬件上通過(guò)對(duì)其進(jìn)行調(diào)試和驗(yàn)證?;贔PGA在Quartus II 9.0sp2軟件下應(yīng)用VHDL語(yǔ)言編寫(xiě)程序,采用ALTRA公司CycloneII系列的EP2C8Q208芯片進(jìn)行了計(jì)算機(jī)仿真,并給出了相應(yīng)的仿真結(jié)果。該電路能夠?qū)崿F(xiàn)很好的測(cè)溫功能。關(guān)鍵字:數(shù)字溫度計(jì);EDA;FPGA;VHDL;Quartus II 9.0sp2;EP2C8Q208The design of digital thermometer based on FPGA Abstract

2、:This design effectively overcomes the traditional digital thermometers weaknesses and takes a top-down approach to design.Draw out a particular logic circuits, and finally pass the circuits to the hardware to debug and verify it.This design is based on FPGA using VHDL language to write program in Q

3、uartus II software, adopting EP2C8Q208 chip of Cyclone-II series of ALTRA company for computer simulation and at the same time showing the corresponding simulation result. This circuit is able to carry out excellent temperature- measurement function.Keyords: Digital thermometer;EDA;FPGA;VHDL;Quartus

4、 II;EP2C8Q208引言檢測(cè)是控制的基礎(chǔ)和前提,而檢測(cè)的精度必須高于控制的精確度,否則無(wú)從實(shí)現(xiàn)控制的精度要求。不僅如此,檢測(cè)還涉及國(guó)計(jì)民生各個(gè)部門(mén),可以說(shuō)在所以科學(xué)技術(shù)領(lǐng)域無(wú)時(shí)不在進(jìn)行檢測(cè)??茖W(xué)技術(shù)的發(fā)展和檢測(cè)技術(shù)的發(fā)展是密切相關(guān)的。現(xiàn)代化的檢測(cè)手段能達(dá)到的精度、靈敏度及測(cè)量范圍等,在很大程度上決定了科學(xué)技術(shù)的發(fā)展水平。同時(shí),科學(xué)技術(shù)的發(fā)展達(dá)到的水平越高,又為檢測(cè)技術(shù)、傳感器技術(shù)提供了新的前提手段。目前溫度計(jì)技術(shù)的發(fā)展很快,從原始的玻璃管溫度計(jì)發(fā)展到了現(xiàn)在的熱電阻溫度計(jì)、熱電偶溫度計(jì)、數(shù)字溫度計(jì)、電子溫度計(jì)等等。目前的溫度計(jì)中傳感器是它的重要組成部分,它的精度靈敏度基本決定了溫度計(jì)的精度

5、、測(cè)量范圍、控制范圍和用途等1。傳感器應(yīng)用極其廣泛,目前已經(jīng)研制出多種新型傳感器。1設(shè)計(jì)要求現(xiàn)代社會(huì)的標(biāo)志之一就是信息產(chǎn)品的廣泛使用,而且是產(chǎn)品的性能越來(lái)越強(qiáng),復(fù)雜程度越來(lái)越高,更新步伐越來(lái)越快。支撐信息電子產(chǎn)品高速發(fā)展的基礎(chǔ)就是微電子制造工藝水平的提高和電子產(chǎn)品設(shè)計(jì)開(kāi)發(fā)技術(shù)的發(fā)展。前者以微細(xì)加工技術(shù)為代表,而后者的代表就是電子設(shè)計(jì)自動(dòng)化(electronic design automatic,EDA)技術(shù)5。本設(shè)計(jì)采用的VHDL是一種全方位的硬件描述語(yǔ)言,具有極強(qiáng)的描述能力,能支持系統(tǒng)行為級(jí)、寄存器傳輸級(jí)和邏輯門(mén)級(jí)三個(gè)不同層次的設(shè)計(jì);支持結(jié)構(gòu)、數(shù)據(jù)流、行為三種描述形式的混合描述、覆蓋面廣、抽

6、象能力強(qiáng),因此在實(shí)際應(yīng)用中越來(lái)越廣泛。ASIC是專用的系統(tǒng)集成電路,是一種帶有邏輯處理的加速處理器。而FPGA是特殊的ASIC芯片,與其他的ASIC芯片相比,它具有設(shè)計(jì)開(kāi)發(fā)周期短、設(shè)計(jì)制造成本低、開(kāi)發(fā)工具先進(jìn)、標(biāo)準(zhǔn)產(chǎn)品無(wú)需測(cè)試、質(zhì)量穩(wěn)定以及可實(shí)時(shí)在線檢測(cè)等優(yōu)點(diǎn)2。溫度的數(shù)字化給人們生產(chǎn)生活帶來(lái)了極大的方便。因此,研究數(shù)字溫度計(jì)及其應(yīng)用,有著非常現(xiàn)實(shí)的意義。1.1 選題背景本節(jié)將從FPGA嵌入式應(yīng)用開(kāi)發(fā)技術(shù)與溫度計(jì)發(fā)展的客觀實(shí)際出發(fā),通過(guò)對(duì)該技術(shù)發(fā)展?fàn)顩r的了解,以及課題本身的需要,指出研究基于FPGA的芯片系統(tǒng)與設(shè)計(jì)數(shù)字溫度計(jì)的設(shè)計(jì)與實(shí)現(xiàn)的必要性3。1.1.1 課題相關(guān)技術(shù)的發(fā)展當(dāng)今電子產(chǎn)品正向

7、功能多元化,體積最小化,功耗最低化的方向發(fā)展。它與傳統(tǒng)的電子產(chǎn)品在設(shè)計(jì)上的顯著區(qū)別師大量使用大規(guī)??删幊踢壿嬈骷?,使產(chǎn)品的性能提高,體積縮小,功耗降低.同時(shí)廣泛運(yùn)用現(xiàn)代計(jì)算機(jī)技術(shù),提高產(chǎn)品的自動(dòng)化程度和競(jìng)爭(zhēng)力,縮短研發(fā)周期。EDA技術(shù)正是為了適應(yīng)現(xiàn)代電子技術(shù)的要求,吸收眾多學(xué)科最新科技成果而形成的一門(mén)新技術(shù)。美國(guó)ALTERA公司的可編程邏輯器件采用全新的結(jié)構(gòu)和先進(jìn)的技術(shù),加上MaxplusII(或最新的QUARTUS)開(kāi)發(fā)環(huán)境,更具有高性能,開(kāi)發(fā)周期短等特點(diǎn),十分方便進(jìn)行電子產(chǎn)品的開(kāi)發(fā)和設(shè)計(jì)4。EDA技術(shù)以大規(guī)??删幊踢壿嬈骷樵O(shè)計(jì)載體,以硬件描述語(yǔ)言為系統(tǒng)邏輯描述主要表達(dá)方式,以計(jì)算機(jī)、大規(guī)

8、??删幊踢壿嬈骷拈_(kāi)發(fā)軟件及實(shí)驗(yàn)開(kāi)發(fā)系統(tǒng)為設(shè)計(jì)工具,通過(guò)有關(guān)的開(kāi)發(fā)軟件,自動(dòng)完成用軟件的方式設(shè)計(jì)的電子系統(tǒng)到硬件系統(tǒng)的邏輯編譯,邏輯化簡(jiǎn),邏輯分割,邏輯映射,編程下載等工作。最終形成集成電子系統(tǒng)或?qū)S眉尚酒囊婚T(mén)新技術(shù)5。1.1.2 課題研究的必要性新產(chǎn)品、新技術(shù)層出不窮,電子技術(shù)的發(fā)展更是日新月異??梢院敛豢鋸埖恼f(shuō),電子技術(shù)的應(yīng)用無(wú)處不在,電子技術(shù)正在不斷地改變我們的生活,改變著我們的世界。近些年,隨著科技的發(fā)展和社會(huì)的進(jìn)步,人們對(duì)溫度計(jì)的要求也越來(lái)越高,不管在哪里,人們都想知道此刻的溫度和天氣狀況等一些信息,傳統(tǒng)的溫度計(jì)由于它的局限性以及不方便性,已不能滿足人們的需求。溫度計(jì)亟待一次革命

9、,不管在性能還是在樣式上它都將發(fā)生質(zhì)的變化,于是數(shù)字溫度計(jì)的時(shí)代悄然來(lái)臨了。 1.2 課題研究的內(nèi)容本設(shè)計(jì)主要研究基于FPGA的數(shù)字溫度計(jì)設(shè)計(jì),要求溫度采集準(zhǔn)確精確,精確度達(dá)到0.0625攝氏度,對(duì)溫度的采集由41矩形鍵盤(pán)進(jìn)行控制。2. FPGA簡(jiǎn)介2.1 FPGA概述FPGA是現(xiàn)場(chǎng)可編程門(mén)陣列(Field Programmable Gate Array)的簡(jiǎn)稱,與之相應(yīng)的CPLD是復(fù)雜可編程邏輯器件(Complex Programmable Logic Device)的簡(jiǎn)稱,兩者的功能基本相同,只是實(shí)現(xiàn)原理略有不同,所以有時(shí)可以忽略這兩者的區(qū)別,統(tǒng)稱為可編程邏輯器件或CPLD/PGFA。CP

10、LD/PGFA幾乎能完成任何數(shù)字器件的功能,上至高性能CPU,下至簡(jiǎn)單的74電路。它如同一張白紙或是一堆積木,工程師可以通過(guò)傳統(tǒng)的原理圖輸入或硬件描述語(yǔ)言自由的設(shè)計(jì)一個(gè)數(shù)字系統(tǒng)。通過(guò)軟件仿真可以事先驗(yàn)證設(shè)計(jì)的正確性,在PCB完成以后,利用CPLD/FPGA的在線修改功能,隨時(shí)修改設(shè)計(jì)而不必改動(dòng)硬件電路。使用CPLA/FPGA開(kāi)發(fā)數(shù)字電路,可以大大縮短設(shè)計(jì)時(shí)間,減少PCB面積,提高系統(tǒng)的可靠性。這些優(yōu)點(diǎn)使得CPLA/FPGA技術(shù)在20世紀(jì)90年代以后得到飛速的發(fā)展,同時(shí)也大大推動(dòng)了EDA軟件和硬件描述語(yǔ)言HDL的進(jìn)步4。2.2 FPGA基本結(jié)構(gòu)FPGA具有掩膜可編程門(mén)陣列的通用結(jié)構(gòu),它由邏輯功能

11、塊排成陣列,并由可編程的互連資源連接這些邏輯功能塊來(lái)實(shí)現(xiàn)不同的設(shè)計(jì)。FPGA一般由3種可編程電路和一個(gè)用于存放編程數(shù)據(jù)的靜態(tài)存儲(chǔ)器SRAM組成。這3種可編程電路是:可編程邏輯模塊、輸入/輸出模塊(IOB-I/O Block)和互連資源??删幊踢壿嬆KCLB是實(shí)現(xiàn)邏輯功能的基本單元,它們通常規(guī)則的排列成一個(gè)陣列,散布于整個(gè)芯片;可編程輸入/輸出模塊(IOB)主要完成芯片上的邏輯與外部封裝腳的接口,它通常排列在芯片的四周;可編程互連資源包括各種長(zhǎng)度的連接線段和一些可編程連接開(kāi)關(guān),它們將各個(gè)CLB之間或CLB、IOB之間以及IOB之間連接起來(lái),構(gòu)成特定功能的電路。(1) CLB是FPGA的主要組成部

12、分。圖2-1是CLB基本結(jié)構(gòu)框圖,它主要由邏輯函數(shù)發(fā)生器、觸發(fā)器、數(shù)據(jù)選擇器等電路組成。CLB中3個(gè)邏輯函數(shù)發(fā)生器分別是G、F和H,相應(yīng)的輸出是G、F和H。G有4個(gè)輸入變量G1、G2、G3和G4;F也有4個(gè)輸入變量F1、F2、F3和F4。這兩個(gè)函數(shù)發(fā)生器是完全獨(dú)立的,均可以實(shí)現(xiàn)4輸入變量的任意組合邏輯函數(shù)。邏輯函數(shù)發(fā)生器H有3個(gè)輸入信號(hào);前兩個(gè)是函數(shù)發(fā)生器的輸出G和F,而另一個(gè)輸入信號(hào)是來(lái)自信號(hào)變換電路的輸出H1。這個(gè)函數(shù)發(fā)生器能實(shí)現(xiàn)3輸入變量的各種組合函數(shù)。這3個(gè)函數(shù)發(fā)生器結(jié)合起來(lái),可實(shí)現(xiàn)多達(dá)9變量的邏輯函數(shù)。CLB中有許多不同規(guī)格的數(shù)據(jù)選擇器(四選一、二選一等),通過(guò)對(duì)CLB內(nèi)部數(shù)據(jù)選擇器

13、的編程,邏輯函數(shù)發(fā)生器G、F和H的輸出可以連接到CLB輸出端X或Y,并用來(lái)選擇觸發(fā)器的激勵(lì)輸入信號(hào)、時(shí)鐘有效邊沿、時(shí)鐘使能信號(hào)以及輸出信號(hào)。這些數(shù)據(jù)選擇器的地址控制信號(hào)均由編程信息提供,從而實(shí)現(xiàn)所需的電路結(jié)構(gòu)。CLB中的邏輯函數(shù)發(fā)生器F和G均為查找表結(jié)構(gòu),其工作原理類似于ROM。F和G的輸入等效于ROM的地址碼,通過(guò)查找ROM中的地址表可以得到相應(yīng)的組合邏輯函數(shù)輸出。另一方面,邏輯函數(shù)發(fā)生器F和G還可以作為器件內(nèi)高速RAM或小的可讀寫(xiě)存儲(chǔ)器使用,它由信號(hào)變換電路控制。(2) 輸入/輸出模塊IOB。IOB提供了器件引腳和內(nèi)部邏輯陣列之間的連接。它主要由輸入觸發(fā)器、輸入緩沖器和輸出觸發(fā)/鎖存器、輸

14、出緩沖器組成。每個(gè)IOB控制一個(gè)引腳,它們可被配置為輸入、輸出或雙向I/O功能。當(dāng)IOB控制的引腳被定義為輸入時(shí),通過(guò)該引腳的輸入信號(hào)先送入輸入緩沖器。緩沖器的輸出分成兩路:一路可以直接送到MUX,另一路經(jīng)延時(shí)幾納秒(或者不延時(shí))送到輸入通路D觸發(fā)器,再送到數(shù)據(jù)選擇器。通過(guò)編程給數(shù)據(jù)選擇器不同的控制信息,確定送至CLB陣列的I1和I2是來(lái)自輸入緩沖器,還是來(lái)自觸發(fā)器。圖2-1 CLB基本結(jié)構(gòu)當(dāng)IOB控制的引腳被定義為輸出時(shí),CLB陣列的輸出信號(hào)OUT也可以有兩條傳輸途徑:一條是直接經(jīng)MUX送至輸出緩沖器,另一條是先存入輸出通路D觸發(fā)器,再送至輸出緩沖器。IOB輸出端配有兩只MOS管,它們的柵極

15、均可編程,使MOS管導(dǎo)通或截止,分別經(jīng)上拉電阻接通Vcc、地線或者不接通,用以改善輸出波形和負(fù)載能力。(3) 可編程互連資源IR??删幊袒ミB資源IR可以將FPGA內(nèi)部的CLB和CLB之間、CLB和IOB之間連接起來(lái),構(gòu)成各種具有復(fù)雜功能的系統(tǒng)。IR主要由許多金屬線段構(gòu)成,這些金屬線段帶有可編程開(kāi)關(guān),通過(guò)自動(dòng)布線實(shí)現(xiàn)各種電路的連接。2.3 FPGA系統(tǒng)設(shè)計(jì)流程一般說(shuō)來(lái),一個(gè)比較大的完整的項(xiàng)目應(yīng)該采用層次化的描述方法:分為幾個(gè)較大的模塊,定義好各功能模塊之間的接口,然后各個(gè)模塊再細(xì)分去具體實(shí)現(xiàn),這就是TOP DOWN(自頂向下)的設(shè)計(jì)方法。目前這種高層次的設(shè)計(jì)方法已被廣泛采用。高層次設(shè)計(jì)只是定義系

16、統(tǒng)的行為特征,可以不涉及實(shí)現(xiàn)工藝,因此還可以在廠家綜合庫(kù)的支持下,利用綜合優(yōu)化工具將高層次描述轉(zhuǎn)換成針對(duì)某種工藝優(yōu)化的網(wǎng)絡(luò)表,使工藝轉(zhuǎn)化變得輕而易舉。CPLD/FPGA系統(tǒng)設(shè)計(jì)的工作流程如圖2-2所示6。圖2-2 CPLD/FPGA系統(tǒng)設(shè)計(jì)流程流程說(shuō)明:(1) 工程師按照“自頂向下”的設(shè)計(jì)方法進(jìn)行系統(tǒng)劃分。(2) 輸入VHDL代碼,這是設(shè)計(jì)中最為普遍的輸入方式。此外,還可以采用圖形輸入方式(框圖、狀態(tài)圖等),這種輸入方式具有直觀、容易理解的優(yōu)點(diǎn)。(3) 將以上的設(shè)計(jì)輸入編譯成標(biāo)準(zhǔn)的VHDL文件。(4) 進(jìn)行代碼級(jí)的功能仿真,主要是檢驗(yàn)系統(tǒng)功能設(shè)計(jì)的正確性。這一步驟適用于大型設(shè)計(jì),因?yàn)閷?duì)于大型設(shè)

17、計(jì)來(lái)說(shuō),在綜合前對(duì)源代碼仿真,就可以大大減少設(shè)計(jì)重復(fù)的次數(shù)和時(shí)間。一般情況下,這一仿真步驟可略去。(5) 利用綜合器對(duì)VHDL源代碼進(jìn)行綜合優(yōu)化處理,生成門(mén)級(jí)描述的網(wǎng)絡(luò)表文件,這是將高層次描述轉(zhuǎn)化為硬件電路的關(guān)鍵步驟。綜合優(yōu)化是針對(duì)ASIC芯片供應(yīng)商的某一產(chǎn)品系列進(jìn)行的,所以綜合的過(guò)程要在相應(yīng)的廠家綜合庫(kù)的支持下才能完成。(6) 利用產(chǎn)生的網(wǎng)絡(luò)表文件進(jìn)行適配前的時(shí)序仿真,仿真過(guò)程不涉及具體器件的硬件特性,是較為粗略的。一般的設(shè)計(jì),也可略去這一步驟。(7) 利用適配器將綜合后的網(wǎng)絡(luò)表文件針對(duì)某一具體的目標(biāo)器件進(jìn)行邏輯映射操作,包括底層器件配置、邏輯分割、邏輯優(yōu)化和布局布線。(8) 在適配完成后,

18、產(chǎn)生多項(xiàng)設(shè)計(jì)結(jié)果:(a)適配報(bào)告,包括芯片內(nèi)部資源利用情況,設(shè)計(jì)的布爾方程描述情況等;(b)適配后的仿真模型;(c)器件編程文件。根據(jù)適配后的仿真模型,可以進(jìn)行適配后時(shí)序仿真,因?yàn)橐呀?jīng)得到器件的實(shí)際硬件特性(如時(shí)延特性),所以仿真結(jié)果能比較精確的預(yù)期未來(lái)芯片的實(shí)際性能。如果仿真結(jié)果達(dá)不到設(shè)計(jì)要求,就修改VHDL源代碼或選擇不同速度和品質(zhì)的器件,直至滿足設(shè)計(jì)要求7。最后將適配器產(chǎn)生的器件編程文件通過(guò)編程器或下載電纜載入到目標(biāo)芯片CPLD/FPGA中。2.4 FPGA開(kāi)發(fā)編程原理硬件設(shè)計(jì)需要根據(jù)各種性能指標(biāo)、成本、開(kāi)發(fā)周期等因素,確定最佳的實(shí)現(xiàn)方案,畫(huà)出系統(tǒng)框圖,選擇芯片,設(shè)計(jì)PCB并最終形成樣機(jī)

19、。CPLD/FPGA軟件設(shè)計(jì)可分為兩大塊:編程語(yǔ)言和編程工具。編程語(yǔ)言主要有VHDL和Verilog兩種硬件描述語(yǔ)言;編程工具主要是兩大廠家Altera和Xilinx的集成綜合EDA軟件(如MAX+plusII、QuartusII、Foundation、ISE)以及第三方工具(如FPGA Express、Modelsim、Synposys SVS等)。具體的設(shè)計(jì)輸入方式有以下幾種8:(1) HDL語(yǔ)言方式。HDL既可以描述底層設(shè)計(jì),也可以描述頂層的設(shè)計(jì),但它不容易做到較高的工作速度和芯片利用率。用這種方式描述的項(xiàng)目最后所能達(dá)到的性能與設(shè)計(jì)人員的水平、經(jīng)驗(yàn)以及綜合軟件有很大的關(guān)系。(2) 圖形方

20、式??梢苑譃殡娐吩韴D描述,狀態(tài)機(jī)描述和波形描述3種形式。有的軟件3種輸入方法都支持,如Active-HDL。MAX+plusII 圖形輸入方式只支持電路原理圖描述和波形描述兩種。電路原理圖方式描述比較直觀和高效,對(duì)綜合軟件的要求不高。一般大都使用成熟的IP核和中小規(guī)模集成電路所搭成的現(xiàn)成電路,整體放到一片可編程邏輯器件的內(nèi)部去,所以硬件工作速度和芯片利用率很高,但是但項(xiàng)目很大的時(shí)候,該方法就顯得有些繁瑣;狀態(tài)機(jī)描述主要用來(lái)設(shè)計(jì)基于狀態(tài)機(jī)思想的時(shí)序電路9。在圖形的方式下定義好各個(gè)工作狀態(tài),然后在各個(gè)狀態(tài)上輸入轉(zhuǎn)換條件以及相應(yīng)的輸入輸出,最后生成HDL語(yǔ)言描述,送去綜合軟件綜合到可編程邏輯器件的

21、內(nèi)部。由于狀態(tài)機(jī)到HDL語(yǔ)言有一種標(biāo)準(zhǔn)的對(duì)應(yīng)描述方式,所以這種輸入方式最后所能達(dá)到的工作速度和芯片利用率主要取決于綜合軟件;波形描述方式是基于真值表的一種圖形輸入方式,直接描述輸入與輸出的波形關(guān)系。這種輸入方式最后所能達(dá)到的工作速度和芯片利用率也是主要取決于綜合軟件10。2.5 DS18B20的性能特點(diǎn)(1) DS18B20的性能特點(diǎn):采用單總線專用技術(shù),既可通過(guò)串行口線,也可通過(guò)其它I/O口線與微機(jī)接口,無(wú)須經(jīng)過(guò)其它變換電路,直接輸出被測(cè)溫度值(9位二進(jìn)制數(shù),含符號(hào)位),測(cè)溫范圍為-55-+125,測(cè)量分辨率為0.0625,內(nèi)含64位經(jīng)過(guò)激光修正的只讀存儲(chǔ)器ROM,適配各種系統(tǒng),用戶可分別設(shè)

22、定各路溫度的上、下限,內(nèi)含寄生電源11。 (2) DS18B20內(nèi)部結(jié)構(gòu) 圖2-3 DS18B20內(nèi)部結(jié)構(gòu) DS18B20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻ROM,溫度傳感器,掉電后仍能保存的溫度報(bào)警觸發(fā)器TH和TL(存儲(chǔ)在EEPROM),高速暫存器。DS18B20的管腳排vcc dq gnd。64位光刻ROM是出廠前被光刻好的,它是該DS18B20的序列號(hào)。每一個(gè)DSl820包括一個(gè)唯一的64位長(zhǎng)的序號(hào)12。 開(kāi)始8位是產(chǎn)品類型編碼(DS18B20編碼均為10H)。接著的48位是每個(gè)器件唯一的序號(hào)最后8位是前面56位的CRC(循環(huán)冗余校驗(yàn))碼。DS18B20中還有用于存儲(chǔ)測(cè)得的溫度值的兩個(gè)

23、8位存貯器RAM,編號(hào)為0號(hào)和1號(hào)。1號(hào)存貯器存放溫度值的符號(hào)如果溫度為負(fù),則1號(hào)存貯器8位全為1,否則全為0。0號(hào)存貯器用于存放溫度值的補(bǔ)碼,LSB(最低位)的1表示0.5。將存貯器中的二進(jìn)制數(shù)求補(bǔ)再轉(zhuǎn)換成十進(jìn)制數(shù)并除以2就得到被測(cè)溫度值DS18B20有兩種供電方式即數(shù)據(jù)總線供電方式和外部供電方式采取數(shù)據(jù)總線供電方式可以節(jié)省一根導(dǎo)線但完成溫度測(cè)量的時(shí)間較長(zhǎng)采取外部供電方式則多用一根導(dǎo)線但測(cè)量速度較13。 3.設(shè)計(jì)過(guò)程3.1 總體方案設(shè)計(jì)3.1.1 FPGA控制DS18B20FPGA需要完成DS18B20的初始化、讀取DS18B20的48位ID號(hào)、啟動(dòng)DS18B20溫度轉(zhuǎn)換、讀取溫度轉(zhuǎn)化結(jié)果。

24、讀取48位ID號(hào)和讀取溫度轉(zhuǎn)換結(jié)果過(guò)程中,F(xiàn)PGA還要實(shí)現(xiàn)CRC校驗(yàn)碼的計(jì)算,保證通信數(shù)據(jù)的可靠性14。 以上操作反復(fù)進(jìn)行,可以用狀態(tài)機(jī)來(lái)實(shí)現(xiàn)。狀態(tài)機(jī)的各種狀態(tài)如下: RESET1:對(duì)DS18B20進(jìn)行第一次復(fù)位,然后進(jìn)入等待,等待800s后,進(jìn)入下一狀態(tài)。 CMD33:對(duì)DS18B20發(fā)出033命令,讀取48位ID值。 GET_ID:從DS18B20中讀取48位ID值。 RESET2:對(duì)DS18B20進(jìn)行第二次復(fù)位,然后進(jìn)入DELAY狀態(tài)等待800s后,進(jìn)入CMDCC狀態(tài)。 CMDCC:向DS18B20發(fā)出忽略ROM命令,為進(jìn)入下一狀態(tài)作準(zhǔn)備。 CMD44:向DS18B20發(fā)出啟動(dòng)溫度轉(zhuǎn)換命

25、令,然后進(jìn)入等待, 900ms后進(jìn)入下一狀態(tài)。 RESET3:對(duì)DS18B20進(jìn)行第三次復(fù)位。 CMDCC2:向DS18B20發(fā)出忽略ROM命令,為了進(jìn)入下一狀態(tài)作準(zhǔn)備。 GET_TEMP:從DS18B20中讀取溫度測(cè)量數(shù)值。 DELAY:等待狀態(tài)。 WRITE_BIT:向DS18B20中寫(xiě)入數(shù)據(jù)位狀態(tài)。 READ_BIT:從DS18B20中讀取數(shù)據(jù)位狀態(tài)。在該狀態(tài)中每讀取1位數(shù)據(jù),同時(shí)完成該數(shù)據(jù)位的CRC校驗(yàn)計(jì)算15。所有數(shù)據(jù)都讀取后,還要讀取8位CRC校驗(yàn)位。這8位校驗(yàn)位也經(jīng)過(guò)CRC校驗(yàn)計(jì)算,如果通信沒(méi)有錯(cuò)誤,總的CRC校驗(yàn)結(jié)果應(yīng)該是0。這時(shí)可將通信正確的數(shù)據(jù)保存到id和temp_data

26、寄存器中。3.2 單元電路設(shè)計(jì)3.2.1 DS18B20溫度采集在開(kāi)發(fā)板上的原理圖圖3-1 開(kāi)發(fā)板上輸出顯示的按鍵原理圖 圖 3-2 開(kāi)發(fā)板上的按鍵實(shí)物圖圖 3-3 發(fā)板上DS18B20實(shí)物圖4. 裝調(diào)與測(cè)試4.1 EP2C8Q208 FPAG 開(kāi)發(fā)板裝調(diào)圖-1 開(kāi)發(fā)板實(shí)物圖核心系統(tǒng):(1) CycloneII核心:EP2C8Q208:(2) SDRAM:64Mbit為滿足用戶海量存儲(chǔ):(為做SOPC或者NIOS II系統(tǒng)提供足夠的內(nèi)存);(3) Flash:16Mbit能滿足大中小型開(kāi)發(fā),為用戶配置NIOS的鏡像文件:(4) EPCS4 配置芯片:(5) 提供配置模式:JTAG和AS。此外配

27、置管腳通過(guò)插針引出:(6) 核心板的有源時(shí)鐘為50Mhz):(7) 將所有IO、Avalon總線、配置管腳等都通過(guò)3排插針引出,可以充分自由發(fā)揮,擴(kuò)展更靈活:(擴(kuò)展I/O完全考慮了電磁兼容的問(wèn)題,滿足信號(hào)完整性) (8) FPGA供電系統(tǒng):外接5V的直流電:4.2 外圍I/O資源(1) 6位LED發(fā)光二極管(做流水等實(shí)驗(yàn))(2) 8位LED數(shù)碼管(做動(dòng)態(tài)或靜態(tài)數(shù)碼管顯示實(shí)驗(yàn),頻率計(jì);秒表.)(3) 一路蜂鳴器(用作發(fā)聲實(shí)驗(yàn))(4) 4只獨(dú)立按鍵(做按鍵控制實(shí)驗(yàn))(5) I2C串行EEPROM 24C04(做IIC總線實(shí)驗(yàn))(6) VGA接口(做VGA實(shí)驗(yàn))(7) MAX232 專用串口通訊電路

28、(做和其他系統(tǒng)的串口通訊實(shí)驗(yàn))(8) 1602LCD字符型液晶接口(做字符顯示實(shí)驗(yàn))(9) 12864LCD圖形液晶接口(做圖形 漢字 等顯示實(shí)驗(yàn))(10) 雙PS/2鍵盤(pán)接口(做PS/2鍵盤(pán)實(shí)驗(yàn))(11) SD卡接口。可以讀取SD卡的數(shù)據(jù):例如圖片。(12) DS1302時(shí)鐘芯片,(13) DS18B20溫度傳感器(14) 紅外線接收頭4.3 開(kāi)發(fā)板源程序測(cè)試library IEEE;use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL; entity ds18B20

29、 is port(clk : in std_logic; -原程序可能為50MHz dq : inout std_logic; - temp_h : out std_logic_vector(7 downto 0); - temp_l : out std_logic_vector(7 downto 0);LED : out std_logic; LED2 : out std_logic; LED3 : out std_logic; rst: in std_logic; - dataout : out std_logic_vector(7 downto 0); seg : out std_log

30、ic_vector(5 downto 0);end ds18B20; architecture Behavioral of ds18B20 isTYPE STATE_TYPE is (RESET,CMD_CC,WRITE_BYTE,WRITE_LOW,WRITE_HIGH,READ_BIT, CMD_44,CMD_BE,WAIT800MS,GET_TMP,WAIT4MS); signal STATE: STATE_TYPE:=RESET;signal clk_temp : std_logic:=0;signal clk1m : std_logic; -分頻后得到的1M時(shí)鐘 signal wri

31、te_temp : std_logic_vector(7 downto 0):=; signal TMP : std_logic_vector(11 downto 0); signal tmp_bit : std_logic;signal WRITE_BYTE_CNT : integer range 0 to 8:=0; signal WRITE_LOW_CNT : integer range 0 to 2:=0;signal WRITE_HIGH_CNT : integer range 0 to 2:=0; signal READ_BIT_CNT : integer range 0 to 3

32、:=0;signal GET_TMP_CNT : integer range 0 to 13:=0; signal cnt : integer range 0 to :=0;-* signal cnt2 : integer range 0 to :=0;signal seg_temp : std_logic_vector(5 downto 0); -signal temp_h : std_logic_vector(7 downto 0); -signal temp_l : std_logic_vector(7 downto 0); signal temp : std_logic; signal

33、 data_temp0 : std_logic_vector(15 downto 0); signal decimal0 : std_logic_vector(15 downto 0);signal decimal1 : std_logic_vector(15 downto 0); signal decimal2 : std_logic_vector(15 downto 0); signal decimal3 : std_logic_vector(15 downto 0); signal data_temp1 : std_logic_vector(7 downto 0); signal int

34、eger0 : std_logic_vector(7 downto 0);signal integer1 : std_logic_vector(7 downto 0); signal integer2 : std_logic_vector(7 downto 0); signal integer3 : std_logic_vector(7 downto 0); signal integer4 : std_logic_vector(7 downto 0); signal integer5 : std_logic_vector(7 downto 0); signal integer6 : std_l

35、ogic_vector(7 downto 0);signal sign : std_logic_vector(7 downto 0); -* signal count : integer range 0 to 51:=0; signal WRITE_BYTE_FLAG : integer range 0 to 4:=0; begin ClkDivider:process (clk,clk_temp) beginif rising_edge(clk) then if (count = 24) then count = 0; clk_temp= not clk_temp; else count =

36、 count +1; end if; end if; clk1m=clk_temp; end Process; STATE_TRANSITION:process(STATE,clk1m) begin if rising_edge(clk1m) then if(rst=0) then STATE -* LED2=0;-*- LED3=0 and cnt500) then dq=0; cnt=cnt+1; STATE=500 and cnt510) then dq=Z;cnt=cnt+1; STATE=510 and cnt750) then temp=dq; if(cnt=580) then t

37、emp=dq;if(temp=1) then LED=0; else LED=1; end if; end if; cnt=cnt+1; STATE=750) then cnt=0; STATELED2=1; LED3=0; write_temp=; STATE case WRITE_BYTE_CNT iswhen 0 to 7= if (write_temp(WRITE_BYTE_CNT)=0) then STATE=WRITE_LOW; LED3=1; else STATE=WRITE_HIGH; end if; WRITE_BYTE_CNT if (WRITE_BYTE_FLAG=0)

38、then - 第一次寫(xiě)0XCC完畢 STATE=CMD_44; WRITE_BYTE_FLAG=1; elsif (WRITE_BYTE_FLAG=1) then -寫(xiě)0X44完畢 STATE=RESET; WRITE_BYTE_FLAG=2; elsif (WRITE_BYTE_FLAG=2) then -第二次寫(xiě)0XCC完畢 STATE=CMD_BE; WRITE_BYTE_FLAG=3; elsif (WRITE_BYTE_FLAG=3) then -寫(xiě)0XBE完畢 STATE=GET_TMP; WRITE_BYTE_FLAG=0; end if; WRITE_BYTE_CNTSTATE

39、 LED3 dq=0; if (cnt=70) then cnt=0; WRITE_LOW_CNT=1; else cnt dq=Z; if (cnt=5) then cnt=0; WRITE_LOW_CNT=2; else cnt STATE=WRITE_BYTE; WRITE_LOW_CNTWRITE_LOW_CNT case WRITE_HIGH_CNT is when 0= dq=0; if (cnt=8) then cnt=0; WRITE_HIGH_CNT=1; else cnt dq=Z; if (cnt=72) then cnt=0; WRITE_HIGH_CNT=2; els

40、e cnt STATE=WRITE_BYTE; WRITE_HIGH_CNTWRITE_HIGH_CNT write_temp=; STATE write_temp=; STATE case READ_BIT_CNT is when 0= dq=0; if (cnt=4) then READ_BIT_CNT=1;cnt=0; else cnt dq=Z; if (cnt=4) then READ_BIT_CNT=2; cnt=0; else cnt dq=Z; TMP_BIT=dq; if (cnt=1) then READ_BIT_CNT=3; cnt=0; else cnt - dq=Z;

41、 - if (cnt=55) then cnt=0; READ_BIT_CNT=0; STATE=GET_TMP; else cntREAD_BIT_CNTif (cnt=) then STATE=RESET; cnt=0; else cnt=cnt+1; STATE case GET_TMP_CNT is when 0 = STATE=READ_BIT;GET_TMP_CNT STATE=READ_BIT; TMP(GET_TMP_CNT-1)=TMP_BIT; GET_TMP_CNT GET_TMP_CNT=0; STATE if (cnt=4000) then -STATE=WAIT4M

42、S; STATE=RESET; cnt=0; else cnt=cnt+1; STATESTATE=RESET; LED=0; LED2=0; LED3=0; end case; end if; end if; end process; -temp_h=TMP(11 downto 8); -temp_h(7 downto 4) = 1111;-temp_l=TMP(7 downto 0); -* -temp_h=0&TMP(11 downto 5); -temp_l dataout dataout dataout dataout dataout dataout dataout dataout

43、dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout = ;-0 end case; end if; end if;end process; s

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論