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