基于FPGA的温度检测系统设计样本.docx

上传人:b****6 文档编号:3381886 上传时间:2022-11-22 格式:DOCX 页数:12 大小:452.63KB
下载 相关 举报
基于FPGA的温度检测系统设计样本.docx_第1页
第1页 / 共12页
基于FPGA的温度检测系统设计样本.docx_第2页
第2页 / 共12页
基于FPGA的温度检测系统设计样本.docx_第3页
第3页 / 共12页
基于FPGA的温度检测系统设计样本.docx_第4页
第4页 / 共12页
基于FPGA的温度检测系统设计样本.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

基于FPGA的温度检测系统设计样本.docx

《基于FPGA的温度检测系统设计样本.docx》由会员分享,可在线阅读,更多相关《基于FPGA的温度检测系统设计样本.docx(12页珍藏版)》请在冰豆网上搜索。

基于FPGA的温度检测系统设计样本.docx

基于FPGA的温度检测系统设计样本

湖北民族学院科技学院信息工程学院

数字系统与Verilog设计报告

题目:

基于FPGA温度检测系统设计

姓名:

学号:

指引教师:

/6/23

摘要

本文运用数字温度传感器DS18B20数据接口和特点,阐述了一种基于现场可编程门阵列(FPGA)控制DS18B20办法。

使用FPGA作为控制器,严格控制DS18B20时序,在单总线上实现读写功能,完毕测量数字温度功能。

将测量二进制数转换为BCD码,并通过数码管显示。

系统设计使用Verilog语言。

核心字:

数字温度传感器,数字温度检测,FPGA,Verilog语言

 

1引言

温度是工业控制中重要被控参数之一,特别是在冶金、化工、建材、食品、机械、石油等工业中,具备举足重轻作用。

随着电子技术和微型计算机迅速发展,微机测量和控制技术得到了迅速发展和广泛应用。

单片机具备解决能强、运营速度快、功耗低等长处,应用在温度测量与控制方面,控制简朴以便,测量范畴广,精度较高。

FPGA(Field-ProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件基本上进一步发展产物。

它是作为专用集成电路(ASIC)领域中一种半定制电路而浮现,既解决了定制电路局限性,又克服了原有可编程器件门电路数有限缺陷。

随着温度检测理论和技术不断更新,温度传感器种类也越来越多,在微机系统中使用传感器,必要是可以将非电量转换成电量传感器,当前惯用有热电偶传感器、热电阻传感器和半导体集成传感器等,每种传感器依照其自身特性,均有它自己应用领域。

本设计所简介数字温度计与老式温度计相比,具备读数以便,测温范畴广,测温精确,其输出温度采用数字显示,重要用于对测温比较精确场合,或科研实验室使用,该设计运用数字温度传感器DS18B20数据接口和特点。

使用FPGA作为控制器,严格控制DS18B20时序,在单总线上实现读写功能,完毕测量数字温度功能。

将测量二进制数转换为BCD码,并通过数码管显示。

随着人们生活水平不断提高,FPGA控制无疑是人们追求目的之一,它所给人带来以便也是不可否定,其中数字温度计就是一种典型例子,但人们对它规定越来越高,要为当代人工作、科研、生活、提供更好更以便设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。

21世纪科学技术发展日新月异,科技进步带动了测量技术发展,当代控制设备性能和构造发生了巨大变化,咱们已经进入了高速发展信息时代,测量技术也成为当今科技主流之一,被广泛应用于生产各个领域。

2设计实现

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进行预定操作。

由于DS18B20是采用一根I/O总线读写数据,因而DS18B20对读写数据位有严格时序规定。

DS18B20遵循相应通信合同从而保证数据传播对的性和完整性。

该通信合同定义了各种信号时序:

初始化时序、写时序、读时序。

2.2.1初始化时序

初始化时序中,控制器发送一种480us-960us低电平复位信号,然后释放总线,也就是总线为高电平,此时,控制器准备接受DS18B20反映信号,当总线释放后,如果存在DS18B20,那么DS18B20将在15-60us内发送一种持续60-240us反映信号。

2.2.2写时序

由于本设计总线上只挂了一种DS18B20,因此不用读取64位序列号,直接发送rom命令写时序有写1和写2时序一方面将总线拉低电平拉低后15us之内必要把所要向DS18B20写数据传到总线上DS18B20将在15us-60us内采样总线上数据,如果为高则写1,为低则写0,写完一次后释放总线。

每两次写数据之间时隙要不不大于1us。

2.2.3读时序

读时序时总线拉低电平不不大于1us后然后释放总线准备接受DS18B20传来数据,DS18B20将在总线拉低后15us之内将数据传到总线上,因而控制器必要在拉低电平然后释放总线15us之内采样总线上数据。

每次读取一位数据不不大于60us。

2.3DS18B20程序流程图

FPGA控制DS18B20实现温度转换程序流程如下图所示。

程序流程图

2.3电源连接

DS18B20可使用寄生电源,可以在I/O引脚处在高电平时“偷”些能量,储存在电容中供正常使用,但进行精准转换时需要I/O引脚保持大电流供电,这样对FPGA芯片引脚导致很大压力,因此使用VDD引脚接外部电源。

DS18B20电源连接图

DS18B20进行温度转换需要很大电流,工作最大电流可达1mA。

使用VDD引脚接外部电源供电长处在于I/O线上不需要在温度变换期间保持高电平。

这样就可以有效保护FPGA芯片,也可在单总线上放置多数目DS18B20。

使用外部电源,通过发出SkipROM跳过命令,然后发出ConvertT变换命令,可以完毕温度变换。

3模块设计

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)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(counter==499)begin

nstate<=wait_presence;

counter<=0;

oWIRE<=1;

end

elsebegin

counter<=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程序如下:

modulebin2bcd(in_bin,out_bcd);

input[11:

0]in_bin;

output[11:

0]out_bcd;

reg[11:

0]out_bcd;

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

模块创立如下:

3.3温度显示模块

FPGA实现LED静态显示控制

运用硬件描述语言设计一种显示译码驱动器,即将要显示字符译成8段码。

由于FPGA

有相称多引脚端资源,如果显示位数N较少,可以直接使用静态显示方式,即将每一种数码管都分别连接到不同8个引脚线上,共需要8×N条引脚线控制,如左图所示。

采用FPGA实现LED数码管动态显示控制

N个LED数码管以静态方式显示时,需用到8×N条引脚线。

在较为复杂系统中,FPGA引脚端资源是有限。

因而对于各种LED数码管显示,可以采用扫描方式来实现LED数码管动态显示。

实现办法是依次点亮各个LED数码管,循环进行显示,即一种数码管显示之后另一种数码管立即显示,运用人眼视觉暂留特性,可以到各种数码管同步显示效果。

采用扫描方式来实现LED数码管动态显示,控制好数码管之间延时是相称重要。

依照人眼视觉暂留原理,LED数码管每秒导通16次以上,人眼就无法辨别LED数码管短暂不亮,以为是始终点亮(其实LED数码管是以一定频率在闪动)。

但是,延时(导通频率)也不是越小越好,由于LED数码管达到一定亮度需要一定期间。

如果延时控制不好则会浮现闪动,或者亮度不够。

据经验,延时0.005秒可以达到满意效果。

修改延时,亦能得到更多显示效果,如加长延时,使得数码管显示一小段时间,再点亮下一种,即可得到数码管逐个显示效果。

此外,显示字符有变化时,可在延时到达后送一种低电平(共阴极数码管)让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;

reg[2:

0]se;

parameterst0=1,st1=2,st2=3;

reg[1:

0]current_state,next_state;

always@(posedgeclk)

begin

case(current_state)

st0:

begin

r<=in_bcd[11:

7];

se<=3'b110;

next_state<=st1;

end

st1:

begin

r<=in_bcd[7:

4];

se<=3'b101;

next_state<=st2;

end

st2:

begin

r<=in_bcd[3:

0];

se<=3'b011;

next_state<=st0;

end

endcase

end

always@(*)

case(r)

4'h0:

Seg=8'b11111100;

4'h1:

Seg=8'b01100000;

4'h2:

Seg=8'b11011010;

4'h3:

Seg=8'b11110010;

4'h4:

Seg=8'b01100110;

4'h5:

Seg=8'b10110110;

4'h6:

Seg=8'b10111110;

4'h7:

Seg=8'b11100000;

4'h8:

Seg=8'b11111110;

4'h9:

Seg=8'b11110110;

default:

Seg=8'b00000000;

endcase

endmodule

模块创立如下:

4整体模块连接

5结束语

这次课程设计让我又一次加深了对Verilog语言理解,并且在由Verilog这种纯软件东西变成硬件东西过程中又对软硬件工作过程有更深层次理解。

并且我还做了之前Verilog课程设计没有接触过一种流程——那就是综合。

当我看到自己写程序编程一种个逻辑门连接时候,感觉自己离集成电路又近一步了

通过这次课程设计学习到诸多东西,更加巩固了所学某些知识,对FPGA某些知识有了更加一步结识,对电路抗干扰有了进一步理解,对电路设计有了些许经验。

由于所掌握专业技术知识有限,课题设计及样机制作仅限于基本阶段,离专业计量工程仪器尚有不少距离。

例如系统电路原理设计,样机工艺设计及制作,控制程序设计,信号解决,测量精度等方面都存在这样或那样问题,使得性能样机未能做到尽善尽美。

这一切都将有待在此后学习研究中进一步努力。

参照文献

[1].夏宇闻,,《Verilog数字系统设计教程》[M],北京航空航天大学出版社。

[2].蔡伟纲,,《NiosII软件架构解析》[M],西安电子科技大学出版社。

[3].ALTERA公司,《Cyclone-EP2C5使用手册》[EB/OL]。

[4].周树南、张伯颐,,《电路与电子学基本》[M],科学出版社。

[5].马义忠、常蓬彬、马浚,,《数字逻辑与数字系统》[M],高等教诲出版社。

[6].黄智伟,,《全国大学生电子设计竞赛系统设计》[M],北京航空航天大学出版社。

[7].继华,,《设计与验证VerilogHDL》[M],人民邮电出版社。

[8].张洪润,,《FPGA/CPLD应用设计200例》[M],北京航空航天大学出版社。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1