新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FPGA的數(shù)字溫度測(cè)量?jī)x設(shè)計(jì)

        基于FPGA的數(shù)字溫度測(cè)量?jī)x設(shè)計(jì)

        作者: 時(shí)間:2017-06-05 來(lái)源:網(wǎng)絡(luò) 收藏

        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)換為電量并顯示的一種儀器,有著廣泛的適用范圍。

        本文利用器件與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)。

        本文引用地址:http://www.104case.com/article/201706/348911.htm

        1 軟件程序設(shè)計(jì)

        根據(jù)系統(tǒng)的設(shè)計(jì)要求,將程序部分設(shè)計(jì)分為5個(gè)模塊,包括分頻模塊、DS18B20通信模塊、控制模塊、數(shù)制轉(zhuǎn)換模塊、顯示模塊,如圖1所示。利用語(yǔ)言在QuartusII開(kāi)發(fā)平臺(tái)上完成程序設(shè)計(jì)。



        1.1 分頻模塊

        分頻模塊是設(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)過(guò)分頻后得到信號(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í)際操作中無(wú)需接出。

        DS18B20采用一根I/O總線讀寫(xiě)數(shù)據(jù),因此它對(duì)讀寫(xiě)數(shù)據(jù)位有嚴(yán)格的時(shí)序要求,如圖5所示。

        從分頻模塊的clk_1m輸出1MHz到通信模塊的clock作為時(shí)鐘信號(hào);根據(jù)DS18B20所遵循的初始化時(shí)序、讀時(shí)序、寫(xiě)時(shí)序等通信協(xié)議將程序完成;將獲取的12位的溫度信號(hào)傳送給下一個(gè)模塊。

        1.3 控制模塊

        通過(guò)控制模塊,將從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)過(guò)500分頻后,得到頻率為1kHz的信號(hào)clk lk,此時(shí)累加器cnt0為‘0’。當(dāng)cnt0為‘1’時(shí),系統(tǒng)狀態(tài)由原來(lá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ù)通過(guò)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í),程序開(kāi)始進(jìn)行數(shù)制轉(zhuǎn)換,并通過(guò)b1[3..0]、b2[3..0]、b3[3..0]端口將得到的十進(jìn)制數(shù)輸出到相應(yīng)的顯示模塊中。數(shù)制轉(zhuǎn)換模塊仿真見(jiàn)圖10。

        由圖10知,輸入數(shù)據(jù)為“010011 10000”,clear端為低電平,當(dāng)enable信號(hào)有上升沿時(shí),數(shù)據(jù)開(kāi)始轉(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ù)字,表明所編寫(xiě)的程序正確。


        1.6 總體電路框圖

        整體電路圖如圖13所示。

        輸入50MHz信號(hào)接入分頻模塊的clock端口,經(jīng)過(guò)分頻后的信號(hào)輸入到DS18B20通信和數(shù)制轉(zhuǎn)換模塊的clock端,作為模塊的時(shí)鐘信號(hào)。DS 18B20將測(cè)得的溫度數(shù)據(jù)傳給控制模塊的win[11..1],通過(guò)數(shù)制轉(zhuǎn)換模塊將數(shù)據(jù)轉(zhuǎn)換為3位十進(jìn)制表示,最后利用顯示模塊譯碼后由共陰數(shù)碼管顯示。

        2 硬件電路設(shè)計(jì)

        設(shè)計(jì)采用器件和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)的引腳,并編譯通過(guò)。

        將FPGA的下載數(shù)據(jù)線一端連接FPGA電路板,一端接計(jì)算機(jī)USB口,在命令欄里Programmer項(xiàng),在彈出的窗口中選擇Hardware Setup,確認(rèn)計(jì)算機(jī)已與DE2板連接好后,點(diǎn)擊Start開(kāi)始下載運(yùn)行。

        連接好DS18B20電路,即可測(cè)量室內(nèi)溫度,實(shí)物電路圖如圖15所示。由實(shí)測(cè)知,當(dāng)前室溫為24.2℃。

        4 結(jié)束語(yǔ)

        本文利用FPGA與DS18B20設(shè)計(jì)并實(shí)現(xiàn)了一種用于檢測(cè)室溫的簡(jiǎn)易的數(shù)字溫度測(cè)量?jī)x。在QuartusII開(kāi)發(fā)平臺(tái)上,利用語(yǔ)言完成軟件程序設(shè)計(jì),并完成硬件電路板設(shè)計(jì),最后下載驗(yàn)證。實(shí)現(xiàn)的測(cè)量?jī)x具有結(jié)構(gòu)簡(jiǎn)單、測(cè)量精確性高、使用方便、擴(kuò)展性能好的優(yōu)點(diǎn)。



        關(guān)鍵詞: 溫度傳感器 VHDL FPGA

        評(píng)論


        相關(guān)推薦

        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 泰和县| 东安县| 类乌齐县| 崇仁县| 桐庐县| 正蓝旗| 莱州市| 娱乐| 金山区| 南宁市| 新绛县| 抚顺市| 洛隆县| 牟定县| 通榆县| 呼玛县| 宝山区| 梁山县| 绍兴县| 商都县| 和顺县| 喜德县| 绵阳市| 黄冈市| 龙井市| 山西省| 台东县| 当雄县| 磐石市| 新乐市| 登封市| 太保市| 富裕县| 海丰县| 武安市| 鸡东县| 淮滨县| 安仁县| 肇庆市| 类乌齐县| 塔城市|