基于FPGA的温度检测系统设计精选文档_第1页
基于FPGA的温度检测系统设计精选文档_第2页
基于FPGA的温度检测系统设计精选文档_第3页
基于FPGA的温度检测系统设计精选文档_第4页
基于FPGA的温度检测系统设计精选文档_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘 要本文利用数字温度传感器DS18B20现场可编程门阵列FPGA)DS18B20FPGA作为控制器,严DS18B20的时序,在单总线上实现读写功能,完成测量数字温度的功BCD码,并通过数码管显示。系统设计使用Verilog语言。关键字:数字温度传感器,数字温度检测,FPGA,Verilog语言目 录1引 言温度是工业控制中主要的被控参数之一,特别是在冶金、化工、建材、食品、机械、石油等工业中,具有举足重轻的作用。随着电子技术和微型计算机的迅速发展,微机测量和控制技术得到了迅速的发展和广泛的应用。单片机具有处理能强、运行速度快、功耗低等优点,应用在温度测量与控制方面,控制简单方便,测量范围广,精度较高。FPGA(Field-ProgrammableGateArray)FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。随着温度检测理论和技术的不断更新机系统中使用的传感器,必须是能够将非电量转换成电量的传感器,目前常用的有热电偶传感器、热电阻传感器和半导体集成传感器等,每种传感器根据其自身特性,都有它自己的应用领域。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计利用数字温度传感器DS18B20的数据接口和特FPGADS18B20BCD码管显示。随着人们生活水平的不断提高,FPGA所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但展。21世纪科学技术的发展日新月异,科技的进步带动了测量技术的发展,现时代,测量技术也成为当今科技的主流之一,被广泛的应用于生产的各个领域。设计实现FPGA简介FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。特点介绍:FPGAASIC到合用的芯片。FPGAASICFPGAI/OFPGAASICFPGACMOSCMOS、TTL可以说,FPGA一。FPGARAMRAM加电时,FPGAEPROMRAM,FPGAFPGAFPGAFPGAEPROMFPGA,不同的编程数据,可以产生不同的电路功能。因此的使用非常灵活。DS18B20的通讯协议DS18B20DS18B20DS18B20ROMRAMDS18B20由于DS18B20是采用一根I/O总线读写数据,因此DS18B20对读写数据位有严格的时序要求。DS18B20遵循相应的通信协议从而保证数据传输的正确性和完整性。该通信协议定义了多种信号时序:初始化时序、写时序、读时序。初始化时序480us-960usDS18B20DS18B20,DS18B2015-60us60-240us写时序因为本设计总线上只挂了一个DS18B20,所以不用读取64位序列号,直接发送rom命令写时序有写1和写2时序 首先将总线拉低电平拉低后15us之内必须把所要向DS18B20写的数据传到总线上 DS18B20将在15us-60us内采1,0,1us。读时序读时序时 总线拉低电平大于1us后 然后释放总线准备接收DS18B20传来的数据,DS18B20将在总线拉低后15us之内将数据传到总线上,因此控制器必须在拉低电平然后释放总线15us之内采样总线上的数据。每次读取一位据不小于60us。DS18B20程序流程图FPGA控制DS18B20实现温度转换的程序流程如下图所示。开始始终分频开始始终分频数码显示计数器计数接收16位数据发送复位脉冲应答N发送ReadScratchpadY发送SkipROM发送SkipY应答发送ConvertT等待温度转换发送复位脉冲程序流程图电源连接DS18B20I/O储存在电容中供正常使用,但进行精确转换时需要I/O引脚保持大电流供电,FPGA芯片引脚造成很大压力,所以使用VDD5V5VDS18B20FPGA4.7k5VDS18B20电源连接图DS18B20进行温度转换需要很大电流,工作最大电流可达1mA。使用VDD引脚接外部电源供电的优点在于I/O线上不需要在温度变换期间保持高电平。这样就可以有效的保护FPGA芯片,也可在单总线上放置多数目的DS18B20。使用外部电源,通过发出SkipROM跳过命令,然后发出ConvertT变换命令,可以完成温度变换。模块设计DS18b20驱动模块DSl82012DSl820DSl820CPUDSl820DSl820DSl820-55度到+125度增量值为度可在1s(典型值)内把温度变换成数字量。Verilog程序如下:moduleds18b20(iCLK,iRESET,oWIRE,oFLAG,oDATA);input outputreg[11:0] oDATA;outputreg oFLAG;inoutreg oWIRE;parameterdo_reset=6'b000001,release_bus=6'b000010,wait_presence=6'b000100;parameterwrite=6'b001000,wait_conver=6'b010000,read=6'b100000;parameterSkip_Word=8'b,Tconvert_Word=Tempreg_Word=8'b;reg[63:0] counter;reg[7:0] byte_counter;reg[5:0] nstate;reg[7:0] temp_word;reg[7:0] addr;reg[15:0] always@(posedgeiCLK)if(~iRESET)beginnstate<=do_reset;

byte_counter<=0;counter<=0;oFLAG<=0;oDATA<=0;temp_word<=Skip_Word;addr<=1;Temp_buffer<=0;oWIRE<=0;endelsecase(nstate)do_reset:beginoFLAG<=0;if(counter==499)beginnstate<=wait_presence;counter<=0;oWIRE<=1;endelsebegincounter<=counter+1;oWIRE<=0;endendwait_presence:beginif(counter==400)begin endnstate<=counter<=0;oWIRE<=1;模块创建如下:温度数据处理模块

…………….得到的12bit的温度数据信息,可相应进行各种处理,如多次到平均等,另外,需将其由二进制转换为BCD码。Verilog程序如下:modulebin2bcd(in_bin,out_bcd);input[11:0]in_bin;output[11:0]out_bcd;reg[11:0]always@(in_bin)beginend

out_bcd[11:8]=in_bin[11:4]/10;out_bcd[7:4]=in_bin[11:4]%10;if(in_bin[3])out_bcd[3:0]=5;endmodule模块创建如下:温度显示模块FPGA实现LED静态显示控制运用硬件描述语言设计一个显示译码驱动器,即将要显示的字符译成8段码。由于FPGA有相当多的引脚端资源,如果显示的位数N较少,可以直接使用静态显示方式,即将每一个数码管都分别连接到不同的8个引脚线上,共需要8×N条引脚线控制,如左图所示。采用FPGA实现LED数码管动态显示控制N个LED数码管以静态方式显示时,需用到8×N条引脚线。在较为复杂的系统中,FPGA的引脚端资源是有限的。因此对于多个LED数码管显示,可以采用扫描方式来实现LED数码管动态显示。LED数码管,循环进行显示,即一个数码管显示之后另一个数码管马上显示,利用人眼的视觉暂留特性,可以到多个数码管LED数码管动态显示,控制好数码管之间的延时是相当重要。根据人眼视觉暂留原理,LED16上,人眼就无法分辨LED数码管短暂的不亮,认为是一直点亮的(其实LED数码管是以一定频率在闪动的)。但是,延时(导通频率)也不是越小越好,LED动,或者亮度不够。据经验,延时秒可以达到满意的效果。修改延时,亦能得到更多的显示效果,如加长延时,使得数码管显示一LED短暂熄灭,再显示下一个字符,可使在视觉上字符的变化更清晰。Verilog程序如下:moduledisplay_ds18b20(in_bcd,Seg,rst,se,clk);input[11:0]in_bcd;inputclk,rst;output[7:0]Seg;output[2:0]se;reg[7:0]Seg;reg[3:0]r;

end

st2:beginendendcase

r<=in_bcd[3:0];se<=3'b011;next_state<=st0;reg[2:0]se;parameterst0=1,st1=2,st2=reg[1:0]current_state,next_state;always@(posedgeclk)begincase(current_state)st0:beginr<=in_bcd[11:7];se<=3'b110;next_state<=st1;endst1:begin

always@(*)case(r)8'b00000000;

4'h0:Seg=8'b;4'h1:Seg=8'b01100000;4'h2:Seg=8'b;4'h3:Seg=8'b;4'h4:Seg=8'b01100110;4'h5:Seg=8'b;4'h6:Seg=8'b;4'h7:Seg=8'b;4'h8:Seg=8'b;4'h9:Seg=default:Seg=模块创建如下:

r<=in_bcd[7:4];se<=3'b101;next_state<=st2;

endcaseendmodule整体模块连接结束语Verilog这种纯软件的东西变成硬件的东西的过程中又对软硬件的工作过程有更深层次Verilog通过这次课程设计学习到很多东西,更加巩固了所学的一些知识,对FPGA的一些知识有了更加一步的认识,对电路抗干扰有了进一步的了解,对电路的设计有了些许的经验。由于所掌握的专业技术知识有限,课题设计及样机制作仅限于基本阶段,离专业计量工程仪器还有不少距离。例如系统的电路原理设计,样机工艺设计及制作,控制程序设计,信号处理,测量精度等方面都存在这样或那样的问题,使得性能样机未能做到尽善尽美。这一切都将有待在今后的学习研究中进一步努力。参考文献[1]. 夏宇闻,2008,《Verilog数字系统设计教程》[M],出版社。[2]. 蔡伟纲,2007,《NiosII软件架构解析》[M]

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论