




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、EDA课程设计课设名称: 报警温度计课设日期: 姓 名:学 号:哈尔滨工业大学(威海)信电学院电子信息工程2014.目录一、所用软硬与硬件介绍21.2硬件介绍2二系统设计22.1 设计思想22.1.1课题背景22.1.2 设计目的32.2工作原理及系统框图32.3子模块输入输出和功能4时钟模块4报警模块:4复位5温度采集模块:5温度显示模块:5温度仲裁模块:7温度设定模块:7三软件设计73.1 程序流程图和状态机83.2 程序清单9时钟模块9报警模块:10温度采集模块:12温度显示模块:24温度仲裁模块:28温度设定模块:29四调试及结果304.1 模块仿真304.2分析运行结果30五. 设计
2、总结305.1错误分析315.2心得体会31一、所用软硬与硬件介绍1.1软件介绍本次课程设计所使用软件是QuartusII,Quartus II 是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学
3、易用等特点。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强
4、大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。1.2硬件介绍本次课程设计使用的硬件器材是哈尔滨工业大学EDA实验箱,该实验箱由11个模块组成,分别是:电源模块,发光二极管,8段8数码管,16*16点阵,核心板,扩展口,喇叭,拨码按键开关,4*4键盘矩阵,温度传感器,红外线传感器。而报警温度计的设计只要电源模块,发光二极管,8段8数码管,喇叭,温度传感器,4*4键盘矩阵。二系统设计2.1 设计思想基于FPGA,设计一个测量温度的温度计,能够精确实时的显示温度,并且达到温度上下限可报警。2.1.1课题背景随着社会的发展,科技的进步,以及测温仪器在各个领域的应用,智能化已是现代温度控
5、制系统发展的主流方向。温度测试控制系统,控制对象是温度。温度控制在日常生活及工业领域应用相当广泛,比如温室、水池、发酵缸、电源等场所的温度控制。而以往温度控制是由人工完成的而且不够重视,其实在很多场所温度都需要监控以防止发生意外。针对此问题,本系统设计的目的是实现一种可连续高精度调温的温度控制系统,它应用广泛,功能强大,小巧美观,便于携带,是一款既实用又廉价的控制系统。特别是近年来,温度控制系统已应用到人们生活的各个方面,但温度控制一直是一个未开发的领域,却又是与人们息息相关的一个实际问题。2.1.2 设计目的1、设计一个数字温度计能够测试环境温度。2、显示环境温度。3、能设置温度的报警范围,
6、当前温度高于或低于设置的上下限时候,喇叭报警。2.2工作原理及系统框图温度显示复位时钟分频温度采集温度设定温度仲裁喇叭报警 本次设计共有6大模块,分别为时钟分频clk1111,温度显示display,温度采集T_SENSOR,温度仲裁compare,喇叭报警beep,以及温度设定setting。其中时钟分频产生100Hz(供给setting模块),1MHz(供给T_SENSOR和beep模块)和25MHZ(供给compare和display模块)的时钟频率。复位时,setting2.3子模块输入输出和功能时钟模块由于温度显示,温度采集,温度仲裁和喇叭报警都需要一个时钟信号,而且各部分所需的时钟
7、不同,所以通过一个分频器为各模块提供时钟。Clock输入clk输入50MHz时钟rst_n复位输出clk_1us输出25MHz时钟clk_dis输出1MHz时钟clk_sitting输出100Hz时钟报警模块:通过获得系统控制模块的数据,直接决定是否报警。因此该模块显得特别简单,直接获得系统控制模块得到的电平作为使能端。beep输入clk输入1us时钟信号en使能信号启动报警输出Signal_out输出报警信号复位 将按键开关K8设置为复位开关。温度采集模块:温度测量传感器采用DALLAS公司DS18B20的单总线数字化温度传感器,测温范围为-55125,可编程为9位12位A/D转换精度,测温
8、分辨率达到0.0625,采用寄生电源工作方式,CPU只需一根口线便能与DS18B20通信,占用CPU口线少,可节省大量引线和逻辑电路温度采集输入clk_1us1us时钟输入rst_n复位信号输出temperature15.0输出16位温度数据one_wire单总线温度显示模块:温度的显示可以通过8个8段数码管来实现,因为是动态显示,所以每次只有一个数码管显示。由于扫描显示速率够快,人的视觉有余晖效应,使人感觉所有的数码管都在同时显示。 温度数据转换 输入up显示上限down显示下限tup15.0温度上限tdown15.0温度下限clk_dis输入1ms时钟rst_n复位信号temperatur
9、e15.0输入温度数据 输出wela7.0片选信号dula7.0数码显示左边数码管信号输入接口分布温度数字信号输入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时钟temperature15:0输入温度数据rst_n复位输出en报警触发温度设定模块:setting输入up(K5)上下限加1Down(K6)上下限减1tup(SW1)设定温度上限Tdown(SW2)设定温度下限clk_setting0.2s时钟reset复位输出seta15:0输出温度上限setb15:0输出温度下限三软件设计3.1 程序流程图和状态机 设计原理图 开始 设置上下限显示温度温度采集超过温度范围限报警 Yes No返回 程序流程图3.2 程序清单时钟模块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) /如果没复位 begin count<=0; clk_1us<=0; end /没意义则结束
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报警模块: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时钟 rst_n, / 异步复位 one_wire, / One-Wire总线 temperature / 输出温度值); input clk_1us ; / 25MHz时钟 input rst_n ; / 异步复位 inout one_wire ; / One-Wire总线 output 15:0 temperature ; / 输出温度值 /延时模块的使用/+/ 延时模块 开始/+reg 19:0 cnt_1us; / 1us延时计数子reg cnt_1us_clear; / 请1us延时计数子always
17、 (posedge clk_1us) if (cnt_1us_clear) cnt_1us <= 0; else cnt_1us <= cnt_1us + 1'b1;/-/ 延时模块 结束/-/+/ DS18B20状态机 开始/+/+/ 格雷码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; / 状态寄存器/-reg one_wire_buf; / One-Wire总线 缓存寄存器reg 15:0 temperature_buf; / 采集到的温度值缓存器(未处理)reg 5:0 step; / 子状态寄存器 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) / 延时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) / 再延时400us begin cnt_1us_clear
22、 <= 1; state <= S5; end end S5 : begin / 写数据 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 / 再次置数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,直接开始读数据 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) / 延时750ms! begin cnt_1us_clear <= 1; state <= S0; / 跳回S0,再次初始
33、化 end end S7 : begin / 读数据 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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB36T-红壤旱地食用木薯生产技术规程编制说明
- 农作物繁育员资格考试重要复习试题及答案
- 朗盛生物食品安全法培训课件资料
- 游泳救生员考试中异常情况的试题及答案探究
- 务实行动农业植保员考试试题及答案
- 提升种子繁育员创新能力的试题及答案
- 电光培训课件模板
- 农作物种子繁育员的成长路径试题及答案
- 证券从业资格证复习中的常见难点试题及答案
- 2024年篮球裁判员的执裁宗旨试题及答案
- 英语口译基础教程UnitIntroduction课件
- 不孕症诊疗流程课件
- 初中生物人教七年级上册生物体的结构层次第一节 细胞通过分裂产生新细胞 导学案
- 政府供应商分类表
- 甘肃省烟花爆竹经营许可实施标准细则
- 【精品课件】药用高分子材料学
- 要素式起诉状(离婚纠纷)
- 急性肾盂肾炎护理查房
- DB22T 5118-2022 建筑工程资料管理标准
- 小学二下必读书目《神笔马良》阅读测试题及答案
- 登临诗鉴赏(课堂PPT)
评论
0/150
提交评论