




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湖北民族学院科技学院信息工程学院数字系统与Verilog设计报告题 目: 基于FPGA的温度检测系统设计 姓 名: 学 号: 指导老师: 2014/6/2311摘要本文利用数字温度传感器DS18B20的数据接口和特点,阐述了一种基于现场可编程门阵列( FPGA)控制DS18B20的方法。使用FPGA作为控制器,严格控制DS18B20 的时序,在单总线上实现读写功能,完成测量数字温度的功能。将测量的二进制数转换为BCD码,并通过数码管显示。系统设计使用 Verilog 语言。关键字:数字温度传感器,数字温度检测,FPGA,Verilog语言目录摘要I1 引 言12 设计实现2.1 FPGA简介2
2、2.2 DS18B20的通讯协议22.2.2 写时序32.2.3 读时序32.3 电源连接53 模块设计3.1 DS18b20驱动模块63.2 温度数据处理模块73.3 温度显示模块74 整体模块连接95 结束语10参考文献111 引 言温度是工业控制中主要的被控参数之一,特别是在冶金、化工、建材、食品、机械、石油等工业中,具有举足重轻的作用。随着电子技术和微型计算机的迅速发展,微机测量和控制技术得到了迅速的发展和广泛的应用。单片机具有处理能强、运行速度快、功耗低等优点,应用在温度测量与控制方面,控制简单方便,测量范围广,精度较高。FPGA(Field-Programmable Gate Ar
3、ray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。随着温度检测理论和技术的不断更新, 温度传感器的种类也越来越多,在微机系统中使用的传感器,必须是能够将非电量转换成电量的传感器,目前常用的有热电偶传感器、热电阻传感器和半导体集成传感器等,每种传感器根据其自身特性,都有它自己的应用领域。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或
4、科研实验室使用,该设计利用数字温度传感器DS18B20的数据接口和特点。使用FPGA作为控制器,严格控制DS18B20 的时序,在单总线上实现读写功能,完成测量数字温度的功能。将测量的二进制数转换为BCD码,并通过数码管显示。 随着人们生活水平的不断提高,FPGA控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。 21世纪科学技术的发展日新月异,科技的进步带动了测量技术的发展,现代控制设备的性能和结构发生了
5、巨大的变化,我们已经进入了高速发展的信息时代,测量技术也成为当今科技的主流之一,被广泛的应用于生产的各个领域。2 设计实现2.1 FPGA简介FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。特点介绍:1) 采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。2) FPGA可做其它全定制或半定制ASIC电路的中试样片。3)
6、FPGA内部有丰富的触发器和I/O引脚。4) FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。5) FPGA采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的
7、FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。2.2 DS18B20的通讯协议根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。由于 DS18B20 是采用一根 I/ O 总线读写数据,因此DS18B20 对读写数据位有严格的时序要求。DS18B20 遵循相应的通信协议从而保
8、证数据传输的正确性和完整性。该通信协议定义了多种信号时序:初始化时序、 写时序、 读时序。2.2.1 初始化时序初始化时序中,控制器发送一个480us-960us的低电平的复位信号,然后释放总线,也就是总线为高电平,此时,控制器准备接收DS18B20的反应信号,当总线释放后,如果存在DS18B20,那么DS18B20将在15-60us内发送一个持续60-240us的反应信号。2.2.2 写时序因为本设计总线上只挂了一个DS18B20,所以不用读取64位序列号,直接发送rom命令写时序有写1和写2时序首先将总线拉低电平拉低后15us之内必须把所要向DS18B20写的数据传到总线上DS18B20将
9、在15us-60us内采样总线上的数据,如果为高则写1,为低则写0,写完一次后释放总线。每两次写数据之间时隙要大于1us。2.2.3 读时序 读时序时总线拉低电平大于1us后然后释放总线准备接收DS18B20传来的数据,DS18B20将在总线拉低后15us之内将数据传到总线上,因此控制器必须在拉低电平然后释放总线15us之内采样总线上的数据。每次读取一位数据不小于60us。 2.3 DS18B20程序流程图 FPGA 控制DS18B20 实现温度转换的程序流程如下图所示。程序流程图2.3 电源连接 DS18B20可使用寄生电源,可以在 I/ O 引脚处于高电平时 “偷” 些能量,储存在电容中供
10、正常使用,但进行精确转换时需要 I/ O 引脚保持大电流供电,这样对 FPGA 芯片引脚造成很大压力,所以使用 VDD 引脚接外部电源。DS18B20电源连接图DS18B20 进行温度转换需要很大电流,工作最大电流可达 1 mA。使用 VDD 引脚接外部电源供电的优点在于I/ O 线上不需要在温度变换期间保持高电平。这样就可以有效的保护FPGA 芯片,也可在单总线上放置多数目的DS18B20。使用外部电源,通过发出 Skip ROM 跳过命令,然后发出 Convert T变换命令,可以完成温度变换。3 模块设计3.1 DS18b20驱动模块DSl820数字温度计提供12位(二进制)温度读数指示
11、器件的温度信息经过单线接口送 入DSl820或从DSl820送出因此从主机CPU到DSl820仅需一条线(和地线)DSl820的电源可以由数据线本身提供而不需要外部电源因为每一个DSl820在出厂时已经给定了唯一的序号因此任意多个DSl820可以存放在同一条单线总线上这允许在许多不同的地方放置温度敏感器件DSl820的测量范围从-55度到+125度增量值为0.5度可在1 s(典型值)内把温度变换成数字量。Verilog程序如下:module ds18b20(iCLK, iRESET, oWIRE, oFLAG, oDATA );input iCLK,iRESET;output reg11:0
12、oDATA;output reg oFLAG;inout reg oWIRE;parameter do_reset = 6b000001, release_bus = 6b000010, wait_presence = 6b000100;parameter write = 6b001000, wait_conver = 6b010000, read = 6b100000;parameter Skip_Word = 8b11001100,Tconvert_Word = 8b01000100,Tempreg_Word = 8b10111110;reg63:0 counter;reg7:0 byte
13、_counter;reg5:0 nstate;reg7:0 temp_word;reg7:0 addr;reg15:0 Temp_buffer;always (posedge iCLK) begin if(iRESET) begin nstate = do_reset; byte_counter = 0; counter = 0; oFLAG = 0; oDATA = 0; temp_word = Skip_Word; addr = 1; Temp_buffer=0;oWIRE =0;end else case(nstate) do_reset : begin oFLAG = 0;if(cou
14、nter = 499) begin nstate = wait_presence;counter = 0;oWIRE =1;end else begincounter = counter + 1;oWIRE =0;end end wait_presence: begin if(counter = 400) begin nstate = release_bus;counter = 0; oWIRE =1;end .模块创建如下:3.2 温度数据处理模块 得到的12bit的温度数据信息,可相应进行各种处理,如多次到平均等,另外,需将其由二进制转换为BCD码。Verilog程序如下:module b
15、in2bcd(in_bin,out_bcd); input 11:0 in_bin; output 11:0 out_bcd; reg 11:0 out_bcd;always (in_bin)beginout_bcd11:8=in_bin11:4/10;out_bcd7:4=in_bin11:4%10;if(in_bin3)out_bcd3:0 = 5;endendmodule模块创建如下:3.3 温度显示模块 FPGA实现LED静态显示控制运用硬件描述语言设计一个显示译码驱动器,即将要显示的字符译成8段码。由于FPGA有相当多的引脚端资源,如果显示的位数N较少,可以直接使用静态显示方式,即将
16、每一个数码管都分别连接到不同的8个引脚线上,共需要8N条引脚线控制,如左图所示。采用FPGA实现LED数码管动态显示控制 N个LED数码管以静态方式显示时,需用到8N条引脚线。在较为复杂的系统中,FPGA的引脚端资源是有限的。因此对于多个LED数码管显示,可以采用扫描方式来实现LED数码管动态显示。 实现方法是依次点亮各个LED数码管,循环进行显示,即一个数码管显示之后另一个数码管马上显示,利用人眼的视觉暂留特性,可以到多个数码管同时显示的效果。采用扫描方式来实现LED数码管动态显示,控制好数码管之间的延时是相当重要。根据人眼视觉暂留原理,LED数码管每秒的导通16次以上,人眼就无法分辨LED
17、数码管短暂的不亮,认为是一直点亮的(其实LED数码管是以一定频率在闪动的)。但是,延时(导通频率)也不是越小越好,因为LED数码管达到一定亮度需要一定时间。如果延时控制的不好则会出现闪动,或者亮度不够。据经验,延时0.005秒可以达到满意的效果。修改延时,亦能得到更多的显示效果,如加长延时,使得数码管显示一小段时间,再点亮下一个,即可得到数码管逐个显示的效果。 另外,显示的字符有变化时,可在延时到达后送一个低电平(共阴极数码管)让LED数码管先短暂熄灭,再显示下一个字符,可使在视觉上字符的变化更清晰。Verilog程序如下:module display_ds18b20(in_bcd,Seg,r
18、st,se,clk);input 11:0 in_bcd;input clk,rst;output 7:0 Seg;output 2:0 se;reg 7:0 Seg;reg 3:0 r;reg 2:0 se;parameter st0 = 1,st1 = 2,st2 = 3;reg1:0 current_state,next_state;always (posedge clk) begin case(current_state)st0:beginr=in_bcd11:7;se=3b110;next_state=st1;endst1:beginr=in_bcd7:4;se=3b101;next
19、_state=st2;endst2:beginr=in_bcd3:0;se=3b011;next_state=st0;endendcaseendalways (*)case(r)4h0: Seg = 8b11111100;4h1: Seg = 8b01100000;4h2: Seg = 8b11011010;4h3: Seg = 8b11110010;4h4: Seg = 8b01100110;4h5: Seg = 8b10110110;4h6: Seg = 8b10111110;4h7: Seg = 8b11100000;4h8: Seg = 8b11111110;4h9: Seg = 8b11110110;default:Seg = 8b00000000;endcaseendmodule模块创建如下:4 整体模块连接5 结束语这次课程设计让我又一次加深了对Verilog语言的理解,并且在由Verilog这种纯软件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网红炸鸡连锁店区域代理合作协议-品牌授权与区域保护
- 网络视频游戏平台用户数据安全保密及游戏平衡性协议
- 股票期权激励计划与员工职业发展规划协议
- 癌症药物治疗技术发展与应用
- 大班音乐活动:大狮子教案设计
- 遗产继承证据确认合同(2篇)
- 临终心理护理实施要点
- 2024-2025学年高中地理课下能力提升九资源的跨区域调配-以南水北调为例含解析鲁教版必修3
- 学校春夏季常见传染病防控指南
- 个人贷款管理暂行办法
- 青年创新意识的培养试题及答案
- 客运车辆合伙经营合同6篇
- 2025届陕西省安康市高三下学期适应性模拟考试历史试题(原卷版+解析版)
- 备战2025年高考数学(新高考专用)抢分秘籍导数及其应用(九大题型)(学生版+解析)
- 村干部测试试题及答案
- 康复医学教学课件 - 基础医学 - 医药卫生 - 专业资料
- 宁波市余姚市交通运输局招聘工作人员笔试真题2024
- 淘宝运营测试题及答案
- 领导司机入职合同协议
- 2025年广东省广州市天河区中考一模物理试题(含答案)
- 预收货款协议合同
评论
0/150
提交评论