国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于DE0的測(cè)溫系統(tǒng)的設(shè)計(jì)*

2016-08-10 03:23劉昌華
艦船電子工程 2016年7期

聶 云 劉昌華 鄒 翰 王 慧

(武漢輕工大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院 武漢 430023)

?

基于DE0的測(cè)溫系統(tǒng)的設(shè)計(jì)*

聶云劉昌華鄒翰王慧

(武漢輕工大學(xué)數(shù)學(xué)與計(jì)算機(jī)學(xué)院武漢430023)

摘要使用DE0開(kāi)發(fā)板以及一個(gè)溫度傳感器DS18B20,來(lái)實(shí)現(xiàn)溫度的采集與顯示。介紹了溫度傳感器DS18B20的接口原理和操作時(shí)序,闡述了系統(tǒng)組成的硬件電路和軟件設(shè)計(jì)。使用EP3C16F484C6作為主控芯片,使用Verilog HDL硬件描述語(yǔ)言設(shè)計(jì)狀態(tài)機(jī),根據(jù)單總線協(xié)議完成FPGA對(duì)DS18B20溫度傳感器的復(fù)位、數(shù)據(jù)讀、數(shù)據(jù)寫的操作,完成測(cè)量溫度的功能。并將測(cè)量的二進(jìn)制溫度數(shù)據(jù)轉(zhuǎn)換為BCD碼,通過(guò)數(shù)碼管顯示。利用Quartus II 13.0軟件自帶的邏輯分析儀Signal Tap II進(jìn)行仿真。

關(guān)鍵詞DE0開(kāi)發(fā)板; DS18B20傳感器; 單總線協(xié)議; Verilog HDL

Class NumberTP391

1引言

溫度控制已被廣泛應(yīng)用于生活各個(gè)領(lǐng)域,如在軍工、食品、農(nóng)業(yè)生產(chǎn)等方面。在這些領(lǐng)域?qū)囟鹊囊蠛芨撸绻麥囟瘸鲆?guī)定范圍,會(huì)造成很多不利于生產(chǎn)的影響。DS18B20是美國(guó)DALLAS半導(dǎo)體公司生產(chǎn)的1-Wire系列的高精度數(shù)字溫度傳感器,溫度測(cè)量范圍為-55℃~+125℃,可設(shè)置9位~12位A/D轉(zhuǎn)換精度,最小的分辨率為0.0625℃。單總線協(xié)議是Dallas公司的專利,與其他通用的串行數(shù)據(jù)通信方式不同,它只用一根信號(hào)線,傳輸時(shí)鐘和數(shù)據(jù),傳輸數(shù)據(jù)時(shí)是雙向口。具有很多優(yōu)點(diǎn),例如節(jié)省接口資源、便于在總線上擴(kuò)展多個(gè)傳感器等。結(jié)合FPGA器件強(qiáng)大的并行處理能力、功耗低等優(yōu)點(diǎn),所以選擇FPGA與DS18B20結(jié)合來(lái)實(shí)現(xiàn)該測(cè)溫系統(tǒng)[1]。

本設(shè)計(jì)采用Altera公司的Cyclone III系列芯片EP3C16F484C6和DALLAS公司的DS18B20[9]組成的測(cè)溫系統(tǒng),DS18B20采集被測(cè)物體的溫度,F(xiàn)PGA通過(guò)讀取單總線的數(shù)據(jù),最后把溫度數(shù)據(jù)傳送給數(shù)碼管顯示。該測(cè)溫系統(tǒng)硬件電路簡(jiǎn)單,應(yīng)用范圍廣泛,易于擴(kuò)展,有廣闊的應(yīng)用前景。

2數(shù)字溫度傳感器DS18B20

2.1DS18B20的內(nèi)部結(jié)構(gòu)

DS18B20內(nèi)部結(jié)構(gòu)如圖1,主要由下面幾個(gè)部分組成:64位ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警器TH(高溫)和TL(低溫)、配置寄存器、暫存寄存器(SCRATCHPAD)、存儲(chǔ)器與控制邏輯。DQ為溫度傳感器與外部器件傳輸數(shù)據(jù)與時(shí)鐘的引腳。其中64位ROM中有64位序列號(hào)(8位產(chǎn)品家族編號(hào)、48位ID號(hào)、8位CRC),該序列號(hào)是出廠前刻好的,而且每個(gè)DS18B20的序列號(hào)是不同的。

圖1 DS18B20內(nèi)部結(jié)構(gòu)圖

DS18B20加電后,處在空閑狀態(tài)。溫度傳感器的操作分為啟動(dòng)溫度轉(zhuǎn)換和讀取溫度兩個(gè)過(guò)程。在啟動(dòng)溫度轉(zhuǎn)換階段,當(dāng)DE0向其發(fā)出Convert T[44H]命令后開(kāi)始模數(shù)轉(zhuǎn)換,轉(zhuǎn)換完后,溫度數(shù)據(jù)以二進(jìn)制補(bǔ)碼存儲(chǔ)在溫度寄存器中,溫度寄存器格式如圖2。

圖2 溫度寄存器格式

LS byte存儲(chǔ)溫度的低8位,MS byte存儲(chǔ)溫度的高8位,高8位中的前5位都為符號(hào)位,說(shuō)明溫度的正負(fù)狀態(tài),當(dāng)溫度為正值時(shí)S為0,溫度為負(fù)值時(shí)S為1[2]。

表1為DS18B20溫度/數(shù)據(jù)的對(duì)應(yīng)關(guān)系表,該表給出的溫度范圍為-55℃~125℃。DS18B20在上電復(fù)位時(shí),溫度寄存器的初始值是85℃。

2.2DS18B20的操作時(shí)序

圖3為DS18B20操作的初始化時(shí)序,圖4為寫操作時(shí)序,圖5為讀操作時(shí)序。單總線協(xié)議器件嚴(yán)格按照時(shí)序進(jìn)行操作。本文用Verilog HDL硬件描述語(yǔ)言[3]編寫有限狀態(tài)機(jī)程序,由主控芯片發(fā)出同步信號(hào),發(fā)送命令和數(shù)據(jù)都是以bit為單位,而且是以低位在前高位在后的形式。

表1 DS18B20溫度/數(shù)據(jù)的關(guān)系

圖3 傳感器初始化時(shí)序

FPGA在開(kāi)始時(shí)刻發(fā)送一復(fù)位脈沖(最短為480μs的低電平信號(hào)),經(jīng)過(guò)480μs~960μs的低電平之后釋放總線并進(jìn)入接收狀態(tài)[4],DS18B20在檢測(cè)到總線的上升沿之后,等待15μs~60μs,接著DS18B20發(fā)出響應(yīng)脈沖(低電平持續(xù)60μs~240μs),如圖3中黑粗線所示。

當(dāng)寫入命令到DS18B20時(shí),DE0將數(shù)據(jù)總線從高電平拉至低電平后,就產(chǎn)生寫時(shí)間隙。如圖4,拉低總線15μs內(nèi)應(yīng)將數(shù)據(jù)位送到總線上[5]。DS18B20在開(kāi)始時(shí)刻后15μs~60μs間對(duì)總線進(jìn)行采樣,若采樣的電平為低電平,則寫入的位是0;若為高電平,則寫入的位是1。連續(xù)寫2位間的間隙應(yīng)大于1μs,每寫一位的時(shí)隙至少為60μs。

圖4 傳感器寫時(shí)

當(dāng)從DS18B20讀取數(shù)據(jù)時(shí),DE0把數(shù)據(jù)總線從高電平拉至低電平并保持1μs,然后釋放總線。來(lái)自DS18B20 的輸出數(shù)據(jù)在下降沿后15μs有效。在讀取數(shù)據(jù)結(jié)束時(shí)I/O引腳應(yīng)拉回到高電平,沒(méi)讀取一位的時(shí)隙至少為60μs,如圖5。

圖5 傳感器讀時(shí)

3DE0與DS18B20的連接

DS18B20支持寄生電源供電,在總線為高電平時(shí),DS18B20的內(nèi)部電容會(huì)總線上獲得電荷;在總線為低電平,內(nèi)部電容可以供電。但在溫度變換期間,I/O引腳電流較大,如果在該I/O引腳上保持高電平,會(huì)對(duì)FPGA芯片引腳造成很大壓力。所以使用VCC引腳接外部電源,DS18B20的數(shù)據(jù)線與DE0開(kāi)發(fā)板的GPIO 0口的GPIO0_D0口連接,如圖6所示[6]。

圖6 DS18B20與DE0的連接電路圖

4軟件設(shè)計(jì)

根據(jù)系統(tǒng)的要求,將軟件設(shè)計(jì)分為三個(gè)模塊,包括DS18B20的驅(qū)動(dòng)模塊、數(shù)碼管顯示模塊、溫度顯示頂層模塊。利用Verilog HDL語(yǔ)言[7]在Quartus II13.0開(kāi)發(fā)平臺(tái)上完成程序設(shè)計(jì)。其RTL圖如圖7所示。

圖7 測(cè)溫系統(tǒng)的RTL電路圖

單總線協(xié)議通信器件,其硬件電路簡(jiǎn)單,相對(duì)的軟件設(shè)計(jì)過(guò)程比較復(fù)雜。 通過(guò)對(duì)DS18B20功能的分析可知,DE0與DS18B20組成的測(cè)溫系統(tǒng)軟件流程圖如圖8所示。

圖8 測(cè)溫程序流程圖

軟件設(shè)計(jì)過(guò)程分為啟動(dòng)溫度轉(zhuǎn)換、讀取溫度、顯示溫度三個(gè)過(guò)程。前面兩個(gè)過(guò)程都是從復(fù)位DS18B20開(kāi)始。由于單總線協(xié)議對(duì)時(shí)序要求非常嚴(yán)格,分頻出1Mhz的頻率為了方便計(jì)數(shù)器計(jì)數(shù)。系統(tǒng)只用到一個(gè)溫度傳感器,SKIP ROM為跳過(guò)ROM命令,不需要讀取64位序列號(hào)來(lái)確定從機(jī)地址。

4.1DS18B20的驅(qū)動(dòng)模塊

本設(shè)計(jì)使用的目標(biāo)芯片是EP3C16F484C6[8],全部軟件功能在Quartus II13.0平臺(tái)上實(shí)現(xiàn),使用了Verilog HDL語(yǔ)言編寫各個(gè)模塊的程序。DS18B20的驅(qū)動(dòng)模塊電路圖符號(hào)如圖9所示, 該模塊有四個(gè)端口:clk是由開(kāi)發(fā)板的50 MHz系統(tǒng)時(shí)鐘分頻得到的1MHz的時(shí)鐘信號(hào);rst_n是低電平復(fù)位信號(hào)線;one_wire是與DS18B20的雙向接口;temperature[15…0]是16位的溫度數(shù)值輸出。DS18B20的驅(qū)動(dòng)模塊利用狀態(tài)機(jī)將DS18B20的單總線協(xié)議描述出來(lái),完成了初始化時(shí)序、讀時(shí)序、寫時(shí)序。

圖9 DS18B20的驅(qū)動(dòng)模塊

以下是對(duì)采集的溫度數(shù)據(jù)進(jìn)行處理的Verilog代碼,形成一定的線性關(guān)系。

Wire [15:0] t_buff = temperature_buff& 16'h07FF;

assign temperature[3:0] = (t_buff[3:0] * 10) ? 4;

// 小數(shù)點(diǎn)后一位

assign temperature[7:4] = (t_buff[7:4] >= 10) ? (t_buff[7:4] - 10) : t_buff[7:4]; // 個(gè)位

assign temperature[11:8] = (t_buff[7:4] >= 10) ? (t_buff[11:8] + 1) : t_buff[11:8]; //十位

assign temperature[15:12] = temperature_buff[12] ? 1 : 0; // 正負(fù)位

4.2數(shù)碼管顯示模塊

該系統(tǒng)采用四位數(shù)碼管來(lái)顯示采集的溫度值。DS18B20采集到溫度數(shù)據(jù)是二進(jìn)制數(shù)據(jù),一共有16位。高5位共同作為符號(hào)位,用S表示,當(dāng)溫度為正時(shí)S為0,溫度為負(fù)值時(shí)S為1;低11位是數(shù)據(jù)位,與符號(hào)位組成12位的溫度數(shù)據(jù)。第一位數(shù)碼管表示溫度的正負(fù)狀態(tài),如果溫度為正,則數(shù)碼管顯示熄滅狀態(tài),如果溫度為負(fù),則數(shù)碼管顯示’-’。第二位數(shù)碼管表示溫度的十位的值,第三位數(shù)碼管表示溫度的個(gè)位的值,該數(shù)碼管的dp位為小數(shù)點(diǎn),為常亮狀態(tài),第四位數(shù)碼管表示溫度的小數(shù)點(diǎn)位的值。根據(jù)系統(tǒng)設(shè)計(jì)的要求,分別設(shè)計(jì)了三個(gè)不同的數(shù)碼管譯碼模塊。第二位和第四位數(shù)碼管調(diào)用seg7x8_drive譯碼電路,第三位數(shù)碼管調(diào)用seg7x8_drive1譯碼電路,第一位數(shù)碼管調(diào)用seg7x8_drive2譯碼電路。三個(gè)數(shù)碼管顯示模塊如下圖10所示。

4.3溫度顯示頂層模塊

該模塊為系統(tǒng)設(shè)計(jì)的頂層模塊,在該模塊中定義了與外部硬件連接的輸入輸出引腳,依次調(diào)用DS18B20驅(qū)動(dòng)模塊和數(shù)碼管顯示模塊,實(shí)現(xiàn)16位帶符號(hào)的溫度值在數(shù)碼管上顯示。該模塊的電路符號(hào)如圖10。

圖10 數(shù)碼管顯示模塊

該模塊中定義的輸入輸出引腳如下:

module DS18B20_SEG7(

inputCLOCK_50,// 板載50MHz時(shí)鐘

inputQ_KEY,

inoutDS18B20,

inputSW,

output[6:0]HEX3_D,

output[6:0]HEX2_D,

output[7:0]HEX1_D,

output[6:0]HEX0_D);

圖11 溫度顯示頂層模塊

5調(diào)試與結(jié)果分析

Signal Tap II[10]是Quartus II13.0軟件自帶嵌入式邏輯分析儀,該分析儀用于調(diào)試FPGA,并進(jìn)行片內(nèi)信號(hào)分析的一個(gè)重要工具,本設(shè)計(jì)在進(jìn)行溫度數(shù)據(jù)采樣和捕獲信號(hào)時(shí),通過(guò)JTAG端口進(jìn)行數(shù)據(jù)傳輸,采用Signal Tap II邏輯分析儀進(jìn)行數(shù)據(jù)處理,驗(yàn)證該系統(tǒng)設(shè)計(jì)的邏輯功能是否正確。

邏輯分析儀的基本步驟如下:

1) 打開(kāi)Signal Tap Ⅱ編輯窗;

2) 調(diào)入待測(cè)信號(hào);

3) 相關(guān)參數(shù)設(shè)置。首先設(shè)置采樣時(shí)鐘;其次設(shè)置采樣深度;最后設(shè)置觸發(fā)條件;

4) 下載、啟動(dòng)并查看數(shù)據(jù)。

經(jīng)過(guò)上述步驟,程序下載到DE0后,用Signal Tap II抓取各個(gè)端口的數(shù)據(jù)并觀察其結(jié)果如圖12所示。

通過(guò)對(duì)各部分軟件的設(shè)計(jì),用Quartus II 13.0軟件進(jìn)行Verilog HDL語(yǔ)言的程序編譯,調(diào)試結(jié)果顯示沒(méi)有錯(cuò)誤后,就可以將此程序燒寫進(jìn)目標(biāo)芯片里面,數(shù)碼管顯示如圖12所示結(jié)果,Signal Tap II的仿真結(jié)果顯示HEX3_D:1111111b,HEX2_D:1111001b,HEX1_D:01111001b,HEX0_D:0110000b,經(jīng)數(shù)碼管譯碼后應(yīng)該顯示:11.3℃,由于是正溫度,HEX0_D為熄滅狀態(tài),與數(shù)碼管的顯示結(jié)果一樣。通過(guò)Signal Tap II的仿真和在數(shù)碼管顯示的結(jié)果可以驗(yàn)證,該測(cè)溫系統(tǒng)實(shí)現(xiàn)了預(yù)期的目的。

圖12 Signal Tap II調(diào)試圖

6結(jié)語(yǔ)

本文用DE0開(kāi)發(fā)板搭建硬件開(kāi)發(fā)平臺(tái),使用EP3C16F484C6 為主控芯片,DS18B20以單總線的方式與主控芯片連接,組成測(cè)溫系統(tǒng)。從DS18B20的操作步驟和時(shí)序出發(fā),用Verilog HDL硬件描述語(yǔ)言編寫有限狀態(tài)機(jī)程序[11],實(shí)現(xiàn)對(duì)DS18B20的控制。該接口實(shí)現(xiàn)了DS18B20與DE0的通信,并可以將該接口做成IP核,嵌入到其它溫度控制系統(tǒng)中。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)可以穩(wěn)定的運(yùn)行。該測(cè)溫系統(tǒng)還可以靈活地添加多個(gè)溫度傳感器,實(shí)現(xiàn)多路溫度測(cè)量系統(tǒng),實(shí)時(shí)地感知不同環(huán)境下的溫度,實(shí)現(xiàn)多路傳感器數(shù)據(jù)的信息融合,該系統(tǒng)實(shí)時(shí)性高,可靠性高,有廣闊的應(yīng)用前景。

參 考 文 獻(xiàn)

[1] 鄭麗娟,王梅,王寧.基于FPGA的多路溫度采集系統(tǒng)設(shè)計(jì)[J].通信電源技術(shù),2015,32(2):47-49.

[2] 王春玲,王美紅.基于DS18B20的小環(huán)境測(cè)溫控制的FPGA實(shí)現(xiàn)[J].泰山學(xué)院學(xué)報(bào),2014,36(3):10-16.

[3] 胡同花,周維龍.溫室大棚多點(diǎn)溫度采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電子設(shè)計(jì)工程,2014,22(13):87-90.

[4] 于京,呂殿基.基于FPGA的測(cè)溫系統(tǒng)的設(shè)計(jì)[J].內(nèi)蒙古大學(xué)學(xué)報(bào),2011,42(5):576-580.

[5] 仁愛(ài)鋒,羅豐.基于FPGA的嵌入式系統(tǒng)的設(shè)計(jì)[M].西安:西安電子科技大學(xué)出版社,2014:30-58.

[6] 劉昌華.EDA技術(shù)與應(yīng)用—基于QUARTUS II與VHDL[M].北京:北京航空航天大學(xué)出版社,2010:47-60.

[7] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M].北京:北京航空航天大學(xué)出版社,2008:166-175.

[8] Altera公司.DE0用戶手冊(cè),2010.

[9] DALLAS公司.DS18B20數(shù)據(jù)手冊(cè).

[10] 潘松,黃繼業(yè).EDA技術(shù)實(shí)用教程[M].北京:科學(xué)出版社,2010:110-127.

[11] 王曉磊,李宏生.基于有限狀態(tài)機(jī)的數(shù)字溫度傳感器控制系統(tǒng)設(shè)計(jì)[J].艦船電子工程,2010:30(12):182-185.

收稿日期:2016年1月7日,修回日期:2016年2月19日

基金項(xiàng)目:國(guó)家科技計(jì)劃項(xiàng)目(863計(jì)劃)(編號(hào):2013AA100302);武漢輕工大學(xué)2013研究生創(chuàng)新基金(編號(hào):2013cx007)資助。

作者簡(jiǎn)介:聶云,女,碩士研究生,研究方向:嵌入式FPGA設(shè)計(jì)。劉昌華,男,副教授,碩士生導(dǎo)師,研究方向:計(jì)算機(jī)網(wǎng)絡(luò)及應(yīng)用、嵌入式FPGA設(shè)計(jì)。鄒翰,男,碩士研究生,研究方向:嵌入式技術(shù)。王慧,女,碩士研究生,研究方向:軟件開(kāi)發(fā)。

中圖分類號(hào)TP391

DOI:10.3969/j.issn.1672-9730.2016.07.033

Design of Temperature Measurement System Based on DE0

NIE YunLIU ChanghuaZOU HanWANG Hui

(School of Mathematics and Computer Science, Wuhan Polytechnic University, Wuhan430023)

AbstractA DE0 development board and the temperature sensor DS18B20 is used to achieve the collection and display of temperature. It introduces the interface principle and operation sequence of the sensor and demonstrates the hardware circuit system composition and software design. By means of EP3C16F484C6 as the master chip, Verilog HDL hardware is used to describe language design state machine, which complete the FPGA’s operation about resetting, data-reading and data-writing on the DS18B20 temperature sensor according to the 1-wire protocol to finish temperature measurements. It also converts measured the binary temperature data into BCD code through digital tube display and use thes logic analyzer Signal Tap II of the Quartus II 13.0 software to simulate.

Key WordsDE0 development board, DS18B20 sensor, 1-wire protocol, Verilog HDL