基于FPGA的数字电压表的设计.doc_第1页
基于FPGA的数字电压表的设计.doc_第2页
基于FPGA的数字电压表的设计.doc_第3页
基于FPGA的数字电压表的设计.doc_第4页
基于FPGA的数字电压表的设计.doc_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

基于FPGA的数字电压表的设计 摘 要电子设计自动化(electronic design automation,EDA)是近几年迅速发展起来的将计算机软件、硬件、微电子技术交叉运用的现代电子设计技术。其中EDA设计语言中的VHDL语言是一种快速的电路设计工具,功能涵盖了电路描述、电路综合、电路仿真等三大电路设计内容。本电压表的电路设计正是用VHDL语言完成的。此次设计主要应用的软件是美国ALTERA公司自行设计的一种CAE软件工具,即MAX+PLUS 。本次所设计的电压表的测量范围是05V,精度为0.01V。此电压表的设计特点为:通过软件编程下载到硬件实现,设计周期短,开发效率高。关键词:电子设计自动化(EDA);FPGA;VHDL;A/D采集;数字电压表 Design of Dital Voltmeter Based on FPGAXie Xing Du(College of Zhang Jiajie, Jishou University, Jishou,Hunan 416000)AbstractThe design of digital system is becoming faster, bulkier ,smaller and lighter than before. Electronic design automation is in the last few years quickly develop, 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 design that use VHDL language to complete . The this time design is primarily the applied software is MAX PLUS which is made by the United States ALTERA company.This systems range is -5v to +5v and precision is 0.01v.Characteristics of this electric voltage watch is :Pass the software program to download the hardware o realize , design the period is short ,development the efficiency is high. Key words: Electronic Design Automation (EDA);FPGA;VHDL;A/D Acquisition digital voltage 24目 录第一章 绪 论11.1研究目的及意义11.2本课题国内外研究概况、应用前景11.3研究的主要内容2第二章 相关技术简介32.1 EDA技术的简介32.2 FPGA的概念与特点32.3 VHDL语言概述52.4软件工具MAX+PLUSII的简介6第三章 硬件电路设计83.1硬件电路框图83.2 ADC0809模块93.2.1 A/D转换器的主要技术指标93.2.2 ADC0809工作原理93.2.3.工作时序113.3 FPGA模块11第四章FPGA功能模块的设计及仿真144.2控制模块144.3数据处理模块154.4扫描、显示模块15第五章 总结17参考文献18附 录19附录一:总电路图19附录二:程序清单20致 谢24基于FPGA的数字电压表的设计 绪论第一章 绪 论1.1 研究目的及意义数字电压表(Digital Voltmeter)简称DVM,是大学物理教学和实验中的重要仪表,其数字化是指将连续的模拟电压量转换成不连续、离散的数字量并加以显示。传统的实验用模拟电压表功能单一、精度低、体积大,且存在读数时的视差,长时间连续使用易引起视觉疲劳,使用中存在诸多不便。而目前数字万用表的内部核心多是模数转换器,其精度很大程度上限制了整个表的准确度,可靠性较差。传统的数字电压表设汁通常以大规模ASIC(专用集成电路)为核心器件,并辅以少量中规模集成电路及显示器件构成。ASIC完成从模拟量的输入到数字量的输出,是数字电压表的心脏。这种电压表的设计简单、精确度高,但是这种设计方法由于采用了ASIC器件使得它欠缺灵活性,其系统功能固定,难以更新扩展。后来发展起来的用微处理器(单片机)控制通用A/D转换器件的数字电压表的设计的灵活性明显提高,系统功能的扩展变得简单,但是由于微处理器的引脚数量有限,其控制转换速度和灵活性还是不能满足日益发展的电子工业的需求。而应用EDA(电子设汁自动化)技术及FPGA(现场可编程门阵列),其集成度高、速度快、性能十分可靠、用户可自由编程且编程语言通俗易懂、系统功能扩展非常方便。采用FPGA芯片控制通用A/D转换器可使速度、灵活性大大优于由微处理器和通用A/D转换器构成的数字电压表。本文采用8位AD转换器ADC0809对模拟电压采样,以一片高性能FPGA芯片为控制核心,以软件实现了诸多硬件功能,对电压信号的转换结果进行准确实时的运算处理并送出显示。系统的主要功能都集成在一块芯片上,大大减少了系统的分立元件数量,降低了功耗,增加了可靠性,较好地实现了电压的精准测量。1.2本课题国内外研究概况、应用前景科学技术的发展为测量仪器、仪表提供了新原理和新技术以及新型的元、器体,同 时又对测量仪表提出了更新、更高的要求。数字电压表(简写为 DVM)就是在精密电测量技术、计算技术、自动化技术和电子技术的基础上产生和发展起来的。 数字式仪表是能把连续的被测量自动地变成断续的、用数字编码方式的、并以十进 制数字自动显示测量结果的一种测量仪表。这是一种新型仪表,它把电子技术、计算技术、自动化技术的成果与精密电测量技术密切的结合在一起。成为仪器、仪表领域中独 立而完整的一个分支。 1952 年,美国NLS公司首创四位数字电压表,到现在的五十多年中经过了不断的改进和提高。电压表是从电位差计的自动化考虑中研制成功的,开始是四位然后是五位、六位,而现在发展到七位、八位数码显示;从最初的一、二种工作原理发展到几十种原理,从最早采用继电器、电子管发展到全晶体管化、集成电路化、微处理器化;认一台 DVM 只能测一、二种参数到能测十几种参数的多用型;显示器件也从辉光数码显示发展 到等离子体、发光二极管、液晶显示等。电压表的体积和功耗越来越小,重量不断减轻,价格也逐步下降,可靠性越来越高,量程范围也逐渐扩大。回顾一下电压表的发展过程,大致可分为以下三个阶段: 数字化阶段。5060 年代中期,电压表的特点是运用各种原理实现模数(AD) 转换,即将模拟量转化成数字量,从而实现测量仪表的数字化。 高准确度阶段。由于精密电测量的需要,电压表开始向高准确度、高位数方向发展,出现了所谓复合型原理的仪表。 智能化阶段。60 年代末期,电子技术和工艺结构有了飞跃的发展,而大规模集成 电路(LSI)与计算机技术相结合的产物是微处理器(简写为 P)。1972 年,美国 Intel 公司首创微处理器不久即研制出微处理器式数字电压表,实现了电压表数据处理自动化和可编程序。因为带有存贮器并使用软件,所以可进行信息处理,可通过标准接口组成自动测试系统(简写为 ATS)。这些仪表除了完成原有电压表的各种功能外,还能够自校、 自检,保证了自动测量的高准确度,实现了仪器、仪表的所谓“智能化”。当前,智能表发展十分迅速,而微处理式电压表在智能仪表中占的比重最大。智能化的电压表为实现各种物理量的动态测量提供了可能。1.3研究的主要内容本课题主要研究数字电压表的一般设计原理,并结合新型的可编程逻辑器件(FPGA)设计了一种方便、实用的数字电压表。我主要设计软件那部分。采用ACEX1k30TC144-3的一款FPGA芯片实现电压表的数码显示的功能。设计中所要求设计的数字电压表为4位,由三大部分组成,数据转换模块进行模数转换后到数据处理模块处理得到BCD码转换成能被数码管识别的字型编码,再到显示模块,每一部分又包含了若干子电路,将各电路组合起来,就构成了一个整体。硬件设计所需的硬件主要有:课变直流电平输出电路、ADC0809、七段显示器、ACEX1k30TC144-3适配器。基于FPGA的数字电压表的设计 技术软件及简介第二章 相关技术简介2.1 EDA技术的简介随着微电子技术和计算机技术的不断发展,在涉及机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等领域的电子系统设计工作中,EDA技术的含量正以惊人的速度上升,它已成为当今电子技术发展的前沿之一。EDA以计算机为工具,设计者在其软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。利用EDA技术(特指IES/ASIC自动设计技术)进行电子系统的设计,具有以下几个特点: 用软件的方式设计硬件; 用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的; 设计过程中可用有关软件进行各种仿真; 系统可现场编程,在线升级; 整个系统可集成在一个芯片上,体积小、功耗低、可靠性高;6从以前的“组合设计”转向真正的“自由设计”;7设计的移植性好,效率高;8非常适合分工设计,团体协作。因此,EDA技术是现代电子设计的发展趋势。EDA技术的理论基础,设计工具,设计器件应是这样的关系:设计师用硬件描述语言HDL描绘出硬件的结构或硬件的行为,再用设计工具将这些描述综合映射成与半导体工艺有关的硬件配置文件,半导体器件FPGA则是这些硬件配置文件的载体.当这些FPGA器件加载,配置上不同的文件时,这个器件便具有了相应的功能.在这一系列的设计,综合,仿真,验证,配置的过程中,现代电子设计理论和现代电子设计方法贯穿于其中。以HDL语言表达设计意图,以FPGA作为硬件实现载体,以计算机为设计开发工具,以EDA软件为开发环境的现代电子设计方法日趋成熟.在这里,笔者认为,要振兴我国电子产业,需要各相关专业的人士共同努力.HDL语言的语法语义学研究与半导体工艺相关联的编译映射关系的研究,深亚微米半导体工艺与EDA设计工具的仿真,验证及方法的研究,这需要半导体专家和操作系统专家共同努力,以便能开发出更加先进的EDA工具软件.软件,硬件协同开发缩短了电子设计周期,加速了电子产品更新换代的步伐.毫不夸张地说,EDA工程是电子产业的心脏起搏器,是电子产业飞速发展的原动力.2.2 FPGA的概念与特点FPGA(FieldProgrammable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。目前以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flipflop)或者其他更加完整的记忆块。 系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。 FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。另外一种方法是用CPLD(复杂可编程逻辑器件备)。 早在1980年代中期,FPGA已经在PLD设备中扎根。CPLD和FPGA包括了一些相对大数量的可以编辑逻辑单元。CPLD逻辑门的密度在几千到几万个逻辑单元之间,而FPGA通常是在几万到几百万。 CPLD和FPGA的主要区别是他们的系统结构。CPLD是一个有点限制性的结构。这个结构由一个或者多个可编辑的结果之和的逻辑组列和一些相对少量的锁定的寄存器。这样的结果是缺乏编辑灵活性,但是却有可以预计的延迟时间和逻辑单元对连接单元高比率的优点。而FPGA却是有很多的连接单元,这样虽然让它可以更加灵活的编辑,但是结构却复杂的多。 CPLD和FPGA另外一个区别是大多数的FPGA含有高层次的内置模块(比如加法器和乘法器)和内置的记忆体。一个因此有关的重要区别是很多新的FPGA支持完全的或者部分的系统内重新配置。允许他们的设计随着系统升级或者动态重新配置而改变。一些FPGA可以让设备的一部分重新编辑而其他部分继续正常运行。FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。FPGA的基本特点主要有: 1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。2)FPGA可做其它全定制或半定制ASIC电路的中试样片。 3)FPGA内部有丰富的触发器和IO引脚。 4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 5) FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。 可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。2.3 VHDL语言概述VHDL 的英文全名是 Very-High-Speed Integrated Circuit Hardware Description Language,诞生于 1982 年。1987 年底,VHDL被 IEEE 和美国国防部确认为标准硬件描述语言。 VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。VHDL 语言能够成为标准化的硬件描述语言并获得广泛应用 , 它自身必然具有很多其他硬件描述语言所不具备的优点。归纳起来 ,VHDL 语言主要具有以下优点:(1) VHDL 语言功能强大 , 设计方式多样 VHDL 语言具有强大的语言结构, 只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。同时, 它还具有多层次的电路设计描述功能。此外 ,VHDL 语言能够同时支持同步电路、异步电路和随机电路的设计实现, 这是其他硬件描述语言所不能比拟的。VHDL 语言设计方法灵活多样 , 既支持自顶向下的设计方式, 也支持自底向上的设计方法; 既支持模块化设计方法, 也支持层次化设计方法。 (2) VHDL 语言具有强大的硬件描述能力 VHDL 语言具有多层次的电路设计描述功能,既可描述系统级电路 , 也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。同时,VHDL 语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。VHDL 语言的强大描述能力还体现在它具有丰富的数据类型。VHDL 语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便会给硬件描述带来较大的自由度。 (3) VHDL 语言具有很强的移植能力 VHDL 语言很强的移植能力主要体现在: 对于同一个硬件电路的 VHDL 语言描述 , 它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。 (4) VHDL 语言的设计描述与器件无关 采用 VHDL 语言描述硬件电路时, 设计人员并不需要首先考虑选择进行设计的器件。这样做的好处是可以使设计人员集中精力进行电路设计的优化, 而不需要考虑其他的问题。当硬件电路的设计描述完成以后 ,VHDL 语言允许采用多种不同的器件结构来实现。 (5) VHDL 语言程序易于共享和复用 VHDL 语言采用基于库 ( library) 的设计方法。在设计过程中 , 设计人员可以建立各种可再次利用的模块 , 一个大规模的硬件电路的设计不可能从门级电路开始一步步地进行设计 , 而是一些模块的累加。这些模块可以预先设计或者使用以前设计中的存档模块, 将这些模块存放在库中 , 就可以在以后的设计中进行复用。 由于 VHDL 语言是一种描述、模拟、综合、优化和布线的标准硬件描述语言 , 因此它可以使设计成果在设计人员之间方便地进行交流和共享, 从而减小硬件电路设计的工作量, 缩短开发周期。2.4软件工具MAX+PLUSII的简介Max+plus是Altera公司提供的FPGA/CPLD开发集成环境,Altera是世界上最大可编程逻辑器件的供应商之一。Max+plus界面友好,使用便捷,被誉为业界最易用易学的EDA软件。在Max+plus上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程,也是本人在整个课题的研究过程中选用的EDA开发工具。MAX+PLUSII Complier(编译器)是MAX+PLUSII软件的核心。它支持Altera的多种PLD器件,能提供真正与结构无关的设计环境和强有力的逻辑综合能力。Max+plus特点:1、开放的界面 Max+plus支持与Cadence,Exemplarlogic,Mentor Graphics,Synplicty,Viewlogic和其它公司所提供的EDA工具接口。 2、与结构无关 Max+plus系统的核心Complier支持Altera公司的FLEX10K、FLEX8000、FLEX6000、MAX9000、MAX7000、MAX5000和Classic可编程逻辑器件,提供了世界上唯一真正与结构无关的可编程逻辑设计环境。 3、完全集成化 Max+plus的设计输入、处理与较验功能全部集成在统一的开发环境下,这样可以加快动态调试、缩短开发周期。 4、丰富的设计库 Max+plus提供丰富的库单元供设计者调用,其中包括74系列的全部器件和多种特殊的逻辑功能(Macro-Function)以及新型的参数化的兆功能(Mage-Function)。 5、模块化工具 设计人员可以从各种设计输入、处理和较验选项中进行选择从而使设计环境用户化。 6、硬件描述语言(HDL) Max+plus软件支持各种HDL设计输入选项,包括VHDL、Verilog HDL和Altera自己的硬件描述语言AHDL。 7、Opencore特征 Max+plus软件具有开放核的特点,允许设计人员添加自己认为有价值的宏函数。基于FPGA的数字电压表的设计 硬件电路设计第三章 硬件电路设计3.1硬件电路框图数字电压表,它是采用数字化测量技术,把连续的模拟量(直流或交流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。由于数字式仪器具有读数准确方便、精度高、误差小、灵敏度高和分辨率高、测量速度快等特点而倍受青睐。通常按A/D转换方式的不同将DVM分成两大类,一类是直接转换型;另一类是间接转换型,又称积分型,包括电压一频率变换。而由前面分析可知本课题的核心电路路由FPGA完成,选用了Altera公司的EPF10K10LC84-4芯片,用VHDL语言对它进行设计,本设计是由三大模块组成,(1)AD转换模块,组要负责将模拟信号转换为数字信号,以便送FPGA处理;(2)FPGA模块,激活A/D转换器动作、接收A/D转换器传递过来的数字转换值,将接收到的转换值调整成对应的数字信号;(3)显示模块,将数据处理模块输出的4位BCD码译成相应7段数码驱功值,使模拟电压值在4个数码管上显示。工作时,系统按一定的速率采集输入的模拟电压,经ADC0809CCN转换为8位数字量,此8位数字量经FPGA处理得到模拟电压的数字码,再输入数码管获得被测电压的数字显示。此电压表的测量范围:05V,四位数码管显示。整个数字电压表的硬件结构如3.1图所示。图3.1硬件结构图3.2 ADC0809模块ADC0809是采样分辨率为8位的、以逐次逼近原理进行模数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。3.2.1 A/D转换器的主要技术指标(1)分辨率分辨率是指A/D转换器能分辨的最小模拟输入量。通常用能转换成的数字量的位数来表示,如8位、10位、12位、16位等。位数越高,分辨率越高。例如,对于8位A/D转换器,当输入电压满刻度为5V时,其输出数字量的变化范围为0255,转换电路对输入模拟电压的分辨能力为5V/25519.5mV。(2)转换时间转换时间是A/D转换器完成一次转换所需的时间。转换时间是编程时必须考虑的参数。若CPU采用无条件传送方式输入A/D转换后的数据,则从启动A/D芯片转换开始,到A/D芯片转换结束,需要一定的时间,此时间为延时等待时间,实现延时等待的一段延时程序,要放在启动转换程序之后,此延时等待时间必须大于或等于A/D转换时间。(3)量程量程是指A/D转换器所能转换的输入电压范围。(4)精度精度是指与数字输出量所对应的模拟输入量的实际值与理论值之间的差值。A/D转换电路中与每一个数字量对应的模拟输入量并非是单一的数值,而是一个范围。 例如:对满刻度输入电压为5V的12位A/D转换器,122mV,定义为数字量的最小有效位LSB。若理论上输入的模拟量A,产生数字量D,而实际输入模拟量A产生还是数字量D,则称此转换器的精度为0LSB。当模拟电压或还是产生同一数字量D,则称其精度为1/4LSB。目前常用的A/D转换器的精度为1/42LSB。3.2.2 ADC0809工作原理 1.芯片介绍 ADC0809是CMOS的8位A/D转换器,片内有8路模拟开关,可控制8个模拟量中的一个进入转换器中。ADC0809的分辨率为8位,转换时间约1OOus,含锁存控制的8路多路开关,输出有三态缓冲器控制,单5V电源供电。其实物图如3.2.2所示。图3.2 AD0809实物图2.工作原理START是转换启动信号,高电平有效;ALE是3位通道选择地址(ADDC, ADDB, ADDA)信号的锁存信号。当模拟量送至某一输入端(IN I或IN2等),由3位地址信号选择,而地址信号由ALE锁存;EOC是转换情况状态信号(类似于AD574的STATUS),当启动转换约100us后,EOC产生一个负脉冲,以表示转换结束;在EOC的上升沿后,若使输出使能信号OE为高电平,则控制打开三态缓冲器,把转换好的8位数据结果输至数据总线。至此ADC0809的一次转换结束了。图3.3 ADC0809原理图各引脚功能如下:1IN7IN0模拟量输入通道。ADC0809对输入模拟量的要求主要有:信号单极性,电压范围05V,若信号过小,还需进行放大。另外,模拟量输入在A/D转换的过程中,其值应保持不变,因此,对变化速度快的模拟输入量,在输入前应增加采样保持电路。2A、B、C地址线。A为低位地址,C为高位地址,用于对8路模拟通道进行选择,引脚图中相应为ADDA、ADDB和ADDC。其地址状态与通道的对应关系见表1-1。3ALE地址锁存允许信号。由低至高电平的正跳变将通道地址锁存至地址锁存器中。4START启动转换信号。START上跳沿时,所有内部寄存器清0;START下跳沿时,开始进行A/D转换。在A/D转换期间,START应保持低电平。5D7D0数据输出线。为三态缓冲输出形式,可以和单片机的数据线直接相连。6OE输出允许信号。用于控制三态输出锁存器向单片机上输出转换得到的数据。OE=0,输出数据线呈高电阻态;OE=1,输出转换得到的数据。7CLOCK时钟信号。ADC0809内部没有时钟电路,所需时钟信号由外界提供,要求频率范围10kHz1.2MHz。通常使用频率为500 kHz的时钟信号。8EOC转换结束状态信号。EOC0,正在进行转换;EOC=1,转换结束。该状态信号既可作为查询的状态标志,又可以作为中断请求信号使用。9VCC+5V电源。10REF(+)、REF(-)参考电压。参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为REF(+)=+5V,REF(-)=0V。3.2.3.工作时序ADC0809的工作时序如图3.4所示。 图3.4 ADC0809工作时序图3.2.4 ADC0809的工作过程首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 AD转换,之后EOC输出信号变低,指示转换正在进行。直到AD转换完成,EOC变为高电平,指示AD转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。3.3 FPGA模块我们使用的FPGA是Altera公司的ACEX1K器件1K30TC144-3,采用ACEX1k30TC144-3的一款FPGA芯片实现电压表的数码显示的功能。在其中主要用状态机作法,产生ADC0809CCN的片选信号、读/写控制信号,通过状态信号INTR判断转换是否结束;转换结束后将转换数据锁存并输出。主要负责对AD转换器的控制,用以初始化AD转换器,并启动且接受AD转换器传递过来的数字转换值然后将接受到的转换值调整成模拟电压所对应的数字信号;OEABCSTARTALEEOC转换控制模块数据转换译码模块8位二进制数数16位二进制数四位数码管数据输入C 图3.5 FPGA模块3.4 显示模块本模块的任务是把数据处理模块处理得到的BCD码转换成能被数码管识别的字型编码。8位二进制数转换成BCD码后为16位,因此需4个数码管显示结果,由于采用GW 48实验板,该板自带了译码电路,故只需将数据处理模块处理得到的12位BCD码DATA 150分为四组即DATA 1512、DATA 118、DATA 74、DATA_OUT30;然后分别接GW 48实验板上的引脚PIO35 PIO32、PIO39 PIO36、PIO43 PIO40、PIO47 PIO446相接。七段码显示器如3.6图: 图3.6 显示器实物图其方框图如图3.7: DATA1512DATA118 DATA-IN110 DATA74 DATA30PIO47 PIO44 A30PIO35 PIO32 A30PIO39 PIO36 A30PIO43 PIO40 A304位数码管显示 图3.7 显示模块基于FPGA的数字电压表的设计 FPGA功能模块的设计第四章FPGA功能模块的设计及仿真4.1软件系统原理整个系统由三大模块组成(1)控制模块,A/D转换控制模块,用以初始化A/D转换器(即ADC0809)、并启动且接收ADC0809传递过来的数字转换值;(2)数据处理模块,将接收到的转换值调整成对应的数字信号;(3)显示模块,将数据处理模块输出的4位BCD码译成相应 7 段数码驱功值,使模拟电压值在4个数码管上显示。具体工作方式如下图所示,首先,被测电压信号进入A/D转换器,FPGA中控制信号模块发出控制信号,启动A/D转换器进行转换,其采样得到的数字信号数据在相应的码制转换模块中转换为显示代码。最后译码驱动模块发出显示控制与驱动信号,驱动外部的LCD模块显示相应的数据。4.2控制模块我们使用的FPGA是Altera公司的ACEX1K器件1K30TC144-3,用状态机作法,产生ADC0809CCN的片选信号、读/写控制信号,通过状态信号INTR判断转换是否结束;转换结束后将转换数据锁存并输出。方框图如4.1图4.1 控制模块我们可以将整个控制气分成八个步骤状态:idle,write,swait,read,disp1,disp2,disp3,disp4各状态的动作方式如下:状态idle: CS=1、WR=1、RD=1状态write:CS=1、WR=0、RD=1状态swait:CS=1、WR=1、RD=1状态read: CS=1、WR=1、RD=0状态disp1:CS=1、WR=0、RD=1状态disp2:CS=1、WR=1、RD=1状态disp3:CS=1、WR=0、RD=1状态disp4:CS=1、WR=1、RD=1由上述的八个状态可以归纳出整个控制器的动作功能有:负责在每个步骤送出所需的CS、WR、RD控制信号。当110时为wait等待,当111时为read读,当101时开始从ADC中读数。其程序为:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity voltmeter isport (D: in std_logic_vector(7 downto 0); CLK,INT,RESET: in std_logic; CS,RD,WR: out std_logic; DATOUT: out std_logic_vector(11 downto 0) );end voltmeter;architecture doit of voltmeter issignal datain : std_logic_vector(7 downto 0);signal data1,data2 : std_logic_vector(15 downto 0);signal dout1,dout2,dout3,dout4 : std_logic_vector(11 downto 0);signal do1,do2,do3,do4,c1,c2,c3,doo1,doo2,doo3,doo4 :std_logic_vector(4 downto 0);type statetype is(idle,write,swait,read,disp1,disp2,disp3,disp4);signal present_state,next_state: statetype;beginP1: process(present_state,next_state,INT) begin case present_state is when idle = CS=1; WR=1; RD=1; next_state CS=1; WR=0; RD=1; next_state CS=1; WR=1; RD=1; if ( INT=0) then next_state=read; else next_state CS=1; WR=1; RD=0; next_state CS=1; WR=1; RD=1; DATOUT=dout1; next_state CS=1; WR=1; RD=1; DATOUT=dout2; next_state CS=1; WR=1; RD=1; DATOUT=dout3; next_state CS=1; WR=1; RD=1; DATOUT=dout4; next_state=write; end case;end process P1;P2: process(CLK, RESET) begin if(RESET=0) then present_state=idle; datain=00000000; elsif(CLKevent and CLK=1) then present_state=next_state; if(present_state=read) then datain=D; end if; end if;end process P2;其仿真图为图4.2: 图4.2控制模块4.3数据处理模块ADC0809是8位模数转换器,它的输出状态共有256种,如果输入信号Ui为05V电压范围,则每两个状态值为5/(256-1),约为0.0196V,故测量分辨率为0.02V。常用测量方法是:当读取到DB7DB0转换值是XXH时,电压测量值为UXXH0.02V;考虑到直接使用乘法计算对应的电压值将耗用大量的FPGA内部组件,本设计用查表命令来得到正确的电压值。在读取到ADC0809的转换数据后,先用查表指令算出高、低4位的两个电压值,并分别用16位BCD码表示;接着设计16位的BCD码加法,如果每4位相加结果超过9需进行减10进1。这样得到模拟电压的BCD码。其方框图如图4.3图4.3数据处理模块其程序为:data1=0000000000000000 when datain(7 downto 4)=0000 else 0000001100010011 when datain(7 downto 4)=0001 else 0000011000100101 when datain(7 downto 4)=0010 else 0000100100111000 when datain(7 downto 4)=0011 else 0001001001010000 when datain(7 downto 4)=0100 else 0001010101100011 when datain(7 downto 4)=0101 else 0001100001110101 when datain(7 downto 4)=0110 else 0010000110001000 when datain(7 downto 4)=0111 else 0010010100000000 when datain(7 downto 4)=1000 else 0010100000010011 when datain(7 downto 4)=1001 else 0011000100100101 when datain(7 downto 4)=1010 else 0011010000111000 when datain(7 downto 4)=1011 else 0011011101010000 when datain(7 downto 4)=1100 else 0100000001100011 when datain(7 downto 4)=1101 else 0100001101110101 when datain(7 downto 4)=1110 else 0100011010001000 when datain(7 downto 4)=1111 else 0000000000000000;data2=0000000000000000 when datain(3 downto 0)=0000 else 0000000000100000 when datain(3 downto 0)=0001 else 0000000000111001 when datain(3 downto 0)=0010 else 0000000001011001 when datain(3 downto 0)=0011 else 0000000001111000 when datain(3 downto 0)=0100 else 0000000010011000 when datain(3 downto 0)=0101 else 0000000100010111 when datain(3 downto 0)=0110 else 0000000100110111 when datain(3 downto 0)=0111 else 0000000101010110 whe

温馨提示

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

评论

0/150

提交评论