




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、EDA課程設(shè)計(jì)課設(shè)名稱: 報(bào)警溫度計(jì)課設(shè)日期: 姓 名:學(xué) 號:哈爾濱工業(yè)大學(xué)(威海)信電學(xué)院電子信息工程2014.目錄一、所用軟硬與硬件介紹21.2硬件介紹2二系統(tǒng)設(shè)計(jì)22.1 設(shè)計(jì)思想22.1.1課題背景22.1.2 設(shè)計(jì)目的32.2工作原理及系統(tǒng)框圖32.3子模塊輸入輸出和功能4時(shí)鐘模塊4報(bào)警模塊:4復(fù)位5溫度采集模塊:5溫度顯示模塊:5溫度仲裁模塊:7溫度設(shè)定模塊:7三軟件設(shè)計(jì)73.1 程序流程圖和狀態(tài)機(jī)83.2 程序清單9時(shí)鐘模塊9報(bào)警模塊:10溫度采集模塊:12溫度顯示模塊:24溫度仲裁模塊:28溫度設(shè)定模塊:29四調(diào)試及結(jié)果304.1 模塊仿真304.2分析運(yùn)行結(jié)果30五. 設(shè)計(jì)
2、總結(jié)305.1錯誤分析315.2心得體會31一、所用軟硬與硬件介紹1.1軟件介紹本次課程設(shè)計(jì)所使用軟件是QuartusII,Quartus II 是Altera公司的綜合性PLD/FPGA開發(fā)軟件,支持原理圖、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設(shè)計(jì)輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)計(jì)輸入到硬件配置的完整PLD設(shè)計(jì)流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl腳本完成設(shè)計(jì)流程外,提供了完善的用戶圖形界面設(shè)計(jì)方式。具有運(yùn)行速度快,界面統(tǒng)一,功能集中,易學(xué)
3、易用等特點(diǎn)。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模塊庫,使用戶可以充分利用成熟的模塊,簡化了設(shè)計(jì)的復(fù)雜性、加快了設(shè)計(jì)速度。對第三方EDA工具的良好支持也使用戶可以在設(shè)計(jì)流程的各個階段使用熟悉的第三方EDA工具。此外,Quartus II 通過和DSP Builder工具與Matlab/Simulink相結(jié)合,可以方便地實(shí)現(xiàn)各種DSP應(yīng)用系統(tǒng);支持Altera的片上可編程系統(tǒng)(SOPC)開發(fā),集系統(tǒng)級設(shè)計(jì)、嵌入式軟件開發(fā)、可編程邏輯設(shè)計(jì)于一體,是一種綜合性的開發(fā)平臺。Altera Quartus II 作為一種可編程邏輯的設(shè)計(jì)環(huán)境, 由于其強(qiáng)
4、大的設(shè)計(jì)能力和直觀易用的接口,越來越受到數(shù)字系統(tǒng)設(shè)計(jì)者的歡迎。1.2硬件介紹本次課程設(shè)計(jì)使用的硬件器材是哈爾濱工業(yè)大學(xué)EDA實(shí)驗(yàn)箱,該實(shí)驗(yàn)箱由11個模塊組成,分別是:電源模塊,發(fā)光二極管,8段8數(shù)碼管,16*16點(diǎn)陣,核心板,擴(kuò)展口,喇叭,撥碼按鍵開關(guān),4*4鍵盤矩陣,溫度傳感器,紅外線傳感器。而報(bào)警溫度計(jì)的設(shè)計(jì)只要電源模塊,發(fā)光二極管,8段8數(shù)碼管,喇叭,溫度傳感器,4*4鍵盤矩陣。二系統(tǒng)設(shè)計(jì)2.1 設(shè)計(jì)思想基于FPGA,設(shè)計(jì)一個測量溫度的溫度計(jì),能夠精確實(shí)時(shí)的顯示溫度,并且達(dá)到溫度上下限可報(bào)警。2.1.1課題背景隨著社會的發(fā)展,科技的進(jìn)步,以及測溫儀器在各個領(lǐng)域的應(yīng)用,智能化已是現(xiàn)代溫度控
5、制系統(tǒng)發(fā)展的主流方向。溫度測試控制系統(tǒng),控制對象是溫度。溫度控制在日常生活及工業(yè)領(lǐng)域應(yīng)用相當(dāng)廣泛,比如溫室、水池、發(fā)酵缸、電源等場所的溫度控制。而以往溫度控制是由人工完成的而且不夠重視,其實(shí)在很多場所溫度都需要監(jiān)控以防止發(fā)生意外。針對此問題,本系統(tǒng)設(shè)計(jì)的目的是實(shí)現(xiàn)一種可連續(xù)高精度調(diào)溫的溫度控制系統(tǒng),它應(yīng)用廣泛,功能強(qiáng)大,小巧美觀,便于攜帶,是一款既實(shí)用又廉價(jià)的控制系統(tǒng)。特別是近年來,溫度控制系統(tǒng)已應(yīng)用到人們生活的各個方面,但溫度控制一直是一個未開發(fā)的領(lǐng)域,卻又是與人們息息相關(guān)的一個實(shí)際問題。2.1.2 設(shè)計(jì)目的1、設(shè)計(jì)一個數(shù)字溫度計(jì)能夠測試環(huán)境溫度。2、顯示環(huán)境溫度。3、能設(shè)置溫度的報(bào)警范圍,
6、當(dāng)前溫度高于或低于設(shè)置的上下限時(shí)候,喇叭報(bào)警。2.2工作原理及系統(tǒng)框圖溫度顯示復(fù)位時(shí)鐘分頻溫度采集溫度設(shè)定溫度仲裁喇叭報(bào)警 本次設(shè)計(jì)共有6大模塊,分別為時(shí)鐘分頻clk1111,溫度顯示display,溫度采集T_SENSOR,溫度仲裁compare,喇叭報(bào)警beep,以及溫度設(shè)定setting。其中時(shí)鐘分頻產(chǎn)生100Hz(供給setting模塊),1MHz(供給T_SENSOR和beep模塊)和25MHZ(供給compare和display模塊)的時(shí)鐘頻率。復(fù)位時(shí),setting2.3子模塊輸入輸出和功能時(shí)鐘模塊由于溫度顯示,溫度采集,溫度仲裁和喇叭報(bào)警都需要一個時(shí)鐘信號,而且各部分所需的時(shí)鐘
7、不同,所以通過一個分頻器為各模塊提供時(shí)鐘。Clock輸入clk輸入50MHz時(shí)鐘rst_n復(fù)位輸出clk_1us輸出25MHz時(shí)鐘clk_dis輸出1MHz時(shí)鐘clk_sitting輸出100Hz時(shí)鐘報(bào)警模塊:通過獲得系統(tǒng)控制模塊的數(shù)據(jù),直接決定是否報(bào)警。因此該模塊顯得特別簡單,直接獲得系統(tǒng)控制模塊得到的電平作為使能端。beep輸入clk輸入1us時(shí)鐘信號en使能信號啟動報(bào)警輸出Signal_out輸出報(bào)警信號復(fù)位 將按鍵開關(guān)K8設(shè)置為復(fù)位開關(guān)。溫度采集模塊:溫度測量傳感器采用DALLAS公司DS18B20的單總線數(shù)字化溫度傳感器,測溫范圍為-55125,可編程為9位12位A/D轉(zhuǎn)換精度,測溫
8、分辨率達(dá)到0.0625,采用寄生電源工作方式,CPU只需一根口線便能與DS18B20通信,占用CPU口線少,可節(jié)省大量引線和邏輯電路溫度采集輸入clk_1us1us時(shí)鐘輸入rst_n復(fù)位信號輸出temperature15.0輸出16位溫度數(shù)據(jù)one_wire單總線溫度顯示模塊:溫度的顯示可以通過8個8段數(shù)碼管來實(shí)現(xiàn),因?yàn)槭莿討B(tài)顯示,所以每次只有一個數(shù)碼管顯示。由于掃描顯示速率夠快,人的視覺有余暉效應(yīng),使人感覺所有的數(shù)碼管都在同時(shí)顯示。 溫度數(shù)據(jù)轉(zhuǎn)換 輸入up顯示上限down顯示下限tup15.0溫度上限tdown15.0溫度下限clk_dis輸入1ms時(shí)鐘rst_n復(fù)位信號temperatur
9、e15.0輸入溫度數(shù)據(jù) 輸出wela7.0片選信號dula7.0數(shù)碼顯示左邊數(shù)碼管信號輸入接口分布溫度數(shù)字信號輸入aDula0Pin_152bDula1Pin_143cDula2Pin_145dDula3Pin_160eDula4Pin_162f Dula5Pin_150gDula6Pin_147dpDula7Pin_171片選信號輸入左S4wela7Pin_185S3wela6Pin_181S2wela5Pin_173S1wela4Pin_170右S4wela4Pin_168右S3wela4Pin_179S2wela4Pin_164S1wela4Pin_175溫度仲裁模塊: Compare
10、輸入tup15:0溫度上限tdown15:0溫度下限clk_dis1ms時(shí)鐘temperature15:0輸入溫度數(shù)據(jù)rst_n復(fù)位輸出en報(bào)警觸發(fā)溫度設(shè)定模塊:setting輸入up(K5)上下限加1Down(K6)上下限減1tup(SW1)設(shè)定溫度上限Tdown(SW2)設(shè)定溫度下限clk_setting0.2s時(shí)鐘reset復(fù)位輸出seta15:0輸出溫度上限setb15:0輸出溫度下限三軟件設(shè)計(jì)3.1 程序流程圖和狀態(tài)機(jī) 設(shè)計(jì)原理圖 開始 設(shè)置上下限顯示溫度溫度采集超過溫度范圍限報(bào)警 Yes No返回 程序流程圖3.2 程序清單時(shí)鐘模塊module clock1111( clk, rs
11、t_n, clk_1us, clk_dis, clk_setting); input clk;input rst_n;output clk_1us;output clk_dis;output clk_setting;reg clk_1us;reg clk_dis;reg clk_setting;reg 3:0 count;reg 24:0 count1;reg 24:0 count2;always (posedge clk or negedge rst_n)begin if(!rst_n) /如果沒復(fù)位 begin count<=0; clk_1us<=0; end /沒意義則結(jié)束
12、 else begin if(count=12) begin clk_1us<=clk_1us; /取反,1變成0 count<=0; end else count<=count+1; end endalways (posedge clk or negedge rst_n)begin if(!rst_n) begin count1<=0; clk_dis<=0; end else begin if(count1=25000) begin clk_dis<=clk_dis; count1<=0; end else count1<=count1+1;
13、 end end always (posedge clk or negedge rst_n)begin if(!rst_n) begin count2<=0; clk_setting<=0; end else begin if(count2=2500000) begin clk_setting<=clk_setting; count2<=0; end else count2<=count2+1; end end endmodule報(bào)警模塊:module beep( clk, en, Signal_out); input clk; input en; output
14、Signal_out;reg Signal_out;reg 23:0 Counter;reg State;parameter BEEP_off=1'b0, BEEP_on=1'b1;always(posedge clk) if(en)begin Counter<=24'd1;case(State)BEEP_off:beginSignal_out<=1'b1; /Counter<=24'd1; Counter<=(Counter+24'd1); if(Counter=24'd800)begin Counter<
15、=24'd1; State<=BEEP_on;end else State<=BEEP_off;endBEEP_on:begin Signal_out<=1'b0; /Counter<=24'd1; Counter<=(Counter+24'd1);if(Counter=24'd800) beginCounter<=24'd1;State<=BEEP_off; endelse State<=BEEP_on;enddefault:State<=BEEP_off;endcaseendendmodu
16、le溫度采集模塊:module T_SENSOR( clk_1us, / 25MHz時(shí)鐘 rst_n, / 異步復(fù)位 one_wire, / One-Wire總線 temperature / 輸出溫度值); input clk_1us ; / 25MHz時(shí)鐘 input rst_n ; / 異步復(fù)位 inout one_wire ; / One-Wire總線 output 15:0 temperature ; / 輸出溫度值 /延時(shí)模塊的使用/+/ 延時(shí)模塊 開始/+reg 19:0 cnt_1us; / 1us延時(shí)計(jì)數(shù)子reg cnt_1us_clear; / 請1us延時(shí)計(jì)數(shù)子always
17、 (posedge clk_1us) if (cnt_1us_clear) cnt_1us <= 0; else cnt_1us <= cnt_1us + 1'b1;/-/ 延時(shí)模塊 結(jié)束/-/+/ DS18B20狀態(tài)機(jī) 開始/+/+/ 格雷碼parameter S00 = 5'h00;parameter S0 = 5'h01;parameter S1 = 5'h03;parameter S2 = 5'h02;parameter S3 = 5'h06;parameter S4 = 5'h07;parameter S5 = 5&
18、#39;h05;parameter S6 = 5'h04;parameter S7 = 5'h0C;parameter WRITE0 = 5'h0D;parameter WRITE1 = 5'h0F;parameter WRITE00 = 5'h0E;parameter WRITE01 = 5'h0A;parameter READ0 = 5'h0B;parameter READ1 = 5'h09;parameter READ2 = 5'h08;parameter READ3 = 5'h18;reg 4:0 stat
19、e; / 狀態(tài)寄存器/-reg one_wire_buf; / One-Wire總線 緩存寄存器reg 15:0 temperature_buf; / 采集到的溫度值緩存器(未處理)reg 5:0 step; / 子狀態(tài)寄存器 050reg 3:0 bit_valid; / 有效位 always (posedge clk_1us, negedge rst_n)begin if (!rst_n) begin one_wire_buf <= 1'bZ; step <= 0; state <= S00; end else begin case (state) S00 : b
20、egin temperature_buf <= 16'hFFFF; state <= S0; end S0 : begin / 初始化 cnt_1us_clear <= 1; one_wire_buf <= 0; state <= S1; end S1 : begin cnt_1us_clear <= 0; if (cnt_1us = 500) / 延時(shí)500us begin cnt_1us_clear <= 1; one_wire_buf <= 1'bZ; / 釋放總線 state <= S2; end end S2 :
21、begin cnt_1us_clear <= 0; if (cnt_1us = 100) / 等待100us begin cnt_1us_clear <= 1; state <= S3; end end S3 : if (one_wire) / 若18b20拉低總線,初始化成功 state <= S4; else if (one_wire) / 否則,初始化不成功,返回S0 state <= S0; S4 : begin cnt_1us_clear <= 0; if (cnt_1us = 400) / 再延時(shí)400us begin cnt_1us_clear
22、 <= 1; state <= S5; end end S5 : begin / 寫數(shù)據(jù) if (step = 0) / 0xCC begin step <= step + 1'b1; state <= WRITE0; end else if (step = 1) begin step <= step + 1'b1; state <= WRITE0; end else if (step = 2) begin one_wire_buf <= 0; step <= step + 1'b1; state <= WRITE0
23、1; end else if (step = 3) begin one_wire_buf <= 0; step <= step + 1'b1; state <= WRITE01; end else if (step = 4) begin step <= step + 1'b1; state <= WRITE0; end else if (step = 5) begin step <= step + 1'b1; state <= WRITE0; end else if (step = 6) begin one_wire_buf &
24、lt;= 0; step <= step + 1'b1; state <= WRITE01; end else if (step = 7) begin one_wire_buf <= 0; step <= step + 1'b1; state <= WRITE01; end else if (step = 8) / 0x44 begin step <= step + 1'b1; state <= WRITE0; end else if (step = 9) begin step <= step + 1'b1; st
25、ate <= WRITE0; end else if (step = 10) begin one_wire_buf <= 0; step <= step + 1'b1; state <= WRITE01; end else if (step = 11) begin step <= step + 1'b1; state <= WRITE0; end else if (step = 12) begin step <= step + 1'b1; state <= WRITE0; end else if (step = 13) b
26、egin step <= step + 1'b1; state <= WRITE0; end else if (step = 14) begin one_wire_buf <= 0; step <= step + 1'b1; state <= WRITE01; end else if (step = 15) begin step <= step + 1'b1; state <= WRITE0; end / 第一次寫完,750ms后,跳回S0 else if (step = 16) begin one_wire_buf <=
27、 1'bZ; step <= step + 1'b1; state <= S6; end / 再次置數(shù)0xCC和0xBE else if (step = 17) / 0xCC begin step <= step + 1'b1; state <= WRITE0; end else if (step = 18) begin step <= step + 1'b1; state <= WRITE0; end else if (step = 19) begin one_wire_buf <= 0; step <= ste
28、p + 1'b1; state <= WRITE01; end else if (step = 20) begin step <= step + 1'b1; state <= WRITE01; one_wire_buf <= 0; end else if (step = 21) begin step <= step + 1'b1; state <= WRITE0; end else if (step = 22) begin step <= step + 1'b1; state <= WRITE0; end else
29、 if (step = 23) begin one_wire_buf <= 0; step <= step + 1'b1; state <= WRITE01; end else if (step = 24) begin one_wire_buf <= 0; step <= step + 1'b1; state <= WRITE01; end else if (step = 25) / 0xBE begin step <= step + 1'b1; state <= WRITE0; end else if (step = 2
30、6) begin one_wire_buf <= 0; step <= step + 1'b1; state <= WRITE01; end else if (step = 27) begin one_wire_buf <= 0; step <= step + 1'b1; state <= WRITE01; end else if (step = 28) begin one_wire_buf <= 0; step <= step + 1'b1; state <= WRITE01; end else if (step
31、= 29) begin one_wire_buf <= 0; step <= step + 1'b1; state <= WRITE01; end else if (step = 30) begin one_wire_buf <= 0; step <= step + 1'b1; state <= WRITE01; end else if (step = 31) begin step <= step + 1'b1; state <= WRITE0; end else if (step = 32) begin one_wire
32、_buf <= 0; step <= step + 1'b1; state <= WRITE01; end / 第二次寫完,跳到S7,直接開始讀數(shù)據(jù) else if (step = 33) begin step <= step + 1'b1; state <= S7; end end S6 : begin cnt_1us_clear <= 0; if (cnt_1us = 750000 | one_wire) / 延時(shí)750ms! begin cnt_1us_clear <= 1; state <= S0; / 跳回S0,再次初始
33、化 end end S7 : begin / 讀數(shù)據(jù) if (step = 34) begin bit_valid <= 0; one_wire_buf <= 0; step <= step + 1'b1; state <= READ0; end else if (step = 35) begin bit_valid <= bit_valid + 1'b1; one_wire_buf <= 0; step <= step + 1'b1; state <= READ0; end else if (step = 36) beg
34、in bit_valid <= bit_valid + 1'b1; one_wire_buf <= 0; step <= step + 1'b1; state <= READ0; end else if (step = 37) begin bit_valid <= bit_valid + 1'b1; one_wire_buf <= 0; step <= step + 1'b1; state <= READ0; end else if (step = 38) begin bit_valid <= bit_val
35、id + 1'b1; one_wire_buf <= 0; step <= step + 1'b1; state <= READ0; end else if (step = 39) begin bit_valid <= bit_valid + 1'b1; one_wire_buf <= 0; step <= step + 1'b1; state <= READ0; end else if (step = 40) begin bit_valid <= bit_valid + 1'b1; one_wire_buf <= 0; step
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 輝豐股份漂綠行為審計(jì)治理研究
- 勞動經(jīng)營合同范本
- 中藥調(diào)節(jié)血脂針劑企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 中藥足浴包生產(chǎn)銷售行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報(bào)告
- 基于化學(xué)生物學(xué)的藥物設(shè)計(jì)企業(yè)制定與實(shí)施新質(zhì)生產(chǎn)力戰(zhàn)略研究報(bào)告
- 知識產(chǎn)權(quán)法律在商業(yè)談判中的作用
- 電影產(chǎn)業(yè)教育培養(yǎng)未來影視人才
- 租東西合同范本
- 球拍、棍企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報(bào)告
- 高氯酸銨企業(yè)縣域市場拓展與下沉戰(zhàn)略研究報(bào)告
- 肺病科中醫(yī)特色護(hù)理
- 情侶自愿轉(zhuǎn)賬贈與協(xié)議書范本
- DB14-T 3043-2024 黃土丘陵溝壑區(qū)水土流失綜合治理技術(shù)規(guī)范
- 青島西海岸新區(qū)2025中考自主招生英語試卷試題(含答案詳解)
- 《氣象學(xué)與氣候?qū)W》全書電子教案B
- 生產(chǎn)設(shè)備更新和技術(shù)改造項(xiàng)目資金申請報(bào)告-超長期國債
- 江西省“振興杯”信息通信網(wǎng)絡(luò)運(yùn)行管理員競賽考試題庫-上(單選題)
- DLT 5756-2017 額定電壓35kV(Um=40.5kV)及以下冷縮式電纜附件安裝規(guī)程
- 2023高考數(shù)學(xué)藝考生一輪復(fù)習(xí)講義(學(xué)生版)
- 2024年江蘇經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫含答案
- 2024年連云港專業(yè)技術(shù)人員繼續(xù)教育《飲食、運(yùn)動和健康的關(guān)系》92分(試卷)
評論
0/150
提交評論