1、基于FPGA的数字温度计的设计郑州轻工业学院可编程数字系统课程设计 题 目: 基于FPGA的数字温度 计的设计 成 绩: 学生姓名: 专业班级: 学 号: 院 (系): 电子信息工程学院 指导教师: 完成时间: 年 月 日 基于FPGA的数字温度计的设计摘 要微型计算机的出现使现代的科学研究得到了质的飞跃,而EDA技术的出现则是给现代工业控制以及日常生活带来了极大的方便,大规模可编程逻辑器件FPGA以成本低、周期短、可靠性高等特点,给设计人员进行产品开发方面带来了诸多方便。本系统设计的数字温度表正是应用FPGA来实现数字温度表的各种相关功能。本文主要介绍采用EDA技术自上而下的设计思路,从硬件
2、和软件两个方面阐述了如何通过FPGA器件实现数字温度表系统功能,有效的克服了传统的数字温度计的缺点。基于FPGA在Quartus II 9.0软件下应用VHDL语言编写程序,采用ALTRA公司Cyclone系列的EP2C5T144芯片进行了计算机仿真,并给出了相应的仿真结果。此系统利用温度传感器AD590采集温度信号,产生的温度信号经过调零、放大处理后,利用A/D转换器ADC0804将模拟信号转换成数字信号,将数字信号送入EPF10K10LC84-4进行处理,最后送入显示电路,由数码管显示温度值。该温度表具有结构简单,抗干扰能力强,功耗小,可靠性高,速度快反应时间短等优点。关键词:数字温度表
3、CPLDFPGA 温度传感器 A/D转换器目 录摘要1.前言111背景介绍112 数字测温系统12. 系统描述221可编程逻辑器件FPGA222 FPGA结构原理与特点223温度传感器AD590的介绍324 A/D转换器ADC0804425硬件描述语言VHDL626数字开发工具Quartus627 Quartus开发系统的特点628 Quartus的设计流程73系统设计方案831数字温度表的工作原理832功能模块的设计8321测温模块8322温度信号处理模块9323模数转换模块10324进制转换模块13325动态扫描模块1433系统综合164系统的仿真分析及器件下载1741系统的仿真分析174
4、2系统的器件下载195. 结论20心得与体会21参考文献22附 录231. 前言11背景介绍检测是控制的基础和前提,而检测的精度必须高于控制的精确度,否则无从实现控制的精度要求。不仅如此,检测还涉及国计民生各个部门,可以说在所以科学技术领域无时不在进行检测。科学技术的发展和检测技术的发展是密切相关的。现代化的检测手段能达到的精度、灵敏度及测量范围等,在很大程度上决定了科学技术的发展水平。同时,科学技术的发展达到的水平越高,又为检测技术、传感器技术提供了新的前提手段。目前温度计技术的发展很快,从原始的玻璃管温度计发展到了现在的热电阻温度计、热电偶温度计、数字温度计、电子温度计等等。目前的温度计中
5、传感器是它的重要组成部分,它的精度灵敏度基本决定了温度计的精度、测量范围、控制范围和用途等。温度是一个非常重要的过程量,是工业生产中常见的工艺控制参数之一,它直接影响燃烧、化学反应、发酵、烘烤、煅烧、蒸馏、浓度、挤压成形、结晶以及空气流动等物理和化学过程。温度控制不好就可能引起生产安全,产品质量和产量等一系列问题,由此可知温度控制是生产自动化的重要任务。大规模可编程逻辑器件CPLD/FPGA,是一种整合性较高的逻辑元件。由于具有高整合性的特点,故利用它进行产品开发,不仅成本低、周期短、可靠性高,而且PCB面积及成本也会大大减少。本文介绍了一个以ALTERA公司可编程逻辑芯片EPF10K10LC
6、84-4为控制核心、附加一定外围电路组成的数字温度控制系统。介绍了数字温度表系统的组成及工作原理,简述了在EDA平台上用FPGA器件构成该控制系统的设计思想和实现过程。论述了数据采集模块、数据处理模块、BCD译码模块、动态扫描模块等的设计方法与技巧。12 数字测温系统温度的采集与测量被广泛应用在人们的日常生活中。在现今众多的测温系统中,测温元件常常选用热敏电阻、半导体测温二极管以及集成模拟温度传感器等器件,中间环节则由低通滤波、多路转换、信号放大、模数转换等部分组成。由于以上各类温度传感器及其它器件的互换性差,温漂和非线性误差较大,因此,整个测温系统的测量误差也随之增大;同时,由于中间环节较多
7、,系统抗干扰性能也不理想。本文介绍的是一种基于FPGA芯片控制的数字温度计,本温度计属于多功能温度计,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,能够及时检测温度变化以及温度变化,提供温度数据值,使人们对温度的变化做及时的调整。12. 系统描述21可编程逻辑器件FPGA可编程逻辑器件(Programmable Logic Device,PLD)是一类半定制的通用性器件,用户可以通过对PLD器件进行编程来实现所需的逻辑功能。与专用集成电路ASIC相比,PLD具有灵活性高、设计周期短、成本低、风险小等优势,因而得到了广泛应用,各项相关技术也迅速发展起来,PLD目前已经成为数字系统设
8、计的重要硬件基础。 PLD从20世纪70年代发展到现在,已经形成了许多类型的产品,其结构、工艺、集成度、速度等方面都在不断完善和提高。随着数字系统规模和复杂度的增长,许多简单PLD产品已经逐渐退出市场,目前使用最广泛的可编程逻辑器件有两类:现场可编程门阵列(Field Programmable Gate Array,FPGA)和复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)。 FPGA和CPLD的内部结构稍有不同,FPGA即现场可编程门阵列,其全称为FieldProgrammableGateArray。通常,FPGA中的寄存器资源比较丰富,适
9、合同步时序电路较多的数字系统;CPLD中组合逻辑资源比较丰富,适合组合电路较多的控制应用。在这两类可编程逻辑器件中,CPLD提供的逻辑资源较少,而FPGA提供了最高的逻辑密度、最丰富的特性和极高的性能,已经在通信、消费电子、医疗、工业和军事等各应用领域当中占据重要地位。因此,本文主要针对FPGA进行阐述。 FPGA是一类高集成度的可编程逻辑器件,起源于美国的Xillnx公司,该公司于1985年推出了世界上第一块FPGA芯片。在这二十年的发展过程中,FPGA的硬件体系结构和软件开发工具都在不断的完善,日趋成熟。从最初的1200个可用门,90年代时几十万个可用门,发展到目前数百万门至上千万门的单片
10、FPGA芯片,Xilinx、Altera等世界顶级厂商已经将FPGA器件的集成度提高到一个新的水平。FPGA结合了微电子技术、电路技术、EDA技术,使设计者可以集中精力进行所需逻辑功能的设计,缩短设计周期,提高设计质量。22 FPGA结构原理与特点前生产FPGA的公司主要有Xilinx、Altera、Actel、Lattice、QuickLogic等,生产的FPGA品种和型号繁多。尽管这些FPGA的具体结构和性能指标各有特色,但它们都有一个共同之处,即由逻辑功能块排成阵列,并由可编程的互连资源连接这些逻辑功能块,从而实现不同的设计。 典型的FPGA通常包含三类基本资源:可编程逻辑功能块、可编程
11、输入/输出块和可编程互连资源,基本结构如图1所示。可编程逻辑功能块是实现用户功能的基本单元,多个逻辑功能块通常规则地排成一个阵列结构,分布于整个芯片;可编程输入/输出块完成芯片内部逻辑与外部管脚之间的接口,围绕在逻辑单元阵列四周;可编程内部互连资源包括各2种长度的连线线段和一些可编程连接开关,它们将各个可编程逻辑块或输入/输出块连接起来,构成特定功能的电路。用户可以通过编程决定每个单元的功能以及它们的互连关系,从而实现所需的逻辑功能。不同厂家或不同型号的FPGA,在可编程逻辑块的内部结构、规模、内部互连的结构等方面经常存在较大的差异。 除了上述构成FPGA基本结构的三种资源以外,随着工艺的进步
12、和应用系统需求的发展,一般在FPGA中还可能包含以下可选资源:存储器资源(块RAM、分布式RAM);数字时钟管理单元(分频/倍频、数字延迟、时钟锁定);算数运算单元(高速硬件乘法器、乘加器);多电平标准兼容的I/O接口;高速串行I/O接口;特殊功能模块(以太网MAC等硬IP核);微处理器(PowerPC405等硬处理器IP核)。下面以Xilinx公司的Spartan-II系列以及Altera公司的Cyclone-II系列FPGA为例,介绍FPGA的一般结构。Xilinx公司的Spartan-II系列FPGA器件的基本结构主要包括5个可配置部分:(1)可配置逻辑块(Configurable Lo
13、gic Blocks,CLBs),用于实现大部分逻辑功能;(2)在CLBs的四周分布着可编程的输入输出块(Input/Output Blocks,IOBs),提供封装引脚与内部逻辑之间的连接接口;(3)丰富的多层互连结构的可编程连线(未画出);(4)片上的随机存取块状RAM(BLOCK RAM);(5)全数字式延迟锁相环(DLL)时钟控制块,与每个全局时钟输入缓冲器相连,该闭环系统确保时钟边沿到达内部触发器与其到达输入引脚同步,有效地消除时钟分配的延迟。Altera公司FPGA器件Cyclone-II系列的基本结构主要包括:(1)逻辑阵列,由多个逻辑阵列块(Logic Array Blocks
14、,LABs)排列而成,用于实现大部分逻辑功能;(2)在芯片四周分布着可编程的输入输出单元(Input/Output Elements,IOEs),提供封装引脚与内部逻辑之间的连接接口;(3)丰富的多层互连结构的可编程连线(未画出);(4)片上的随机存取块状RAM;(5)锁相环(PLL),用于时钟的锁定与同步、能够实现时钟的倍频和分频;(6)高速的硬件乘法器,有助于实现高性能的DSP功能。23温度传感器AD590的介绍1AD590电流输出型两端温度传感器,AD590是AD公司利用PN结构正向电流与温度的关系制成的电流输出型两端温度传感器(热敏器件)AD590是美国模拟器件公司生产的单片集成两端感
15、温电流源。它的主要特性如下:1、流过器件的电流(mA)等于器件所处环境的热力学温度(开尔文)度数,即:mA/K式中:流过器件(AD590)的电流,单位为mA;T热力学温度,单位为K。2、AD590的测温范围为-55+150。3、AD590的电源电压范围为4V30V。电源电压可在4V6V范围变化,电流变化31mA,相当于温度变化1K。AD590可以承受44V正向电压和20V反向电压,因而器件反接也不会被损坏。4、输出电阻为710MW。 5、精度高。AD590共有I、J、K、L、M五档,其中M档精度最高,在-55+150范围内,非线性误差为0.3。AD590温度感测器是一种已经IC化的温度感测器,
16、它会将温度转换为电流,在8051的各种课本中常看到它相当常用到。其规格如下:(1)、温度每增加1,它会增加1A输出电流。(2)、可量测范围-55至150。(3)、供应电压范围+4V至30V。AD590的输出电流值说明如下:其输出电流是以绝对温度零度(-273)为基准,每增加1,它会增加1A输出电流,因此在室温25时其输出电流Io=(273+25)=298A。Vo的值为Io乘上10K,以室温25而言,输出值为2.98V(10K298A)。量测Vo时,不可分出任何电流,否则量测值会不准。电路分析:AD590的输出电流I=(273+T)A(T为摄氏温度),因此量测的电压V为(273+T)A 10K=
17、 (2.73+T/100)V。为了将电压量测出来又需使输出电流I不分流出来我们使用电压追随器其输出电压V2等于输入电压V。由于一般电源供应较多零件之后电源是带杂讯的因此我们使用齐纳二极体作为稳压零件再利用可变电阻分压, 其输出电压V1需调整至2.73V。24 A/D转换器ADC0804工业生产过程中,被控参数,如液位、速度、温度、流量、压力等都是连续变化的量,称为模拟量,而微型计算机所能识别的数据只能是数字量。所以在把数据送入微型计算机之前,必须把模拟量转换成数字量,也就是我们所说的模数转换(A/D)。信号的输入端可以是传感器,也可以是转换器的输出,最后把经过模数转换的数字信号提供给FPGA器
18、件,以便进行信息处理。模数转换器与FPGA器件的接口框图如图2-2所示。A/D转换器FPGA数据总线控制总线图2-2 模数转换器与FPGA的接口框图4目前,模数转换的常用方法主要包括计数器式A/D转换,逐次逼近式A/D转换,双积分式A/D转换和V/F变换型A/D转换。在上述这些常用的转换方法中,逐次逼近式A/D转换具有较高的转换速度、转换程序固定和精度高的特点,适用于快速自动检测系统与多回路的快速数据采集系统,是目前应用较多的A/D转换器结构。其框图如图2-3所示。数字输出启动信号转换结束VXD/A逐次逼近寄存器控制逻辑W1 W2 比较器时钟模拟量输入VREFVC 图2-3 逐次逼近型A/D转
19、换器原理图其转换过程说明如下:当启动脉冲信号进入A/D转换器后,在时钟作用下,控制逻辑首先使N位逐次逼近寄存器的最高位置1(其余N-1位置0),经D/A转换成模拟量VC后,与输入的模拟量VX在比较器中比较,从而给出比较结果。当VX VC时,保留该位,否则清零。然后,再使DN-2位置1,与上一位DN-1一起被送入转换器,经D/A转换后的模拟量VC再次与模拟量VX进行比较。如此循环下去,直到最后一位D0比较完成为止。此时,N位寄存器中的数字量即为模拟量所对应的数字量。当A/D转换结束后,由控制逻辑发出一个转换结束信号,通知微型计算机转换已经结束,可以读取数据。在日常生活中,温度的变化范围不会太大,
20、本系统要求最小温度分辨率为1,即使温度变化范围为100,整个系统的温度采集点应为1002=200个,8位转换器分辨率为1/256,完全满足转换精度要求,所以本系统的模数转换采用的是8位逐次逼近式A/D转换器ADC0804。ADC0804是采用CMOS工艺制成的逐次逼近型转换芯片,具有8位分辨率,即分辨率为1/281/256,转换值介于0255之间。转换误差为1LSB,转换时间100s(fck=640kHz时),输入电压范围为05V,增加某些外部电路后,输入模拟电压可为5V。在该芯片的内部有输出数据锁存器,与计算机连接时,可以将转换电路的输出直接连接在CPU数据总线上,不需要再附加逻辑接口电路。
21、525硬件描述语言VHDLVHDL 2是Very High-Speed Integrated Cir-cuit Hardware Description Language的缩写,即超高速集成电路(VHSIC)硬件描述语言.它是一种面向设计的多领域、多层次的标准HDL语言, 已经在电子系统自动化设计中成为主要的硬件描述工具。如今在电子系统设计领域中,它已成为软件设计人员必须掌握的一种语言。VHDL具有多层次描述系统硬件功能的能力,支持自顶向下(ToptoDown)和基于库(LibraryBased)的设计的特点,因此设计者可以不必了解硬件结构。,设计时,首先从系统级功能设计开始,对系统高层模块进
22、行行为描述和功能验证,. 这样,可以在系统细节设计之前及早发现问题修改问题,大大提高设计效率。系统的功能和结构进行验证后,就可以自顶而下逐级进行设计的细化,电路结构清楚的模块可以采用结构描述;而不确定使用什么电路结构的模块可以采用行为描述。然后在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,下载到具体的FPGA器件中去,从而实现可编程的专用集成电路的设计。VHDL的基本结构包括实体、结构体、配置、程序包、数据库3。VHDL语言的描述对象称为实体(ENTI-TY), 实体是VHDL的描述对象,用来描述一个设计对外部的接口信号、端口数目、端口的方向和数据类型等,还包括一些
23、其它的信息,如属性等;结构体描述其内部的具体细节,如实体的硬件结构、元件之间的互连关系、实体所完成的逻辑功能以及数据的传输变换等;配置语句的作用是根据设计者的不同需要,对同一个实体而给出的不同结构体的描述;程序包是用来定义常用的公用数据类型、常量、子程序等;设计库用于存放编译过的设计单元(包括实体说明、结构体、配置说明、程序包等)。以上五部分构成了一个完整的VHDL程序。26数字开发工具QuartusQuartus4是美国Altere公司自行设计的一种CAE软件工具,其全称为Multiple Array Matrix and Programmable Logic User Systems。它支
24、持Altera公司不同结构的可编程逻辑器件,为用户开发、使用该公司生产的FPGA器件提供一个基于计算机的软件开发与操作平台。27 Quartus开发系统的特点多平台系统。Quartus的设计输入、处理与校验功能一起提供了全集成化的可编程开发工具,可以加快动态调试,缩短开发周期。开放的界面。Quartus可与其他工业标准的设计输入、综合和校验工具链接,具有EDIF,VHDL和VerilogHDL等网表接口,便于与许多公司的EDA工具接口。模块组合式工具软件。Quartus具有一个完整的可编程逻辑设计环境,包括设计输入、设计处理、设计校验仿真和下载编程4个模块,程序设计人员可以按照设计的需要选择不
25、同的工作模块。6与结构无关。Quartus系统的核心Complier支持Altera公司的FLEX10K、FLEX8000、FLEX6000、MAX9000、MAX7000、MAX5000和Classic可编程逻辑器件系列,提供了世界上唯一真正与结构无关的可编程逻辑设计环境。硬件描述语言。Quartus软件支持各种HDL设计输入语言,包括VHDL、Verilog HDL和Altera自己的硬件描述语言AHDL等。28 Quartus的设计流程可编程逻辑器件的设计FPGA的设计是指利用软件开发、编程工具对器件进行开发的过程。Quartus的设计流程,包括设计准备、设计输入、设计处理(项目编译)、
26、仿真和定时分析、器件编程下载4个步骤,如图2-4所示。设计修改设计输入项目编译仿真和定时分析完成编程下载设计准备图2-4 Quartus设计流程73系统设计方案31数字温度表的工作原理本设计主要是利用温度传感器把温度信号转换成电信号5,然后经过模数转换器送入FPGA中进行处理,最后通过数码管显示出来。数字温度表的结构主要包括:FPGA控制核心、复位电路、AD590测温电路、ADC模数转换电路、4位温度数据显示电路以及外围电源等组成。32功能模块的设计通过深入研究了该数字温度表所要实现的功能后,从而形成了整个系统设计的基本组成框图,如图3-1所示。FPGA温度显示电路AD590测温电路模数转换器
27、ADC0804图3-1 系统组成框图通过对系统基本原理图的分析后,可以把系统分为测温模块、温度信号处理模块、模数转换模块、进制转换模块、动态扫描模块五个模块分别进行设计,从而实现此次设计的数字温度表的核心系统。以下将对各模块分别进行详细的阐述。321测温模块测温模块即数据采集模块6,本次设计主要应用美国模拟器件公司生产的AD590。AD590是电流型温度传感器,当作为电流输出元件时,等同于一个恒流源,温度每升高1K,电流就增加1A。设计测温模块时,由于输出电流比较小,且模数转换器要求输入是电压信号,因此在AD590输出端串接一个10KW的恒值电阻,把电流信号转换成电压信号,那么,此电阻上流过的
28、电压将和被测温度成正比,此时温度每变化1,电压变化10mV。如图3-2所示。8图3-2 温度采集电路我们知道AD590的温度感测能力是,温度每升高1K就增加1uA的电流量,而AD590输出电流是以绝对温度零度(-273)为基准的,即0时等于273uA,则该系统电流量流入10K后,将会产生273u10K2.73V的电压。322温度信号处理模块 由AD590所采集到的信号并不能满足实际的需要,还要进行进一步的处理才能输入到ADC0804中进行模数转换,这里运用运算放大器RC4558P进行放大。RC4558P是8脚双通道运算放大器7,内部包好两组形式完全形同的运算放大器,两组运算放大器相互独立,公用
29、一组电源。每组运算放大器的表示如图3-3所示,包括5个引脚,其中“V+”、“V-”为正、负电源端,“Vo”为输出端。Vi+(+)为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同;Vi-(-)为反相输入端,表示运放输出端Vo的信号与该输入端的位相反。RC4558P的引脚排列图如图3-4所示。图3-3 运算放大器 图3-4 引脚排列图对AD590采集到的信号进行处理的电路连接如图3-5所示。9图3-5 AD590与ADC0804连接图323模数转换模块ADC0804在该设计中起到数据的模数转换以及数据锁存的作用。ADC0804与FPGA的模块电路如图3-6所示。10图3-6 ADC080
30、4与FPGA的连接模块图ADC0804是属于逐次逼近式的模数转换器。根据图3-6 ADC0804与FPGA的连接和图3-7 ADC0804的控制信号时序图的信号流向可知,只有CS,WR,RD控制着ADC0804动作的信号。当INTR由高电平(1)转为低电平(0)后,ADC0804这次的模数转换完成,DB0-DB7就是转换后的数字资料。ADC0804的控制信号时序如图3-7所示。图3-7 ADC0804的控制信号时序图如果将图3-7的动作分为S0,S1,S2,S3四个步骤区间的话,那么每个步骤区间的动作方式分析如下:S0:CS=0,WR=0,RD=1(由FPGA发出信号要求ADC0804开始进行
31、数据的模数转换);S1:CS=1,WR=1,RD=1(ADC0804开始转换动作,转换完毕后INTR由高电位转为低电位,转换时间100S)。S2:CS=0,WR=1,RD=0(由FPGA发出信号以读取ADC0804的转换资料)。S3:CS=1,WR=1,RD=1(由FPGA读取DB0-DB7上的转换资料)。根据控制时序图利用有限状态机实现模数转换的控制。状态机分成4个状态:S0启动转换(CS=0,RD=0);S1等待转换结束,即等待INTR由低电平变为高电平;S2 A/D转换结果输出;S3停止A/D。由于FPGA所能读取的是VHDL语言,所以应用VHDL语言描述有限状态机的设计,其进程如图3-
32、8所示。COM组合进程以INTR和上升状态为敏感信号,当INTR由低电平转变为高电平时对现状态进行判断,通过改变CS和RD的状态完成对ADC0804的控制。REG时序进程以CLK为敏感信号,在CLK的上升沿将上升状态转换到下降状态。LATCH进程以LOCK为敏感信号,在LOCK的上升沿锁存ADC0804的输出值。11如图3-8 状态机进程图实验程序开始之前,A/D转换器处于重启状态即RST=1,以使A/D转换器处于初始状态,当RST=0时A/D转换器进入S0状态。核心程序如下:StateChange:Block -Signal GeneratorBegin PROCESS(CP,RST) BE
33、GIN IF RST=1Then -Reset State nCS=1; nWR=1; nRD=1; EC=0; State nCS=0; nWR=0; nRD=1; EC=0; State nCS=1; nWR=1; nRD=1; EC=0; if nIN=0then State nCS=0; nWR=1; nRD=0; EC=1; State nCS=1; nWR=1; nRD=1; EC=0; State State=S0;324进制转换模块通过模数转换模8块处理后被送入FPGA器件中的数据均为二进制的数字量, 如果要想通过数码管显示所测温度的值,我们必须把二进制数字量转化为十进制的数字
34、量。这样13才能通过动态扫描模块和数码显示模块,从而将所测温度的值在8位七段数码管上准确的显示出来。VHDL核心程序如下:Conversion:Block Signal V:Std_Logic_Vector(8 downto 0); -A/D Conversion Data Signal T:Std_Logic_Vector(7 downto 0); Begin V=(D & 0) -100010001; -(2) T=V(7 downto 0); -(3) Temp=T; -(4) Value = 000000000000 When T = 0 Else 000000000001 When
35、T = 1 Else 000000000010 When T = 2 Else 000000000011 When T = 3 Else 000010011000 When T = 98 Else 000010011001 When T = 99 Else 000100000000; - 100End Block Conversion;其中,程序(2)将读取到的ADC0804的数字转换值乘以2的用意是将该位左移一位,然后减去273(100010001)2。由于所测温度范围0100,它们的十六进制是064H,只要较低的8位就可以表示了,而且通过减去273之后,最高位一定是0。所以,在程序(3)只
36、取后面的8位。在程序(4)模块中利用的是查表的方法,把相减的结果,转换成对应的12位BCD码,供以后的7段显示器扫描电路使用。325动态扫描模块动态扫描9就是利用人眼视觉暂留的现象,只要扫描信号频率大于或者等于24 Hz时,人眼就不会感觉到显示器的闪烁。该设计系统24Hz的扫描脉冲由相应的外围电路提供。在本设计中采用八进制计数器提供同步脉冲,因为动态扫描电路设计的位选信号必须要与显示的数据在时序上一一对应,这就要求电路中必须提供同步脉冲信号。显示电路的作用是完成BCD码到7段显示器段码的译码,然后传送到显示器。在此要求3个显示器轮流点亮,由于要求扫描显示的速度必须与数据选择器同步,所以需要一个
37、计数器提供二者的扫描信号。应用VHDL语言设计的显示电路如图3-9所示,主要包括数据选择器、BCD译码电路、可逆计数器、扫描译码4个部分。14图3-9 显示电路的结构数据选择器和扫描译码电路的核心VHDL程序如下:Free_Counter:Block Signal Q :STD_LOGIC_VECTOR(15 DOWNTO 0);BeginPROCESS(CP)Begin IF CPEvent AND CP=1then Q=Q+1; END IF; END PROCESS;ST=Q(15 DOWNTO 14); SELOUT=010WHEN ST=0 ELSE 001WHEN ST=1 ELS
38、E 000WHEN ST=2 ELSE 111;SEL=110WHEN ST=0 ELSE 101WHEN ST=1 ELSE 011WHEN ST=2 ELSE 111;END Block Free_Counter;SELECT_BCD:BlockBEGIN NUM= VALUE(3 DOWNTO 0)WHEN ST=0 ELSE VALUE(7 DOWNTO 4)WHEN ST=1 ELSE15 VALUE(11 DOWNTO 8);End Block SELECT_BCD;在上述程序中, ST是可逆计数器的计数值(范围02);VALUE是数据缓存器(包含3组BCD码)。两部分电路的驱动基
39、于同一个计数值,工作时是完全同步的。33系统综合将以上各模块加以综合,可以得出该数字温度表整体,清晰的设计思路如下:AD590传感器在加5V电压时产生电流,此电流通过10K电阻接地,在其电阻两端产生一个电压,经过放大器4558放大后,模拟信号送入ADC0804中进行A/D转换,由CPLD控制信号控制ADC0804转换后将数字信号输入FPGA芯片中,经过S0(启动转换CS=0,RD=0,WR0);S1(等待转换结束,即等待INTR由低电平变为高电平);S2 (A/D转换结果输出);S3(停止A/D)四个状态后,FPGA运算读取的二进制数值计算出十进制数值,控制系统编码ST分段显示出所测量的数字温
40、度值,从而读取测量温度值。该数字温度测量系统的整体电路原理图如图3-10所示。图3-10 数字温度测量系统原理图164系统的仿真分析及器件下载1041系统的仿真分析该数字温度测量系统采用的编译软件为:ALTERA公司的Quartus。将上述五个设计模块的程序综合成的总程序经过Quartus软件编译以后,得到的总模块图如图4-1所示。图4-1 系统总程序模块图系统的程序编译好后,通过Quartus软件的波形编辑器(aveform Editor)进行波形仿真,通过仿真可以检验设计的逻辑关系是否准确,而且能够更清楚的看到结果,在这里先将数字温控系统的显示译码电路省略,直接仿真A/D转换器输出的结果,
41、连接编译完成后,进行波形仿真,波形图如图4-2所示。17图4-2 A/D转换器的控制状态波形图由图4-2可以看出,当CP处于第二个上升沿时,由S0状态进入S1状态;当CP处于第三个上升沿时,由S1状态进入S2状态;当CP处于第四个上升沿时,由S2状态进入S3状态;当CP处于第五个上升沿时,由S3状态返回S0状态,符合系统设计要求。将数字温控系统的显示译码部分去掉,直接显示FPGA输出的结果,连接编译完成后,进行波形仿真,波形图如图4-3所示。图4-3 FPGA的二进制输出仿真图图4-3中Din的二进制值即为A/D转换器数字信号的输出量,将此值带入公式中取低八位数据可得:T(10100100)2(100010001)(00110111),换算成十进制数据为55;Value即为十进制查表后所赋予的值,(000001010101)在七段显示器上显示的值为18055,即温度为55;可以看到计算后结果一致,且与设计理念相符,至此波形仿真成功。42系统的器件下载系统所使用的芯片为Altera公司的FLEX10K系列11