基于FPGA的温度传感器系统资料.docx
- 文档编号:3604349
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:16
- 大小:156.41KB
基于FPGA的温度传感器系统资料.docx
《基于FPGA的温度传感器系统资料.docx》由会员分享,可在线阅读,更多相关《基于FPGA的温度传感器系统资料.docx(16页珍藏版)》请在冰豆网上搜索。
基于FPGA的温度传感器系统资料
湖北科技学院计算机学院
《FPGA原理及应用》
课程设计
课设题目:
温度传感器系统
院系:
计算机科学与技术
专业:
物联网工程
学生姓名:
学号:
学生姓名:
学号:
学生姓名:
学号:
学生姓名:
学号:
指导教师:
2014年12月
一课程设计目的
温度是一种最基本的环境参数,人们的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。
测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段:
传统的分立式温度传感器;模拟集成温度传感器;智能集成温度传感器。
目前,国际上新型温度传感器正从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展。
本文将介绍采用智能集成温度传感器DS18B20,并以FPGA为控制器的温度测量装置的硬件组成和软件设计,用液晶来实现温度显示。
二课程设计题目描述和要求
2.1课程设计题目描述
这次基于FPGA温度监测系统设计的课程设计由总体框架构成下,各个部分模块的拼接与联系,在Quartus软件的基础上实现温度监测的功能。
首先硬件由DS18B20温度传感器,1602液晶,发光二极管,按键等组成;软件部分由二分频电路,键盘电路和弹跳消除电路组成;最后将硬件和软件合理的结合形成温度监测系统。
该实验采用由总到分再到总的实验模式,在总体思路下各硬件电路的实现以及软件电路的辅助之后再总的合并,即完成该课程设计。
其中软件的形成需要我们熟悉掌握Quartus软件,由原理图—程序编写—程序编译—程序修改—再次编译—管脚定义—程序下载—程序加载—硬件测试的过程。
2.2温度传感器检测标准及技术
1、测量准确度:
0.01级;分辨率0.1uV和0.1mΩ;
2、扫描开关寄生电势:
≤0.4μV;
3、温度范围:
水槽:
(室温+5~95)℃油槽:
(95~300)℃低温恒温槽:
(-80~100)℃高温炉:
(300~1200)℃;
4、控温稳定度:
优于0.01℃/10min(油槽、水槽、低温恒温槽);0.2℃/min(管式检定炉);
5、总不确定度:
热电偶检定,测量不确定度优于0.7℃,重复性误差<0.25℃;热电阻检定测量不确定度优于50mk,重复性误差<10mk;
6、工作电源:
AC220V±10%,50Hz,并有良好保护接地;
三课程设计报告内容
3.1设计方案
(1)查阅相关文献资料,熟悉所选FPGA芯片及温度传感器
(2)总体设计方案规划
(3)系统硬件设计,熟悉AD转换原理及过程,温度传感器与FPGA芯片的硬件接口实现及温度显示。
(4)系统软件设计,包括温度的AD转换及显示的软件实现,用VHDL语言编程 。
(5)设计心得体会及总结 。
3.2设计方案论证
有许多客观需求促进了FPGA芯片的设计改进。
首先,便携式的嵌入式系统往往需要电池供电。
为降低功耗,FPGA芯片已被特殊设计成较小的核,从而延长了电池的使用时间。
高的代码密度是嵌入式系统的又一个重要需求。
由于成本问题和物理尺寸的限制,嵌入式系统的存储器是很有限的。
所以,高的代码密度对于那些只限于在板存储器的应用是非常有帮助的。
另外,嵌入式系统通常都是价格敏感的,因此一般都使用速度不高、成本较低的存储器。
FPGA芯片不是一个纯粹的RISC体系结构,这是为了使它能够更好的适应其主要应用领域--嵌入式系统。
在某种意义上,甚至可以认为FPGA芯片的成功,正是因为它没有在RISC的概念上沉入太深。
现在系统的关键并不在于单纯的处理器速度,而在于有效的系统性能和功耗。
在本系统的设计过程中,根据嵌入式系统的基本设计思想,系统采用了模块化的设计方法,并且根据系统的功能要求和技术指标,系统遵循自上而下、由大到小、由粗到细的设计思想,按照系统的功能层次,在设计中把硬件和软件分成若干功能模块分别设计和调试,然后全部连接起来统调。
四硬件各部分工作原理
4.1FPGA芯片简介
目前以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。
这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。
在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。
系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。
一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。
FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。
但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。
厂商也可能会提供便宜的但是编辑能力差的FPGA。
因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。
另外一种方法是用CPLD(复杂可编程逻辑器件备)。
FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。
现场可编程门阵列(FPGA)是可编程器件。
与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构,FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。
FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程.
FPGA电源要求输出电压范围从1.2V到5V,输出电流范围从数十毫安到数安培。
可用三种电源:
低压差(LDO)线性稳压器、开关式DC-DC稳压器和开关式电源模块。
最终选择何种电源取决于系统、系统预算和上市时间要求。
如果电路板空间是首要考虑因素,低输出噪声十分重要,或者系统要求对输入电压变化和负载瞬变做出快速响应,则应使用LDO稳压器。
LDO功效比较低(因为是线性稳压器),只能提供中低输出电流。
输入电容通常可以降低LDO输入端的电感和噪声。
LDO输出端也需要电容,用来处理系统瞬变,并保持系统稳定性。
也可以使用双输出LDO,同时为VCCINT和VCCO供电如果在设计中效率至关重要,并且系统要求高输出电流,则开关式稳压器占优势。
开关电源的功效比高于LDO,但其开关电路会增加输出噪声。
与LDO不同,开关式稳压器需利用电感来实现DC-DC转换。
为确保正确上电,内核电压VCCINT的缓升时间必须在制造商规定的范围内。
对于一些FPGA,由于VCCINT会在晶体管阈值导通前停留更多时间,因此过长的缓升时间可能会导致启动电流持续较长时间。
如果电源向FPGA提供大电流,则较长的上电缓升时间会引起热应力。
ADI公司的DC-DC稳压器提供可调软启动,缓升时间可以通过外部电容进行控制。
缓升时间典型值在20ms至100ms范围内。
许多FPGA没有时序控制要求,因此VCCINT、VCCO和VCCAUX可以同时上电。
如果这一点无法实现,上电电流可以稍高。
时序要求依具体FPGA而异。
对于一些FPGA,必须同时给VCCINT和VCCO供电。
对于另一些FPGA,这些电源可按任何顺序接通。
多数情况下,先给VCCINT后给VCCO供电是一种较好的做法。
当VCCINT在0.6V至0.8V范围内时,某些FPGA系列会产生上电涌入电流。
在此期间,电源转换器持续供电。
这种应用中,因为器件需通过降低输出电压来限制电流,所以不推荐使用返送电流限制。
但在限流电源解决方案中,一旦限流电源所供电的电路电流超过设定的额定电流,电源就会将该电流限制在额定值以下。
对于高速、高密度FPGA器件,保持良好的信号完整性对于实现可靠、可重复的设计十分关键。
适当的电源旁路和去耦可以改善整体信号完整性。
如果去耦不充分,逻辑转换将会影响电源和地电压,导致器件工作不正常。
此外,采用分布式电源结构也是一种主要解决方案,给FPGA供电时可以将电源电压偏移降至最低。
在传统电源结构中,AC/DC或DC/DC转换器位于一个地方,并提供多个输出电压,在整个系统内分配。
这种设计称为集中式电源结构(CPA),见左图。
以高电流分配低电压时,铜线或PCB轨道会产生严重的电阻损耗,CPA就会发生问题。
CPA的替代方案是分布式电源结构(DPA),见左图。
采用DPA时,整个系统内仅分配一个半稳压的DC电压,各DC/DC转换器(线性或开关式)与各负载相邻。
DPA中,DC/DC转换器与负载(例如FPGA)之间的距离近得多,因而线路电阻和配线电感引起的电压下降得以减小。
这种为负载提供本地电源的方法称为负载点(POL)。
目前主流的FPGA仍是基于查找表技术的,已经远远超出了先前版本的基本性能,并且整合了常用功能(如RAM、时钟管理和DSP)的硬核(ASIC型)模块。
如图1-1所示(注:
图1-1只是一个示意图,实际上每一个系列的FPGA都有其相应的内部结构),FPGA芯片主要由7部分完成,分别为:
可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。
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的使用非常灵活。
4.2标准温度测量模块
美国Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持"一线总线"接口的温度传感器,在其内部使用了在板(ON-B0ARD)专利技术。
全部传感元件及转换电路集成在形如一只三极管的集成电路内。
一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
现在,新一代的DS18B20体积更小、更经济、更灵活。
使你可以充分发挥“一线总线”的优点。
DS18B20的主要特性:
(1)适应电压范围更宽,电压范围:
3.0~5.5V,在寄生电源方式下可由数据线供电
(2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯(3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测(4)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内(5)温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃(6)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温(7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快(8)测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力(9)负压特性:
电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
DS18BCD0引脚功能图下表所示
序号
名称
引脚功能描述
1
GND
地信号
2
DQ
数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源。
3
VDD
可选择的VDD引脚。
当工作于寄生电源时,此引脚必须接地。
DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:
用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。
4.3RS-232串口通信模块
硬件电路和PC机之间采用RS-232串口通信技术,通信芯片采用MAX232。
该芯片只需+5V供电,内部集成电平转换电路,外围电路简单,只需3根线就能完成半双工通信,且传输可靠。
STC89C52有专门的串口通信引脚RXD、TXD。
本系统中采用的STC89C52的Timer2作为串行数据传输的波特率发生器。
4.4LCD1602液晶显示
LCD1602液晶显示实物图如右图2.1所示
工业字符型液晶,能够同时显示16x02即32个字符。
(16列2行)注:
为了表示的方便,后文皆以1表示高电平,0表示低电平。
1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。
每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形(用自定义CGRAM,显示效果也不好)n1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
n目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
LCD1602液晶显示管脚功能如下图2.2所示
1602采用标准的16脚接口,其中:
第1脚:
VSS为电源地。
第2脚:
VDD接5V电源正极。
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
图2.2LCD1602管脚功能第4脚:
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
第5脚:
RW为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
第6脚:
E(或EN)端为使能(enable)端。
第7~14脚:
D0~D7为8位双向数据端。
第15~16脚:
空脚或背灯电源。
15脚背光正极,16脚背光负极。
1602LCD的特性:
+5V电压,对比度可调;内含复位电路;提供各种控制命令,如:
清屏、字符闪烁、光标闪烁、显示移位等多种功能;有80字节显示数据存储器DDRAM;内建有192个5X7点阵的字型的字符发生器CGROM;8个可由用户自定义的5X7的字符发生器CGRAM。
五系统电路原理框图
从该硬件原理框以及电路原理图的设计可以看出基于FPGA温度监测系统的设计由LCD1602液晶显示和DS18B20温度传感器通过FPGA芯片组成的系统实现温度检测功能。
六软件设计
6.1软件原理框图
基于FPGA温度监测系统的软件原理框图如下图6.1所示
图6.1软件原理框图
6.2时序分析
本部分主要完成LCD1602初始化、DS18B20的初始化、从DS18B20读取数据、向DS18B20写数据及温度转化等子程序的编写,此外在进行程序的编写时一定要严格保证读写时序的正确性,否则无法读取测温结果,其初始化时序和写时序的程序分别如下:
初始化时序包括一个主机发出的复位脉冲以及从机的应答脉冲这一过程,如图所示复位脉冲是一个480~960us的低电平然后释放总线,将总线拉至高电平,时间持续15~60us之后从机开始向总线发出一个应答脉冲,该脉冲是一个60~240us的低电平信号,表示从机已准备好,在初始化过程中主机接收脉冲的时间最少为480us。
DSl8820的访问步骤为:
先进行初始化(Ini—tialization),然后发送ROM命令,最后发送Func—tion功能命令.对DSl8820访问必须通过上述步骤完成.初始化命令使主设备知道从设备是在总线上并可以进行访问.ROM命令可以使主设备知道有多少和什么类型的从设备连接在总线上并且判断是否超过温度报警值.共有5种ROM命令,分别是READROM(33H)、MATCHROM(55H)、SEARCHROM(FOH)、SKIPROM(CCH)、ALARMSEARCH命令(ECH).主设备可以通过功能命令来对DSl8820内部存储器进行读写.有6种功能命令,分别是CONVERT(44H)、WRITESCRATCHPAD(BEH)、READSCRATCHPAD(4EH)、COPYSCRATCHPAD(48H)、RECALLE2(B8H)、读电源供电方式(B4H).DSl8820的单线通信功能是分时完成的,它有严格的时隙要求.
七误差分析
本系统中的标准温度由DS18B20输出的数字量通过曲线拟合转换为温度值得到。
为了尽量减小误差,采用3次曲线拟合,因为0℃~100℃本身温度范围比较小,所以就将0℃~100℃作为一个温度段,拟合成1条曲线。
具体实现由1stOpt软件完成。
1stOpt在非线性拟合、参数估算等优化领域处于领先地位。
标准温度测量模块在35℃~40℃范围内测试结果如表1所示。
标准误差:
八程序设计
8.1主要代码
LibraryIEEE;
UseIEEE.Std_Logic_1164.All;
Entitywenduis
Port
(led:
outstd_logic_vector(0to16);
wireout:
inoutstd_logic;
clk:
instd_logic;
rst:
instd_logic);
Endentityb;
Architectureinitofwenduis
typeinit_statesis(s00,s0,s1,s2,s3,s4,s5,s6,s7,w0,w1,w00,w01,read0,read1,read2,read3);
signalstate:
init_states;
signali:
integerRange0to1000000;
signalreset:
std_logic;
begin
process(rst,wireout,clk)
variablei:
IntegerRange0to1000;
variableflag:
IntegerRange0to200;
variablelight:
IntegerRange0to16;
begin
ifrst='0'thenstate<=s00;
wireout<='Z';flag:
=0;
elsifrising_edge(clk)then
casestateis
whens00=> flag:
=0;
state<=s0;
whens0=> wireout<='0';--初始化18b20
--主机拉底总线
reset<='1';
state<=s1;
whens1=> reset<='0';
if(i=500)then --延时500us
wireout<='Z'; --释放总线
reset<='1';
state<=s2;
endif;
whens2=> reset<='0';
if(i=100)then --等待100us
reset<='1';
state<=s3;
endif;
whens3=>if(wireout='0')then --若18b20拉低总线,初始化成功
state<=s4;
led(16)<='1'; --led16灯亮
elsif(wireout='1')then--否则,初始化不成功,返回S0
state<=s0;
endif;
whens4=> reset<='0';
if(i=400)then --再延时400us
reset<='1';
state<=s5;
endif;
whens5=> --写数据
if(flag=0 )thenflag:
=1;state<=w0; --cch
elsif(flag=1 )thenflag:
=2;state<=w0;
elsif(flag=2 )thenflag:
=3;
state<=w01;wireout<='0';
elsif(flag=3 )thenflag:
=4;
state<=w01;wireout<='0';
elsif(flag=4 )thenflag:
=5;state<=w0;
e
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 温度传感器 系统 资料