基于FPGA和LM75A的测温系统设计

2014-05-04 08:05刘欢欧伟明陈财彪周志伟
湖南工业大学学报 2014年4期
关键词:数码管寄存器测温

刘欢,欧伟明,陈财彪,周志伟

(湖南工业大学电气与信息工程学院,湖南株洲412007)

基于FPGA和LM75A的测温系统设计

刘欢,欧伟明,陈财彪,周志伟

(湖南工业大学电气与信息工程学院,湖南株洲412007)

设计了一种基于FPGA和LM75A的温度测量系统。硬件设计上,系统以EP4CE15F17C8N为主控芯片,采用数字温度传感器LM75A检测环境温度,并利用LM75A自带的IIC总线接口传输数据,通过数码管将温度实时显示出来;软件设计上,采用自顶向下模块化设计思想,先设计出IIC通信模块、温度显示模块,然后再编写顶层模块,将2个模块整合。试验结果表明,本系统测温精确,且运行稳定。

温度采集;FPGA;LM75A;EP4CE15F17C8N;IIC总线

0 引言

EP4CE15F17C8N是由Altera公司2009年推出的Cyclone IV FPGA(field-programmable gate array)芯片。Cyclone IV FPGA所需的供电电源很少,在电路设计中,可以使用相对简单的电源稳压器以及相关的滤波器电路,这样电源分配网络得到简化,电路板面积也将减小,进一步降低了成本[1]。由于FPGA非常的灵活,其产品能比大部分新开发的A S I C(application specific integrated circuit)或者ASSP(application specific standard parts)产品更迅速地推向市场,因此FPGA具有增加新功能方便、迅速跟上市场变化以及满足客户需求等优点,能通过提高其可靠性,降低系统的维护成本,还可以重新设计以避免过时问题。

目前,工业技术在不断的发展,诸如钢铁冶金、玻璃、石化等行业中有很多产品对温度的要求越来越严格。为了使温测精度达到工业要求,国内学者提出了多种测温系统,如文献[2]提出了一种基于AVR单片机的温度测量系统,该系统利用DS18B20芯片采集温度;文献[3]设计了基于STM32的温度测量系统,以AD590作为温度传感器,所测温度通过4位数码管实时显示;文献[4]设计了基于DSP的测温系统,采用TMS320F2812作为系统处理器,与温度传感器DS18B20构成单总线的温度测量系统,能实现多点测量,同时测量8路温度。综上所述,大部分温度测量系统都是基于单片机。随着近年来FPGA的高速发展,其应用也更加广泛。因此,本文设计了一种基于FPGA和LM75A的测温系统,该系统测温稳定,精确度高,且能实时显示。

1 系统总体方案设计

FPGA不像单片机那样逐条执行程序,而是以并行运算为主,以硬件描述语言来完成电路设计[5]。因此,基于FPGA的温度测量系统具有运行速度更快,支持大量数据的高速处理等优点。

应用Verilog HDL(hardware description language)语言编写的程序写入FPGA后,能形成实际电路。FPGA的内部程序是并行操作,所以硬件电路不会存在程序逐条执行的问题,且FPGA硬件的数据处理速度非常快,可达到ns级别[6],因而本系统比单片机系统能更迅速、实时地监测信号的变化和及时更新数据。本文将Altera公司生产的FPGA芯片EP4CE15F17C8N作为处理器。此芯片有165个可自由分配的I/O口,连接外设很方便。该芯片采用60 nm低功耗工艺,与单片机系统相比,系统总功率消耗更低。在综合考虑稳定性、可实现性以及精确性之后,提出了基于FPGA和LM75A的温度系统设计方案。该系统总体设计框图如图1所示。

图1 系统总体设计框图Fig.1System design diagram

2 系统硬件电路设计

基于FPGA和LM75A的测温系统总体分为3个部分:CPU电路、温度采集电路、温度显示电路。

2.1 CPU电路设计

CPU电路主要包括主控芯片、50 MHz晶振、电源、配置芯片EPCS16、下载接口、电源指示灯,如图2所示。

CPU电路采用EP4CE15F17C8N作为主控芯片。该FPGA芯片非常灵活,可以实现任何数字电路以及定制所有的电路,大大简化了系统电路。其并行操作特点使系统运行速度更快。其内部有着丰富的寄存器资源,可以存储大量数据。

由于主控芯片EP4CE15F17C8N内部集成了IIC总线接口,LM75A器件自带IIC总线接口,因此,两者之间可以通过上拉电阻直接相连,不需要使用I/O端口模拟IIC总线通信。主控芯片先对LM75A发送开始测量温度命令,接着LM75A将采集到的数据通过IIC总线送入主控芯片中,主控芯片则完成数据存储、处理、控制等操作。同时,将温度数据在数码管上实时显示。

图2 CPU电路图Fig.2CPU circuit

2.2温度采集电路设计

温度采集电路主要由LM75A组成(如图3所示)。OS与VCC接口接3.3 V电源,SDA与SCL分别接上拉电阻,与主控芯片IIC接口相连,A0, A1, A2接地。

图3 温度采集电路图Fig.3Temperature acquisition circuit diagram

LM75A是具有IIC接口的数字温度传感器,管脚有8个,分别为A2, A1, A0, OS, SCL(串行时钟线), SDA(串行双向数据线)VCC, GND。其内部集成了很多器件,有IIC总线接口、逻辑控制接口、带隙温度传感器、11位模拟转数字转换器以及各种寄存器等。存储器件的某些配置的寄存器(Conf)、存储数字温度的寄存器(Temp)也都包含在内[7]。LM75A测温最大范围为-55~+125 ℃,测温精度0.125 ℃。SCL和SDA构成IIC串行总线,可以实现多个器件之间的主从式通信;OS为过热关断输出接口,外部可连接检测器或中断线,当温度超过设定温度值时该输出有效;VCC, GND分别接系统电源和地;A0~A2是用户自定义地址位,通过对A0, A1和A2的逻辑定义,可以使8个LM75A接在同一总线而不会有地址冲突。由于系统只采用了一个测温器件测量温度,所以电路中A0, A1, A2接地,逻辑地址为0。

温度寄存器(Temp)是一个由高8位字节和一个低8位字节组成的只读寄存器,其中仅有高11位被存放到Temp数据,其余低5位为0[8]。Temp数据的分辨率为0.125 ℃,当读到Temp寄存器时,所有16位数据都提供给总线。若Temp数据的最高有效位为逻辑0,则表示温度是正值,温度值(℃)=+(Temp数据)*0.125 ℃;若Temp数据的最低有效位为逻辑1,则表示温度是负值,温度值(℃)=-(-Temp数据+1)* 0.125℃。在进行温度采集前,FPGA必须先对LM75A器件初始化,包括对LM75A的地址选择,滞后寄存器、配置寄存器等的数据写入等。初始化完成之后,从LM75A器件的Temp中读取当前温度。

2.3 温度显示电路设计

温度显示电路由数码管、电阻以及三极管组成。数码管为八段共阳极数码管。驱动晶体管的数码管是8550驱动,这是一种常用的PNP型三极管,并具有低电压、大电流和小信号特性。三极管基级通过限流电阻与主控芯片I/O管脚相连,集电极与数码管共阳极相连,当主控芯片给基级一个高电平后,发射级导通,集电极和发射级也导通,位选引脚(共阳极)接到3.3 V电源上。数码管段选引脚通过限流电阻与主控芯片I/O管脚相连,并且低电平有效。

3 系统软件设计

FPGA的设计输入方法有原理图和硬件描述语言(包括VHDL、AHDL、VerilogHDL等)2种。传统设计方法一般是采用直观、容易理解的原理图输入。但是此方法移植性不好,当所选芯片升级之后,所有设计的原理图都需改动。现在工程师常用的设计方法是用硬件描述语言完成所需设计,其特点主要表现为自顶向下设计。相比于原理图设计方法,自顶向下设计方法主要有以下优点:

1)从功能描述到物理实现完全符合设计者的设计思路。

2)设计可以重复利用,能应用在不同的产品设计中。

3)容易修改设计。设计者可以在门消耗以及时序2方面对FPGA的结构进行比较,从而选择最佳的设计方案。

4)设计周期短,效率高。采用自顶向下设计方法的效率可以达到传统原理图设计方法的2~4倍。

鉴于自顶向下设计方法的诸多特点,本系统软件部分采用自顶向下模块化设计思想进行设计,主要包括IIC通信模块、温度显示模块等。

3.1 IIC通信模块

FPGA和LM75A两者之间的通信严格按照IIC总线管理定义的规则。在LM75A检测温度时,须先对LM75A初始化,即对其配置寄存器写入控制字进行工作模式的设定。写配置寄存器时序如图4所示。

图4 写配置寄存器时序Fig.4Timing sequence of the configuration register

通信开始前,IIC总线一定要有空间或者不忙,这就要求总线上的器件必须释放SDA和SCL线[9]。主机启动起始信号S后,开始对配置寄存器写入要选择的器件地址,硬件电路图中的A0, A1, A2与地相接,因此器件的逻辑地址是“000”,再将“00000001”写入寄存器地址指针,等待器件响应一个系统时钟周期后,再进行工作模式的写入。完成上述步骤后,LM75A开始工作,若在正常工作模式下,每隔100 ms进行一次转换(模数转换),转换的结果存放在Temp寄存器中。FPGA读取Temp寄存器中的数据,对其处理后,就能得到温度数据。FPGA读取Temp寄存器中的数据也需严格按照IIC总线管理定义的规则[7]。读取温度数据的时序图如图5所示。

由于系统时钟为50 MHz,为了方便分频,选择用50 kHz的频率作为LM75A的时钟频率,即SCL时钟频率为50 kHz。由时序图5可知,28个时钟周期即可完成一次读操作;另外,使用SCL的4倍频率生产计数器,该计数器控制SDA相对于SCL的相位关系,此时SDA的时钟频率为200 kHz。

图5 读温度寄存器时序Fig.5Timing sequence of the temperature register

模块部分程序如下。

3.2 温度显示模块

系统采用4位八段共阳数码管显示温度。为使4位数码管动态显示温度,可采用动态扫描的方法依次点亮数码管,当扫描速度达到某个范围时,可利用人眼视觉暂留的特点,使人感觉4位数码管是在同一时间显示。动态扫描的频率最好大于50 Hz,每个数码管显示的时间要适中,不能过长或过短,时间过长则会出现闪烁的情况,时间过短发光二极管电流的导通时间也短,会导致数码管亮度变暗。一般扫描时间控制在1~2 ms左右。FPGA产生的扫描时间程序如下。

其中,scan_cnt为16位寄存器,存储计数值,记一次数的时间为1 ms。如图6所示为数码管显示模块。syc_clk是系统时钟信号,sys_ret_n是系统复位信号,c1~c4为数码管位选信号,seg_a ~seg_h分别接数码管的发光二极管,其中seg_h控制小数点。lm75_temp是FPGA从器件LM75A采集到的11位温度数据经过计算后的数据,其算法是:

lm75_temp <= (buff[10:0]*125)/10;//存储在缓存器buff中的11位数据经计算后,赋值给lm75_temp寄存器。由于lm75_temp里面寄存的为二进制数据,所以需先转成为BCD码,才能输出显示。

图6 数码管显示模块Fig.6Digital tube display module

3.3系统整合

在用Verilog HDL编程中,系统软件部分采用模块化设计。上文的IIC通信模块和温度显示模块为系统独立模块,故需编写顶层模块(命名为top)将2个模块整合起来。top模块能定义各个管脚接口,从而使系统与外界进行通信。top模块通过顶层调用方法将tongxin(FPGA和LM75A通信模块)和saomiao(数码管扫描显示模块)组合成为一个完整的系统。将完整的程序下载到FPGA芯片,系统即可测量环境温度。某次试验的温度测量显示图如图7所示。

图7 温度测量图Fig.7Temperature measurement

试验结果表明,系统测温稳定,温测精度高,能将环境温度通过数码管实时显示。

4 结语

本文设计实现了一种基于FPGA和LM75A的测温系统。其设计简单、功耗低、操作方便、响应快、测量精度高。该系统可用于室内温度测量、室外动植物生长环境温度测量等测温场所,该测温系统还可扩展利用8个LM75A数字温度传感器测温,从而实现多点大范围测温。

[1]王振红,傅志文. 基于FPGA控制的暖气温度均衡系统[J]. 中国科技信息,2010(1):133-134. Wang Zhenhong,Fu Zhiwen. Heating Temperature Balance Control System Based on FPGA[J]. Chinese Science and Technology Information,2010(1):133-134.

[2]陈柱,聂力波,常浩. 基于AVR单片机的温度测量与控制系统设计[J]. 湖南工业大学学报,2012,26(3):76-81. Chen Zhu,Nie Libo,Chang Hao. Design of Temperature Measurement and Control System Based on AVR[J]. Journal of Hunan University of Technology,2012,26(3):76-81.

[3]曹圆圆. 基于STM32的温度测量系统[J]. 仪器仪表与分析监测,2010(1):16-18. Cao Yuanyuan. Temperature Measurement System Based on the STM32[J]. InstrumEntation·Analysis· Monitoring,2010(1):16-18.

[4]王军琴. 基于DSP的单总线温度测量系统设计[J]. 工矿自动化,2010(2):35-37. Wang Junqin. Design of 1-Wire Bus Temperature Measurement System Based on DSP[J]. Industry and Mine Automation,2010(2):35-37.

[5]谭会生,张昌凡. EDA技术及应用 [M]. 2版. 西安:西安电子科技大学出版社,2004:41-61. Tan Huisheng,Zhang Changfan. EDA Technique and Application[M]. 2nd ed. Xi’an:Xidian University Press,2004:41-61.

[6]王振红,周锡刚. 基于FPGA控制的温度检测无线发射接收系统[J].电子技术设计与应用,2010,47(5):46-48. Wang Zhenhong,Zhou Xigang. Control of the Temperature Detection Wireless Transmitting and Receiving System Based on FPGA[J]. Electronics Design & Application,2010,47(5):46-48.

[7]杨新鹏. 基于LM75A的多点温度监控系统设计[J].工业仪表与自动化装置,2013(2):80-81. Yang Xinpeng. Design of Multi-Channels Temperature Monitoring System Based on LM75A[J]. Industrial Instrumentation and Automation Device,2013(2):80-81.

[8]贺希,朱善华,秦斌,等. 基于LabVIEW的远程温度采集系统设计[J]. 湖南工业大学学报,2013,27(6):89-92. He Xi,Zhu Shanhua,Qin Bin,et al. Design of Remote Temperature Acquisition System Based on LabVIEW[J]. Journal of Hunan University of Technology,2013,27(6):89-92.

[9]孙延辉. 基于IIC总线的多点温度采集系统[J]. 电子设计工程,2010(5):69-71. Sun Yanhui.Multipoint Temperature Acquisition System Based on IIC Bus[J]. Electronic Design Engineering,2010 (5):69-71.

(责任编辑:邓彬)

Design of Temperature Measurement System Based on FPGA and LM75A

Liu Huan,Ou Weiming,Chen Caibiao,Zhou Zhiwei
(School of Electrical and Information Engineering,Hunan University of Technology,Zhuzhou Hunan 412007,China)

Designs a temperature measurement system based on FPGA and LM75A. The design of hardware uses EP4CE15F17C8N as the main controlling chip, and applies the digital temperature sensor LM75A to test the environment temperature and the LM75A own IIC bus interface to transmit data, displaying the temperature via the Digital tube in real time. The software design, using the idea of top-down modular design thought, first, designs a IIC communication module and a temperature display module, and then, programs the top-level module and makes the modules integration. The practice results show that the system is precision in measuring temperature and operates stably.

temperature acquisition;FPGA;LM75A;EP4CE15F17C8N;IIC bus

TH811

A

1673-9833(2014)04-0025-05

10.3969/j.issn.1673-9833.2014.04.007

2014-05-26

刘欢(1988-),男,湖南长沙人,湖南工业大学硕士生,主要研究方向为现代电力电子技术,E-mail:liuhtianya@163.com

欧伟明(1962-),男,湖南沅江人,湖南工业大学教授,主要从事信号处理和嵌入式系统方面的研究与教学,E-mail:ouweimin@sina.com

猜你喜欢
数码管寄存器测温
STM32和51单片机寄存器映射原理异同分析
微课教学设计之“数码管动态显示”
Lite寄存器模型的设计与实现
硬线测温探头在离心式压缩机组的应用
Arduino编程
MC9S08FL16单片机数码管静态显示分析
单片机控制的四位数码管动态显示编程
变压器光纤测温探头的安装固定
基于DS18B20的单片机测温系统
基于ARM的高精度测温系统设计与实现