基于FPGA的温度检测系统设计Word文档下载推荐.docx
《基于FPGA的温度检测系统设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于FPGA的温度检测系统设计Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
数字温度传感器,数字温度检测,FPGA,Verilog语言
1引言
温度是工业控制中主要的被控参数之一,特别是在冶金、化工、建材、食品、机械、石油等工业中,具有举足重轻的作用。
随着电子技术和微型计算机的迅速发展,微机测量和控制技术得到了迅速的发展和广泛的应用。
单片机具有处理能强、运行速度快、功耗低等优点,应用在温度测量与控制方面,控制简单方便,测量范围广,精度较高。
FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
随着温度检测理论和技术的不断更新,温度传感器的种类也越来越多,在微机系统中使用的传感器,必须是能够将非电量转换成电量的传感器,目前常用的有热电偶传感器、热电阻传感器和半导体集成传感器等,每种传感器根据其自身特性,都有它自己的应用领域。
本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计利用数字温度传感器DS18B20的数据接口和特点。
随着人们生活水平的不断提高,FPGA控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。
21世纪科学技术的发展日新月异,科技的进步带动了测量技术的发展,现代控制设备的性能和结构发生了巨大的变化,我们已经进入了高速发展的信息时代,测量技术也成为当今科技的主流之一,被广泛的应用于生产的各个领域。
2设计实现
FPGA简介
特点介绍:
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的使用非常灵活。
DS18B20的通讯协议
根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:
每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
由于DS18B20是采用一根I/O总线读写数据,因此DS18B20对读写数据位有严格的时序要求。
DS18B20遵循相应的通信协议从而保证数据传输的正确性和完整性。
该通信协议定义了多种信号时序:
初始化时序、写时序、读时序。
初始化时序
初始化时序中,控制器发送一个480us-960us的低电平的复位信号,然后释放总线,也就是总线为高电平,此时,控制器准备接收DS18B20的反应信号,当总线释放后,如果存在DS18B20,那么DS18B20将在15-60us内发送一个持续60-240us的反应信号。
写时序
因为本设计总线上只挂了一个DS18B20,所以不用读取64位序列号,直接发送rom命令写时序有写1和写2时序首先将总线拉低电平拉低后15us之内必须把所要向DS18B20写的数据传到总线上DS18B20将在15us-60us内采样总线上的数据,如果为高则写1,为低则写0,写完一次后释放总线。
每两次写数据之间时隙要大于1us。
读时序
读时序时总线拉低电平大于1us后然后释放总线准备接收DS18B20传来的数据,DS18B20将在总线拉低后15us之内将数据传到总线上,因此控制器必须在拉低电平然后释放总线15us之内采样总线上的数据。
每次读取一位数据不小于60us。
DS18B20程序流程图
FPGA控制DS18B20实现温度转换的程序流程如下图所示。
程序流程图
电源连接
DS18B20可使用寄生电源,可以在I/O引脚处于高电平时“偷”些能量,储存在电容中供正常使用,但进行精确转换时需要I/O引脚保持大电流供电,这样对FPGA芯片引脚造成很大压力,所以使用VDD引脚接外部电源。
DS18B20电源连接图
DS18B20进行温度转换需要很大电流,工作最大电流可达1mA。
使用VDD引脚接外部电源供电的优点在于I/O线上不需要在温度变换期间保持高电平。
这样就可以有效的保护FPGA芯片,也可在单总线上放置多数目的DS18B20。
使用外部电源,通过发出SkipROM跳过命令,然后发出ConvertT变换命令,可以完成温度变换。
3模块设计
DS18b20驱动模块
DSl820数字温度计提供12位(二进制)温度读数指示器件的温度信息经过单线接口送入DSl820或从DSl820送出因此从主机CPU到DSl820仅需一条线(和地线)DSl820的电源可以由数据线本身提供而不需要外部电源因为每一个DSl820在出厂时已经给定了唯一的序号因此任意多个DSl820可以存放在同一条单线总线上这允许在许多不同的地方放置温度敏感器件DSl820的测量范围从-55度到+125度增量值为度可在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'
b,
Tconvert_Word=8'
b01000100,
Tempreg_Word=8'
b;
reg[63:
0]counter;
reg[7:
0]byte_counter;
reg[5:
0]nstate;
0]temp_word;
0]addr;
reg[15:
0]Temp_buffer;
always@(posedgeiCLK)begin
if(~iRESET)begin
nstate<
=do_reset;
byte_counter<
=0;
counter<
oFLAG<
oDATA<
temp_word<
=Skip_Word;
addr<
=1;
Temp_buffer<
=0;
oWIRE<
end
else
case(nstate)
do_reset:
begin
oFLAG<
if(counter==499)begin
nstate<
=wait_presence;
counter<
=1;
elsebegin
=counter+1;
wait_presence:
if(counter==400)begin
=release_bus;
oWIRE<
…………….
模块创建如下:
温度数据处理模块
得到的12bit的温度数据信息,可相应进行各种处理,如多次到平均等,另外,需将其由二
进制转换为BCD码。
modulebin2bcd(in_bin,out_bcd);
input[11:
0]in_bin;
output[11:
0]out_bcd;
reg[11:
always@(in_bin)
begin
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;
end
endmodule
温度显示模块
FPGA实现LED静态显示控制
运用硬件描述语言设计一个显示译码驱动器,即将要显示的字符译成8段码。
由于FPGA
有相当多的引脚端资源,如果显示的位数N较少,可以直接使用静态显示方式,即将每一个数码管都分别连接到不同的8个引脚线上,共需要8×
N条引脚线控制,如左图所示。
采用FPGA实现LED数码管动态显示控制
N个LED数码管以静态方式显示时,需用到8×
N条引脚线。
在较为复杂的系统中,FPGA的引脚端资源是有限的。
因此对于多个LED数码管显示,可以采用扫描方式来实现LED数码管动态显示。
实现方法是依次点亮各个LED数码管,循环进行显示,即一个数码管显示之后另一个数码管马上显示,利用人眼的视觉暂留特性,可以到多个数码管同时显示的效果。
采用扫描方式来实现LED数码管动态显示,控制好数码管之间的延时是相当重要。
根据人眼视觉暂留原理,LED数码管每秒的导通16次以上,人眼就无法分辨L