毕业设计(论文)基于FPGA的电压测量系统设计_第1页
毕业设计(论文)基于FPGA的电压测量系统设计_第2页
毕业设计(论文)基于FPGA的电压测量系统设计_第3页
毕业设计(论文)基于FPGA的电压测量系统设计_第4页
毕业设计(论文)基于FPGA的电压测量系统设计_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于fpga的电压测量系统设计学 院:专 业 班:姓 名:学 号:指导教师: 年 月基于fpga的电压测量系统设计design of acquisition digital voltage based on fpga摘 要 伴随着集成电路(ic)技术的发展,电子设计自动化(eda)逐渐成为重要的设计手段,已经广泛应用于模拟与数字电路系统等许多领域。目前电子技术的发展主要体现在eda领域,数字系统的设计正朝着速度快、容量大、体积小、重量轻的方向发展。电子设计自动化是近几年迅速发展起来的将计算机软件、硬件、微电子技术交叉运用的现代电子设计学科。其中eda设计语言的vhdl语言是一种快速的电路设计工

2、具,功能涵盖了电路描述、电路合成、电路仿真等三大电路设计工作。本电压表的电路设计正是用vhdl语言完成的。此次设计主要应用的软件是美国altera公司自行设计的一种软件工具,即max+plus。本次设计的电压表测量范围是05v,精度为0.01v。此电压表的设计特点为:通过软件编程下载到硬件实现,设计周期短,开发效率高。关键词:电子设计自动化(eda) fpga vhdl a/d采集 数字电压表abstractthe electronic design automation(eda) technology has become an important design method of anal

3、og 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 quickly in the last few ye

4、ars,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.the circuit of the d

5、esign 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 to download the hard

6、ware 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目 录摘 要iabstractii绪 论11 模拟数字转换器51.1 模数转换器51.2 adc0809工作原理51.2.1 芯片介绍51.2.2 工作原理52 系统设计92.1 数字电压表的种类介绍92.2数字仪表的发展趋势92.2.1 积分型转换积分型92.2.2

7、逐次逼近型转换102.3 系统原理及基本框图122.4 vhdl语言简介122.5 fpga的概念与特点132.6 fpga功能模块设计142.6.1控制模块142.6.2数据处理模块152.6.3 扫描、显示模块172.7 数字电压表接线说明182.8 本章小结193 数字电压表的软件设计与实现203.1 软件工具max+plus的简介203.2 max+plus的设计流程203.2.1 数字电压表的模块图203.2.2 adcint的vhdl文本输入法步骤213.2.3 cnt10b的vhdl文本输入法步骤273.2.4 ram8b的vhdl文本输入法步骤283.3 本章小结28结论30致

8、谢31参考文献32附录1模拟电压的bcd值程序33附录2扫描、显示模块程序35附录3adcint程序37附录4cnt10b程序41附录5ram8b程序43绪 论随着信息技术获得了突飞猛进的发展,信息技术渗透了我们生活的几乎全部领域,改变着人类的生存状态和思维模式。而我们的课题所涉及的电子设计自动化(eda)技术就是在这种时代背景下产生的,并影响巨大。fpga是新型的可编程逻辑器件,与传统asic相比,具有设计开发周期短、设计制造成本低、开发工具先进等优点,特别适合于产品的样品开发和小批量生产。传统的数字电压表多以单片机为控制核心,芯片集成度不高,系统连线复杂,难以小型化,尤其在产品需求发生变化

9、时,不得不重新布版、调试,增加了投资风险和成本。而采用fpga进行产品开发,可以灵活地进行模块配置,大大缩短了开发周期,也有利于数字电压表向小型化、集成化的方向发展。数字电压表自从一九五二年问世以来,随着电子技术的飞跃发展,特别是目前,作为测量仪表、模拟指示仪表的数字化以及自动测量的系统,而得到了很大的发展。目前数字电压表的设计可以直接面向用户需要,根据仪器设备的行为和功能要求自上而下地逐层完成相应的描述、综合、优化、仿真与验证,直到生成器件。所有的设计过程几乎可以用计算机来自动完成,也就是说做到了电子设计自动化(eda)。电子设计自动化(eda)的关键技术之一是要求用形式化方法来描述数字系统

10、的硬件电路,即要求用所谓硬件描述语言来描述硬件电路。此技术是一种实现电子系统或电子产品自动化设计的技术,与电子技术、微电子技术的发展密切相关。eda技术的每一次进步,都引起了设计层次上的一个飞跃。vhdl是硬件描述语言的一种,是ieee公布的工业标准,对同一事物可以有很多种描述方法,对于数字集成电路而言,常见的方法有图形描述和语言描述两种。而硬件描述语言具有抽象层次高、更为简洁的优点,更适合于描述大型电路。可以用任何一个文本编辑器编写vhdl代码,但是max+plus提供的文本编辑器给编写vhdl代码提供了许多方便,为此需要介绍该文本编辑器的某些特殊之处。(1) 利用vhdl语言设计的特点本次

11、设计的数字电压表是基于fpga芯片利用vhdl语言来编译的,它的主要功能是完成0v到5v的电压量程,要求误差在5以内。本次设计主要应用的是vhdl语言,因为其具备以下优点。设计技术齐全、方法灵活、支持广泛vhdl语言可以支持自上而下(top down)和基于库的设计方法,而且还支持同步电路、异步电路、fpga以及其他随机电路的设计。其范围之广是其他hdl语言所不能比拟的。例如,sfl语言和udl/i语言,它们只能描述同步电路。另外,由于vhdl语言早在1987年12月已作为ieee_std_1076标准公布。因此,目前大多数eda工具几乎在不同程度上都支持vhdl语言。这样给vhdl语言进一步

12、推广和应用创造了良好的环境。系统硬件描述能力强如前所述,vhdl语言具有多层次描述系统硬件功能的能力,可以从系统的数字模型直到门级电路。另外,高层次的行为描述可以与低层次rtl描述和结构描述混合使用。vhdl具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后直接生成电路级描述。vhdl支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。支持大规模设计的分解和已有设计的再利用支持大规模设计的分解和已有设计的再利用,一个大规模的设计不可能由一个人独立完成,必须由多人共同承担,vhdl为设计的分

13、解和已有设计的再利用提供了有力的支持。另外,vhdl语言还具有良好的可读性,即容易被计算机接受,也容易被读者理解,使用期长,不会因工艺变化而使描述过时,因为vhdl的硬件描述与工艺无关,当工艺改变时,只需修改相应程序中的属性参数即可。(2) 研究的目标和内容本课题主要研究数字电压表的一般设计原理,并结合新型的可编程器件(fpga)设计了一种方便、实用的数字电压表。课题的具体要求有:熟悉基于adc0809数模转换电路的设计,熟悉fpga的硬件接口和软件编程,熟悉vhdl程序设计和软件开发环境,设计数字电压测量系统的硬件和软件。采用altera的一款fpga芯片ep1k30tc144-3实现电压表

14、的数码显示功能。设计中所要求设计的数字电压表为4位,由三大部分组成,每一部分又包含了若干子电路,将各电路组合起来,就构成了一个整体。以fpga为核心设计一个数字电压表。将电压测量结果在led上显示出来。被测电压可以是直流,也可以是交流。要求测量误差5,课显示三位有效值。所需完成的主要任务简介:完成基于altera fpga ep1k30tc144-3的数字电压计的硬件和软件的设计,电压测量范围为05v,在设计中要熟悉altera fpga ep1k30tc144-3芯片的特点以及基于a/d转换器adc0809采样电路的设计,熟悉基于vhdl硬件描述语言的软件的设计。硬件设计所需要的硬件主要有:

15、altera公司的ep1k30tc144-3芯片、adc0809、七段显示器、实验箱。(3) 本课题的意义、国内外研究概况、应用前景等目前电子技术的发展主要体现在eda领域,数字系统的设计正朝着速度快、容量大、体积小、重量轻的方向发展。电子设计自动化是近几年迅速发展起来的将计算机软件、硬件、微电子技术交叉运用的现代电子设计学科。其中eda设计语言的vhdl语言是一种快速的电路设计工具,功能涵盖了电路描述、电路合成、电路仿真等三大电路设计工作。本电压表的电路设计正是用vhdl语言完成的。在电子工程、通信工程、自动控制、遥测控制、测量仪器、仪表和计算机等技术领域,经常需要用到各种各样的电压表,随着

16、科学技术的发展,数字电压表的应用也将更加广泛。在硬件描述语言的发展至今已有几十年的历史,并成功的应用到系统的仿真、验证和设计综合等方面。到本世纪80年代后期,已出现了上百种的硬件描述语言,它们对设计自动化起到了促进和推动作用。但是,它们大多数各自针对特定的设计领域,没有一个统一的标准,从而使一般用户难以使用。广大用户所期盼的是一种面向设计的多层次、多领域且得到一致认同的标准的硬件语言。80年代后期由美国国防部开发研究的vhdl语言恰好满足了上述的要求,并在1987年12月由ieee标准化。它的出现为电子设计自动化(eda)的普及和推广奠定了坚实的基础。根据1991年有关统计资料表明,vhdl语

17、言已被广大设计者所接受,据称已有90的设计者使用或即将使用vhdl语言来设计数字系统。另外,众多cad厂商也纷纷使自己新开发的电子实际软件与vhdl语言兼容。因此,必须采用先进的设计方法和大规模可编程逻辑器件加以实现才能适应这种发展趋势,cpld/fpga等大规模可编程逻辑器件的发展和eda技术的成熟为此奠定了良好的软硬件基础。1 模拟数字转换器1.1 模数转换器将模拟信号转换成数字信号的电路,称为模数转换器(简称a/d转换器或adc,analog to digital converter);将数字信号转换为模拟信号的电路称为数模转换器(简称d/a转换器或dac,digital to anal

18、og converter);a/d转换器和d/a转换器已成为计算机系统中不可或缺的接口电路。数模转换器,又称d/a转换器,简称dac,它是把数字量转变成模拟的器件。d/a转换器基本上由4个部分组成,即权电阻网络、运算放大器、基准电源和模拟开关。模数转换器中一般都要用到数模转换器,模数转换器即a/d转换器,简称adc,它是把连续的模拟信号转变为离散的数字信号的器件。为确保系统处理结果的精确度,a/d转换器必须具有足够的转换精度:如果要实现快速变化信号的实时控制与检测,a/d转化器还要求具有较高的转换速度。转换精度与转换速度是衡量a/d转换器的重要技术指标。随着集成技术的发展,现已研制和生产出许多

19、单片的和混合集成型的a/d转换器,它们具有愈来愈先进的技术指标。1.2 adc0809工作原理1.2.1 芯片介绍这里采用的是adc0809,是单片双列直插式集成芯片;总的不可调误差1 lsb;当模拟输入电压范围为05 v时,可使用单一的+5 v电源;温度范围-40+85;不需另加接口逻辑可直接与cpu连接;可以输入8路模拟信号;输出带锁存器;逻辑电平与ttl兼容。adc0809是cmos的8位a/d转换器,片内有8路模拟开关,可控制8个模拟量中的一个进入转换器中。adc0809的分辨率为8位,转换时间约100s,含锁存控制的8路多路开关,输出有三态缓冲器控制。1.2.2 工作原理在a/d转换

20、器的内部,含有一个高阻抗斩波稳定比较器,一个带有模拟开关树组的256r分压器,以及一个逐次逼近的寄存器。8路的模拟开关由地址锁存器和译码器控制,可以在8个通道中任意访问一个单边的模拟信号。其工作框图如图1-1所示。图1-1 adc0809工作框图该ad转换器无需调零和满量程调整。由于多路开关的地址输入能够进行锁存和译码,而且三态ttl输出也可以锁存,易于与微处理器进行接口。 如图1-1所示,它由两大部分所组成:第一部分是8通道多路模拟开关,它用于控制c,b,a端子和地址锁存允许端子,可使其中一个通道被选中;第二部分为一个逐次逼近型ad转换器,它由比较器、控制逻辑、输出缓冲锁存器、逐次逼近寄存器

21、以及开关树组和256r电阻分压器组成。后两种电路,即开关树和256r电阻分压器,组成了da转换器。控制逻辑用来控制逐次逼近寄存器从高位到低位逐次取1,然后将此数字量送到开关树组,即8位开关,用来控制开关s7s0与参考电平相连接。参考电平经256r电阻分压器,输出一个模拟电压uo,uo,ui在比较器中进行比较。当uoui时,本位d=o;当uoui时,则本位d=1。因此,从d7d0比较8次即可逐次逼近寄存器中的数字量,即与模拟量ui所相当于的数字量相等。此数字量送入输出锁存器,并同时发转换结束脉冲。start是转换启动信号,高电平有效;ale是3位通道选择地址(addc,addb,adda)信号的

22、锁存信号。当模拟量送至某一输入端,由3位地址信号进行选择,而地址信号由ale锁存;eoc是档位转换的状态信号。eoc输出高电平时,表示转换结束;在eoc的上升沿后,若使能输出信号oe为高电平,则三态缓冲器打开,将转换完毕的8位数据结果输至数据总线,至此adc0809的一次转换结束。各引脚功能如下:(1) in7in0模拟量输入通道。adc0809对输入模拟量的要求主要有:信号单极性,电压范围05v,若信号过小,还需进行放大。另外,模拟量输入在a/d转换的过程中,其值应保持不变,因此,对变化速度快的模拟输入量,在输入前应增加采样保持电路。(2) a、b、c地址线。a为低位地址,c为高位地址,用于

23、对8路模拟通道进行选择,引脚图中相应为adda、addb和addc。由低至高电平的正跳变将通道地址锁存至地址锁存器中。(3) ale地址锁存允许信号。由低至高电平的正跳变将通道地址锁存至地址锁存器中。(4) start启动转换信号。start上跳沿时,所有内部寄存器清0;start下跳沿时,开始进行a/d转换。在a/d转换期间,start应保持低电平。(5) d7d0数据输出线。为三态缓冲输出形式,可以和单片机的数据线直接相连。(6) oe输出允许信号。用于控制三态输出锁存器向单片机上输出转换得到的数据。oe=0,输出数据线呈高电阻态;oe=1,输出转换得到的数据。(7) clock时钟信号。

24、adc0809内部没有时钟电路,所需时钟信号由外界提供要求频率范围10khz1.2mhz。通常使用频率为500khz的时钟信号。(8) eoc转换结束状态信号。eoc=0,正在进行转换;eoc=1,转换结束。该状态信号既可作为查询的状态标志,又可作为中断请求信号使用。(9) vcc+5v电源。(10) ref(+)、ref(-)参考电压。参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为ref(+)=+5v,ref(-)=0v。adc0809的引脚图如图1-2所示,工作时序如图1-3所示。图1-2 adc0809引脚图图1-3 adc0809时序图1.3 本章小结本章详细地阐

25、述了模数转换器件adc0809的功能。2 系统设计2.1 数字电压表的种类介绍dvm的种类有多种,分类方法也很多,又按位数分的,如3/2位、5位、8位;有按测量速度分的,如高速、低速;有按体积、重量分的,如袖珍式、便携式、台式。但通常是按a/d转换方式的不同将dvm分为两大类,一类是直接转换型,也称比较型;另一类是间接转换型,又称积分型,包括电压-时间变换。系统的核心电路由fpga完成,本设计选用altera公司的ep1k30tc144-3芯片,用vhdl语言对它进行设计,实现三大功能模块:(1)控制模块,激活a/d转换器动作、接收a/d转换器传递过来的数字转换值;(2)数据处理模块,将接收到

26、的转换值调整成对应的数字信号;(3)扫描、显示模块,产生数码管的片选信号,并将数值处理模块输出的bcd码译成相应的7段数码驱动值。工作时,系统按一定的速率采集输入的模拟电压,经adc0809转换成8位数字量,此8位数字量经fpga中的数据处理模块处理后得到模拟电压的数字码,再输入数码管获得被测电压的数字显示。2.2 数字仪表的发展趋势为了适应模数转换发展是要求,模数转换技术也变得越来越复杂。模数转换技术是实现各种模拟信号通向数字世界的桥梁,作为将模拟信号转换成数字信号的模数转换技术主要有以下两种:2.2.1 积分型转换积分型模数转换技术在低速、高精度测量领域有着广泛的应用,特别是在数字仪表领域

27、。积分型模数转换技术有单积分和双积分两种转换方式,单积分模数转换的工作原理是将被转换的电信号先变成一段时间间隔,然后再对时间间隔记数,从而间接把模拟量转换成数字量的一种模数转换方式,它的主要缺陷是转换精度不高,主要受到斜坡电压发生器、比较器精度以及时钟脉冲稳定型的影响。为了提高积分型转换器在同样条件下的转换精度,可采用双积分型转换方式,双积分型转换器通过对模拟输入信号的两次积分,部分抵消了由于斜坡发生器所产生的误差,提高了转换精度。双积分型转换方式的特点表现在:精度较高,可以达到22位;抗干扰能力强,由于积分电容的作用,能够大幅抑制高频噪声。但是,它的转换速度太慢,转换精度随着转换速率的增加而

28、降低,每秒100300次(sps)对应的转换精度为12位。所以这种转换方式应用在低速高精度的转换领域。2.2.2 逐次逼近型转换逐次逼近型转换方式在当今的模数转换领域有着广泛的应用,它是按照二分搜索法的原理,类似于天平称物的一种模数转换过程。也就是将需要进行转换的模拟信号与已知的不同的参考电压进行多次比较,使转换后的数字量在数值上逐次逼近输入模拟量的对应值。逐次逼近型转换方式的特点是:转换速度高,可以达到100万次/秒(mpsp);在低于12位分辨率的情况下,电路实现上较其他转换方式成本低;转换时间确定。但这种转换方式需要数模转换电路,由于高精度的数模转换电路需要较高的电阻和电容匹配网络,故精

29、度不会很高。逐次逼近式ad转换器由逐次逼近寄存器、da转换器、比较器和缓冲寄存器等组成。当启动信号由高电平变为低电平时,逐次逼近寄存器清零,这时,da转换器输出电压v0也为0,当启动信号变为高电平时,转换开始,同时,逐次逼近寄存器进行计数。转换原理如图2-1所示。图2-1 逐次逼近式ad转换器原理逐次逼近寄存器工作时与普通计数器不同,它不是从低位向高位逐一进行计数和进位,而是从最高位开始,通过设置试探值来进行计数。在第一个时钟脉冲到来时,控制电路把最高位送到逐次逼近寄存器,使它的输出为1000 0000,这个输出数字一出现,da转换器的输出电压vo就成为满量程值的128255。这时,若vovi

30、则作为比较器的运算放大器的输出就成为低电平,控制电路据此清除逐次逼近寄存器中的最高位;若vovi则比较器输出高电平,控制电路使最高位的1保留下来。若最高位被保留下来,则逐次逼近寄存器的内容为1000 0000,下一个时钟脉冲使次低位d6为1。于是,逐次逼近寄存器的值为1100 0000,da转换器的输出电压vo到达满量程值的192255。此后,若vovi则比较器输出为低电平,从而使次高位域复位;若vovi则比较器输出为高电平,从而保留次高位为1。重复上述过程,经过n次比较以后,逐次逼近寄存器中得到的值就是转换后的数值。转换结束后,控制电路送出一个低电平作为结束信号,此信号的下降沿将逐次逼近寄存

31、器中的数字量送入缓冲寄存器,从而得到数字量输出。本设计利用adc0809作为电压采样端口,fpga作为系统的核心器件,用led(发光二极管)进行数码显示。其系统原理图如图2-2所示。图2-2 系统原理采用altera公司的ep1k30tc144-3芯片fpga作为系统的核心器件,负责adc0809的a/d转换的启动、地址锁存、输入通道选择、数据读取。同时,把读取的8位二进制数据转换成便于输出的3位十进制bcd码送给数码管,以显示当前测量电压值。这些工作由adc0809转换控制模块、数据转换模块、译码模块完成。fpga软件模块原理如图2-3所示。图2-3 fpga软件模拟设计原理2.3 系统原理

32、及基本框图如图2-4所示,模拟电压经过档位切换到不同的分压电路衰减后,经隔离干扰送到a/d转换器进行a/d转换,然后送到fpga中进行数据处理。处理后的数据送到数码管中显示,同时通过串行通讯与上位机通信。图2-4 基本框图2.4 vhdl语言简介vhdl语言描述能力强,覆盖面广,抽象能力强,所以用vhdl语言作为硬件模型建模很合适。设计者的原始描述是非常简练的硬件描述,经过eda工具综合处理,最终生成付诸生产的电路描述或版图参数描述的工艺文件。整个过程通过eda工具自动完成,大大减轻了设计人员的工作强度,提高了设计质量,减少了出错机会。vhdl语言可读性好。vhdl既能被人容易读懂,又能被计算

33、机识别,作为技术人员编写的源文件,它既是计算机程序,技术文档和技术人员硬件信息交流的文件,又是签约双方的合同文件。vhdl语言中的设计实体(design entity),程序包(package),设计库(library),为设计人员重复利用他人的设计提供了技术手段。重复利用他人的ip模块和软核(soft core)是vhdl的特色,许多设计不必个个都从头再来,而是只要在更高层次上把ip模块利用起来,就能达到事半功倍的效果。一个完整的vhdl语言程序通常包含实体(entity)、结构体(architecture)、配置(configuration)、包集合(package)、库(library)

34、5个部分。前4种是可分别编译的源设计单元。实体用于描述所设计模块都能共享的数据类型、常数和子程序等。配置用于从库中选取所需单元来组成系统设计的不同版本;库存放已经编译的实体、构造体、包集合和配置。库可由用户生成或由asic芯片制造商提供,以便在设计中为大家所共享。2.5 fpga的概念与特点fpga是英文field programmable gate array的缩写,即现场可编程门阵列,它是在pal、gal、epld等可编程器件的基础上进一步发展的产物。fpga器件是基于可编程的查找表结构,lut是可编程的最小逻辑构成单元,fpga内由大量逻辑宏单元构成。通过配置,可以使这些逻辑宏单元形成不

35、同的硬件结构,从而构成不同的电子系统,完成不同的功能。正是fpga的这种硬件重构的灵活性,使得设计者能够讲硬件描述语言描述的电路在fpga中实现。这样,同一块fpga能实现许多完全不同的电路结构和功能。目前fpga的品种很多,有xilinx的xc系列、spartan系列、virtex系列,altera公司的flex系列、cyclone系列、acex系列、stratix系列等。cyclone系列器件是altera公司在2002年12月份推出的。cyclone器件支持大量的片外数据传输的单端i/o标注和差分i/o技术。为满足设计者更快数据速率和信号传输能力的需要,cyclone器件还没有高达311

36、mbps的低差分信令(lvds)兼容通道。fpga采用了逻辑单元阵列lca(logic cell array)这样一个新概念,内部包括可配置逻辑模块clb(configurable logic block)、输入输出模块iob(input output block)和内部连线(interconnect)三个部分。fpga的基本特点主要有:(1) 采用fpga设计asic电路,用户不需要投片生产,就能得到合用的芯片(2) fpga可做其它全定制或半定制asic电路的中试样片(3) fpga内部又丰富的触发器和i/o引脚(4) fpga是asic电路设计周期最短、开发费用最低、风险最小的器件之一(

37、5) fpga采用高速chmos工艺,功耗低,可以与cmos、ttl电平兼容fpga是存放在片内ram中的程序来设置其工作状态的,因此,工作时需要对片内的ram进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,fpga芯片将eprom中数据读入片内编程ram中,配置完成后,fpga进入工作状态。掉电后,fpga恢复成白片,内部逻辑关系消失,因此,fpga能够反复使用。fpga的编程无须专用的fpga编程器,只须用通用的eprom、prom编程器即可。当需要修改fpga功能时,只需换一片eprom即可。这样,同一片fpga,不同的编程数据,可以产生不同的电路功能。因此,fpga的

38、使用非常灵活。fpga有多种配置模式;并行主模式为一片fpga加一片eprom的方式;主从模式可以支持一片prom编程多片fpga;串行模式可以采用串行prom编程fpga;外设模式可以将fpga作为微处理器的外设,由微处理器对其编程。2.6 fpga功能模块设计我们使用的fpga是altera公司的ep1k30tc144-3器件。数字电压表的三大模块都是用vhdl语言编程实现的。fpga设计可分为设计输入、综合、功能仿真(前仿真)、实现、时序仿真(后仿真)、配置下载等六个步骤,下面分别介绍各个设计步骤。2.6.1 控制模块用状态机作法,产生adc0809的片选信号、读/写控制信号,通过状态信

39、号intr判断转换是否结束;转换结束后将转换数据锁存并输出。其状态转换图如图2-5所示。图2-5 控制模块转换图我们可以将整个控制器分成八个步骤状态:idle,write,swait,read,disp1,disp2,disp3,disp4各状态的动作方式如表2-1:表2-1 各状态动作方式 状态cswrrdidle111write101swait111read110disp1101disp2111disp3101disp4111由上述的八个状态可以归纳出整个控制器的动作功能有:负责在每个步骤送出所需的cs、wr、rd控制信号。当110时为wait等待,当111时为read读,当101时开始从

40、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。考虑到直接使用乘法计算对应的电压值将耗用大量的fpga内部组件,本设计用查表命令来得到正确的电压值。如表2-2所示。表2-2 对应电压表进制参考电压(vref/2)为2.56v162高4为电压低4位电压000000.000.0010001

41、0.320.02200100.640.04810002.560.16910012.880.18e11104.480.28f11114.800.30由图2-4的对应关系,编一个查表程序,对电压进行bcd码编码,然后根据对应的4位bcd码相加的结果决定是否进位,从而得到待处理数据的bcd码。例如:从ad0809上取得的数据为“1101 1110”,1101对应的电压值为4.16 v,其对应的bcd编码为“0100 0001 0110”,1110对应的电压值为0.28 v,其对应的bcd编码为“0000 0010 1000”。低4位相加为1110,大于9,加6将其调整为bcd码,其值为0100,并且

42、向前有一进位。4位相加的结果为0011,由于低位有进位,因此最终结果为0100。高4位的结果为0100。3位合计的值为4.44 v,与4.16+0.28的结果相符。其他计算依此类推。在读取到adc0809的转换数据后,先用查表指令算出高、低4位的连个电压值,并分别用16位bcd表示;接着设计16位的bcd码加法,如果每4位相加结果超过9需进行减10进1。这样得到模拟电压的bcd码。bed_add:=hbcd+lbcd;高、低4位的连个电压值bcd码相加if bed_add(3 downto 0)“1001” then bed_add:=bed_add+“0110”;end if;if bed_

43、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是数码管的片选信号;point是数码管小数点的驱动;通过扫描分别输出3位电压值的bcd码dataout,并通过disp将bcd码译成相应的7段数码驱动值,送数码管显示。扫描显示模块如图2-8所示,七段码显示器如图2-9所示。图2-8

44、 扫描显示模块图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(注意0809数据线标识反),datdout接a-dp,sle3-sle0。0809的a0、a1、a2接d0-d2(置低),vref+接vcc,vref-接gnd,clk接mcu的ale,in0接模拟输出out。如图2-11

45、所示。图2-11 系统原理图(3) 实验结果:转动电位器,数码管上显示当前电压值。2.8 本章小结本章简单的介绍了fpga的主要特点、数字电压表的种类和发展趋势,并阐述了如何利用max+plus设计好数字电压表的控制模块,数据处理模块和扫描显示模块,以及数字电压表的连线说明,然后下载到实验开发系统上显示结果。3 数字电压表的软件设计与实现3.1 软件工具max+plus的简介altera公司推出的max+plus软件支持多种硬件描述语言,提供fpga/cpld的设计、仿真和烧写环境。max+plus界面友好(如图3-1所示)、使用便捷,具有原理图输入和文本输入两种输入手段,以及波形与edif等

46、格式文件,并支持这些文件的任意混合设计。利用max+plus自身配置的逻辑综合及芯片编程等功能,可将涉及电路图或电路描述的程序变成基本的逻辑单元写入可编程芯片中,作为asic芯片。但是,由于软件是为可编程芯片设计的,因此它不支持系统行为级的描述和仿真,某些vhdl语言中的语句,如wait语句等将得不到支持,并且它也不能进行模拟电路的设计。因此,max+plus工具还需要不断地改进和完善。图3-1 max+plus方便的使用界面3.2 max+plus的设计流程3.2.1 数字电压表的模块图当三大模块图的vhdl语言组合在一起就得到了数字电压表的vhdl程序,然后进行程序烧写,排线,就形成了数字

47、电压表数字电压表的模块图如图3-2所示。图3-2 数字电压表的模块图3.2.2 adcint的vhdl文本输入法步骤:(1) 建立新文件。选择filenew菜单项,在弹出的新建对话框中选择text editor file选项,单击ok按钮,进入文字编辑画面,输入源程序。如图3-3所示。图3-3 建立新文件(2) 输入以下程序,逻辑描述界面如图3-4所示。图3-4 逻辑描述界面adcint工作情况如下:上电瞬间,fpga初始化,add置成01,状态机处于第1个状态,此时ale、start、oe、lock(数据锁存信号)均置0,初始化adc0809。第1个上升沿到来时,状态机由状态1转换到状态2,

48、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置高电平,

49、其余信号与状态3一样。当lock由低电平转换到高电平的瞬间,稳定的数据锁存到锁存器。上升沿再次到来,则状态机返回状态0。控制器在时钟信号控制下完成状态转换,实现对adc0809的控制。adcint程序见附录3。(3) 保存。选择filesave菜单项,在弹出的保存对话框中输入一个名字,adcint.vhd,单击ok按钮。如图3-5所示。图3-5 保存(4) 指定项目名与文件名相同。选择fileprojectname菜单项,输入一个名字,adcint,单击ok按钮。如入3-6所示。图3-6 指定项目名(5) 指定设计器件。选择assigndevice菜单项,弹出如图3-7所示的对话框,在devi

50、ce family下拉列表框中选择系列号adex1k,在device列表框中选择器件ep1k30tc144-1。图3-7 fpga/cpld器件选择(6) 保存并检查。选择fileprojectsave&check菜单项,即可针对电路设计文件进行检查。(7) 除错。针对massage-complier窗口所提供的信息做修改,直到没有错误信息为止。如图3-8所示。图3-8 除错(8) 保存并编译。选择fileprojectsave&complier菜单项,即可进行编译,产生adcint.pof可烧写文件。如图3-9所示。图3-9 保存并编译(9) 创建电路符号。选择filecreate defa

51、ult symbol菜单项,可以产生adcint.sym文件以代表现在所设计电路的符号。如图3-10所示。选择fileedit symbol菜单项,进入symbol editor画面,设计电路封装如图3-11所示。图3-10 创建电路符号图3-11 adcint的设计电路模块封装图(10) 创建电路包含文件。选择filecreate default include file菜单项,可以产生代表现在设计的电路函数类型的adcint.inc文件,供其他vhdl编辑时调用。如图3-12所示。图3-12 电路类型文件(11) 时间分析。选择utilitiesanalyze timing菜单项,再选择a

52、nalysisdelay matrix菜单项,可以产生时间分析的结果。如图3-13所示。图3-13 时间分析窗口(12) 编写程序时,downto拼写错误,改正后,编译无误。3.2.3 cnt10b的vhdl文本输入法步骤:(1) 如上述的3.2.2的11个步骤,得到cnt10b的设计电路模块封装图,如图3-14所示。遇到问题了,如图3-15所示,逐步查询,直到错误为0为止。图3-14 cnt10b的设计电路模块封装图图3-15 编译后有错误(2) cnt10b程序见附录4。(3) 编写程序时,有两个问题,一个是标点符号,要英文输入法的,不能是汉字的;另一个是进程要取名字,改正后,编译无误。3

53、.2.4 ram8b的vhdl文本输入法步骤:(1) 如上述的3.2.2的11个步骤,得到ram8b的设计电路模块封装图,如图3-16所示。图3-16 ram8b的设计电路模块封装图(2) ram8b程序见附录5。3.3 本章小结设计的vhdl语言程序已在max+plus工具软件上进行了编译、仿真和调试,并通过编译器下载到了ep1k30tc144-3芯片上。经过验证,本设计是正确的,其电压显示值误差没有超过量化台阶上限(5)。本设计给出的设计思想也适用于其他pld芯片的系统设计。结 论毕业设计是一次非常难得的理论与实际相结合的机会,通过这次比较完整的数字电压表设计,我摆脱了单纯的理论知识学习状

54、态,完全将理论和实际设计相结合,锻炼了我将所学的专业基础知识进行综合运用,提高解决实际fpga/cpld应用问题的能力,同时也提高我查阅文献资料、eda课程等其他专业能力水平,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,经验得到了丰富,并且意志力,抗压能力及耐力也都得到了不同程度的提升。这是我们都希望看到的也正是我们进行毕业设计的目的所在。经过这次对数字电压表的设计,我对eda中的vhdl语言又来一定的了解,关于用vhdl和原理图输入进行cpld/fpga设计的粗略比较:在设计中,如果采用原理图输入的设计方式是比较直观的。你要设计的是什么,你就直接从库中调

55、出来用就行了。这样比较符合人们的习惯。但是这样做需要设计人员要在两方面有较高的素质:(1) 对电路的知识要比较丰富。(2) 对cpld/fpga的结构比较熟悉。有了这两个条件才能在设计的过程中选用适当的器件,从而提高设计的可靠性、提高器件的利用率,及缩短设计的周期。但是有一个重大的问题是在于,如果你的产品有所改动,需要采用另外的cpld/fpga时,你将需要重新输入原理图。改用不同的器件在今天这种竞争环境下是会经常发生的,公司为了提高产品的性能或者降低产品的造价,提高保密性等等,都会考虑选用不同的器件。但是当你采用vhdl等高级语言来设计时,这些问题都会得到较好的解决。由于在使用vhdl等高级语言时,有专用的工具来实现将语言描述的电路功能转换为实际的电路,所以你就用不着对底层的电路很熟悉,也用不着对cpld/fpga的结构很熟悉(因为有专门的工具针对你的描述采用相应的器件)。当你要换器件时,你只需要将原来设计好的vhdl文件在新器件的设计工具中再次实现就行了。致 谢本设计及论文是在老师的亲切关怀和悉心指导下完成的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论