基于FPGA的數(shù)字溫度測量儀設計與實現(xiàn)
摘要:溫度測量儀是一種常用的檢測儀器,文章中利用FPGA器件和DS18B20傳感器設計實現(xiàn)了一種數(shù)字溫度測量儀,用于室溫的檢測。該測量儀具有結構簡單、抗干擾能力強、精確性高、轉換速度快、擴展性好等優(yōu)點。
關鍵詞:溫度測量;現(xiàn)場可編程邏輯門陣列;DS18B20;VHDL語言
0 引言
溫度作為一種最基本的環(huán)境參數(shù),與人民的生活有著密切關系。溫度的測量和控制在工業(yè)、農(nóng)業(yè)、國防、醫(yī)療等各個領域中應用普遍。溫度測量儀是利用物質(zhì)各種物理性質(zhì)隨溫度變化的規(guī)律,把溫度轉換為電量并顯示的一種儀器,有著廣泛的適用范圍。
本文利用FPGA器件與DS18B20溫度傳感器設計實現(xiàn)了一種數(shù)字溫度測量儀,用于檢測室溫。與其它系統(tǒng)相比較,此測量儀具有結構簡單、抗干擾能力強、精確性高、轉換速度快、擴展性好等優(yōu)點。
1 軟件程序設計
根據(jù)系統(tǒng)的設計要求,將程序部分設計分為5個模塊,包括分頻模塊、DS18B20通信模塊、控制模塊、數(shù)制轉換模塊、顯示模塊,如圖1所示。利用VHDL語言在QuartusII開發(fā)平臺上完成程序設計。
1.1 分頻模塊
分頻模塊是FPGA設計項目中的基本模塊之一。針對50MHz的時鐘頻率進行分頻產(chǎn)生1MHz頻率信號,分頻模塊如圖2所示。
系統(tǒng)提時鐘信號進入分頻模塊clock引腳,經(jīng)過分頻后得到信號從clk 1m輸出。分頻模塊仿真結果如圖3所示。
由圖3可知,輸入端的50MHz時鐘信號被50分頻后得到輸出端的1MHz信號。
1.2 DS18B20通信模塊
圖4中時鐘clock為輸入端口,DS18820數(shù)據(jù)總線口dq[0..0]為雙向端口,使能端enable為輸出端口,led[11..1]為測試時的指示端口,在實際操作中無需接出。
DS18B20采用一根I/O總線讀寫數(shù)據(jù),因此它對讀寫數(shù)據(jù)位有嚴格的時序要求,如圖5所示。
從分頻模塊的clk_1m輸出1MHz到通信模塊的clock作為時鐘信號;根據(jù)DS18B20所遵循的初始化時序、讀時序、寫時序等通信協(xié)議將程序完成;將獲取的12位的溫度信號傳送給下一個模塊。
1.3 控制模塊
通過控制模塊,將從DS18B20讀取的二進制溫度信息傳給數(shù)制轉換模塊,如圖6所示。
程序中設定了三個狀態(tài)(清除clear、使能enable、顯示display),當ena為‘1’時,狀態(tài)從顯示轉到清除;ena為‘0’時,狀態(tài)一直為顯示,把輸入數(shù)據(jù)win[11..1]從輸出端口wout[11..1]輸出到下一模塊,之間的轉換關系如圖7所示。
控制模塊仿真結果如圖8所示。
圖8中,clock輸入為1 MHz信號,經(jīng)過500分頻后,得到頻率為1kHz的信號clk lk,此時累加器cnt0為‘0’。當cnt0為‘1’時,系統(tǒng)狀態(tài)由原來的清除狀態(tài)轉變?yōu)槭鼓軤顟B(tài),此時enb為‘1’,cnt0進行累加;當cnt0=‘1’時,系統(tǒng)狀態(tài)從使能狀態(tài)轉變到顯示狀態(tài),系統(tǒng)就把win[11..1]輸入的數(shù)據(jù)通過wout[11..1]輸出到下一模塊。
1.4 數(shù)制轉換模塊
利用數(shù)制轉換模塊將輸入的11位二進制的溫度數(shù)據(jù)轉換為3位十進制表示,如圖9所示。
圖9中,clear為清零輸入端口,enable為使能輸入端口,indata[11..1]為數(shù)據(jù)輸入端口,b1『3..0]、b2[3..0]、b3[3..0]為三個輸出端口。如果clear輸入信號為‘1’時,程序?qū)⑶宄龝捍婕拇嫫髦袛?shù)據(jù);反之則不清除。enable輸入信號出現(xiàn)上升沿時,程序開始進行數(shù)制轉換,并通過b1[3..0]、b2[3..0]、b3[3..0]端口將得到的十進制數(shù)輸出到相應的顯示模塊中。數(shù)制轉換模塊仿真見圖10。
由圖10知,輸入數(shù)據(jù)為“010011 10000”,clear端為低電平,當enable信號有上升沿時,數(shù)據(jù)開始轉換。轉換后數(shù)據(jù)為b1=0、b2=9、b3=3,符合設計值。
1.5 顯示模塊
從數(shù)制轉換模塊輸出的十進制數(shù)接入到顯示模塊中,將其譯碼為七段值,輸出到共陰數(shù)碼管上顯示,模塊如圖11所示。
由圖12可知,當輸入為0時,輸出為“1111110”;當輸入為1時,輸出為“0000110”;當輸入為2時,輸出為“1101101”;當輸入為3時,輸出為“1111001”等,在七段數(shù)碼管上正好顯示相同數(shù)字,表明所編寫的程序正確。
1.6 總體電路框圖
整體電路圖如圖13所示。
輸入50MHz信號接入分頻模塊的clock端口,經(jīng)過分頻后的信號輸入到DS18B20通信和數(shù)制轉換模塊的clock端,作為模塊的時鐘信號。DS 18B20將測得的溫度數(shù)據(jù)傳給控制模塊的win[11..1],通過數(shù)制轉換模塊將數(shù)據(jù)轉換為3位十進制表示,最后利用顯示模塊譯碼后由共陰數(shù)碼管顯示。
2 硬件電路設計
設計采用FPGA器件和DS18B20實現(xiàn)溫度測量儀,F(xiàn)PGA電路板主要由FPGA器件、時鐘電路、下載電路、電源電路、顯示電路、指示燈和按鍵等構成。核心芯片采用ALTERA公司生產(chǎn)的CycloneII系列EP2C5T144C8芯片。在設計溫度傳感器部分時,由于DS18B20進行精確轉換時需要I/O引腳保持大電流供電,這樣對FPGA芯片引腳造成很大壓力,所以要使DS18B20的VDD引腳接外部電源。電路框圖如圖14所示。
3 下載調(diào)試
選擇下載FPGA芯片為EP2C5T144C8,在菜單中選擇Pins項設定引腳,在彈出的窗口中設置好各個輸入輸出端與硬件相對應的引腳,并編譯通過。
將FPGA的下載數(shù)據(jù)線一端連接FPGA電路板,一端接計算機USB口,在命令欄里Programmer項,在彈出的窗口中選擇Hardware Setup,確認計算機已與DE2板連接好后,點擊Start開始下載運行。
連接好DS18B20溫度傳感器電路,即可測量室內(nèi)溫度,實物電路圖如圖15所示。由實測知,當前室溫為24.2℃。
4 結束語
本文利用FPGA與DS18B20設計并實現(xiàn)了一種用于檢測室溫的簡易的數(shù)字溫度測量儀。在QuartusII開發(fā)平臺上,利用VHDL語言完成軟件程序設計,并完成硬件電路板設計,最后下載驗證。實現(xiàn)的測量儀具有結構簡單、測量精確性高、使用方便、擴展性能好的優(yōu)點。