当前位置:首页 > 临时分类 > 基于FPGA的温度检测系统设计
湖北民族学院科技学院信息工程学院数字系统与Verilog设计报告题目:基于FPGA的温度检测系统设计姓名:学号:指导老师:2014/6/23I摘要本文利用数字温度传感器DS18B20的数据接口和特点,阐述了一种基于现场可编程门阵列(FPGA)控制DS18B20的方法。使用FPGA作为控制器,严格控制DS18B20的时序,在单总线上实现读写功能,完成测量数字温度的功能。将测量的二进制数转换为BCD码,并通过数码管显示。系统设计使用Verilog语言。关键字:数字温度传感器,数字温度检测,FPGA,Verilog语言II目录摘要...........................................................I1引言...........................................................12设计实现2.1FPGA简介....................................................22.2DS18B20的通讯协议...........................................22.2.2写时序.................................................32.2.3读时序.................................................32.3电源连接....................................................53模块设计3.1DS18b20驱动模块.............................................63.2温度数据处理模块............................................73.3温度显示模块................................................74整体模块连接.....................................................95结束语.........................................................10参考文献..........................................................1111引言温度是工业控制中主要的被控参数之一,特别是在冶金、化工、建材、食品、机械、石油等工业中,具有举足重轻的作用。随着电子技术和微型计算机的迅速发展,微机测量和控制技术得到了迅速的发展和广泛的应用。单片机具有处理能强、运行速度快、功耗低等优点,应用在温度测量与控制方面,控制简单方便,测量范围广,精度较高。FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。随着温度检测理论和技术的不断更新,温度传感器的种类也越来越多,在微机系统中使用的传感器,必须是能够将非电量转换成电量的传感器,目前常用的有热电偶传感器、热电阻传感器和半导体集成传感器等,每种传感器根据其自身特性,都有它自己的应用领域。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计利用数字温度传感器DS18B20的数据接口和特点。使用FPGA作为控制器,严格控制DS18B20的时序,在单总线上实现读写功能,完成测量数字温度的功能。将测量的二进制数转换为BCD码,并通过数码管显示。随着人们生活水平的不断提高,FPGA控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。21世纪科学技术的发展日新月异,科技的进步带动了测量技术的发展,现代控制设备的性能和结构发生了巨大的变化,我们已经进入了高速发展的信息时代,测量技术也成为当今科技的主流之一,被广泛的应用于生产的各个领域。22设计实现2.1FPGA简介FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。特点介绍:1)采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。2)FPGA可做其它全定制或半定制ASIC电路的中试样片。3)FPGA内部有丰富的触发器和I/O引脚。4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。5)FPGA采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。2.2DS18B20的通讯协议根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。3由于DS18B20是采用一根I/O总线读写数据,因此DS18B20对读写数据位有严格的时序要求。DS18B20遵循相应的通信协议从而保证数据传输的正确性和完整性。该通信协议定义了多种信号时序:初始化时序、写时序、读时序。2.2.1初始化时序初始化时序中,控制器发送一个480us-960us的低电平的复位信号,然后释放总线,也就是总线为高电平,此时,控制器准备接收DS18B20的反应信号,当总线释放后,如果存在DS18B20,那么DS18B20将在15-60us内发送一个持续60-240us的反应信号。2.2.2写时序因为本设计总线上只挂了一个DS18B20,所以不用读取64位序列号,直接发送rom命令写时序有写1和写215us之内必须把所要向DS18B20DS18B20将在15us-60us内采样总线上的数据,如果为高则写1,为低则写0,写完一次后释放总线。每两次写数据之间时隙要大于1us。2.2.3读时序41usDS18B20传来的数据,DS18B20将在总线拉低后15us之内将数据传到总线上,因此控制器必须在拉低电平然后释放总线15us之内采样总线上的数据。每次读取一位数据不小于60us。2.3DS18B20程序流程图FPGA控制DS18B20实现温度转换的程序流程如下图所示。开始始终分频计数器计数发送复位脉冲应答发送SkipROM发送ConvertT等待温度转换发送复位脉冲应答发送SkipROM发送ReadScratchpad接收16位数据数码显示YNYN程序流程图52.3电源连接DS18B20可使用寄生电源,可以在I/O引脚处于高电平时“偷”些能量,储存在电容中供正常使用,但进行精确转换时需要I/O引脚保持大电流供电,这样对FPGA芯片引脚造成很大压力,所以使用VDD引脚接外部电源。FPGADS18B205V4.7k5VDS18B20电源连接图DS18B20进行温度转换需要很大电流,工作最大电流可达1mA。使用VDD引脚接外部电源供电的优点在于I/O线上不需要在温度变换期间保持高电平。这样就可以有效的保护FPGA芯片,也可在单总线上放置多数目的DS18B20。使用外部电源,通过发出SkipROM跳过命令,然后发出ConvertT变换命令,可以完成温度变换。63模块设计3.1DS18b20驱动模块DSl820数字温度计提供12位(二进制)温度读数指示器件的温度信息经过单线接口送入DSl820或从DSl820送出因此从主机CPU到DSl820仅需一条线(和地线)DSl820的电源可以由数据线本身提供而不需要外部电源因为每一个DSl820在出厂时已经给定了唯一的序号因此任意多个DSl820可以存放在同一条单线总线上这允许在许多不同的地方放置温度敏感器件DSl820的测量范围从-55度到+125度增量值为0.5度可在1s(典型值)内把温度变换成数字量。Verilog程序如下:moduleds18b20(iCLK,iRESET,oWIRE,oFLAG,oDATA);inputiCLK,iRESET;outputreg[11:0]oDATA;outputregoFLAG;inoutregoWIRE;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'b11001100,Tconvert_Word=8'b01000100,Tempreg_Word=8'b10111110;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]Temp_buffer;always@(posedgeiCLK)beginif(~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)beginnstate=release_bus;counter=0;oWIRE=1;end…………….7模块创建如下:3.2温度数据处理模块得到的12bit的温度数据信息,可相应进行各种处理,如多次到平均等,另外,需将其由二进制转换为BCD码。Verilog程序如下:modulebin2bcd(in_bin,out_bcd);input[11:0]in_bin;output[11:0]out_bcd;reg[11:0]out_bcd;always@(in_bin)beginout_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;endendmodule模块创建如下:3.3温度显示模块FPG
本文标题:基于FPGA的温度检测系统设计
链接地址:https://www.777doc.com/doc-5958157 .html