基于A(yíng)valon總線(xiàn)SHT11溫濕度傳感器自定義IP核的開(kāi)發(fā)流程
2.2 接口模塊的設計
根據SHT11的描述,確定該模塊與Avalon所需要的接口信號。通過(guò)使用較少的信號來(lái)處理讀寫(xiě)。系統通過(guò)時(shí)鐘線(xiàn)、數據線(xiàn)和SHT11相連,根據時(shí)鐘的時(shí)序向數據線(xiàn)寫(xiě)命令,SHT11通過(guò)數據線(xiàn)輸出數據。設計模塊的輸入信號為:clk,sysclk, n_rest, data_i,data_o,wr,rd, addr。輸出信號為:SCK,DATA(DATA是雙向數據線(xiàn))。端口信號的部分說(shuō)明如下:
moduleSHT11(
clk,//系統時(shí)鐘
n_rest,//系統復位
data_i,//Avalon寫(xiě)數據總線(xiàn)
data_o,//Avalon讀數據總線(xiàn)
wr,//Avalon寫(xiě)請求
rd,//Avalon讀請求
sysclk,//系統時(shí)鐘
addr,//Avalon地址總線(xiàn)
SCK,//時(shí)鐘線(xiàn)輸出
DATA,//數據輸入輸出(雙向)
);
2.3 行為模塊的實(shí)現
行為模塊實(shí)現的是SHT11的功能。該部分是整個(gè)設計的核心,實(shí)現對SHT11的控制。設計時(shí)必須根據驅動(dòng)控制的規范以及時(shí)序的要求來(lái)編寫(xiě)。設計的過(guò)程中,信號的控制較為復雜,但在時(shí)序邏輯中,這又十分重要??梢栽O定一系列的寄存器,作為訪(fǎng)問(wèn)硬件的通道[7?8]。
根據其驅動(dòng)規范,不同的命令實(shí)現相應的功能。傳輸開(kāi)始時(shí),應該發(fā)出啟動(dòng)信號。啟動(dòng)信號包括時(shí)鐘線(xiàn)為高,數據線(xiàn)由高變低,并在下一個(gè)時(shí)鐘線(xiàn)為高的時(shí)候將數據線(xiàn)變高。當啟動(dòng)信號開(kāi)始后,輸入相應指令(包含3位地址和5位命令),通過(guò)數據線(xiàn),確定接收到ACK信號后,表示SHT11已經(jīng)正確接收命令。待一定的時(shí)間后,當數據線(xiàn)由高拉低后開(kāi)始信號的傳輸。系統通過(guò)確認數據線(xiàn)上的ACK來(lái)確定每個(gè)字節的傳輸。數據傳輸完畢,進(jìn)行CRC校驗。校驗完畢后,ACK為高,結束傳輸。
在進(jìn)行設計時(shí),采用嵌套狀態(tài)機來(lái)實(shí)現驅動(dòng)邏輯。根據驅動(dòng)控制器的讀寫(xiě)命令及讀寫(xiě)時(shí)序,采取不同狀態(tài)機來(lái)實(shí)現,如圖2所示。輸入命令之后,根據不同的讀寫(xiě)請求,進(jìn)入不同的狀態(tài)機。

圖2 狀態(tài)機
通過(guò)rd和wr以及地址addr控制數據線(xiàn)的讀寫(xiě)。當addr=1wr,則向數據線(xiàn)寫(xiě)數據(data_i),data_i的輸入格式是crc(1位)wr_data(16位)command(2位),當addr=0wr,進(jìn)入狀態(tài)機;當addr=2 amp;rd,從數據線(xiàn)讀取數據data_o。
設內部寄存器command,根據不同的命令,進(jìn)入不同的狀態(tài)機循環(huán):若command為01,通過(guò)數據線(xiàn)向寄存器寫(xiě)數據;若command為10,通過(guò)數據線(xiàn)從寄存器讀數據;若command為其他,則讀取數據。當傳送8位數據后,需判斷雙向數據線(xiàn)DATA的ACK信號的高低,當接收到ACK信號時(shí),再根據相應的命令,進(jìn)行數據的傳輸。當數據傳輸完畢后,需要經(jīng)行CRC校驗。圖3是仿真時(shí)序圖,實(shí)現向寄存器寫(xiě)數據的功能。
2.4 軟件設計
該部分可以直接在SOPC Builder 中添加設計好的IP核和Verilog HDL 語(yǔ)言描述的文件,并根據Avalon 總線(xiàn)傳輸規范設置好相關(guān)的信號線(xiàn),如圖4所示。這里要注意,使用的是從端口。完成后,將IP核添加至SOPC中,建立內嵌系統,并編譯下載到FPGA 器件中。

圖3 時(shí)序仿真圖

圖4 Avalon接口信號
由于在NiosII IDE 環(huán)境下可直接編寫(xiě)用戶(hù)程序,所以可以不用編寫(xiě)驅動(dòng)程序。在NiosII IDE 環(huán)境下,可直接調用函數IOWR (BASE,OFFSET,DATA) 和IORD(BASE ,OFFSET) 對內部寄存器進(jìn)行讀寫(xiě)。Avalon總線(xiàn)在wr和rd的控制下進(jìn)行讀寫(xiě)。
3 測試
農業(yè)智能大棚(該花卉的適宜溫度是18 ℃,適宜濕度是58 RH),也就是棚內維持在作物適宜生長(cháng)的溫度、濕度等。若有變化,其將會(huì )調節相應的外圍設備,來(lái)保持最佳環(huán)境。在大棚中,在測試節點(diǎn)上,SHT11監測實(shí)時(shí)的溫度和濕度,將數據送到nRF24L01,數據通過(guò)基站最終到達終端虛擬控制中心。其所獲得的數據變化曲線(xiàn)如圖5、圖6所示。

圖5 溫度隨時(shí)間的變化曲線(xiàn)圖 圖6 濕度隨時(shí)間的變化曲線(xiàn)圖
結語(yǔ)
本文介紹了基于Avalon總線(xiàn)SHT11溫濕度傳感器自定義IP核的開(kāi)發(fā)流程,利用有限狀態(tài)機設計了驅動(dòng)硬件邏輯,并且基于NiosII嵌入式處理器構建了一個(gè)用戶(hù)定制的嵌入式系統。在SOPC中,設計人員可以靈活添加IP核,減輕設計負擔,避免重復工作。
土壤濕度傳感器相關(guān)文章:土壤濕度傳感器原理 溫濕度控制器相關(guān)文章:溫濕度控制器原理
評論