数字电压表课程设计

上传人:bei****lei 文档编号:198023776 上传时间:2023-04-07 格式:DOC 页数:29 大小:961.50KB
收藏 版权申诉 举报 下载
数字电压表课程设计_第1页
第1页 / 共29页
数字电压表课程设计_第2页
第2页 / 共29页
数字电压表课程设计_第3页
第3页 / 共29页
资源描述:

《数字电压表课程设计》由会员分享,可在线阅读,更多相关《数字电压表课程设计(29页珍藏版)》请在装配图网上搜索。

1、东 北 石 油 大 学课 程 设 计课 程 硬件课程设计 题 目 数字电压表设计 院 系 计算机与信息技术学院 专业班级 计算机科学与技术10-6班 学生姓名 张乃元 学生学号 100702140614 指导教师 李 冰 2009年 7 月 10 日东北石油大学课程设计任务书课程 硬件课程设计题目 数字电压表设计专业 计算机科学与技术 姓名 张乃元 学号 100702140614 主要内容、基本要求等一、主要内容:利用EL教学实验箱、微机和Quartus软件系统,使用VHDL语言输入方法设计数字钟。可以利用层次设计方法和VHDL语言,完成硬件设计设计和仿真。最后在EL教学实验箱中实现。二、基本

2、要求:1、A/D转换接口电路的设计,负责对ADC0809的控制。2、编码转换电路设计,负责把从ADC0809数据总线中读出的电压转换成BCD码。3、输出七段显示电路的设计,负责将BCD码用7段显示器显示出来。三、扩展要求1、当测量结束后,蜂鸣器鸣响10声。 四、参考文献1 李朝清.单片机原理及技术接口M.出版社:北京航空航天大学出版社.出版时间:2011年6月第17次印刷2 康华光,邹寿彬等.电子技术基础数字部分M.出版社:高等教育出版社3 康华光,张林,电子技术基础模拟部分M.出版社:高等教育出版社.4 吴金戌,郭庭吉.8051单片机实践与应用M.北京:清华大学出版社,20025 张国勋.缩

3、短ICL7135A/D采样程序时间的一种方法J.电子技术应用.1993.完成期限 2周 指导教师 李冰 专业负责人 富宇 2012年 6 月 10 日摘 要本文阐述了EDA技术的基本特征及关键技术,介绍了EDA工具软件和硬件描述语言,分析了EDA技术的现状及发展趋势。EDA是电子设计自动化(Electronic Design Automation)的缩写。由于它是一门刚刚发展起来的新技术,涉及面广,内容丰富,理解各异,所以目前尚无一个确切的定义。但从EDA技术的几个主要方面的内容来看,可以理解为:EDA技术是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机

4、、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计电子系统到硬件系统的一门新技术。本文设计主要利用VHDL语言在EDA平台上设计一个数字电压表,本实验中所要求设计的数字电压表为4位,由三大部分组成,每一部分又包含了若干子电路,将各电路组合起来,就构成了一个整体。1、A/D转换接口电路的设计,负责对ADC0809的控制。2、编码转换电路设计,负责把从ADC0809数据总线中读出的电压转换成BCD码。3、输出七段显示电路的设计,负责将BCD码用7段显示器显示出来。数字电压表是诸多数字化仪表的核心与基础。以数字电压表为核心扩展成的各种数字化仪表,几

5、乎覆盖了电子电工测量、工业测量、自动化系统等各个领域。并且使用Quartus7.2-II软件进行电路波形仿真,下载到EDA实验箱进行验证。关键词: EDA(电子设计自动化);VHDL(硬件描述语言),数字钟。目录第1章 概 述11.1EDA的概念11.2 EDA技术及应用11.3EDA技术发展前景3第2章 设计基础知识42.1FPGA知识介绍42.2VHDL硬件描述语言62.3Quartus II及其他第三方开发工具8第3章 数字电压表电路设计113.1设计规划113.2设计内容113.3电路程序13第4章 系统软件程序的设计184.1主程序184.2转换电子程序184.3中断显示程序19第5

6、章 电压表的调试及性能分析215.1调试与测试215.2性能分析22结 论23参考文献24东北石油大学本科生课程设计(论文)第1章 概 述1.1 EDA的概念20世纪90年代,国际上电子和计算机技术较先进的国家,一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大成功。在电子技术设计领域,可编程逻辑器件(如CPLD、FPGA)的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计那样方便快捷。这一切极大地改变了传统的数字系统设计方法、设计过程和设计观念

7、,促进了EDA技术的迅速发展。由于它是一门刚刚发展起来的新技术,涉及面广,内容丰富,理解各异,所以目前尚无一个确切的定义。但从EDA技术的几个主要方面的内容来看,可以理解为:EDA技术是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计电子系统到硬件系统的一门新技术。可以实现逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化,逻辑布局布线、逻辑仿真。完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片。利用EDA工具,电子设

8、计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。硬件描述语言:硬件描述语言(HDLHardware Description Language)是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来

9、描述电子系统的逻辑功能、电路结构和连接形式,与传统的门级描述方式相比,它更适合大规模系统的设计。1.2 EDA技术及应用Electronic Document Authorization,指电子文件授权,是工作流软件系统最常用的一种功能。它超越文电鉴别和数字签名来对电子表格或信息的接受者提供保证。其发送者具有特许权或适当的费用限制来签署和发送文件。EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可

10、以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。EDA设计可分为系统级、电路级和物理实现级。EDA常用软件:EDA工具层出不穷,目前进入我国并具有广泛影响的EDA软件有:multiSIM7(原

11、EWB的最新版本)、PSPICE、OrCAD、PCAD、Protel、Viewlogic、Mentor、Graphics、Synopsys、LSIIogic、Cadence、MicroSim,ISE,modelsim等等。这些工具都有较强的功能,一般可用于几个方面,例如很多软件都可以进行电路设计与仿真,同进还可以进行PCB自动布局布线,可输出多种网表文件与第三方软件接口。从目前的EDA技术来看,其发展趋势是政府重视、使用普及、应用文泛、工具多样、软件功能强大。在信息通信领域,要优先发展高速宽带信息网、深亚微米集成电路、新型元器件、计算机及软件技术、第三代移动通信技术、信息管理、信息安全技术,积

12、极开拓以数字技术、网络技术为基础的新一代信息产品,发展新兴产业,培育新的经济增长点。要大力推进制造业信息化,积极开展计算机辅助设计(CAD)、计算机辅助工程(CAE)、计算机辅助工艺(CAPP)、计算机机辅助制造(CAM)、产品数据管理(PDM)、制造资源计划(MRPII)及企业资源管理(ERP)等。有条件的企业可开展“网络制造”,便于合作设计、合作制造,参与国内和国际竞争。开展“数控化”工程和“数字化”工程。自动化仪表的技术发展趋势的测试技术、控制技术与计算机技术、通信技术进一步融合,形成测量、控制、通信与计算机(M3C)结构。在ASIC和PLD设计方面,向超高速、高密度、低功耗、低电压方向

13、发展。 1.3EDA技术发展前景进入二十一世纪以来,电子科技对于我们的生活越来越重要,我们的生活无时无刻不与电子科技相联系,而我们对于电子产品的国内功能与速度的要求越来越高。这就促进了不知是软件工程的发展,我们同时更加注重硬件工程的发展,EDA作为其中一门学科有着很好的发展前景。一门学科永远不可能有研究皆知的时候,每当人类有新的发现是科技总会给我们新的惊喜。EDA同样是一门有趣而有意义的科学,所以我们有理由相信他会有很好的发展前景,而当下的时代中,我们所应用的外部设备也越来越先进。外设技术与EDA工程相结合的市场前景看好,如组合超大屏幕的相关连接,多屏幕技术也有所发展。3第2章 设计基础知识2

14、.1FPGA知识介绍现场可编程门阵列(FPGA, Field Programmable Gate Array)的出现是超大规模集成电路(VLSL)技术和计算机扶助设计(CAD)技术发展的结果。它一般都采用SRAM工艺,也有一些专用器件采用Flash 7-艺或反熔丝(AntiFuse)工艺等。FPGA器件集成度很高、其器件密度从数万系统门到数千万系统门不等,可以完成极其复杂的时序与组合逻辑电路功能,适用于高速、高密度的高端数字逻辑电路设计领域。具有通过用户编程实现专门应用的功能。它允许电路设计者利用基于计算机的开发平台,经过设计输入、仿真、测试和校验,直至达到预期的结果。使用FPGA器件可以大大

15、缩短系统的研制周期,减少资金的投入。更吸引人的是,采用FPGA器件可以将原来的电路板级产品集成为芯片级产品,从而降低了功耗,提高了可靠性,同时还可以很方便地对设计进行在线修改。FPGA器件成为研制开发的理想器件,特别适用于产品的样机开发和小批量的生产,因此有人也把FPGA称为可编程的ASIC。如今,FPGA器件广泛应用于通信、自动控制、信息处理等诸多领域,越来越多的电子设计人员在使用FPGA,熟练掌握FPGA设计技术已经是对电子设计工程师的基本要求。FPGA的逻辑门数己达1千万,内核速度达到400MHz,能提供高达11Gbps的芯片间通信速度,随着工艺微缩,当前的FPGA已经能够内嵌DSP核心

16、的方式在诸多高端应用中实现传统DSP的工作,且可编程特性将大幅压低成本,并加快设计周期。现在的FPGA芯片中不只是包含可编程逻辑功能模块、可编程输入输出模块和可编程内部互连资源等基本的资源,还集成了存储器(Block RAM和Disturbed RAM)、数字时钟管理但愿(完成分频倍频、数字锁相和延迟功能的DLL和DCM)、算术运算单元(生发起、加法器)以及特殊功能模块(MAC、微处理器等硬IP核)等更丰富的资源,与过去FPGA仅仅用作胶合逻辑不同,现在FPGA已经被用来实现主要系统功能。而与此同时,它仍然保持着非常合理的成本,因此,与ASIC和定制IC相比,FPGA是一种更具有吸引力的选择。

17、FPGA设计具有以下优点:(1)硬件设计软件化这是FPGA开发的最大优势。传统硬件电路设计先要进行功能设计,然后进行电路板级设计并做称电路板后进行调试,如果电路中有什么错误,整个电路板都将作废,这是很不经济的。FPGA的开发在功能层面上可以完全脱离硬件而在EDA软件上做软仿真。当功能确定无误后可以进行硬件电路板的设计。最后将设计好的,由EDA软件生成的烧写文件下载到配置设备中去,进行在线调试,如果这时的结果与要求不一致,可以立即更改设计软件,并再次烧写到配置芯片中而不必改动外接硬件电路。(2)高度集成化,高工作频率一般的FPGA内部都集成有上百万的逻辑门,可以在其内部规划出多个与传统小规模集成

18、器件功能相当的模块。这样将多个传统器件集成在同一芯片内部的方法不但可以改进电路板的规模,还可以减少PCB布线的工作。由于各个模块都是集成在FPGA芯片内部,这就很大程度地解决了信号的干扰问题,使得FPGA的工作频率可以大幅度的提高。另外,一般的FPGA内部都有PLL倍频的时钟,这进一步解决了电磁干扰和电磁兼容问题。可编程逻辑器件的设计是利用EDA开发软件和编程土具对器件开发的过程。高密度复杂可编程逻辑器件的设计流程如图2-1所示。它包括设计准备、设计输入、功能仿真、设计处理、时序仿真和器件编程及测试等七个步骤。1设计准备 在系统设计之前,首先要进行方案论证、系统设计和器件选择等准备工作。一般采

19、用自上而下的设计方法,也可采用传统的自下而上的设计方法。图2-1可编程逻辑器件设计流程2设计输入 设计输入将所设计的系统或电路以开发软件要求的某种形式表示出来,并送入计算机的过程称为设计输入。设计输入通常有以下集中形式: 1)原理图输入方式 2)硬件描述语言输入方式 3)波形输入方式3功能仿真功能仿真也叫做前仿真。用户所设计的电路必须在编译之前进行逻辑功能验证,此时的仿真没有延时信息,对于初步的功能检测非常方便。仿真中如发现错误,则返回设计输入中修改逻辑设计。4设计处理设计处理是器件设计中的核心环节。在设计处理过程中,编译软件将对设计输入文件进行逻辑化简、综合优化和适配,最后产生编程用的编程文

20、件。主要有:1)语法检查和设计规则检查 2)逻辑优化和综合 3)适配和分割 4)布局和布线5时序仿真 时序仿真又称后仿真或延时仿真。由于不同器件的内部延时不一样,不同的布局布线方案也给延时造成不同的影响,因此在设计处理以后,对系统和各模块进行时序仿真,分析其时序关系,估计设计的性能,以及检查和消除竟争冒险等是非常有必要的。6器件编程测试时序仿真完成后,软件就可产生供器件编程使用的数据文件。 2.2VHDL硬件描述语言2.2.1 VHDL语言简介硬件描述语言(hardware description language,HDL)是电子系统硬件行为描述,结构描述,数据流描述的语言。目前,利用硬件描述

21、语言可以进行数字电子系统的设计.随着研究的深入,利用硬件描述语言进行模拟电子系统设计或混合电子系统设计也正在探索中。国外硬件描述语言种类很多,有的从Pascal发展而来,也有一些从C语言发展而来。有些HDL成为IEEE标准,但大部分是企业标准。VHDL来源于美国军方,其他的硬件描述语言则多来源于民间公司。可谓百家争鸣,百花齐放,这些不同的语言传播到国内,同样也引起了不同的影响在我国比较有影响的有两种硬件描述语言:VHDL语言和Verilog HDL语言,这两种语言已成为IEEE标准语言。2.2.2 VHDL语言的主要优势VHDL语言能够成为标准并且获得广泛的应用,一定有它自身的主要优势,或者说

22、是与众不同的特点。强大的功能和灵活性:VHDL语言具有功能强大的语言结构,可以用简洁明确的程序来描述复杂的逻辑控制。独立于器件的设计:设计人员采用VHDL语言进行硬件电路的设计时,并不需要首先选择完成此项设计的逻辑器件。这样,设计人员就可以集中精力来进行设计的构思。可进行程序移植:VHDL语言的移植能力是允许设计人员对需要综合设计描述进行模拟,在综合前对一个数千门的设计描述进行模拟可以节约大量的时间。由于VHDL语言是一种标准化的硬件描述语言,因此同一个设计的VHDL语言描述可以被不同的EDA工具支持,从而使得VHDL语言程序的移植成为可能。性能评估能力:独立于器件的设计和可进行程序移植允许设

23、计人员可以采用不同的器件结构和综合工具来对自己的设计进行评估。易于ASIC移植:VHDL语言效率高的重要体现之一就是如果设计人员的设计是被综合到一个CPLD器件或FPGA器件,那么就可以使设计的产品以最快的的速度上市。当产品的数量达到相当的规模时,采用VHDL语言能够很容易地帮助设计人员实现转成ASIC的设计。VHDL语言标准、规范,易于共享和复用:VHDL语言的语法规范、标准,可读性强。由于VHDL语言是一种IEEE的工业标准硬件描述语言,具有严格的语法规范和统一的标准,因此它可以使设计人员之间进行交流和共享。2.2.3 VHDL语言的设计流程采用VHDL语言设计硬件电路系统的设计流程一般可

24、以分为以下几个步骤。硬件电路系统设计要求的定义。编写描述硬件电路系统功能的VHDL语言程序。VHDL语言程序的模拟。VHDL语言的综合、优化和布局布线。布局布线后的设计模拟。器件的编程。设计人员在从事硬件电路系统的合计过程中,编写VHDL语言程序之前必须对硬件电路系统的设计目的有一个非常明确的认识才行。2.3Quartus II及其他第三方开发工具2.3.1 Quartus II开发平台简介 Quartus II是Altera提供的FPGA/CPLD开发集成环境,Altera是世界最大可编程逻辑器件供应商之一。Quartus II在21世纪初推出,是Altera前一代FPGA/CPLD集成开发

25、环境MAX+plus II的更新换代产品,其界面友好,使用便捷。在Quartus II上可以完成设计输入、HDL综合、布线布局(适配)、仿真和下载和硬件测试等流程,它提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。Altera的Quartus II 提供了完整的多平台设计环境,能满足各种特定设计的需要,也是单芯片可编程系统(SOPC)设计的综合性环境和SOPC开发的基本设计工具,并为AlteraDSP开发包进行系统模型设计提供了集成综合环境。Quartus II设计工具完全支持VHDL、Verilog的设计流程,其内部嵌有VHDL、Verilog逻辑综合器。Q

26、uartus II也可以利用第三方的综合工具,如Leonardo Spectrum、Synplify Pro、FPGA Complier II,并能直接调用这些工具。同样,Quartus II具备仿真功能,同时也支持第三方的仿真工具,如ModelSim。此外,Quartus II与MATLAB和DSP Builder结合,可以进行基于FPGA的DSP系统开发,是DSP硬件系统实现的关键EDA工具。Quartus II包括模块化的编译器。编译器包括的功能模块有分析/综合器(Analysis & Synthesis)、适配器(Filter)、装配器(Assembler)、时序分析器(Timing

27、Analyzer)、设计辅助模块(Design Assistant)、EDA网表文件生成器(EDA Netlist Writer)和编辑数据接口(Complier Database Interface)等。可以通过选择Start Complication来运行所有的编译器模块,也可以通过选择Start单独运行各个模块。还可以通过选择Complier Tool(Tools 菜单),在Complier Tool 窗口中运行该模块来启动编辑器模块。在Complier Tool 窗口中,可以打开该模块的设置文件或报告文件,或打开其他相关窗口。此外,Quartus II还包含许多十分有用的LPM(Lib

28、rary of Parameterized Modules)模块,它们是复杂或高级系统构建的重要组成部分,在SOPC设计中被大量使用,也可在Quartus II普通设计文件一起使用。Altera提供的LPM函数均基于Altera器件的结构做了优化设计。在许多实用情况中,必须使用宏功能模块才可以使用一些Altera特定器件的硬件功能。例如各类片上存储器、DSP模块、LVDS驱动器、PLL以及SERDES和DDIO电路模块等。图3-1中所示的上排是Quartus II编译设计主控界面,它显示了Quartus II自动设计的各主要处理环节和设计流程,包括设计输入编辑、设计分析与综合、适配、编程文件汇

29、编(装配)、时序参数提取以及编程下载几个步骤。在图1-1下排的流程框图,是与上面的Quartus II设计流程相对照的标准的EDA开发流程。Quartus II编译器支持的硬件描述语言有VHDL(支持VHDL87及VHDL97标准)、Verilog HDL及AHDL(Altera HDL),AHDL是Altera公司自己设计、制定的硬件描述语言,是一种以结构描述方式为主硬件描述语言,只有企业标准。Quartus II允许来自第三方的EDIF文件输入,并提供了很多EDA软件的接口,Quartus II支持层次化设计,可以在一个新的编辑输入环境中对使用不同输入设计方式完成的模块(元件)进行调用,从

30、而解决了原理图与HDL混合输入设计问题。在设计输入之后,Quartus II的编译器将给出设计输入的错误报告。Quartus II 拥有良好的设计输入定位器,用于确定文本或图形设计中的错误。对于使用HDL的设计,可以使用Quartus II带有的RTL Viewer观察综合后的RTL图。在进行编译后,可对设计进行时序仿真。在作仿真前,需要利用波形编辑器编辑一个波形激励文件,用于仿真验证时的激励。编译和仿真经检测无误后,便可以将下载信息通过Quartus II提供的编程器下载入目标器件中了。编程器Assembler(编程文件汇编)Filter(适配器)Analysis & Synthesis(分

31、析与综合)图形或HDL编辑.Timing Analyzer(时序分析器)下载适配器件综合或编辑设计输入仿真图3-1 Quartus II设计流程2.3.2 第三方EDA工具 目前EDA/FPGA的设计趋于复杂化,设计的仿真验证显得比以前更为重要。据有关资料统计显示,在一个使用IP核的百万门级SOC设计中,花费在仿真验证上的时间将占整个设计周期的70%。为了保证CPLD/FPGA仿真验证的精确性,很多公司都开发出了第三方专用EDA工具。Quartus II支持的第三方开发工具很多,应用比较广泛的如专用综合工具Synplify,它在综合策略和优化手段上有了较大幅度的提高,使其面积较好,速度较快;M

32、odelsim是较常用的第三方仿真工具,目前的最新版本已到5.7版。它可以对Xilinx公司的全部CPLD/FPGA产品进行高精度的仿真验证;可以对CPLD/FPGA进行功能仿真和时序仿真。Modelsim适用于多种操作系统和设计平台,主要有SEEEXE等版本类型。其中Modelsim是针对Xilinx公司系列器件的专用仿真工具;Modelsim SEEE则是通用的EDA仿真工具,使用这两种对Xilinx公司系列器件进行仿真,需要预先加载Xilinx本地库。在应用过程中,主要包括创建仿真库、逻辑库映射、编译设计文件、仿真验证等步骤,其中仿真库包括工作库和资源库,工作库由所有编译后的设计文件组成

33、,资源库包括当前设计中引用资源的定义和说明。使用Quartus II结合这些第三方工具进行开发,将取得较为理想的效果。 25第3章 数字电压表电路设计3.1设计规划本实验中所要求设计的数字电压表为4位,由三大部分组成,每一部分又包含了若干子电路,将各电路组合起来,就构成了一个整体。1、A/D转换接口电路的设计,负责对ADC0809的控制。2、编码转换电路设计,负责把从ADC0809数据总线中读出的电压转换成BCD码。3、输出七段显示电路的设计,负责将BCD码用7段显示器显示出来。硬件说明:本设计所需的硬件主要有:可变直流电平输出电路、ADC0809、七段显示器、EPF10K10LC84-4适配

34、器3.2设计内容1、 产生控制信号:对于ADC0809芯片的各种介绍请参阅其数据手册。芯片ADC0809的控制时序图如图52-3所示。实验仪器中ADC0809接口电路原理图如图3-1所示。图3-1 ADC0809接口电路原理图当CS 和WR同时为高电平时,ADC0809开始转换,当转换完成后,在INT脚输出高电平,等待读数据;当CS和RD同时为电平时,通过数据总线D7.0从ADC0809是读出数据。图3-2 控制器控制信号时序图从图3-2我们可以将整个控制器分成4个步骤状态:S0、S1、S2、S3,第个状态的动作方式如下:1状态S0:CS=1、WR=1、RD=0(由控制器发出信号要求ADC08

35、09开始进行模/数信号的转换)。2、 计算转换后的数字电压信号,最终以BCD码表示,当参考电压(Vref)为2.56V时,模拟输入电压与输出电压的对应关系如表3-3所示。3、表3-3:模拟输入电压与输出电压的对应关系进制参考电压162高4位电压低4位电压000000.000.00100010.320.02200100.640.04300110.960.06401001.280.08501011.600.10601101.920.12701112.240.14810002.560.16910012.880.18A10103.200.20B10113.520.22C11003.840.24D110

36、14.160.26E11104.480.28F11114.800.30这样由ADC0809收到的信号是01110110(76H),则对照表3-3时,高4位0111的电压为2.24V,而低4位0110是0.12V,所以最后的电压输出结果为2.24+0.12=2.36V。对于数据转换成BCD码,我们必须设计一个12位的BCD码加法器,如上述的2.24V的二进制表示为:001000100100、0.12V是000000010010,所以其相加结果为001000110110,为2.36V。提示:在读取到转换数据后,先用查表的指令算出高、低4位的两个电压值,并分别用12位的BCD码表示。接着设计12位的

37、BCD码加法。相加从最低4位开始,且每4位相加结果超过10时需作进位动作。图3-4 芯片ADC0809的控制时序图控制引脚框图如图3-5所示。图3-5 AD控制器引脚图3.3电路程序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

38、_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

39、 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=0; RD=0; next_state CS=1; WR=1; RD=0; next_state CS=0; WR=0; RD=0; if ( INT=1) then n

40、ext_state=read; else next_state CS=1; WR=0; RD=1; next_state CS=0; WR=0; RD=0; DATOUT=dout1; next_state CS=0; WR=0; RD=0; DATOUT=dout2; next_state CS=0; WR=0; RD=0; DATOUT=dout3; next_state CS=0; WR=0; RD=0; DATOUT=dout4; next_state=write; end case;end process P1;P2: process(CLK, RESET) begin if(RES

41、ET=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;data1=0000000000000000 when datain(7 downto 4)=0000 else 0000001100010011 when datain(7 downto 4)=0001 else 0000011000100101 wh

42、en 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 0010010100000

43、000 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 0100001

44、101110101 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(

45、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 when datain(3 downto 0)=1000 else 0000000101110110 when d

46、atain(3 downto 0)=1001 else 0000000110010101 when datain(3 downto 0)=1010 else 0000001000010101 when datain(3 downto 0)=1011 else 0000001000110100 when datain(3 downto 0)=1100 else 0000001001010100 when datain(3 downto 0)=1101 else 0000001001110011 when datain(3 downto 0)=1110 else 0000001010010011

47、when datain(3 downto 0)=1111 else 0000000000000000;do1=(0 & data1(3 downto 0)+(0 & data2(3 downto 0);c1=00000 when do101010 else 00001;do2=(0 & data1(7 downto 4)+(0 & data2(7 downto 4)+c1;c2=00000 when do201010 else 00001;do3=(0 & data1(11 downto 8)+(0 & data2(11 downto 8)+c2;c3=00000 when do301010

48、else 00001;do4=(0 & data1(15 downto 12)+(0 & data2(15 downto 12)+c3;doo1=do1 when do101010 else do1-01010;doo2=do2 when do201010 else do2-01010;doo3=do3 when do301010 else do3-01010;doo4=do4 when do401010 else do4-01010;dout1=111111000100 when doo1=0000 else 011000000100 when doo1=0001 else 11011010

49、0100 when doo1=0010 else 111100100100 when doo1=0011 else 011001100100 when doo1=0100 else 101101100100 when doo1=0101 else 101111100100 when doo1=0110 else 111000000100 when doo1=0111 else 111111100100 when doo1=1000 else 111101100100 when doo1=1001 else 000000001111;dout2=111111000101 when doo2=00

50、00 else 011000000101 when doo2=0001 else 110110100101 when doo2=0010 else 111100100101 when doo2=0011 else 011001100101 when doo2=0100 else 101101100101 when doo2=0101 else 101111100101 when doo2=0110 else 111000000101 when doo2=0111 else 111111100101 when doo2=1000 else 111101100101 when doo2=1001

51、else 000000001111;dout3=111111000110 when doo3=0000 else 011000000110 when doo3=0001 else 110110100110 when doo3=0010 else 111100100110 when doo3=0011 else 011001100110 when doo3=0100 else 101101100110 when doo3=0101 else 101111100110 when doo3=0110 else 111000000110 when doo3=0111 else 111111100110

52、 when doo3=1000 else 111101100110 when doo3=1001 else 000000001111;dout4=111111010111 when doo4=0000 else 011000010111 when doo4=0001 else 110110110111 when doo4=0010 else 111100110111 when doo4=0011 else 011001110111 when doo4=0100 else 101101110111 when doo4=0101 else 101111110111 when doo4=0110 e

53、lse 111000010111 when doo4=0111 else 111111110111 when doo4=1000 else 111101110111 when doo4=1001 else 000000001111;end doit;第4章 系统软件程序的设计多路数字电压表系统软件程序主要有主程序、A/D转换子程序和中断显示程序组成。4.1主程序 主程序包含初始化部分、调用A/D转换子程序和相应外部0中断显示电压数值程序,初始化部分包含存放通道的缓冲区初始化和显示缓冲区初始化。另外,对于单路显示和循环显示,系统设置了一个标志位00H控制,初始化时00H位设置为0,默认为循环显示

54、,当它为1时改变为单路显示控制,00H位通过单路、循环按键控制。流程图如图4-1所示。开始 显示子程序 A/D转换子程序 初始化图4-1主程序流程图4.2转换电子程序A/D转换子程序用于对ADC0809的4路输入模拟电压进行A/D转换,并将转换的数值存入4个相应的存储单元中,A/D转换子程序每隔一定时间调用一次,即隔一段时间对输入电压采样一次,如图4-2所示。进行十六进制调整 开始A/D转换调用延时存转换后的十六进制数数据指针加一入栈保护4路转换次数减一显示电压值NY图4-2转换子程序流程图 判断是否为04.3中断显示程序设计中采用中断的方式来读取转换完成的数据能节省CPU的资源,当系统设置好

55、后,一旦数据转换完成,便会进入外部中断0,然后在中断中读取转换的数值,处理数据并送数码管显示输出。 LED 数码管采用软件译码动态扫描的方式。在中断程序中包含多路循环显示程序和单路显示程序,多路循环显示程序把4个存储单元的数值依次取出送到4个数码管上显示,每一路显示一秒。单路显示程序只对当前选中的一路数据进行显示。每路数据显示时需经过转换变成十进制BCD码,放于4个数码管显示缓冲区中。单路或多路循环显示通过标志位00H控制。在显示控制程序中加入了对单路或多路循环按键的判断。数字量送P1口取段码地址P3.1=1?调用循环显示程序调用单路显示程序显示的是第4路重新调用显示程序NYNY图4-3中断显

56、示程序流程图第5章 电压表的调试及性能分析5.1调试与测试时钟CLK接时钟模块输出,使频率为45MHZ左右;INT接ADC0809中断输出INT;D7.0接ADC0809数据输出D7.0;CS、RD、WR分别接ADC0809的控制输入CS、RD、WR;BCDOUT接12个发光二极管。关于这个软件的使用通过查一些资料和自己的摸索学习;然后我们对所编写的程序进行编译、链接,如果没有错误和警告便可生成程序的hex文件,将此文件加到电路图上使软硬件结合运行,最后进行端口引脚进行连接,连接如图5-1中所示。图5-1引脚连线图5-2数字显示5.2性能分析由于单片机为8位处理器,当输入电压为5.00V时,输出数据值为255(FFH)因此单片机最大的数值分辨率为0.0196V(5/255)。这就决定了该电压表的最大分辨率(精度)只能达到0.0196V。测试时电压数值的变化一般以0.02V的电压幅度变化,如要获得更高的精度要求,应采用12位、13位的A/D转换器。简易数字电压表测得的值基本上均比标准值偏大0.01-0.02V。这可以通过校正0808的基准电压来解决,因为该电压表设计时直接用7805的供

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!