《基于FPGA的电压测量系统设计(共51页).doc》由会员分享,可在线阅读,更多相关《基于FPGA的电压测量系统设计(共51页).doc(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上基于FPGA的电压测量系统设计学 院:专 业 班:姓 名:学 号:指导教师: 年 月专心-专注-专业基于FPGA的电压测量系统设计Design of acquisition digital voltage based on FPGA摘 要 伴随着集成电路(IC)技术的发展,电子设计自动化(EDA)逐渐成为重要的设计手段,已经广泛应用于模拟与数字电路系统等许多领域。目前电子技术的发展主要体现在EDA领域,数字系统的设计正朝着速度快、容量大、体积小、重量轻的方向发展。电子设计自动化是近几年迅速发展起来的将计算机软件、硬件、微电子技术交叉运用的现代电子设计学科。其中EDA设
2、计语言的VHDL语言是一种快速的电路设计工具,功能涵盖了电路描述、电路合成、电路仿真等三大电路设计工作。本电压表的电路设计正是用VHDL语言完成的。此次设计主要应用的软件是美国ALTERA公司自行设计的一种软件工具,即MAX+PLUS。本次设计的电压表测量范围是05V,精度为0.01V。此电压表的设计特点为:通过软件编程下载到硬件实现,设计周期短,开发效率高。关键词:电子设计自动化(EDA) FPGA VHDL A/D采集 数字电压表AbstractThe Electronic Design Automation(EDA) technology has become an important
3、design method of analog and digital circuit system as the intergrated circuits growing.The development of the current electronic technology is incarnated the EDA realm.The design of digital system is becoming faster,bulkier,smaller and lighter than before.Electronic design automation developed quick
4、ly in the last few years,it makes use of software,hardware,micro-electronics technology to form a course of electronic design.Among them,the VHDL language of EDA is a kind of tool of fast circuit design,the function covered the circuit describe,the circuit synthesize,the circuit imitate the true etc
5、.The circuit of the design that use VHDL language to complete.This time the design applied software MAX+PLUS primarily which is made by the United States ALTERA company.This systems range is 0v to +5v and precision is 0.01v.Characteristics of this electric voltage watch are:Pass the software program
6、 to download the hardware to realize,the design time is short,efficiency of the development is high.Key words: Electronic Design Automation(EDA) FPGA VHDL A/D Acquisition digital voltage目 录绪 论随着信息技术获得了突飞猛进的发展,信息技术渗透了我们生活的几乎全部领域,改变着人类的生存状态和思维模式。而我们的课题所涉及的电子设计自动化(EDA)技术就是在这种时代背景下产生的,并影响巨大。FPGA是新型的可编程逻
7、辑器件,与传统ASIC相比,具有设计开发周期短、设计制造成本低、开发工具先进等优点,特别适合于产品的样品开发和小批量生产。传统的数字电压表多以单片机为控制核心,芯片集成度不高,系统连线复杂,难以小型化,尤其在产品需求发生变化时,不得不重新布版、调试,增加了投资风险和成本。而采用FPGA进行产品开发,可以灵活地进行模块配置,大大缩短了开发周期,也有利于数字电压表向小型化、集成化的方向发展。数字电压表自从一九五二年问世以来,随着电子技术的飞跃发展,特别是目前,作为测量仪表、模拟指示仪表的数字化以及自动测量的系统,而得到了很大的发展。目前数字电压表的设计可以直接面向用户需要,根据仪器设备的行为和功能
8、要求自上而下地逐层完成相应的描述、综合、优化、仿真与验证,直到生成器件。所有的设计过程几乎可以用计算机来自动完成,也就是说做到了电子设计自动化(EDA)。电子设计自动化(EDA)的关键技术之一是要求用形式化方法来描述数字系统的硬件电路,即要求用所谓硬件描述语言来描述硬件电路。此技术是一种实现电子系统或电子产品自动化设计的技术,与电子技术、微电子技术的发展密切相关。EDA技术的每一次进步,都引起了设计层次上的一个飞跃。VHDL是硬件描述语言的一种,是IEEE公布的工业标准,对同一事物可以有很多种描述方法,对于数字集成电路而言,常见的方法有图形描述和语言描述两种。而硬件描述语言具有抽象层次高、更为
9、简洁的优点,更适合于描述大型电路。可以用任何一个文本编辑器编写VHDL代码,但是MAX+PLUS提供的文本编辑器给编写VHDL代码提供了许多方便,为此需要介绍该文本编辑器的某些特殊之处。(1) 利用VHDL语言设计的特点本次设计的数字电压表是基于FPGA芯片利用VHDL语言来编译的,它的主要功能是完成0v到5v的电压量程,要求误差在5以内。本次设计主要应用的是VHDL语言,因为其具备以下优点。设计技术齐全、方法灵活、支持广泛VHDL语言可以支持自上而下(Top Down)和基于库的设计方法,而且还支持同步电路、异步电路、FPGA以及其他随机电路的设计。其范围之广是其他HDL语言所不能比拟的。例
10、如,SFL语言和UDL/I语言,它们只能描述同步电路。另外,由于VHDL语言早在1987年12月已作为IEEE_STD_1076标准公布。因此,目前大多数EDA工具几乎在不同程度上都支持VHDL语言。这样给VHDL语言进一步推广和应用创造了良好的环境。系统硬件描述能力强如前所述,VHDL语言具有多层次描述系统硬件功能的能力,可以从系统的数字模型直到门级电路。另外,高层次的行为描述可以与低层次RTL描述和结构描述混合使用。VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后直接生成电路级描述。VHDL支持各种设计方法,既支持自底向
11、上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。支持大规模设计的分解和已有设计的再利用支持大规模设计的分解和已有设计的再利用,一个大规模的设计不可能由一个人独立完成,必须由多人共同承担,VHDL为设计的分解和已有设计的再利用提供了有力的支持。另外,VHDL语言还具有良好的可读性,即容易被计算机接受,也容易被读者理解,使用期长,不会因工艺变化而使描述过时,因为VHDL的硬件描述与工艺无关,当工艺改变时,只需修改相应程序中的属性参数即可。(2) 研究的目标和内容本课题主要研究数字电压表的一般设计原理,并结合新型的可编程器件(FPGA)设计了一种方便、实用的数字电压表。课题的具体
12、要求有:熟悉基于ADC0809数模转换电路的设计,熟悉FPGA的硬件接口和软件编程,熟悉VHDL程序设计和软件开发环境,设计数字电压测量系统的硬件和软件。采用ALTERA的一款FPGA芯片EP1K30TC144-3实现电压表的数码显示功能。设计中所要求设计的数字电压表为4位,由三大部分组成,每一部分又包含了若干子电路,将各电路组合起来,就构成了一个整体。以FPGA为核心设计一个数字电压表。将电压测量结果在LED上显示出来。被测电压可以是直流,也可以是交流。要求测量误差5,课显示三位有效值。所需完成的主要任务简介:完成基于ALTERA FPGA EP1K30TC144-3的数字电压计的硬件和软件
13、的设计,电压测量范围为05v,在设计中要熟悉ALTERA FPGA EP1K30TC144-3芯片的特点以及基于A/D转换器ADC0809采样电路的设计,熟悉基于VHDL硬件描述语言的软件的设计。硬件设计所需要的硬件主要有:ALTERA公司的EP1K30TC144-3芯片、ADC0809、七段显示器、实验箱。(3) 本课题的意义、国内外研究概况、应用前景等目前电子技术的发展主要体现在EDA领域,数字系统的设计正朝着速度快、容量大、体积小、重量轻的方向发展。电子设计自动化是近几年迅速发展起来的将计算机软件、硬件、微电子技术交叉运用的现代电子设计学科。其中EDA设计语言的VHDL语言是一种快速的电
14、路设计工具,功能涵盖了电路描述、电路合成、电路仿真等三大电路设计工作。本电压表的电路设计正是用VHDL语言完成的。在电子工程、通信工程、自动控制、遥测控制、测量仪器、仪表和计算机等技术领域,经常需要用到各种各样的电压表,随着科学技术的发展,数字电压表的应用也将更加广泛。在硬件描述语言的发展至今已有几十年的历史,并成功的应用到系统的仿真、验证和设计综合等方面。到本世纪80年代后期,已出现了上百种的硬件描述语言,它们对设计自动化起到了促进和推动作用。但是,它们大多数各自针对特定的设计领域,没有一个统一的标准,从而使一般用户难以使用。广大用户所期盼的是一种面向设计的多层次、多领域且得到一致认同的标准
15、的硬件语言。80年代后期由美国国防部开发研究的VHDL语言恰好满足了上述的要求,并在1987年12月由IEEE标准化。它的出现为电子设计自动化(EDA)的普及和推广奠定了坚实的基础。根据1991年有关统计资料表明,VHDL语言已被广大设计者所接受,据称已有90的设计者使用或即将使用VHDL语言来设计数字系统。另外,众多CAD厂商也纷纷使自己新开发的电子实际软件与VHDL语言兼容。因此,必须采用先进的设计方法和大规模可编程逻辑器件加以实现才能适应这种发展趋势,CPLD/FPGA等大规模可编程逻辑器件的发展和EDA技术的成熟为此奠定了良好的软硬件基础。1 模拟数字转换器1.1 模数转换器将模拟信号
16、转换成数字信号的电路,称为模数转换器(简称A/D转换器或ADC,Analog to Digital Converter);将数字信号转换为模拟信号的电路称为数模转换器(简称D/A转换器或DAC,Digital to Analog Converter);A/D转换器和D/A转换器已成为计算机系统中不可或缺的接口电路。数模转换器,又称D/A转换器,简称DAC,它是把数字量转变成模拟的器件。D/A转换器基本上由4个部分组成,即权电阻网络、运算放大器、基准电源和模拟开关。模数转换器中一般都要用到数模转换器,模数转换器即A/D转换器,简称ADC,它是把连续的模拟信号转变为离散的数字信号的器件。为确保系统
17、处理结果的精确度,A/D转换器必须具有足够的转换精度:如果要实现快速变化信号的实时控制与检测,A/D转化器还要求具有较高的转换速度。转换精度与转换速度是衡量A/D转换器的重要技术指标。随着集成技术的发展,现已研制和生产出许多单片的和混合集成型的A/D转换器,它们具有愈来愈先进的技术指标。1.2 ADC0809工作原理1.2.1 芯片介绍这里采用的是ADC0809,是单片双列直插式集成芯片;总的不可调误差1 LSB;当模拟输入电压范围为05 V时,可使用单一的+5 V电源;温度范围-40+85;不需另加接口逻辑可直接与CPU连接;可以输入8路模拟信号;输出带锁存器;逻辑电平与TTL兼容。ADC0
18、809是CMOS的8位A/D转换器,片内有8路模拟开关,可控制8个模拟量中的一个进入转换器中。ADC0809的分辨率为8位,转换时间约100s,含锁存控制的8路多路开关,输出有三态缓冲器控制。1.2.2 工作原理在A/D转换器的内部,含有一个高阻抗斩波稳定比较器,一个带有模拟开关树组的256R分压器,以及一个逐次逼近的寄存器。8路的模拟开关由地址锁存器和译码器控制,可以在8个通道中任意访问一个单边的模拟信号。其工作框图如图1-1所示。图1-1 ADC0809工作框图该AD转换器无需调零和满量程调整。由于多路开关的地址输入能够进行锁存和译码,而且三态TTL输出也可以锁存,易于与微处理器进行接口。
19、 如图1-1所示,它由两大部分所组成:第一部分是8通道多路模拟开关,它用于控制C,B,A端子和地址锁存允许端子,可使其中一个通道被选中;第二部分为一个逐次逼近型AD转换器,它由比较器、控制逻辑、输出缓冲锁存器、逐次逼近寄存器以及开关树组和256R电阻分压器组成。后两种电路,即开关树和256R电阻分压器,组成了DA转换器。控制逻辑用来控制逐次逼近寄存器从高位到低位逐次取1,然后将此数字量送到开关树组,即8位开关,用来控制开关S7S0与参考电平相连接。参考电平经256R电阻分压器,输出一个模拟电压Uo,Uo,Ui在比较器中进行比较。当UoUi时,本位D=O;当UoUi时,则本位D=1。因此,从D7
20、D0比较8次即可逐次逼近寄存器中的数字量,即与模拟量Ui所相当于的数字量相等。此数字量送入输出锁存器,并同时发转换结束脉冲。START是转换启动信号,高电平有效;ALE是3位通道选择地址(ADDC,ADDB,ADDA)信号的锁存信号。当模拟量送至某一输入端,由3位地址信号进行选择,而地址信号由ALE锁存;EOC是档位转换的状态信号。EOC输出高电平时,表示转换结束;在EOC的上升沿后,若使能输出信号OE为高电平,则三态缓冲器打开,将转换完毕的8位数据结果输至数据总线,至此ADC0809的一次转换结束。各引脚功能如下:(1) IN7IN0模拟量输入通道。ADC0809对输入模拟量的要求主要有:信
21、号单极性,电压范围05V,若信号过小,还需进行放大。另外,模拟量输入在A/D转换的过程中,其值应保持不变,因此,对变化速度快的模拟输入量,在输入前应增加采样保持电路。(2) A、B、C地址线。A为低位地址,C为高位地址,用于对8路模拟通道进行选择,引脚图中相应为ADDA、ADDB和ADDC。由低至高电平的正跳变将通道地址锁存至地址锁存器中。(3) ALE地址锁存允许信号。由低至高电平的正跳变将通道地址锁存至地址锁存器中。(4) START启动转换信号。START上跳沿时,所有内部寄存器清0;START下跳沿时,开始进行A/D转换。在A/D转换期间,START应保持低电平。(5) D7D0数据输
22、出线。为三态缓冲输出形式,可以和单片机的数据线直接相连。(6) OE输出允许信号。用于控制三态输出锁存器向单片机上输出转换得到的数据。OE=0,输出数据线呈高电阻态;OE=1,输出转换得到的数据。(7) CLOCK时钟信号。ADC0809内部没有时钟电路,所需时钟信号由外界提供要求频率范围10KHZ1.2MHZ。通常使用频率为500KHZ的时钟信号。(8) EOC转换结束状态信号。EOC=0,正在进行转换;EOC=1,转换结束。该状态信号既可作为查询的状态标志,又可作为中断请求信号使用。(9) VCC+5V电源。(10) REF(+)、REF(-)参考电压。参考电压用来与输入的模拟信号进行比较
23、,作为逐次逼近的基准。其典型值为REF(+)=+5V,REF(-)=0V。ADC0809的引脚图如图1-2所示,工作时序如图1-3所示。图1-2 ADC0809引脚图图1-3 ADC0809时序图1.3 本章小结本章详细地阐述了模数转换器件ADC0809的功能。2 系统设计2.1 数字电压表的种类介绍DVM的种类有多种,分类方法也很多,又按位数分的,如3/2位、5位、8位;有按测量速度分的,如高速、低速;有按体积、重量分的,如袖珍式、便携式、台式。但通常是按A/D转换方式的不同将DVM分为两大类,一类是直接转换型,也称比较型;另一类是间接转换型,又称积分型,包括电压-时间变换。系统的核心电路由
24、FPGA完成,本设计选用ALTERA公司的EP1K30TC144-3芯片,用VHDL语言对它进行设计,实现三大功能模块:(1)控制模块,激活A/D转换器动作、接收A/D转换器传递过来的数字转换值;(2)数据处理模块,将接收到的转换值调整成对应的数字信号;(3)扫描、显示模块,产生数码管的片选信号,并将数值处理模块输出的BCD码译成相应的7段数码驱动值。工作时,系统按一定的速率采集输入的模拟电压,经ADC0809转换成8位数字量,此8位数字量经FPGA中的数据处理模块处理后得到模拟电压的数字码,再输入数码管获得被测电压的数字显示。2.2 数字仪表的发展趋势为了适应模数转换发展是要求,模数转换技术
25、也变得越来越复杂。模数转换技术是实现各种模拟信号通向数字世界的桥梁,作为将模拟信号转换成数字信号的模数转换技术主要有以下两种:2.2.1 积分型转换积分型模数转换技术在低速、高精度测量领域有着广泛的应用,特别是在数字仪表领域。积分型模数转换技术有单积分和双积分两种转换方式,单积分模数转换的工作原理是将被转换的电信号先变成一段时间间隔,然后再对时间间隔记数,从而间接把模拟量转换成数字量的一种模数转换方式,它的主要缺陷是转换精度不高,主要受到斜坡电压发生器、比较器精度以及时钟脉冲稳定型的影响。为了提高积分型转换器在同样条件下的转换精度,可采用双积分型转换方式,双积分型转换器通过对模拟输入信号的两次
26、积分,部分抵消了由于斜坡发生器所产生的误差,提高了转换精度。双积分型转换方式的特点表现在:精度较高,可以达到22位;抗干扰能力强,由于积分电容的作用,能够大幅抑制高频噪声。但是,它的转换速度太慢,转换精度随着转换速率的增加而降低,每秒100300次(SPS)对应的转换精度为12位。所以这种转换方式应用在低速高精度的转换领域。2.2.2 逐次逼近型转换逐次逼近型转换方式在当今的模数转换领域有着广泛的应用,它是按照二分搜索法的原理,类似于天平称物的一种模数转换过程。也就是将需要进行转换的模拟信号与已知的不同的参考电压进行多次比较,使转换后的数字量在数值上逐次逼近输入模拟量的对应值。逐次逼近型转换方
27、式的特点是:转换速度高,可以达到100万次/秒(MPSP);在低于12位分辨率的情况下,电路实现上较其他转换方式成本低;转换时间确定。但这种转换方式需要数模转换电路,由于高精度的数模转换电路需要较高的电阻和电容匹配网络,故精度不会很高。逐次逼近式AD转换器由逐次逼近寄存器、DA转换器、比较器和缓冲寄存器等组成。当启动信号由高电平变为低电平时,逐次逼近寄存器清零,这时,DA转换器输出电压V0也为0,当启动信号变为高电平时,转换开始,同时,逐次逼近寄存器进行计数。转换原理如图2-1所示。图2-1 逐次逼近式AD转换器原理逐次逼近寄存器工作时与普通计数器不同,它不是从低位向高位逐一进行计数和进位,而
28、是从最高位开始,通过设置试探值来进行计数。在第一个时钟脉冲到来时,控制电路把最高位送到逐次逼近寄存器,使它的输出为1000 0000,这个输出数字一出现,DA转换器的输出电压Vo就成为满量程值的128255。这时,若VoVi则作为比较器的运算放大器的输出就成为低电平,控制电路据此清除逐次逼近寄存器中的最高位;若VoVi则比较器输出高电平,控制电路使最高位的1保留下来。若最高位被保留下来,则逐次逼近寄存器的内容为1000 0000,下一个时钟脉冲使次低位D6为1。于是,逐次逼近寄存器的值为1100 0000,DA转换器的输出电压Vo到达满量程值的192255。此后,若VoVi则比较器输出为低电平
29、,从而使次高位域复位;若VoVi则比较器输出为高电平,从而保留次高位为1。重复上述过程,经过N次比较以后,逐次逼近寄存器中得到的值就是转换后的数值。转换结束后,控制电路送出一个低电平作为结束信号,此信号的下降沿将逐次逼近寄存器中的数字量送入缓冲寄存器,从而得到数字量输出。本设计利用ADC0809作为电压采样端口,FPGA作为系统的核心器件,用LED(发光二极管)进行数码显示。其系统原理图如图2-2所示。图2-2 系统原理采用ALTERA公司的EP1K30TC144-3芯片FPGA作为系统的核心器件,负责ADC0809的A/D转换的启动、地址锁存、输入通道选择、数据读取。同时,把读取的8位二进制
30、数据转换成便于输出的3位十进制BCD码送给数码管,以显示当前测量电压值。这些工作由ADC0809转换控制模块、数据转换模块、译码模块完成。FPGA软件模块原理如图2-3所示。图2-3 FPGA软件模拟设计原理2.3 系统原理及基本框图如图2-4所示,模拟电压经过档位切换到不同的分压电路衰减后,经隔离干扰送到A/D转换器进行A/D转换,然后送到FPGA中进行数据处理。处理后的数据送到数码管中显示,同时通过串行通讯与上位机通信。图2-4 基本框图2.4 VHDL语言简介VHDL语言描述能力强,覆盖面广,抽象能力强,所以用VHDL语言作为硬件模型建模很合适。设计者的原始描述是非常简练的硬件描述,经过
31、EDA工具综合处理,最终生成付诸生产的电路描述或版图参数描述的工艺文件。整个过程通过EDA工具自动完成,大大减轻了设计人员的工作强度,提高了设计质量,减少了出错机会。VHDL语言可读性好。VHDL既能被人容易读懂,又能被计算机识别,作为技术人员编写的源文件,它既是计算机程序,技术文档和技术人员硬件信息交流的文件,又是签约双方的合同文件。VHDL语言中的设计实体(design entity),程序包(package),设计库(library),为设计人员重复利用他人的设计提供了技术手段。重复利用他人的IP模块和软核(soft core)是VHDL的特色,许多设计不必个个都从头再来,而是只要在更高
32、层次上把IP模块利用起来,就能达到事半功倍的效果。一个完整的VHDL语言程序通常包含实体(Entity)、结构体(Architecture)、配置(Configuration)、包集合(Package)、库(Library)5个部分。前4种是可分别编译的源设计单元。实体用于描述所设计模块都能共享的数据类型、常数和子程序等。配置用于从库中选取所需单元来组成系统设计的不同版本;库存放已经编译的实体、构造体、包集合和配置。库可由用户生成或由ASIC芯片制造商提供,以便在设计中为大家所共享。2.5 FPGA的概念与特点FPGA是英文Field Programmable Gate Array的缩写,即现
33、场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。FPGA器件是基于可编程的查找表结构,LUT是可编程的最小逻辑构成单元,FPGA内由大量逻辑宏单元构成。通过配置,可以使这些逻辑宏单元形成不同的硬件结构,从而构成不同的电子系统,完成不同的功能。正是FPGA的这种硬件重构的灵活性,使得设计者能够讲硬件描述语言描述的电路在FPGA中实现。这样,同一块FPGA能实现许多完全不同的电路结构和功能。目前FPGA的品种很多,有XILINX的XC系列、Spartan系列、Virtex系列,ALTERA公司的FLEX系列、cyclone系列、ACEX系列、Stratix系列等
34、。Cyclone系列器件是ALTERA公司在2002年12月份推出的。Cyclone器件支持大量的片外数据传输的单端I/O标注和差分I/O技术。为满足设计者更快数据速率和信号传输能力的需要,Cyclone器件还没有高达311Mbps的低差分信令(LVDS)兼容通道。FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输入输出模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。FPGA的基本特点主要有:(1) 采用FPGA设计ASIC电路
35、,用户不需要投片生产,就能得到合用的芯片(2) FPGA可做其它全定制或半定制ASIC电路的中试样片(3) FPGA内部又丰富的触发器和I/O引脚(4) FPGA是ASIC电路设计周期最短、开发费用最低、风险最小的器件之一(5) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容FPGA是存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够
36、反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。FPGA有多种配置模式;并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。2.6 FPGA功能模块设计我们使用的FPGA是Altera公司的EP1K30TC144-3器件。数字电压表的三大模块都是用VHDL语言编程
37、实现的。FPGA设计可分为设计输入、综合、功能仿真(前仿真)、实现、时序仿真(后仿真)、配置下载等六个步骤,下面分别介绍各个设计步骤。2.6.1 控制模块用状态机作法,产生ADC0809的片选信号、读/写控制信号,通过状态信号INTR判断转换是否结束;转换结束后将转换数据锁存并输出。其状态转换图如图2-5所示。图2-5 控制模块转换图我们可以将整个控制器分成八个步骤状态:Idle,write,swait,read,disp1,disp2,disp3,disp4各状态的动作方式如表2-1:表2-1 各状态动作方式 状态CSWRRDidle111write101swait111read110dis
38、p1101disp2111disp3101disp4111由上述的八个状态可以归纳出整个控制器的动作功能有:负责在每个步骤送出所需的CS、WR、RD控制信号。当110时为wait等待,当111时为read读,当101时开始从ADC中读数。译码波形仿真图如图2-6所示。图2-6 译码波形仿真图2.6.2 数据处理模块ADC0809是8位模数转换器,它的输出状态共有28=256种。如果输入信号Vin为05V电压范围,则每两个状态值为5/(256-1),约为0.0196V,故测量分辨率为0.02V。常用测量范围是:当读取到DB7DB0,转换值是XXH时,电压测量值为UXXH0.02V。考虑到直接使用
39、乘法计算对应的电压值将耗用大量的FPGA内部组件,本设计用查表命令来得到正确的电压值。如表2-2所示。表2-2 对应电压表进制参考电压(Vref/2)为2.56v162高4为电压低4位电压000000.000.00100010.320.02200100.640.04810002.560.16910012.880.18E11104.480.28F11114.800.30由图2-4的对应关系,编一个查表程序,对电压进行BCD码编码,然后根据对应的4位BCD码相加的结果决定是否进位,从而得到待处理数据的BCD码。例如:从AD0809上取得的数据为“1101 1110”,1101对应的电压值为4.16
40、 V,其对应的BCD编码为“0100 0001 0110”,1110对应的电压值为0.28 V,其对应的BCD编码为“0000 0010 1000”。低4位相加为1110,大于9,加6将其调整为BCD码,其值为0100,并且向前有一进位。4位相加的结果为0011,由于低位有进位,因此最终结果为0100。高4位的结果为0100。3位合计的值为4.44 V,与4.16+0.28的结果相符。其他计算依此类推。在读取到ADC0809的转换数据后,先用查表指令算出高、低4位的连个电压值,并分别用16位BCD表示;接着设计16位的BCD码加法,如果每4位相加结果超过9需进行减10进1。这样得到模拟电压的B
41、CD码。Bed_add:=hbcd+lbcd;高、低4位的连个电压值BCD码相加If bed_add(3 downto 0)“1001” then Bed_add:=bed_add+“0110”;End if;If bed_add(7 downto 4)“1001” then Bed_add:=bed_add+“0110 0000”;End if;其程序见附录1。仿真图如图2-7所示。图2-7 D7-D0输出仿真波形图2.6.3 扫描、显示模块如图2-8所示,CLK是扫描时钟,其频率为100MHZ,由给定的20KHZ时钟分频得到;DATAIN是数据处理模块输出的电压值的BCD码;SEL是数码管
42、的片选信号;POINT是数码管小数点的驱动;通过扫描分别输出3位电压值的BCD码DATAOUT,并通过DISP将BCD码译成相应的7段数码驱动值,送数码管显示。扫描显示模块如图2-8所示,七段码显示器如图2-9所示。图2-8 扫描显示模块图2-9 七段码显示器其程序见附录2。Datout0-Datout11波形图如图2-10所示。图2-10 Datout0-Datout11波形图2.7 数字电压表接线说明 (1) 接线说明:EP1K30TC144-3上时钟CLK接100MHZ,RESET接K1,CS,RD,WR分别接0809的控制输入端,INT接0809的INT。D7-0接0809的D7-D0
43、(注意0809数据线标识反),DATDOUT接a-dp,SLE3-SLE0。0809的A0、A1、A2接d0-d2(置低),VREF+接VCC,VREF-接GND,CLK接MCU的ALE,IN0接模拟输出OUT。如图2-11所示。图2-11 系统原理图(3) 实验结果:转动电位器,数码管上显示当前电压值。2.8 本章小结本章简单的介绍了FPGA的主要特点、数字电压表的种类和发展趋势,并阐述了如何利用MAX+PLUS设计好数字电压表的控制模块,数据处理模块和扫描显示模块,以及数字电压表的连线说明,然后下载到实验开发系统上显示结果。3 数字电压表的软件设计与实现3.1 软件工具MAX+PLUS的简
44、介ALTERA公司推出的MAX+PLUS软件支持多种硬件描述语言,提供FPGA/CPLD的设计、仿真和烧写环境。MAX+PLUS界面友好(如图3-1所示)、使用便捷,具有原理图输入和文本输入两种输入手段,以及波形与EDIF等格式文件,并支持这些文件的任意混合设计。利用MAX+PLUS自身配置的逻辑综合及芯片编程等功能,可将涉及电路图或电路描述的程序变成基本的逻辑单元写入可编程芯片中,作为ASIC芯片。但是,由于软件是为可编程芯片设计的,因此它不支持系统行为级的描述和仿真,某些VHDL语言中的语句,如WAIT语句等将得不到支持,并且它也不能进行模拟电路的设计。因此,MAX+PLUS工具还需要不断
45、地改进和完善。图3-1 MAX+PLUS方便的使用界面3.2 MAX+PLUS的设计流程3.2.1 数字电压表的模块图当三大模块图的VHDL语言组合在一起就得到了数字电压表的VHDL程序,然后进行程序烧写,排线,就形成了数字电压表数字电压表的模块图如图3-2所示。图3-2 数字电压表的模块图3.2.2 ADCINT的VHDL文本输入法步骤:(1) 建立新文件。选择FileNew菜单项,在弹出的新建对话框中选择Text Editor file选项,单击OK按钮,进入文字编辑画面,输入源程序。如图3-3所示。图3-3 建立新文件(2) 输入以下程序,逻辑描述界面如图3-4所示。图3-4 逻辑描述界
46、面ADCINT工作情况如下:上电瞬间,FPGA初始化,ADD置成01,状态机处于第1个状态,此时ALE、START、OE、LOCK(数据锁存信号)均置0,初始化ADC0809。第1个上升沿到来时,状态机由状态1转换到状态2,ALE、START置1,OE、LOCK为0,此时地址锁存信号有效,由ALE将ADD的01状态锁存到地址锁存器并译码,选择IN1即通道1作为模拟信号输入端,同时STRAT信号有效,启动采样。第2个上升沿到来时,状态机由状态2转换到状态3,ALE、START返回到低电平,OE、LOCK继续为低电平,此时如果FPGA检测到ADC0809的EOC引脚由低电平变成高电平(A/D转换完成),则当时钟上升沿到来时,转换到状态3,否则继续保持在状态2,直到转换完成。由状态2转换到状态3后,OE置高电平,允许转换数据输出,其余信号状态保持不变。时钟上升沿再次到来时,状态机由状态3转换到状态4,LOCK置高电平,其余信号与状态3一样。当LOCK由低电平转换到高电平的瞬间,稳定的数据锁存到锁存器。上升沿再次到来,则状态机返回状态0。控制器在时钟信号控制下完成状态转换,实现对ADC0809的控制。ADCINT程序见附录3。(3) 保存。选择FileSave菜单项,在弹出的保存对话框