基于FPGA的温度监控系统概要文档格式.docx
《基于FPGA的温度监控系统概要文档格式.docx》由会员分享,可在线阅读,更多相关《基于FPGA的温度监控系统概要文档格式.docx(51页珍藏版)》请在冰豆网上搜索。
2.3QuartusII介绍7
3.系统的硬件设计10
3.1系统的总体结构设计10
3.2数据处理模块15
3.3数码管显示模块21
4系统总体模块设计24
4.1VerilogHDL语言介绍24
4.2软件程序设计25
5整体编译结果与分析31
5.1整体编译31
5.2程序的下载调试32
6设计中遇到的问题34
7结束语35
参考文献36
附录37
附录A系统总体电路图38
附录B系统总程序38
附录C外文翻译50
1绪论
1.1课题研究意义
温度是生活中最基本的环境参数。
温度的监测与控制,对于生物的生存与生长,工业生产发展都有着非同一般的意义。
温度传感器的应用涉及机械制造、工业过程控制、汽车电子产品、消费电子产品和专用设备等各个领域。
传统的常用温度传感器有热电偶、电阻温度计RTD和NTC热敏电阻等。
但信号调理,模数转换及恒温器等功能全都会增加成本。
现代集成温度传感器通常包含这些功能,并以其低廉的价格迅速占据了市场。
DallasSemiconductor公司推出的数字式温度传感器DS18B20采用数字化一线总线计数具有很多的优异特性。
其一,它将控制线、地址线、数据线合成一根导线,允许在同一根导线上挂接多个控制对象,形成多点一线总线测控系统。
布线施工方便,成本低廉。
其二,线路上传送的是数字信号,所受的干扰和损耗小,性能好。
本课题旨在分析和设计数字化温度测控系统。
本系统采用FPGA实现一个数字温度计,采用Verilog
HDL作为开发语言,实现对温度的测量。
由于单片机设计的控制器生产成本较低,所以过去人们通常使用这种方法来设计数字温度计。
这种设计方法的缺点是它并不能完成很复杂的功能,只能进行一些简单的运算和控制,并且设计的控制器性能也很一般。
因此,在这种情况下,研究人员要是想进一步的提升技术,就不得不冒着牺牲机器性能的风险来扩展外部硬件电路,显然用这种传统的方法设计数字温度计,既具有局限性又具有一定的难度,所以我们要寻找一种新的设计方法来替代这种传统的研究方法。
FPGA是Xilinx公司率先提出的概念,又名现场可编程门阵列,它是以PAL等可编程器件为基础发展起来的一种高密度可编程逻辑器件,作为一种半定制电路,FPGA弥补了定制电路的不足之处,并且在结构上能够实现复杂系统所需要的主要功能,此外,使用FPGA设计产品也非常便利。
首先用硬件描述语言设计电路,然后经过布局仿真验证实验结果,最后烧入到FPGA中进行现场测试。
因此,用FPGA设计能解决传统设计中遇到的一些不可避免的难题。
利用FPGA设计产品能够有效避免很多前期的风险投资,并且在软件阶段就可以准确评估出设计的正确性,从而极大的提高产品开发效率。
综上所述,FPGA是原型设计最理想的载体。
本次课题使用FPGA设计数字温度计是一种新颖的设计方法,它能解决使用单片机这种传统设计方法所带来的能源供需以及电路复杂等问题,同时,对温度测量的发展前景有着极其重要的现实研究意义。
1.2课题相关技术的发展
当今电子产品正向功能多元化,体积最小化,功耗最低化的方向发展。
它与传统的电子产品在设计上的显著区别是大量使用大规模可编程逻辑器件,使产品的性能提高,体积缩小,功耗降低。
同时,广泛运用现代计算机技术,提高产品的自动化程度和竞争力,缩短研发周期。
EDA技术正是为了适应现代电子技术的要求,吸收众多学科最新科技成果而形成的一门新技术。
美国ALTERA公司的可编程逻辑器件采用全新的结构和先进的技术,加上QUARTUSⅡ开发环境,更具有高性能,开发周期短等特点,十分方便进行电子产品的开发和设计[1]。
EDA技术以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译,逻辑化简,逻辑分割,逻辑映射,编程下载等工作。
最终形成集成电子系统或专用集成芯片的一门新技术[2]。
新产品、新技术层出不穷,电子技术的发展更是日新月异。
可以毫不夸张的说,电子技术的应用无处不在,电子技术正在不断地改变我们的生活,改变着我们的世界。
近些年,随着科技的发展和社会的进步,人们对温度计的要求也越来越高,不管在哪里,人们都想知道此刻的温度和天气状况等一些信息,传统的温度计由于它的局限性以及不方便性,已不能满足人们的需求。
温度计等待一次革命,不管在性能还是在样式上它都将发生质的变化,于是数字温度计的时代悄然来临。
1.3课题的主要研究内容
首先在深入研究了数字温度计的总体原理后,分析其系统的组成,做出了该系统相应的整体框架,然后利用QUARTUSⅡ软件进行开发,用VerilogHDL语言描述其数据采集模块、数据处理模块、BCD译码模块、动态扫描模块等各功能模块的设计,并利用图形编辑实现各模块的顶层连接。
最后将程序下载到FPGA芯片上,通过数码显示管显示出预期的测量效果。
1.4论文结构安排
本论文各部分内容如下:
第一部分对课题的背景及意义进行研究,了解课题相关技术的发展,最后概述了该课题的主要内容和研究方法。
第二部分通过与单片机设计方案进行比较,得到用FPGA设计本课题更加合理的结论,再将AD590与DS18B20温度传感器进行简单比较后,得出用DS18B20更具有优越性,最后介绍本课题最重要的工具QuartusII。
第三部分为系统的硬件设计部分,详细介绍了温度采集模块,数据处理模块,数码显示模块所用得到硬件资源,并介绍了其在设计中的功能。
第四部分为系统软件设计部分,将整个课题按性质分为各个小模块,用VerilogHDL语言进行设计。
第五部分为整个设计的总体编译、结果与分析。
最后对整个课题进行总结,研究其不足之处。
2总体方案的论证
2.1方案的选择
2.1.1总体方案比较
过去数字温度计普遍采用单片机来实现,不过随着可编程逻辑控制器件的不断发展,控制器部分也开始频繁使用可编程逻辑器件来实现功能。
下面分别提供了单片机和FPGA作为控制器的方案,最后进行比较选择。
方案一:
此方案是基于单片机设计数字温度计,使用的是AT89C51单片机处理各个单元电路的工作。
本方案采用的是AD590温度传感器,首先通过温度系统采集相关温度数据,然后经过A/D转换器进行转换,将模拟信号转换成数字信号,并将转换后的数字信号直接送给单片机,再由单片机控制显示。
其框图如图2.1所示。
图2.1基于单片机的数字温度计系统框图
方案二:
此方案以FPGA作为核心控制设备,利用高精度的数字温度传感器DS18B20进行温度采集,将采集到的温度直接以数字信号提供给FPGA控制器,不需要经过A/D转换,采集到的温度可以通过数码管显示。
其框图如图2.2所示。
图2.2基于FPGA的数字温度计系统框图
2.1.2温度传感器的选择
温度传感器的主要作用是感受温度并将感受到的温度转化成可用输出信号,它是温度测量仪器的核心部分。
随着技术的不断发展,温度传感器的品种繁多,下面分别提供了AD590和DS18B20传感器的特性,最后进行比较选择。
采用AD590温度传感器
AD590是AD公司制成的电流输出型两端温度传感器,其正向电流与温度成比例。
在4V到30V电压之间,此器件相当于一个高阻抗的恒流源。
AD590具有精度高、线性好等特点,另外它还可以承受4V正向电压和20V反向电压,所以当器件反接时不会被损坏。
但是它也有一些自身的缺点,例如需要模拟转数字电路、成本高、测量点数量少、电路繁多以及对线阻有要求等。
采用DS18B20温度传感器
DS18B20是DALLAS公司生产的单总线器件,它具有线路简单、体积小等特点,因此多个DS18B20可以并联在2根或3根线上,只需要一根端口线就可以和很多DS18B20进行通信。
DS18B20不需要模拟转数字电路,只需要一个元件即可测温,此器件还具有成本低、精确度高、信号线距离远等特点。
总而言之,DS18B20的优点可以弥补AD590的缺点,DS18B20温度传感器不需要A/D转换直接可以与FPGA芯片相连,因此,此次课题我们将采用DS18B20作为温度传感器。
2.2方案论证与确立
通过上述方案的比较,利用单片机作为控制器件具有原理简单、电路可靠,易于实现控制功能等优点,然而,这种情况下的温度测量电路和译码电路是比较复杂且易于出错,同时电路产生的误差会大大降低设备的寿命;
利用FPGA作为核心控制器件,并且采用高精度数字温度传感器DS18B20,采集温度信号时直接由传感器采集,不需要信号放大和A/D转换,这样做可以大大简化电路连接减少误差,并且使用FPGA芯片可以利用其自身具有的可编程修改的特点避免了在设计过程中的麻烦,采用这种方法既可以为设计过程带来便利,又可以增加市场竞争力。
综上所述,本次设计采用FPGA作为核心器件以及选用DS18B20温度传感器实现其功能,且实现结果是基于QuartusII仿真软件进行验证。
2.3QuartusII介绍
Max+plusII作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。
目前Altera已经停止了对Max+plusII的更新支持。
QuartusII是Altera公司继Max+plusII之后开发的一种针对其公司生产的系列CPLD/PGFA器件的综合性开发软件,具有从设计输入到器件编程的所有功能,并且为用户提供了一整套设计解决方案,能够完成可编程片上系统的整个开发流程,在使用界面上更友好和人性化[3]。
它的版本不断升级,从4.0版本已经更新到13.0版本,本次课题就是使用工具软件
QuartusII11.0。
该软件有如下几个显著的特点:
2.3.1QuartusII的优点
该软件界面友好,使用便捷,功能强大,是一个完全集成化的可编程逻辑设计环境,是先进的EDA工具软件。
该软件具有开放性、与结构无关、多平台、完全集成化、丰富的设计库、模块化工具等特点,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
QuartusII可以在XP、Linux以及Unix上使用,提供了完善的用户图形界面设计方式。
具有运行速度快,界面统一,功能集中,易学易用等特点。
最重要的是QuartusII11.0还特别容易学习与操作,所以,深受开发者的欢迎。
2.3.2QuartusII对器件的支持
QuartusII支持Altera公司的MAX3000A系列、MAX7000系列、MAX9000系列、ACEX1K系列、APEX20K系列、APEXII系列、FLEX6000系列、FLEX10K系列,支持MAX7000/MAX3000等乘积项器件。
支持MAXIICPLD系列、Cyclone系列、CycloneII、StratixII系列、StratixGX系列等。
支持IP核,包含了LPM/MegaFunction宏功能模块库,用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;
支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
2.3.3QuartusII对第三方EDA工具的支持
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。
Altera的QuartusII可编程逻辑软件属于第四代PLD开发平台。
该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。
Quartus平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。
改进了软件的LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。
QuartusII设计流程如图2.3所示。
图2.3QuartusII设计流程
3.系统的硬件设计
3.1系统的总体结构设计
本次设计的数字温度计主要3部分构成,温度采集模块(DS18B20),数据处理模块(FPGA),数码管显示模块。
系统硬件结构框图如图3.1。
图3.1系统硬件结构框图
3.1.1温度采集模块
鉴于要测量温度,而开发板没有测量温度的设备,所以最基本是要添加外设数字温度传感器DS18B20。
DS18B20外形与三极管一样,一只脚传输数据,另外两只脚分别接地与高电平使之工作。
DS18B20实时测得的室温将转化成9到12位的串行数据,对串行数据进行“翻译”就可以得出实时室温。
DS18B20主要由七部分组成:
高速暂存器、8位CRC发生器、64位光刻ROM、寄生电源、温度传感器、高温触发器TH和低温触发器TL。
64位光刻ROM是温度敏感元件,其中包含了DS18B20唯一的序列号(唯一的名字)。
DS18B20共有3个引脚:
GND、DQ和VDD[4]。
其测得的数据与温度关系如表3.1所示。
表3.1温度值对应的二进制温度数据
温度(℃)
数据输出(二进制)
数据输出(十六进制)
+125
+85
+25.0625
+10.125
+0.5
0
-0.5
-10.125
-25.0625
-55
0000011111010000
0000010101010000
0000000110010001
0000000010100010
0000000000001000
0000000000000000
1111111111111000
1111111101011110
1111111001101111
1111110010010000
07D0h
0550h
0191h
00A2h
0008h
0000h
FFF8h
FF5Eh
FE6Eh
FC90h
图3.2是DS18B20的测温原理。
从图中可以看出随着温度的变化,低温度系数晶振的振荡频率基本不会发生变化,减法计数器1接收到的信号是用于产生固定频率的脉冲信号;
温度对高温度系数晶振的振荡频率的影响很大,因此,减法计数器2的脉冲输入就是其所产生的信号。
图中实际上还隐含了一个计数门,DS18B20随着计数门的开启,对低温度系数振荡器产生的时钟脉冲计数,最终完成温度测量。
实际上,高温度系数振荡器决定了计数门的开启时间。
减法计数器1对低温度系数振荡器产生的脉冲信号进行减法计数,如果这个计数器1的预置数为0,那么温度寄存器的值将会在此基础上加1,同时减法计数器1重新装入预置数,并对低温度系数振荡器产生的脉冲信号进行计数,当减法计数器2计数变到0后,温度寄存器的值便停止累加,在这种情况下,所测温度值与温度寄存器中的数值一致。
其中,斜率累加器的作用是修正预置值,只要计数器一直没有被关闭,那么就重复以上的过程,直到温度寄存器与被测温度值一致[5]。
图3.2DS18B20测温原理
由于DS18B20是采用一根I/O总线读写数据,因此DS18B20对读写数据位有严格的时序要求。
DS18B20遵循相应的通信协议从而保证数据传输的正确性和完整性。
该通信协议定义了多种信号时序:
初始化时序、写时序、读时序。
3.1.1.1初始化时序
初始化时序中,控制器发送一个480us-960us的低电平的复位信号,然后释放总线,也就是总线为高电平,此时,控制器准备接收DS18B20的反应信号,当总线释放后,如果存在DS18B20,那么DS18B20将在15-60us内发送一个持续60-240us的反应信号,如图3.3所示。
图3.3初始化时序原理图
3.1.1.2写时序
因为本设计总线上只挂了一个DS18B20,所以不用读取64位序列号,直接发送忽略rom命令skinrom,如图3.4所示。
图3.4写时序原理图
写时序有写1和写2时序,首先将总线拉低电平,拉低后15us之内必须把所要向DS18B20写的数据传到总线上,DS18B20将在15us-60us内采样总线上的数据,如果为高则写1,为低则写0;
写完一次后释放总线。
每两次写数据之间时隙要大于1us。
3.1.1.3读时序
读时序时,总线拉低电平大于1us后,然后释放总线准备接收DS18B20传来的数据,DS18B20将在总线拉低后15us之内将数据传到总线上,因此,控制器必须在拉低电平然后释放总线15us之内采样总线上的数据。
每次读取一位数据不小于60us,如图3.5所示。
图3.5读时序原理图
3.1.1.4电源连接
DS18B20可使用寄生电源,可以在I/O引脚处于高电平时获取些能量,储存在电容中供正常使用,但进行精确转换时需要I/O引脚保持大电流供电,这样对FPGA芯片引脚造成很大压力,所以使用VDD引脚接外部电源。
DS18B20进行温度转换需要很大电流,工作最大电流可达1mA。
使用VDD引脚接外部电源供电的优点在于I/O线上不需要在温度变换期间保持高电平。
这样就可以有效的保护FPGA芯片,也可在单总线上放置多数目的DS18B20。
使用外部电源,通过发出SkipROM跳过命令,然后发出ConvertT变换命令,可以完成温度变换。
3.1.1.5数据输出
控制器从DS18B20接收的16位温度值为12位,精度为0.0625,DS18B20用12位存贮温值度。
最高位为符号位,正温度S=0如0550H为+85度,0191H为25.0625度,FC90H为-55度,如图3.6所示。
图3.6温度寄存器格式表
本次试验显示忽略了小数位,只取整数位,那么只取data[10:
4]这7位,便是温度的整数值。
3.2数据处理模块
数据处理是在FPGA内部进行的。
用FPGA对DS18B20进行驱动从而得到温度数据,FPGA需要完成DS18B20的初始化、读取DS18B20的48位ID号、启动DS18B20温度转换、读取温度转化结果。
读取48位ID号和读取温度转换结果过程中,FPGA还要实现CRC校验码的计算,保证通信数据的可靠性。
这就需要对FPGA进行一定的了解。
FPGA的基本单元是可编程逻辑器件(PLD),PLD的可编程特性使得它能够在IC设计中提供电路仿真和验证,从而大大提高了产品的生产效率和生产速率。
如今,PLD在经历了几个阶段后终于发展成了FPGA和CPLD。
在此发展过程中,PLD强大的功能使得它被广泛应用于生活之中。
20世纪70年代初期,可编程逻辑器件PROM和PLA的出现替代了高成本的掩膜编程ROM,接着AMD公司又研制出了可编程阵列逻辑器件(ProgrammableArrayLogic,PAL)。
3.2.1可编程逻辑器件的发展历程
工程师们发明的PROM解决了ROM很难存储代码的问题。
工程师通过PROM提供的一个简单且与芯片有关的编程器,将代码写入芯片中。
烧入后的PROM在断电后可以保存数据。
但是PROM的缺点是它的速度与输入端受到一定的限制。
为了解决这个问题就出现了ProgrammableLogicArray(PLA),许多和“与”阵列相连接的输入端构成了PLA,同时还将“与”阵列的输出连接到“或”阵列,最后产生输出。
PLA结构示意图如3.7所
示。
图3.7PLA的结构示意图
PAL是在PLA的基础上发展起来的一个新版本,它们的共同点是都含有“与”阵列。
不同的地方在于“或”阵列是否可以编程,其中PLA是可编程的,而PAL是固定的不可以编程的。
很明显,这样的设计限制了参与“或”运算的个数,但是由于输入和输出端都加了反相器,工程师想实现逻辑函数的话,可以选择执行“与”和“或”阵列两种不同的方案,这种做法还是可以使得PAL能够实现很多布尔表达式。
另外,PAL具有简化编程算法、运算速度提高等优点被适用于中小规模可编程电路中[6]。
3.2.2可编程逻辑器件的分类
由于可编程逻辑器件供应厂家非常多,而且名称也不尽相同,因此有不同的分类方法。
按PLD结构和复