
全天候温度纪录仪的设计与FPGA实现控温项目方案.doc
21页全天候温度纪录仪的设计与FPGA实现控温项目方案一、 设计相关1.1 设计题目全天候温度纪录仪的设计与FPGA实现1.2 选题背景当今电子产品正向功能多元化,体积最小化,功耗最低化的方向发展它与传统的电子产品在设计上的显著区别是大量使用大规模可编程逻辑器件,使产品的性能提高,体积缩小,功耗降低同时广泛运用现代计算机技术,提高产品的自动化程度和竞争力,缩短研发周期FPGA开发技术正是为了适应现代电子技术的要求,吸收众多学科最新科技成果而形成的一门新技术基于Verilog HDL语言的设计开发更是灵活多变,容易上手,方便开发人员开发新产品时代在发展,人们的物质生活水平在不断提高,新产品、新技术层出不穷,电子技术的发展更是日新月异可以毫不夸张的说,电子技术的应用无处不在,电子技术正在不断地改变我们的生活,改变着我们的世界一个方便实用的温度计对于大众来说更是生活中不可或缺的一件产品美国ALTERA公司的可编程逻辑器件采用全新的结构和先进的技术,加上最新的QUARTUS开发环境,更具有高性能,开发周期短等特点,十分方便进行电子产品的开发和设计本节将从FPGA嵌入式应用开发技术与温度计发展的客观实际出发,通过对该技术发展状况的了解,以及课题本身的需要,指出研究基于FPGA的芯片系统与设计——全天候温度记录仪的设计与实现的必要性。
1.3 设计要求本设计要求设计一个温度计,通过温度传感器(DS18B20)周期的测量温度数据,同时将数据存储在EEPROM AT24C02中,在需要读取数据温度纪录时,读出温度纪录至板载LCD(1602)液晶显示器显示二、 系统设计2.1 系统设计图图2-1 系统设计图2.2 系统设计说明本设计是基于FPGA的温度记录仪,整体系统设计如下,首先由FPGA控制器驱动DS18B02温度传感器对当前温度进行周期性采集,并且对采集到的数据进行处理,然后存入EEPROM AT24C02只读存储器,最后利用LCD1602液晶显示屏进行显示同时本系统通过向用户提供按键,方便用户读取历史温度记录三、 硬件设计3.1 FPGA简介3.1 1 FPGA芯片的介绍FPGA是现场可编程门阵列(Field Programmable Gate Array)的简称,与之相应的CPLD是复杂可编程逻辑器件(Complex Programmable Logic Device)的简称,两者的功能基本相同,只是实现原理略有不同,所以有时可以忽略这两者的区别,统称为可编程逻辑器件3.12 FPGA基本结构FPGA具有可编程门阵列的通用结构,它由逻辑功能块排成阵列,并由可编程的互连资源连接这些逻辑功能块来实现不同的设计。
FPGA一般由3种可编程电路和一个用于存放编程数据的静态存储器SRAM组成这3种可编程电路是:可编程逻辑模块、输入/输出模块(IOB--I/O Block)和互连资源可编程逻辑模块CLB是实现逻辑功能的基本单元,它们通常规则的排列成一个阵列,散布于整个芯片;可编程输入/输出模块(IOB)主要完成芯片上的逻辑与外部封装脚的接口,它通常排列在芯片的四周;可编程互连资源包括各种长度的连接线段和一些可编程连接开关,它们将各个CLB之间或CLB、IOB之间以及IOB之间连接起来,构成特定功能的电路1) CLB是FPGA的主要组成部分图3-1是CLB基本结构框图,它主要由逻辑函数发生器、触发器、数据选择器等电路组成CLB中3个逻辑函数发生器分别是G、F和H,相应的输出是G’、F’和H’G有4个输入变量G1、G2、G3和G4;F也有4个输入变量F1、F2、F3和F4这两个函数发生器是完全独立的,均可以实现4输入变量的任意组合逻辑函数逻辑函数发生器H有3个输入信号;前两个是函数发生器的输出G’和F’,而另一个输入信号是来自信号变换电路的输出H1这个函数发生器能实现3输入变量的各种组合函数这3个函数发生器结合起来,可实现多达9变量的逻辑函数。
CLB中有许多不同规格的数据选择器(四选一、二选一等),通过对CLB内部数据选择器的编程,逻辑函数发生器G、F和H的输出可以连接到CLB输出端X或Y,并用来选择触发器的激励输入信号、时钟有效边沿、时钟使能信号以及输出信号这些数据选择器的地址控制信号均由编程信息提供,从而实现所需的电路结构CLB中的逻辑函数发生器F和G均为查找表结构,其工作原理类似于ROMF和G的输入等效于ROM的地址码,通过查找ROM中的地址表可以得到相应的组合逻辑函数输出另一方面,逻辑函数发生器F和G还可以作为器件内高速RAM或小的可读写存储器使用,它由信号变换电路控制2) 输入/输出模块IOBIOB提供了器件引脚和内部逻辑阵列之间的连接它主要由输入触发器、输入缓冲器和输出触发/锁存器、输出缓冲器组成每个IOB控制一个引脚,它们可被配置为输入、输出或双向I/O功能当IOB控制的引脚被定义为输入时,通过该引脚的输入信号先送入输入缓冲器缓冲器的输出分成两路:一路可以直接送到MUX,另一路经延时几纳秒(或者不延时)送到输入通路D触发器,再送到数据选择器通过编程给数据选择器不同的控制信息,确定送至CLB阵列的I1和I2是来自输入缓冲器,还是来自触发器。
图3-1 CLB基本结构当IOB控制的引脚被定义为输出时,CLB阵列的输出信号OUT也可以有两条传输途径:一条是直接经MUX送至输出缓冲器,另一条是先存入输出通路D触发器,再送至输出缓冲器IOB输出端配有两只MOS管,它们的栅极均可编程,使MOS管导通或截止,分别经上拉电阻接通VCC、地线或者不接通,用以改善输出波形和负载能力3) 可编程互连资源IR可编程互连资源IR可以将FPGA内部的CLB和CLB之间、CLB和IOB之间连接起来,构成各种具有复杂功能的系统IR主要由许多金属线段构成,这些金属线段带有可编程开关,通过自动布线实现各种电路的连接3.13 FPGA一般设计流程图 3-2 FPGA设计流程图3.2 LCD1602液晶显示3.21 LCD 1602实物显示:图 3-3 LCD1602实物图3.22 功能:用来显示当前的温度值,和显示查询的温度值3.23 接口信号说明:表 3-1 接口信号表3.24 时序图图 3-4 时序图3.25 LCD 1602指令1) 0X38设置为16*2显示,5*7点阵,8位数据接口2) 0X0C说明 这里0C表示的是开显示,不显示光标,光标不显示,完整描述如下:指令码:00001DBC D=1 开显示 D=0 关显示 C=1 显示光标 C=0 不显示光标 B=1 光标闪烁 B=0 光标不闪烁3.3 DS18B20温度传感器3.31 DS18B20实物图图 3-5 DS 18B20 实物图3.32 功能:采集当前周围温度信息值。
3.33 DS18B20接口引脚信息表 3-2 接口引脚图序号名 称引脚功能描述1GND地信号2DQ数据输入/输出引脚开漏单总线接口引脚当被用着在寄生电源下,也可以向器件提供电源3VDD可选择的VDD引脚当工作于寄生电源时,此引脚必须接地3.34 DS18B20的读写操作图3-6 写操作写时隙分为写"0"和写"1",时序如图,在写数据时间间隙的前15us总线需要是被控制器拉置低电平,而后则将是芯片对总线数据的采样时间,采样时间在15-60us,采样时间内如果控制器将总线拉高则表示写1,如果控制器将总线拉低则表示写0每一位的发送都应该有一个至少15us的低电平起始位随后的数据0或1应该在45us内完成整个位的发送时间应该保持在60-120us,否则不能保证通信的正常3.35 DS18B20的读操作图3-7 读操作读时隙时也是必须先由主机产生至少1us的低电平,表示读时间的起始随后在总线被释放后的15us中DS18B20会发送内部数据位注意必须要在读间隙开始的15us内读数据为才可以保持通信的正确通信时,字节的读或写是从高位开始的,即A7到A0控制器释放总线,也相当于将总线置13.4 AT24C02读写模块3.41 IIC 总线协议简介IIC 总线是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。
IIC总线是由数据线 SDA 和时钟 SCL 构成的串行总线,可发送和接收数据在 CPU 与被控 IC 之间、IC 与 IC 之间进行双向传送,最高传送速率 100kbpsIIC 总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据;结束信号:SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据;应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断若未收到应答信号,由判断为受控单元出现故障3.42 AT24C02简介AT24C02是一个2K位串行CMOS E2PROM,内部含有256个8 位字节,该器件通过 IIC 总线接口进行操作通过器件地址输入端 A0、A1和A2 可以实现将最多8个AT24C02器件连接到IIC 总线上AT24C02的存储容量为2KB,内容分成32页,每页8B,共256B,操作时有两种寻址方式:芯片寻址和片内子地址寻址。
芯片寻址:AT24C02的芯片地址为1010,其地址控制字格式为 1010A2A1A0R/W其中 A2,A1,A0 可编程地址选择位A2,A1,A0 引脚接高、低电平后得到确定的三位编码,与 1010 形成 7 位编码,即为该器件的地址码R/W 为芯片读写控制位,该位为 0,表示芯片进行写操作片内子地址寻址:芯片寻址可对内部 256B 中的任一个进行读/写操作,其寻址范围为 00~FF,共 256 个寻址单位对 AT24C02 的基本操作有字节写,连续读操作时序如下:图3-8 字节写图3-9 连续读3.43 模块驱动方案:在主模块里例化了3个子模块,简单说一下各个模块的功能:串口发送模块:负责将 FPGA 通过 IIC 接口读取 AT24C02 的数据通过串口发送给 PC,这样我们就可以通过串口调试助手查看读到的数据与写入的数据是否一致来调试IIC 控制命令产生模块:负责发送控制命令如连续读、随机读、字节写及页写等给IIC 发送与接收模块,该模块不与 AT24C02 直接打交道IIC 发送与接收模块:根据接收到IIC 控制命令产生模块发送的控制命令来操作AT24C02,该模块与 AT24C02 直接打交道。
3.5 按键模块设计K1复位键:按下复位键所有模块进入复位状态E2PROM AT24C02不清零K2 上翻页:查询上一个计数周期的采集值K3 下翻页:查询下一个计数周期的采集值以下是按键和复位电路图 图3-10 按键图 图3-11 复位图四、 软件设计4.1 Quartus II软件介绍Quartus II 是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多。
