版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、FPGA課程設(shè)計(jì)題目:全天候溫度紀(jì)錄儀的設(shè)計(jì)與FPGA實(shí)現(xiàn)姓名: 學(xué)號(hào): 院系:信息科學(xué)與工程學(xué)院專業(yè): 計(jì)算機(jī)技術(shù) 摘要本設(shè)計(jì)有效的克服了傳統(tǒng)的數(shù)字溫度計(jì)的缺點(diǎn),采用自上而下的設(shè)計(jì)思路,繪制出了系統(tǒng)結(jié)構(gòu)流程圖,最后又在硬件上通過(guò)對(duì)其進(jìn)行調(diào)試和驗(yàn)證?;贔PGA在Quartus II13.0軟件下應(yīng)用Verilog HDL語(yǔ)言編寫(xiě)程序,采用ALTRA公司Cyclone- IV系列的EP4CE40F23I7 芯片進(jìn)行了計(jì)算機(jī)仿真,并給出了相應(yīng)的仿真結(jié)果。該電路能夠?qū)崿F(xiàn)很好的測(cè)溫功能。關(guān)鍵字:數(shù)字溫度計(jì);FPGA;Quartus II130.;Verilog HDL;EP4CE40F2317Abs
2、tractThis design effectively overcomes the traditional digital thermometers weaknesses and takes a top-down approach to design flow chart of system, and finally pass the circuits to the hardware to debug and verify it. This design is based on FPGA using Verilog HDL language to write program in Quart
3、us II software, adopting EP4CE40F23I7 chip of Cyclone- IV 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; FPGA; Quartus II 13.
4、0;Verilog HDL;EP4CE40F2317目錄一、設(shè)計(jì)要求11.1 設(shè)計(jì)題目11.2 選題背景11.3 設(shè)計(jì)要求:1二、系統(tǒng)設(shè)計(jì)22.1 系統(tǒng)設(shè)計(jì)圖22.2 系統(tǒng)設(shè)計(jì)說(shuō)明2三、硬件設(shè)計(jì)23.1 FPGA簡(jiǎn)介33.2 LCD1602液晶顯示53.3 DS18B20溫度傳感器73.4 AT24C02讀寫(xiě)模塊93.5 按鍵模塊設(shè)計(jì)10四、軟件設(shè)計(jì)114.1 Quartus II軟件介紹114.2 系統(tǒng)架構(gòu)圖124.3 系統(tǒng)控制器124.4 系統(tǒng)調(diào)試13五、代碼附錄135.1 頂層模塊135.2 LCD驅(qū)動(dòng)部分代碼155.3 DS18B20驅(qū)動(dòng)模塊17全天候溫度紀(jì)錄儀的設(shè)計(jì)與FPGA實(shí)現(xiàn)一、
5、 設(shè)計(jì)相關(guān)1.1 設(shè)計(jì)題目全天候溫度紀(jì)錄儀的設(shè)計(jì)與FPGA實(shí)現(xiàn)1.2 選題背景當(dāng)今電子產(chǎn)品正向功能多元化,體積最小化,功耗最低化的方向發(fā)展。它與傳統(tǒng)的電子產(chǎn)品在設(shè)計(jì)上的顯著區(qū)別是大量使用大規(guī)??删幊踢壿嬈骷巩a(chǎn)品的性能提高,體積縮小,功耗降低同時(shí)廣泛運(yùn)用現(xiàn)代計(jì)算機(jī)技術(shù),提高產(chǎn)品的自動(dòng)化程度和競(jìng)爭(zhēng)力,縮短研發(fā)周期。FPGA開(kāi)發(fā)技術(shù)正是為了適應(yīng)現(xiàn)代電子技術(shù)的要求,吸收眾多學(xué)科最新科技成果而形成的一門(mén)新技術(shù)。基于Verilog HDL語(yǔ)言的設(shè)計(jì)開(kāi)發(fā)更是靈活多變,容易上手,方便開(kāi)發(fā)人員開(kāi)發(fā)新產(chǎn)品。時(shí)代在發(fā)展,人們的物質(zhì)生活水平在不斷提高,新產(chǎn)品、新技術(shù)層出不窮,電子技術(shù)的發(fā)展更是日新月異。可以毫不夸
6、張的說(shuō),電子技術(shù)的應(yīng)用無(wú)處不在,電子技術(shù)正在不斷地改變我們的生活,改變著我們的世界。一個(gè)方便實(shí)用的溫度計(jì)對(duì)于大眾來(lái)說(shuō)更是生活中不可或缺的一件產(chǎn)品。美國(guó)ALTERA公司的可編程邏輯器件采用全新的結(jié)構(gòu)和先進(jìn)的技術(shù),加上最新的QUARTUS開(kāi)發(fā)環(huán)境,更具有高性能,開(kāi)發(fā)周期短等特點(diǎn),十分方便進(jìn)行電子產(chǎn)品的開(kāi)發(fā)和設(shè)計(jì)本節(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í)現(xiàn)的必要性。1.3 設(shè)計(jì)要求本設(shè)計(jì)要求設(shè)計(jì)一個(gè)溫度計(jì),通過(guò)溫度傳感器(DS18B20)周期的測(cè)量溫度數(shù)據(jù),同時(shí)將數(shù)據(jù)存儲(chǔ)
7、在EEPROM AT24C02中,在需要讀取數(shù)據(jù)溫度紀(jì)錄時(shí),讀出溫度紀(jì)錄至板載LCD(1602)液晶顯示器顯示。二、 系統(tǒng)設(shè)計(jì)2.1 系統(tǒng)設(shè)計(jì)圖圖2-1 系統(tǒng)設(shè)計(jì)圖2.2 系統(tǒng)設(shè)計(jì)說(shuō)明本設(shè)計(jì)是基于FPGA的溫度記錄儀,整體系統(tǒng)設(shè)計(jì)如下,首先由FPGA控制器驅(qū)動(dòng)DS18B02溫度傳感器對(duì)當(dāng)前溫度進(jìn)行周期性采集,并且對(duì)采集到的數(shù)據(jù)進(jìn)行處理,然后存入EEPROM AT24C02只讀存儲(chǔ)器,最后利用LCD1602液晶顯示屏進(jìn)行顯示。同時(shí)本系統(tǒng)通過(guò)向用戶提供按鍵,方便用戶讀取歷史溫度記錄。三、 硬件設(shè)計(jì)3.1 FPGA簡(jiǎn)介3.1 1 FPGA芯片的介紹FPGA是現(xiàn)場(chǎng)可編程門(mén)陣列(Field Progra
8、mmable Gate Array)的簡(jiǎn)稱,與之相應(yīng)的CPLD是復(fù)雜可編程邏輯器件(Complex Programmable Logic Device)的簡(jiǎn)稱,兩者的功能基本相同,只是實(shí)現(xiàn)原理略有不同,所以有時(shí)可以忽略這兩者的區(qū)別,統(tǒng)稱為可編程邏輯器件。3.12 FPGA基本結(jié)構(gòu)FPGA具有可編程門(mén)陣列的通用結(jié)構(gòu),它由邏輯功能塊排成陣列,并由可編程的互連資源連接這些邏輯功能塊來(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)邏輯功能的
9、基本單元,它們通常規(guī)則的排列成一個(gè)陣列,散布于整個(gè)芯片;可編程輸入/輸出模塊(IOB)主要完成芯片上的邏輯與外部封裝腳的接口,它通常排列在芯片的四周;可編程互連資源包括各種長(zhǎng)度的連接線段和一些可編程連接開(kāi)關(guān),它們將各個(gè)CLB之間或CLB、IOB之間以及IOB之間連接起來(lái),構(gòu)成特定功能的電路。(1) CLB是FPGA的主要組成部分。圖3-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ú)立的,均可
10、以實(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ù)選擇器的編程,邏輯函數(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),其工作原理類似于
11、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ā)/鎖存器、輸出緩沖器組成。每個(gè)IOB控制一個(gè)引腳,它們可被配置為輸入、輸出或雙向I/O功能。當(dāng)IOB控制的引腳被定義為輸入時(shí),通過(guò)該引腳的輸入信號(hào)先送入輸入緩沖器。緩沖器的輸出分成兩路:一路可以直接送到MUX,另一路經(jīng)延時(shí)幾納秒(或者不延時(shí))送到輸入通路D觸發(fā)器,再送到數(shù)據(jù)選擇器。通
12、過(guò)編程給數(shù)據(jù)選擇器不同的控制信息,確定送至CLB陣列的I1和I2是來(lái)自輸入緩沖器,還是來(lái)自觸發(fā)器。圖3-1 CLB基本結(jié)構(gòu)當(dāng)IOB控制的引腳被定義為輸出時(shí),CLB陣列的輸出信號(hào)OUT也可以有兩條傳輸途徑:一條是直接經(jīng)MUX送至輸出緩沖器,另一條是先存入輸出通路D觸發(fā)器,再送至輸出緩沖器。IOB輸出端配有兩只MOS管,它們的柵極均可編程,使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)成,
13、這些金屬線段帶有可編程開(kāi)關(guān),通過(guò)自動(dòng)布線實(shí)現(xiàn)各種電路的連接。3.13 FPGA一般設(shè)計(jì)流程圖 3-2 FPGA設(shè)計(jì)流程圖3.2 LCD1602液晶顯示3.21 LCD 1602實(shí)物顯示:圖 3-3 LCD1602實(shí)物圖3.22 功能:用來(lái)顯示當(dāng)前的溫度值,和顯示查詢的溫度值。3.23 接口信號(hào)說(shuō)明:表 3-1 接口信號(hào)表3.24 時(shí)序圖圖 3-4 時(shí)序圖3.25 LCD 1602指令1) 0X38設(shè)置為16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口2) 0X0C說(shuō)明 這里0C表示的是開(kāi)顯示,不顯示光標(biāo),光標(biāo)不顯示,完整描述如下:指令碼:00001DBC D=1 開(kāi)顯示 D=0 關(guān)顯示 C=1 顯示光標(biāo)
14、 C=0 不顯示光標(biāo) B=1 光標(biāo)閃爍 B=0 光標(biāo)不閃爍3.3 DS18B20溫度傳感器3.31 DS18B20實(shí)物圖圖 3-5 DS 18B20 實(shí)物圖3.32 功能:采集當(dāng)前周圍溫度信息值。3.33 DS18B20接口引腳信息表 3-2 接口引腳圖序號(hào)名 稱引腳功能描述1GND地信號(hào)2DQ數(shù)據(jù)輸入/輸出引腳。開(kāi)漏單總線接口引腳。當(dāng)被用著在寄生電源下,也可以向器件提供電源。3VDD可選擇的VDD引腳。當(dāng)工作于寄生電源時(shí),此引腳必須接地。3.34 DS18B20的讀寫(xiě)操作圖3-6 寫(xiě)操作寫(xiě)時(shí)隙分為寫(xiě)"0"和寫(xiě)"1",時(shí)序如圖,在寫(xiě)數(shù)據(jù)時(shí)間間隙的前15u
15、s總線需要是被控制器拉置低電平,而后則將是芯片對(duì)總線數(shù)據(jù)的采樣時(shí)間,采樣時(shí)間在15-60us,采樣時(shí)間內(nèi)如果控制器將總線拉高則表示寫(xiě)1,如果控制器將總線拉低則表示寫(xiě)0。每一位的發(fā)送都應(yīng)該有一個(gè)至少15us的低電平起始位隨后的數(shù)據(jù)0或1應(yīng)該在45us內(nèi)完成。整個(gè)位的發(fā)送時(shí)間應(yīng)該保持在60-120us,否則不能保證通信的正常。3.35 DS18B20的讀操作圖3-7 讀操作讀時(shí)隙時(shí)也是必須先由主機(jī)產(chǎn)生至少1us的低電平,表示讀時(shí)間的起始。隨后在總線被釋放后的15us中DS18B20會(huì)發(fā)送內(nèi)部數(shù)據(jù)位。注意必須要在讀間隙開(kāi)始的15us內(nèi)讀數(shù)據(jù)為才可以保持通信的正確。通信時(shí),字節(jié)的讀或?qū)懯菑母呶婚_(kāi)始的,
16、即A7到A0??刂破麽尫趴偩€,也相當(dāng)于將總線置1。3.4 AT24C02讀寫(xiě)模塊3.41 IIC 總線協(xié)議簡(jiǎn)介IIC 總線是一種由 PHILIPS 公司開(kāi)發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備。 IIC總線是由數(shù)據(jù)線 SDA 和時(shí)鐘 SCL 構(gòu)成的串行總線,可發(fā)送和接收數(shù)據(jù)。在 CPU 與被控 IC 之間、IC 與 IC 之間進(jìn)行雙向傳送,最高傳送速率 100kbps。IIC 總線在傳送數(shù)據(jù)過(guò)程中共有三種類型信號(hào),它們分別是:開(kāi)始信號(hào)、結(jié)束信號(hào)和應(yīng)答信號(hào)。開(kāi)始信號(hào):SCL 為高電平時(shí),SDA 由高電平向低電平跳變,開(kāi)始傳送數(shù)據(jù);結(jié)束信號(hào):SCL 為高電平時(shí),SDA 由低電平向高電平跳
17、變,結(jié)束傳送數(shù)據(jù);應(yīng)答信號(hào):接收數(shù)據(jù)的 IC 在接收到 8bit 數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的 IC 發(fā)出特定的低電平脈沖,表示已收到數(shù)據(jù)。CPU 向受控單元發(fā)出一個(gè)信號(hào)后,等待受控單元發(fā)出一個(gè)應(yīng)答信號(hào),CPU 接收到應(yīng)答信號(hào)后,根據(jù)實(shí)際情況作出是否繼續(xù)傳遞信號(hào)的判斷。若未收到應(yīng)答信號(hào),由判斷為受控單元出現(xiàn)故障。3.42 AT24C02簡(jiǎn)介AT24C02是一個(gè)2K位串行CMOS E2PROM,內(nèi)部含有256個(gè)8 位字節(jié),該器件通過(guò) IIC 總線接口進(jìn)行操作。通過(guò)器件地址輸入端 A0、A1和A2 可以實(shí)現(xiàn)將最多8個(gè)AT24C02器件連接到IIC 總線上。AT24C02的存儲(chǔ)容量為2KB,內(nèi)容分成32頁(yè),
18、每頁(yè)8B,共256B,操作時(shí)有兩種尋址方式:芯片尋址和片內(nèi)子地址尋址。芯片尋址:AT24C02的芯片地址為1010,其地址控制字格式為 1010A2A1A0R/W。其中 A2,A1,A0 可編程地址選擇位。A2,A1,A0 引腳接高、低電平后得到確定的三位編碼,與 1010 形成 7 位編碼,即為該器件的地址碼。R/W 為芯片讀寫(xiě)控制位,該位為 0,表示芯片進(jìn)行寫(xiě)操作。片內(nèi)子地址尋址:芯片尋址可對(duì)內(nèi)部 256B 中的任一個(gè)進(jìn)行讀/寫(xiě)操作,其尋址范圍為 00FF,共 256 個(gè)尋址單位。對(duì) AT24C02 的基本操作有字節(jié)寫(xiě),連續(xù)讀。操作時(shí)序如下:圖3-8 字節(jié)寫(xiě)圖3-9 連續(xù)讀3.43 模塊驅(qū)
19、動(dòng)方案:在主模塊里例化了3個(gè)子模塊,簡(jiǎn)單說(shuō)一下各個(gè)模塊的功能:串口發(fā)送模塊:負(fù)責(zé)將 FPGA 通過(guò) IIC 接口讀取 AT24C02 的數(shù)據(jù)通過(guò)串口發(fā)送給 PC,這樣我們就可以通過(guò)串口調(diào)試助手查看讀到的數(shù)據(jù)與寫(xiě)入的數(shù)據(jù)是否一致來(lái)調(diào)試。IIC 控制命令產(chǎn)生模塊:負(fù)責(zé)發(fā)送控制命令如連續(xù)讀、隨機(jī)讀、字節(jié)寫(xiě)及頁(yè)寫(xiě)等給IIC 發(fā)送與接收模塊,該模塊不與 AT24C02 直接打交道。IIC 發(fā)送與接收模塊:根據(jù)接收到IIC 控制命令產(chǎn)生模塊發(fā)送的控制命令來(lái)操作AT24C02,該模塊與 AT24C02 直接打交道。3.5 按鍵模塊設(shè)計(jì)K1復(fù)位鍵:按下復(fù)位鍵所有模塊進(jìn)入復(fù)位狀態(tài)。E2PROM AT24C02不
20、清零。K2 上翻頁(yè):查詢上一個(gè)計(jì)數(shù)周期的采集值。K3 下翻頁(yè):查詢下一個(gè)計(jì)數(shù)周期的采集值。以下是按鍵和復(fù)位電路圖 圖3-10 按鍵圖 圖3-11 復(fù)位圖四、 軟件設(shè)計(jì)4.1 Quartus II軟件介紹Quartus II 是Altera公司的綜合性PLD/FPGA開(kāi)發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計(jì)輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整PLD設(shè)計(jì)流程。軟件界面如圖:圖4-1 軟件界面圖4.2 系統(tǒng)架構(gòu)圖圖 4-2系統(tǒng)架構(gòu)圖4.3 系統(tǒng)控制器4.3
21、1 作用主要負(fù)責(zé)各個(gè)模塊復(fù)位與啟動(dòng),數(shù)據(jù)采集與處理以及任務(wù)調(diào)度等工作。當(dāng)出現(xiàn)復(fù)位信號(hào)時(shí),所有模塊進(jìn)入復(fù)位狀態(tài),但AT24C02不清零。針對(duì)AT24C02的數(shù)據(jù)可以采用上翻頁(yè)和下翻頁(yè)組合按鍵,同時(shí)按下進(jìn)行清零。4.32 實(shí)現(xiàn)方法(1)、做出各模塊驅(qū)動(dòng)(部分代碼見(jiàn)代碼附錄)。(2)、制作計(jì)數(shù)器當(dāng)產(chǎn)生周期性信號(hào)時(shí),控制器讀取DS18B20數(shù)據(jù),在控制器內(nèi)部進(jìn)行處理,將處理完的結(jié)果送入E2PROM進(jìn)行存儲(chǔ),同時(shí)送入LCD1602進(jìn)行顯示。當(dāng)按鍵信號(hào)出現(xiàn)時(shí),分為以下兩種。1、復(fù)位信號(hào),上面已經(jīng)解釋,不再贅述;2、K2和K3單個(gè)出現(xiàn)信號(hào),若沒(méi)有周期信號(hào),直接讀取E2PROM數(shù)據(jù),送入LCD 1602顯示;
22、若有周期信號(hào),進(jìn)行等待,固定等待1S,重復(fù)上述工作3、當(dāng)K2或K3同時(shí)按下時(shí),無(wú)需判斷周期性信號(hào),直接清零??刂破飨騌OM發(fā)送操作指令,進(jìn)行溫度轉(zhuǎn)換,讀寫(xiě)操作,周期性數(shù)據(jù)采集使用計(jì)數(shù)器產(chǎn)生周期性采集信號(hào),具體周期時(shí)間暫定為5分鐘。4.4 系統(tǒng)調(diào)試在系統(tǒng)調(diào)試時(shí),我們使用的是Altera公司的Cyclone IV EP4CE40F23I7。在本系統(tǒng)中用到復(fù)位電路、電源電路、時(shí)鐘電路、JTAG下載電路、DS18B20傳感器電路、1602LCD液晶顯示屏和AT24C02存儲(chǔ)器等主要電路。具體的硬件調(diào)試過(guò)程中,有很多細(xì)節(jié)時(shí)要注意,首先插上JTAG下載線,然后打開(kāi)系統(tǒng)的電源。因?yàn)橄到y(tǒng)的時(shí)鐘頻率直接影響本設(shè)
23、計(jì)的各個(gè)模塊的正常運(yùn)行,所以一定要把時(shí)鐘選正確。做好準(zhǔn)備工作以后,系統(tǒng)上電,使用 Quartus II選取EP4CE40F23I7型的FPGA器件,進(jìn)行編譯。編譯之后,將綜合生成的配置文件使用JTAG下載到開(kāi)發(fā)板上。然后進(jìn)行實(shí)物驗(yàn)證:上電后,各個(gè)模塊正常工作,LCD1602顯示溫度值,五分鐘更新一次。按下K1鍵各個(gè)模塊復(fù)位,此時(shí)AT24C02不清零,K2和K3同時(shí)按下模塊復(fù)位和AT24C02清零。與預(yù)期基本相同,符合題目要求。五、 代碼附錄5.1 頂層模塊module Temperate(CLK,RST_n,K1,K2,K3,LCD_DATA,LCD_RW,LCD_RS,LCD_EN,LCD_
24、B,one_wire;Tem,SCL,SDA,LED,TXD)input CLK;input RST_n;input K1;input K2;input K3;output 7:0LCD_DATA;output LCD_RW;output LCD_RS;output LCD_EN;output LCD_B;reg 7:0LCD_DATA;reg LCD_RW;reg LCD_RS;reg LCD_EN;inout one_wire;output 15:0Tem;inout SDA;output SCL;output LED;output TXD;assign LCD_B=1; LCD1602
25、U0( .CLK(CLK), .RST_n(RST_n), .LCD_RW(LCD_RW), .LCD_RS(LCD_RS), .LCD_EN(LCD_EN), .LCD_B(LCD_B), .LCD_DATA(LCD_DATA);DS18B20 U1( .CLK(CLK), .RST_n(RST_n), .Tem(Tem); wire 7:0wr_data;wire 7:0wr_rd_addr;wire 7:0data_out;AT24C02_Ctrl U2( .CLK50M(CLK), .RST_n(RST_n), .SDA(SDA), .SCL(SCL), .LED(LED), .TXD
26、(TXD) ); endmodule 5.2 LCD驅(qū)動(dòng)部分代碼module lcm(CLOCK_50, LCD_DATA, LCD_RW, LCD_RS, LCD_EN,LCD_BLON );input CLOCK_50;output 7:0LCD_DATA;output LCD_RW;output LCD_RS;output LCD_EN;output LCD_BLON;reg 7:0LCD_DATA;reg LCD_RW ;reg LCD_RS;reg LCD_EN;reg clk_1k=1'b0;reg 20:0counter=0;reg 10:0counter1=0;assi
27、gn LCD_BLON=1;always(posedge CLOCK_50) if(counter=25000) begin clk_1k<=clk_1k; counter<=0; end else counter<=counter+1; always(posedge clk_1k)/ begin if(counter1<1023) counter1<=counter1+1; casex (counter1) 400:begin LCD_DATA<=8'b00111000; /0x38 設(shè)置顯示模式 LCD_RW<=1'b0; LCD_
28、RS<=1'b0; end 401:LCD_EN<=1'b1; 410: /0x0c 開(kāi)顯示 關(guān)光標(biāo) begin LCD_DATA<=8'b00001100; LCD_RW<=1'b0; LCD_RS<=1'b0; end 411: LCD_EN<=1'b1; 420: begin /0x01 清屏幕 LCD_DATA<=8'b00000001; LCD_RW<=1'b0; LCD_RS<=1'b0; end421: LCD_EN<=1'b1; 430:
29、begin /0x06 讀或者寫(xiě)后 自動(dòng)加1 LCD_DATA<=8'b00000110; LCD_RW<=1'b0; LCD_RS<=1'b0; end431: LCD_EN<=1'b1; 440:begin /0xc0 定位到第二行 LCD_DATA<=8'b11000000; LCD_RW<=1'b0; LCD_RS<=1'b0; end441: begin LCD_EN<=1'b1; ack<=1; end /根據(jù)數(shù)字的ASCII碼值顯示數(shù)據(jù) 631: LCD_EN&l
30、t;=1'b1; default: LCD_EN<=1'b0; endcase endendmodule5.3 DS18B20驅(qū)動(dòng)模塊module Temperature( input clk, / 50MHz時(shí)鐘input rst_n, / 異步復(fù)位 inout one_wire, / One-Wire總線 output 15:0 temperature / 輸出溫度值); reg rst_n; reg 19:0count; always(posedge clk) begin if(count<20'h80000) begin rst_n<=1; c
31、ount<=count+1; end else if(count<20'h8ffff) begin rst_n<=0; count<=count+1; end else rst_n<=1; end/+/ 分頻器50MHz->1MHz 開(kāi)始/+/-此處省略分頻部分的代碼- / 分頻器50MHz->1MHz 結(jié)束/-/延時(shí)模塊的使用/+/ 延時(shí)模塊 開(kāi)始/+reg 19:0 cnt_1us; / 1us延時(shí)計(jì)數(shù)子reg cnt_1us_clear; / 請(qǐng)1us延時(shí)計(jì)數(shù)子always (posedge clk_1us) if (cnt_1us_cl
32、ear) cnt_1us <= 0; else cnt_1us <= cnt_1us + 1'b1;/-/ 延時(shí)模塊 結(jié)束/+/ DS18B20狀態(tài)機(jī) 開(kāi)始/+/ 格雷碼parameter S00 = 5'h00;parameter S0 = 5'h01;parameter S1 = 5'h03;parameter S2 = 5'h02;parameter S3 = 5'h06;parameter S4 = 5'h07;parameter S5 = 5'h05;parameter S6 = 5'h04;para
33、meter S7 = 5'h0C;parameter WRITE0 = 5'h0D;parameter WRITE1 = 5'h0F;parameter WRITE00 = 5'h0E;parameter WRITE01 = 5'h0A;parameter READ0 = 5'h0B;parameter READ1 = 5'h09;parameter READ2 = 5'h08;parameter READ3 = 5'h18;reg 4:0 state; / 狀態(tài)寄存器reg one_wire_buf; / One-Wir
34、e總線 緩存寄存器reg 15:0 temperature_buf; / 采集到的溫度值緩存器(未處理)reg 5:0 step; / 子狀態(tài)寄存器 050reg 3:0 bit_valid; / 有效位 always (posedge clk_1us, negedge rst_n)begin if (!rst_n) begin one_wire_buf <= 1'bZ; step <= 0; state <= S00; end else begin case (state) S00 : begin temperature_buf <= 16'h001F
35、; state <= S0; end S0 : begin / 初始化 cnt_1us_clear <= 1; one_wire_buf <= 0; state <= S1; end S1 : begin cnt_1us_clear <= 0; if (cnt_1us = 500) / 延時(shí)500us begin cnt_1us_clear <= 1; one_wire_buf <= 1'bZ; / 釋放總線 state <= S2; end end S2 : begin cnt_1us_clear <= 0; if (cnt_1us = 100) / 等待100us begin cnt_1us_clear <= 1; state <= S3; end end S3 : if (one_wire) / 若18b20拉低總線,初始化成
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《導(dǎo)醫(yī)工作流程》課件
- 單位管理制度集合大全【人員管理篇】
- 單位管理制度集粹選集【人事管理篇】
- 單位管理制度匯編大全【員工管理】
- 單位管理制度分享合集【職工管理】十篇
- 單位管理制度呈現(xiàn)大全【員工管理篇】十篇
- 《員工的激勵(lì)與考核》課件
- 《語(yǔ)文大自然的語(yǔ)言》課件
- 八年級(jí)下冊(cè)期末考試專項(xiàng)訓(xùn)練03 論述題30(答案及解析)
- 《標(biāo)準(zhǔn)的理解要點(diǎn)》課件
- 四年級(jí)數(shù)學(xué)(除數(shù)是兩位數(shù))計(jì)算題專項(xiàng)練習(xí)及答案
- DL∕T 5783-2019 水電水利地下工程地質(zhì)超前預(yù)報(bào)技術(shù)規(guī)程
- 2024-2030年中國(guó)電子級(jí)四氟化硅行業(yè)風(fēng)險(xiǎn)評(píng)估及未來(lái)全景深度解析研究報(bào)告
- JGJ106-2014建筑基樁檢測(cè)技術(shù)規(guī)范
- 中考字音字形練習(xí)題(含答案)-字音字形專項(xiàng)訓(xùn)練
- 四柱萬(wàn)能液壓機(jī)液壓系統(tǒng) (1)講解
- JTT 1501-2024 潛水作業(yè)現(xiàn)場(chǎng)安全監(jiān)管要求(正式版)
- 家鄉(xiāng)土特產(chǎn)電商營(yíng)銷策劃方案(2篇)
- CTD申報(bào)資料撰寫(xiě)模板:模塊三之3.2.S.4原料藥的質(zhì)量控制
- 汽車標(biāo)準(zhǔn)-商用車輛前軸總成
- 個(gè)人貸款月供款計(jì)算表模板
評(píng)論
0/150
提交評(píng)論