FPGA設(shè)計方案_第1頁
FPGA設(shè)計方案_第2頁
FPGA設(shè)計方案_第3頁
FPGA設(shè)計方案_第4頁
FPGA設(shè)計方案_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、FPGA課程設(shè)計題目:全天候溫度紀錄儀的設(shè)計與FPGA實現(xiàn)姓名: 學號: 院系:信息科學與工程學院專業(yè): 計算機技術(shù) 摘要本設(shè)計有效的克服了傳統(tǒng)的數(shù)字溫度計的缺點,采用自上而下的設(shè)計思路,繪制出了系統(tǒng)結(jié)構(gòu)流程圖,最后又在硬件上通過對其進行調(diào)試和驗證。基于FPGA在Quartus II13.0軟件下應(yīng)用Verilog HDL語言編寫程序,采用ALTRA公司Cyclone- IV系列的EP4CE40F23I7 芯片進行了計算機仿真,并給出了相應(yīng)的仿真結(jié)果。該電路能夠?qū)崿F(xiàn)很好的測溫功能。關(guān)鍵字:數(shù)字溫度計;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è)計要求11.1 設(shè)計題目11.2 選題背景11.3 設(shè)計要求:1二、系統(tǒng)設(shè)計22.1 系統(tǒng)設(shè)計圖22.2 系統(tǒng)設(shè)計說明2三、硬件設(shè)計23.1 FPGA簡介33.2 LCD1602液晶顯示53.3 DS18B20溫度傳感器73.4 AT24C02讀寫模塊93.5 按鍵模塊設(shè)計10四、軟件設(shè)計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ū)動部分代碼155.3 DS18B20驅(qū)動模塊17全天候溫度紀錄儀的設(shè)計與FPGA實現(xiàn)一、

5、 設(shè)計相關(guān)1.1 設(shè)計題目全天候溫度紀錄儀的設(shè)計與FPGA實現(xiàn)1.2 選題背景當今電子產(chǎn)品正向功能多元化,體積最小化,功耗最低化的方向發(fā)展。它與傳統(tǒng)的電子產(chǎn)品在設(shè)計上的顯著區(qū)別是大量使用大規(guī)??删幊踢壿嬈骷巩a(chǎn)品的性能提高,體積縮小,功耗降低同時廣泛運用現(xiàn)代計算機技術(shù),提高產(chǎn)品的自動化程度和競爭力,縮短研發(fā)周期。FPGA開發(fā)技術(shù)正是為了適應(yīng)現(xiàn)代電子技術(shù)的要求,吸收眾多學科最新科技成果而形成的一門新技術(shù)?;赩erilog HDL語言的設(shè)計開發(fā)更是靈活多變,容易上手,方便開發(fā)人員開發(fā)新產(chǎn)品。時代在發(fā)展,人們的物質(zhì)生活水平在不斷提高,新產(chǎn)品、新技術(shù)層出不窮,電子技術(shù)的發(fā)展更是日新月異。可以毫不夸

6、張的說,電子技術(shù)的應(yīng)用無處不在,電子技術(shù)正在不斷地改變我們的生活,改變著我們的世界。一個方便實用的溫度計對于大眾來說更是生活中不可或缺的一件產(chǎn)品。美國ALTERA公司的可編程邏輯器件采用全新的結(jié)構(gòu)和先進的技術(shù),加上最新的QUARTUS開發(fā)環(huán)境,更具有高性能,開發(fā)周期短等特點,十分方便進行電子產(chǎn)品的開發(fā)和設(shè)計本節(jié)將從FPGA嵌入式應(yīng)用開發(fā)技術(shù)與溫度計發(fā)展的客觀實際出發(fā),通過對該技術(shù)發(fā)展狀況的了解,以及課題本身的需要,指出研究基于FPGA的芯片系統(tǒng)與設(shè)計全天候溫度記錄儀的設(shè)計與實現(xiàn)的必要性。1.3 設(shè)計要求本設(shè)計要求設(shè)計一個溫度計,通過溫度傳感器(DS18B20)周期的測量溫度數(shù)據(jù),同時將數(shù)據(jù)存儲

7、在EEPROM AT24C02中,在需要讀取數(shù)據(jù)溫度紀錄時,讀出溫度紀錄至板載LCD(1602)液晶顯示器顯示。二、 系統(tǒng)設(shè)計2.1 系統(tǒng)設(shè)計圖圖2-1 系統(tǒng)設(shè)計圖2.2 系統(tǒng)設(shè)計說明本設(shè)計是基于FPGA的溫度記錄儀,整體系統(tǒng)設(shè)計如下,首先由FPGA控制器驅(qū)動DS18B02溫度傳感器對當前溫度進行周期性采集,并且對采集到的數(shù)據(jù)進行處理,然后存入EEPROM AT24C02只讀存儲器,最后利用LCD1602液晶顯示屏進行顯示。同時本系統(tǒng)通過向用戶提供按鍵,方便用戶讀取歷史溫度記錄。三、 硬件設(shè)計3.1 FPGA簡介3.1 1 FPGA芯片的介紹FPGA是現(xiàn)場可編程門陣列(Field Progra

8、mmable Gate Array)的簡稱,與之相應(yīng)的CPLD是復(fù)雜可編程邏輯器件(Complex Programmable Logic Device)的簡稱,兩者的功能基本相同,只是實現(xiàn)原理略有不同,所以有時可以忽略這兩者的區(qū)別,統(tǒng)稱為可編程邏輯器件。3.12 FPGA基本結(jié)構(gòu)FPGA具有可編程門陣列的通用結(jié)構(gòu),它由邏輯功能塊排成陣列,并由可編程的互連資源連接這些邏輯功能塊來實現(xiàn)不同的設(shè)計。FPGA一般由3種可編程電路和一個用于存放編程數(shù)據(jù)的靜態(tài)存儲器SRAM組成。這3種可編程電路是:可編程邏輯模塊、輸入/輸出模塊(IOB-I/O Block)和互連資源。可編程邏輯模塊CLB是實現(xiàn)邏輯功能的

9、基本單元,它們通常規(guī)則的排列成一個陣列,散布于整個芯片;可編程輸入/輸出模塊(IOB)主要完成芯片上的邏輯與外部封裝腳的接口,它通常排列在芯片的四周;可編程互連資源包括各種長度的連接線段和一些可編程連接開關(guān),它們將各個CLB之間或CLB、IOB之間以及IOB之間連接起來,構(gòu)成特定功能的電路。(1) CLB是FPGA的主要組成部分。圖3-1是CLB基本結(jié)構(gòu)框圖,它主要由邏輯函數(shù)發(fā)生器、觸發(fā)器、數(shù)據(jù)選擇器等電路組成。CLB中3個邏輯函數(shù)發(fā)生器分別是G、F和H,相應(yīng)的輸出是G、F和H。G有4個輸入變量G1、G2、G3和G4;F也有4個輸入變量F1、F2、F3和F4。這兩個函數(shù)發(fā)生器是完全獨立的,均可

10、以實現(xiàn)4輸入變量的任意組合邏輯函數(shù)。邏輯函數(shù)發(fā)生器H有3個輸入信號;前兩個是函數(shù)發(fā)生器的輸出G和F,而另一個輸入信號是來自信號變換電路的輸出H1。這個函數(shù)發(fā)生器能實現(xiàn)3輸入變量的各種組合函數(shù)。這3個函數(shù)發(fā)生器結(jié)合起來,可實現(xiàn)多達9變量的邏輯函數(shù)。CLB中有許多不同規(guī)格的數(shù)據(jù)選擇器(四選一、二選一等),通過對CLB內(nèi)部數(shù)據(jù)選擇器的編程,邏輯函數(shù)發(fā)生器G、F和H的輸出可以連接到CLB輸出端X或Y,并用來選擇觸發(fā)器的激勵輸入信號、時鐘有效邊沿、時鐘使能信號以及輸出信號。這些數(shù)據(jù)選擇器的地址控制信號均由編程信息提供,從而實現(xiàn)所需的電路結(jié)構(gòu)。CLB中的邏輯函數(shù)發(fā)生器F和G均為查找表結(jié)構(gòu),其工作原理類似于

11、ROM。F和G的輸入等效于ROM的地址碼,通過查找ROM中的地址表可以得到相應(yīng)的組合邏輯函數(shù)輸出。另一方面,邏輯函數(shù)發(fā)生器F和G還可以作為器件內(nèi)高速RAM或小的可讀寫存儲器使用,它由信號變換電路控制。(2) 輸入/輸出模塊IOB。IOB提供了器件引腳和內(nèi)部邏輯陣列之間的連接。它主要由輸入觸發(fā)器、輸入緩沖器和輸出觸發(fā)/鎖存器、輸出緩沖器組成。每個IOB控制一個引腳,它們可被配置為輸入、輸出或雙向I/O功能。當IOB控制的引腳被定義為輸入時,通過該引腳的輸入信號先送入輸入緩沖器。緩沖器的輸出分成兩路:一路可以直接送到MUX,另一路經(jīng)延時幾納秒(或者不延時)送到輸入通路D觸發(fā)器,再送到數(shù)據(jù)選擇器。通

12、過編程給數(shù)據(jù)選擇器不同的控制信息,確定送至CLB陣列的I1和I2是來自輸入緩沖器,還是來自觸發(fā)器。圖3-1 CLB基本結(jié)構(gòu)當IOB控制的引腳被定義為輸出時,CLB陣列的輸出信號OUT也可以有兩條傳輸途徑:一條是直接經(jīng)MUX送至輸出緩沖器,另一條是先存入輸出通路D觸發(fā)器,再送至輸出緩沖器。IOB輸出端配有兩只MOS管,它們的柵極均可編程,使MOS管導通或截止,分別經(jīng)上拉電阻接通VCC、地線或者不接通,用以改善輸出波形和負載能力。(3) 可編程互連資源IR。可編程互連資源IR可以將FPGA內(nèi)部的CLB和CLB之間、CLB和IOB之間連接起來,構(gòu)成各種具有復(fù)雜功能的系統(tǒng)。IR主要由許多金屬線段構(gòu)成,

13、這些金屬線段帶有可編程開關(guān),通過自動布線實現(xiàn)各種電路的連接。3.13 FPGA一般設(shè)計流程圖 3-2 FPGA設(shè)計流程圖3.2 LCD1602液晶顯示3.21 LCD 1602實物顯示:圖 3-3 LCD1602實物圖3.22 功能:用來顯示當前的溫度值,和顯示查詢的溫度值。3.23 接口信號說明:表 3-1 接口信號表3.24 時序圖圖 3-4 時序圖3.25 LCD 1602指令1) 0X38設(shè)置為16*2顯示,5*7點陣,8位數(shù)據(jù)接口2) 0X0C說明 這里0C表示的是開顯示,不顯示光標,光標不顯示,完整描述如下:指令碼:00001DBC D=1 開顯示 D=0 關(guān)顯示 C=1 顯示光標

14、 C=0 不顯示光標 B=1 光標閃爍 B=0 光標不閃爍3.3 DS18B20溫度傳感器3.31 DS18B20實物圖圖 3-5 DS 18B20 實物圖3.32 功能:采集當前周圍溫度信息值。3.33 DS18B20接口引腳信息表 3-2 接口引腳圖序號名 稱引腳功能描述1GND地信號2DQ數(shù)據(jù)輸入/輸出引腳。開漏單總線接口引腳。當被用著在寄生電源下,也可以向器件提供電源。3VDD可選擇的VDD引腳。當工作于寄生電源時,此引腳必須接地。3.34 DS18B20的讀寫操作圖3-6 寫操作寫時隙分為寫"0"和寫"1",時序如圖,在寫數(shù)據(jù)時間間隙的前15u

15、s總線需要是被控制器拉置低電平,而后則將是芯片對總線數(shù)據(jù)的采樣時間,采樣時間在15-60us,采樣時間內(nèi)如果控制器將總線拉高則表示寫1,如果控制器將總線拉低則表示寫0。每一位的發(fā)送都應(yīng)該有一個至少15us的低電平起始位隨后的數(shù)據(jù)0或1應(yīng)該在45us內(nèi)完成。整個位的發(fā)送時間應(yīng)該保持在60-120us,否則不能保證通信的正常。3.35 DS18B20的讀操作圖3-7 讀操作讀時隙時也是必須先由主機產(chǎn)生至少1us的低電平,表示讀時間的起始。隨后在總線被釋放后的15us中DS18B20會發(fā)送內(nèi)部數(shù)據(jù)位。注意必須要在讀間隙開始的15us內(nèi)讀數(shù)據(jù)為才可以保持通信的正確。通信時,字節(jié)的讀或?qū)懯菑母呶婚_始的,

16、即A7到A0。控制器釋放總線,也相當于將總線置1。3.4 AT24C02讀寫模塊3.41 IIC 總線協(xié)議簡介IIC 總線是一種由 PHILIPS 公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設(shè)備。 IIC總線是由數(shù)據(jù)線 SDA 和時鐘 SCL 構(gòu)成的串行總線,可發(fā)送和接收數(shù)據(jù)。在 CPU 與被控 IC 之間、IC 與 IC 之間進行雙向傳送,最高傳送速率 100kbps。IIC 總線在傳送數(shù)據(jù)過程中共有三種類型信號,它們分別是:開始信號、結(jié)束信號和應(yīng)答信號。開始信號:SCL 為高電平時,SDA 由高電平向低電平跳變,開始傳送數(shù)據(jù);結(jié)束信號:SCL 為高電平時,SDA 由低電平向高電平跳

17、變,結(jié)束傳送數(shù)據(jù);應(yīng)答信號:接收數(shù)據(jù)的 IC 在接收到 8bit 數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的 IC 發(fā)出特定的低電平脈沖,表示已收到數(shù)據(jù)。CPU 向受控單元發(fā)出一個信號后,等待受控單元發(fā)出一個應(yīng)答信號,CPU 接收到應(yīng)答信號后,根據(jù)實際情況作出是否繼續(xù)傳遞信號的判斷。若未收到應(yīng)答信號,由判斷為受控單元出現(xiàn)故障。3.42 AT24C02簡介AT24C02是一個2K位串行CMOS E2PROM,內(nèi)部含有256個8 位字節(jié),該器件通過 IIC 總線接口進行操作。通過器件地址輸入端 A0、A1和A2 可以實現(xiàn)將最多8個AT24C02器件連接到IIC 總線上。AT24C02的存儲容量為2KB,內(nèi)容分成32頁,

18、每頁8B,共256B,操作時有兩種尋址方式:芯片尋址和片內(nèi)子地址尋址。芯片尋址:AT24C02的芯片地址為1010,其地址控制字格式為 1010A2A1A0R/W。其中 A2,A1,A0 可編程地址選擇位。A2,A1,A0 引腳接高、低電平后得到確定的三位編碼,與 1010 形成 7 位編碼,即為該器件的地址碼。R/W 為芯片讀寫控制位,該位為 0,表示芯片進行寫操作。片內(nèi)子地址尋址:芯片尋址可對內(nèi)部 256B 中的任一個進行讀/寫操作,其尋址范圍為 00FF,共 256 個尋址單位。對 AT24C02 的基本操作有字節(jié)寫,連續(xù)讀。操作時序如下:圖3-8 字節(jié)寫圖3-9 連續(xù)讀3.43 模塊驅(qū)

19、動方案:在主模塊里例化了3個子模塊,簡單說一下各個模塊的功能:串口發(fā)送模塊:負責將 FPGA 通過 IIC 接口讀取 AT24C02 的數(shù)據(jù)通過串口發(fā)送給 PC,這樣我們就可以通過串口調(diào)試助手查看讀到的數(shù)據(jù)與寫入的數(shù)據(jù)是否一致來調(diào)試。IIC 控制命令產(chǎn)生模塊:負責發(fā)送控制命令如連續(xù)讀、隨機讀、字節(jié)寫及頁寫等給IIC 發(fā)送與接收模塊,該模塊不與 AT24C02 直接打交道。IIC 發(fā)送與接收模塊:根據(jù)接收到IIC 控制命令產(chǎn)生模塊發(fā)送的控制命令來操作AT24C02,該模塊與 AT24C02 直接打交道。3.5 按鍵模塊設(shè)計K1復(fù)位鍵:按下復(fù)位鍵所有模塊進入復(fù)位狀態(tài)。E2PROM AT24C02不

20、清零。K2 上翻頁:查詢上一個計數(shù)周期的采集值。K3 下翻頁:查詢下一個計數(shù)周期的采集值。以下是按鍵和復(fù)位電路圖 圖3-10 按鍵圖 圖3-11 復(fù)位圖四、 軟件設(shè)計4.1 Quartus II軟件介紹Quartus II 是Altera公司的綜合性PLD/FPGA開發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計輸入到硬件配置的完整PLD設(shè)計流程。軟件界面如圖:圖4-1 軟件界面圖4.2 系統(tǒng)架構(gòu)圖圖 4-2系統(tǒng)架構(gòu)圖4.3 系統(tǒng)控制器4.3

21、1 作用主要負責各個模塊復(fù)位與啟動,數(shù)據(jù)采集與處理以及任務(wù)調(diào)度等工作。當出現(xiàn)復(fù)位信號時,所有模塊進入復(fù)位狀態(tài),但AT24C02不清零。針對AT24C02的數(shù)據(jù)可以采用上翻頁和下翻頁組合按鍵,同時按下進行清零。4.32 實現(xiàn)方法(1)、做出各模塊驅(qū)動(部分代碼見代碼附錄)。(2)、制作計數(shù)器當產(chǎn)生周期性信號時,控制器讀取DS18B20數(shù)據(jù),在控制器內(nèi)部進行處理,將處理完的結(jié)果送入E2PROM進行存儲,同時送入LCD1602進行顯示。當按鍵信號出現(xiàn)時,分為以下兩種。1、復(fù)位信號,上面已經(jīng)解釋,不再贅述;2、K2和K3單個出現(xiàn)信號,若沒有周期信號,直接讀取E2PROM數(shù)據(jù),送入LCD 1602顯示;

22、若有周期信號,進行等待,固定等待1S,重復(fù)上述工作3、當K2或K3同時按下時,無需判斷周期性信號,直接清零??刂破飨騌OM發(fā)送操作指令,進行溫度轉(zhuǎn)換,讀寫操作,周期性數(shù)據(jù)采集使用計數(shù)器產(chǎn)生周期性采集信號,具體周期時間暫定為5分鐘。4.4 系統(tǒng)調(diào)試在系統(tǒng)調(diào)試時,我們使用的是Altera公司的Cyclone IV EP4CE40F23I7。在本系統(tǒng)中用到復(fù)位電路、電源電路、時鐘電路、JTAG下載電路、DS18B20傳感器電路、1602LCD液晶顯示屏和AT24C02存儲器等主要電路。具體的硬件調(diào)試過程中,有很多細節(jié)時要注意,首先插上JTAG下載線,然后打開系統(tǒng)的電源。因為系統(tǒng)的時鐘頻率直接影響本設(shè)

23、計的各個模塊的正常運行,所以一定要把時鐘選正確。做好準備工作以后,系統(tǒng)上電,使用 Quartus II選取EP4CE40F23I7型的FPGA器件,進行編譯。編譯之后,將綜合生成的配置文件使用JTAG下載到開發(fā)板上。然后進行實物驗證:上電后,各個模塊正常工作,LCD1602顯示溫度值,五分鐘更新一次。按下K1鍵各個模塊復(fù)位,此時AT24C02不清零,K2和K3同時按下模塊復(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ū)動部分代碼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 開顯示 關(guān)光標 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 讀或者寫后 自動加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ū)動模塊module Temperature( input clk, / 50MHz時鐘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 開始/+/-此處省略分頻部分的代碼- / 分頻器50MHz->1MHz 結(jié)束/-/延時模塊的使用/+/ 延時模塊 開始/+reg 19:0 cnt_1us; / 1us延時計數(shù)子reg cnt_1us_clear; / 請1us延時計數(shù)子always (posedge clk_1us) if (cnt_1us_cl

32、ear) cnt_1us <= 0; else cnt_1us <= cnt_1us + 1'b1;/-/ 延時模塊 結(jié)束/+/ DS18B20狀態(tà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) / 延時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. 本站所有資源如無特殊說明,都需要本地電腦安裝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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論