本科毕业设计--基于vhdl语言的数据采集系统.doc
用VHDL语言设计数据采集系统毕业设计论文用VHDL语言设计数据采集系统摘要随着计算机技术的发展与普及,数字设备正越来越多地取代模拟设备,将模拟信号转换成数字信号以及将数字信号转换成模拟信号就成了重要环节。本系统以多路数据的采集及监测为例,介绍了可编程逻辑器件在模数转换、数模转换及数据监控及处理中的设计方法。实现数据采集的方法有很多,如单片机、CPLD、C语言等,但相比各种方法,运用VHDL硬件描述语言开发的数据采集系统具有具有设计方便高效、体积小、功耗低、可靠性高、易于修改、设计周期短等特点。VHDL硬件描述语言采用自顶而下的设计方法可以对模型进行及时修改,以改进系统或子系统的功能,更正设计错误,从而提高目标系统的工作速度,减小面积耗用,降低功耗和成本等。本文介绍了基于Altera公司的集成开发环境MaxplusII,使用VHDL设计开发数据采集系统的基本方法。关键词 VHDL ADC0809 DAC0832 EDA 数据采集; AbstractWith the development of computer technology and popularization, Digital devices are increasingly replacing analog equipment,and converted the analog signals into digital signals, as well as digital signal into analog signal will become an important link.for example,this syestem depend on one multi-channel data acquisition and monitoring,introduce a programmable logic device in the analog-digital conversion, digital-analog conversion and data monitoring with handling methods in the design. There are many ways to collect data, such as SCM, CPLD, C language,and so on. But compared with various methods,using the VHDL hardware description language to design the data acquisition system is the best. Because of its facilitate ,efficient, small size, low power consumption, high reliability, easy to modify, and shorter design cycle characteristics. VHDL hardware description language using the top-down design method ,that can be the model for timely changes to improve the system or subsystem functions, design error correction, so as to enhance the work of the target systems speed, reducing the area of consumption, and lower the power consumption costs. In this paper,we introduce a integrated development environment which based on Altera's MaxplusII,and the basic method to develop a data acquisition system design by using VHDL language. Key words: VHDL EDA ADC0809 DAC0832 Data Acquisition目 录前言11 EDA技术及开发环境31.1 EDA技术31.2 VHDL41.3 EDA技术的开发环境MAXPLUSII52 数据采集系统的研究分析及设计思路62.1数据采集系统的研究与分析72.2数据采集系统的设计思路73 数据采集系统模块的相关介绍与分析83.1 数据输入模块83.1.1数据输入单元设计83.1.2 ADC0809接线图93.1.3模块功能实现103.2 数据采集系统各模块分析113.2.1 A/D转换控制模块ADZHKZ的设计183.2.2数据运算与处理模块SJYSCL173.2.3 D/A转换控制模块DAZHKZ22 3.2.4键盘输入与数据显示控制模块JPXSKZ253.2.5数码显示模块DISP的设计253.3数据输出模块253.3.1 DAC0832芯片介绍253.3.2 DACO832接线图264 仿真结果275 硬件连接实物图296 结论31致谢32参考文献32附录32 前言随着计算机技术的发展与普及,数字设备正越来越多地取代模拟设备,在生产过程控制和科学研究等广泛的领域中,计算机测控技术正发挥着越来越重要的作用。然而,外部世界的大部分信息是以连续变化的物理量形式出现的,例如温度、压力、位移、速度等。要将这些信息送入计算机进行处理,就必须先将这些连续的物理量离散化,并进行量化编码,从而变成数字量,这个过程就是数据采集。它是计算机在监测、管理和控制一个系统的过程中,取得原始数据的主要手段。数据采集系统是计算机智能仪器与外界物理世界联系的桥梁,是获取信息的重要途径。数据采集技术是信息科学的重要组成部分,已广泛应用于国民经济和国防建设的各个领域,并且随着科学技术的发展,尤其是计算机技术的发展与普及,数据采集技术将有广阔的发展前景。实现数据采集系统的控制方法很多,可以用标准逻辑器件、可编程序控制器PLC、单片机等方案来实现。但是这些控制方法的功能修改及调试都需要硬件电路的支持,在一定程度上增加了功能修改及系统调试的困难。但是EDA利用VHDL语言来设计实现该系统,将更加直观,少了汇编语言的复杂、烦琐,其自顶而下的设计方法可以对模型进行及时修改,以改进系统或子系统的功能,更正设计错误,从而提高目标系统的工作速度,减小面积耗用,降低功耗和成本等。同时,避免了传统的数字电子系统设计中电路设计复杂、调试十分困难、对错误的查找和修改的不便等问题。基于CPLDFPGA设计的数字电子系统,具有体积小、功耗低、可靠性高、易于修改、设计周期短等特点,用CPLDFPGA代替中小规模逻辑器件构成数字系统是发展方向。随着电子技术的发展,在今后的电子产品的研发中,EDA技术具有更好的开发手段和性价比,具有广泛的市场应用前景。本次设计系统以一路数据的采集及监测为例,介绍了可编程逻辑器件在模数转换,数模转换,数据监控与处理的设计方法。本系统主要是由五大部分组成:数据输入单元、数据处理单元、数据输出单元。其中包括七个功能模块:模数转换模块ADC0809、AD转换控制模块、数据运算与处理模块、DA转换控制模块、键盘显示控制模块、数码管显示模块、数模转换模块DAC0832。系统主要实现以下功能:首先对ADC0809的某路通道的数值进行AD转换为十二位的电压BCD码显示,再对此值与十二位预置电压进行差值运算,然后将所得用十二位BCD码显示的差值分三段分别转化为数码管显示形式,最后数码管循环显示输入电压、差值、采集个数。在数据处理完之后,将数据输出给DAC0832,再将数字信号转换为模拟量输出,输出值与数码管显示的差值电压相同。1. EDA技术及开发环境1.1 EDA技术EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作1。 20世纪70年代,可编程逻辑技术及其器件问世,计算机作为一种运算工具已在科研领域得到广泛应用。电子线路的CAD(计算机辅助设计)是EDA发展的初级阶段,是高级EDA系统的重要组成部分。它利用计算机的图形编辑、分析和存储等能力,协助工程师设计电子系统的电路图、印制电路板和集成电路板图。 20世纪80年代,集成电路设计进入了CMOS时代。复杂课编程逻辑器件已进入商业应用,相应的辅助设计软件也已投入使用。而在80年代末,出现了FPGA,CAE、CAD技术的应用更为广泛,他们在PCB设计方面的原理图输入、自动布局布线及PCB分析以及逻辑设计、逻辑仿真、布尔方程综合和化简等方面担任了重要角色。20世纪90年代,随着硬件描述语言的标准化得到进一步的确立,电子设计自动化技术的应用和发展,促进了EDA技术的形成。各EDA公司致力于推出兼容各种硬件实现方案和支持标准硬件描述语言的EDA工具的研究,有效的将EDA技术推向了成熟。进入21世纪后,EDA技术得到了更大的发展和应用。EDA技术将计算机软件、硬件、微电子技术交叉运用的现代化电子学科,它将CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)集于一体并深入发展。EDA技术就是以计算机为工作平台、以EDA软件工具为开发环境、以硬件描述语言为设计语言、以ASIC(Application Specific Integrate Circuits)为实现载体的电子产品自动化设计过程。在EDA软件平台上,根据原理图或硬件描述语言HDL完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真、目标芯片的适配编译、逻辑映射和编程下载等工作。设计者的工作仅限于利用软件的方式来完成对系统硬件功能的描述,在EDA 工具的帮助下,应用相应的CPLD/FPGA(Complex Programmable Logic Devices/Field Programmable Gate Array)器件,就可以得到最后的设计结果。尽管目标系统是硬件,但整个设计和修改过程如同完成软件设计一样方便和高效。此外,从应用的广度和深度来说,由于电子信息领域的全面数字化,基于EDA的数字系统的设计技术具有更大的应用市场和更紧迫的需求性。随着电子技术的发展,应用系统向小型化,快速化,大容量,重量轻的方向发展。数字系统的设计已从芯片组合化设计走向单片系统的设计。电子设计自动化是以计算机科学和微电子技术发展为先导,汇集了计算机图形学,拓扑逻辑学,微电子工艺与结构学和计算数学等多种计算机应用学科最新成果的先进技术,它是在先进的计算机平台上开发出来的一整套实现电子系统或电子产品自动化设计的技术,是当代电子设计技术的主流。其特点如下:(1)采用硬件描述语言作为设计输入。用VHDL对数字电子系统进行抽象的行为与功能描述以及具体的内部线路结构描述,从而可以在电子设计的各个阶段,各个层次进行计算机模拟验证,保证设计的正确性,可以大大降低设计成本,缩短设计周期。(2)库的引入。在各类库的引入下,使EDA工具能够完成各种自动设计过程(3)设计文档的管理。(4)强大的系统建模、电路仿真功能。EDA仿真测试技术只需通过计算机,就能对所设计电子系统从各个不同层次的系统性能特点完成一系列准确的测试与仿真操作,这极大地提高了大规模系统电子设计的自动化程度。(5)开发技术的标准化、规范化以及IP核的可重用性。EDA软件平台支持任何标准化的设计语言,它的设计成果是通用性的,IP核具有规范的接口协议。良好的可移植性与可测试性,为高效高质的系统开发提供了可靠的保证。(6)适用于高效率大规模系统设计的自顶向下设计方案,能将所有设计环节纳入统一的自顶向下的设计方案中。(7)全方位的利用计算机自动设计、仿真和测试技术。EDA不但在整个设计流程上充分利用计算机的自动设计能力,在各个层次上利用计算机完成不同内容的仿真模拟,而且在系统板设计结束后仍可利计算机对硬件系统进行完整的测试(边界扫描技术)。(8)对设计者的硬件知识和硬件经验要求低。EDA技术的标准化HDL设计语言与设计平台对具体硬件的无关性,使设计者能更大程度地将自己的才智和创造力集中在设计项目性能的提高和成本的降低上,而将更具体的硬件实现工作让专门部门来完成。(9)纯硬件系统的高可靠性。1.2 VHDLVHDL语言是随着集成电路系统化和高度集成化的发展而逐步发展起来的,是一种用于数字系统设计和测试的硬件描述语言。对于小规模的数字集成电路,通常可以用传统的设计输入方法(如原理图输入)来完成,并进行模拟仿真。但纯原理图输入方式对于大型、复杂的系统,由于种种条件和环境的制约,其工作效率较低,而且容易出错,暴露出多种弊端。在信息技术高速发展的今天,对集成电路提出了高集成度、系统化、微尺寸、微功耗的要求,因此,高密度可编程逻辑器件和VHDL便应运而生2。VHDL主要用于描述数字系统的结构、行为、功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法十分类似于一般的计算机高级语言。应用VHDL进行工程设计的优点是多方面的,具体如下:(1)与其他硬件描述语言相比,VHDL有更强大的行为描述能力,从而决定了它成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件的结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2)VHDL最初是作为一种仿真标准格式出现的,因此VHDL既是一种硬件电路描述和设计语言,也是一种标准的网表格式,还是一种仿真语言。它具有丰富的仿真语句和库函数,设计者可以在系统设计的早期随时对设计进行仿真模拟,查验所设计系统的功能特性,从而对整个工程设计的结构和功能可行性作出判断。(3)VHDL的行为描述能力和程序结构决定了它具有支持大规模设计和分解已有设计的再利用功能,满足了大规模系统设计要有多个开发组共同进行工作来实现的这种市场需求。VHDL中设计实体的概念、程序包的概念、设计库的概念为设计的分解和并行工作提供了有力的支持。(4)对于VHDL完成的一个确定设计,可以利用EDA工具进行逻辑综合和优化,并自动将VHDL描述转化成门级网表,生成一个更有效、更高速的电路系统;此外,设计还可以容易地从综合优化后的电路获得设计信息,返回去更新修改VHDL设计描述,使之更为完善。这种方式突破了门级设计的瓶颈,极大地减少了电路设计的时间和可能发生的错误,降低了开发成本。(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管最终设计实现的目标器件是什么,而进行独立的设计。正因为VHDL的硬件描述与具体的工艺技术和硬件结构无关,VHDL设计程序的硬件实现目标器件有广阔的选择范围,其中包括各个系列的CPLD、FPGA及各种门阵列实现目标。(6)由于VHDL具有类属描述语句和子程序调用等功能,对于已完成的设计,在不改变原程序的条件下,只需改变端口类型参量或函数,就能轻易地改变设计的规模和结构。1.3 EDA技术的开发环境MAXPLUSIIMax+plusII(或写成Maxplus2,或MP2) 是Altera公司推出的的第三代PLD开发系统(Altera第四代PLD开发系统被称为:QuartusII,主要用于设计新器件和大规模CPLD/FPGA).使用MAX+PLUSII的设计者不需精通器件内部的复杂结构。设计者可以用自己熟悉的设计工具(如原理图输入或硬件描述语言)建立设计,MAXPLUSII把这些设计转自动换成最终所需的格式。其设计速度非常快。对于一般几千门的电路设计,使用MAXPLUSII,从设计输入到器件编程完毕,用户拿到设计好的逻辑电路,大约只需几小时。设计处理一般在数分钟内内完成。特别是在原理图输入等方面,MAXPLUSII被公认为是最易使用,人机界面最友善的PLD开发软件,特别适合初学者使用。MAXPLUSII软件是一款高效的、非常灵活的数字电路开发设计软件,它提供了多种输入方法供设计者选用,利用合适的输入方法设计完数字系统之后,设计者可利用逻辑综合工具进行逻辑综合,并可以用仿真器进行软件仿真,使设计者能够尽早发现设计中的错误,缩短设计周期。首先我们可以先看一看用FPGACPLD开发工具进行电路设计的一般流程:1.设计输入。在传统设计中,设计人员是应用传统的原理图输入方法来开始设计的。自90年代初, Verilog、VHDL、AHDL等硬件描述语言的输入方法在大规模设计中得到了广泛应用。2.前仿真(功能仿真)。设计的电路必须在布局布线前验证电路功能是否有效。(ASCI设计中,这一步骤称为第一次Sign-off)PLD设计中,有时跳过这一步。3.设计编译。设计输入之后就有一个从高层次系统行为设计向门级逻辑电路设转化翻译过程,即把设计输入的某种或某几种数据格式(网表)转化为软件可识别的某种数据格式(网表)。4.优化。对于上述综合生成的网表,根据布尔方程功能等效的原则,用更小更快的综合结果代替一些复杂的单元,并与指定的库映射生成新的网表,这是减小电路规模的一条必由之路。5.布局布线。在PLD设计中,3-5步可以用PLD厂家提供的开发软件(如 Maxplus2)自动一次完成。6.后仿真(时序仿真)需要利用在布局布线中获得的精确参数再次验证电路的时序。(ASCI设计中,这一步骤称为第二次Signoff)。7.生产。布线和后仿真完成之后,就可以开始ASCI或PLD芯片的投产。同样,使用Maxplus2基本上也是有以上几个步骤,但可简化为:(1)设计输入 (2)设计编译(3)设计仿真 (4)下载 2.数据采集系统的研究分析及设计思路2.1数据采集系统的研究与分析数据采集技术(Data Acquisition)是信息科学的一个重要分支,它研究信息数据的采集、存贮、处理以及控制等作业。在智能仪器、信号处理以及工业自动控制等领域,都存在着数据的测量与控制问题。将外部世界存在的温度、压力、流量、位移以及角度等模拟量(Analog Signal)转换为数字信号(Digital Signal), 在收集到计算机并进一步予以显示、处理、传输与记录这一过程,即称为“数据采集”3。相应的系统即为数据采集系统(Data Acquisition System,简称DAS)。数据采集是计算机在监测、管理和控制一个系统的过程中,取得原始数据的主要手段。数据采集系统是计算机智能仪器与外界物理世界联系的桥梁,是获取信息的重要途径。数据采集技术是信息科学的重要组成部分,已广泛应用于国民经济和国防建设的各个领域,并且随着科学技术的发展,尤其是计算机技术的发展与普及,数据采集技术将有广阔的发展前景4。传统的数据采集系统,通常采用单片机或DSP作为控制模块,控制ADC,存储器和其他外围电路的工作。随着数据采集对速度性能的要求越来越高,传统的采集系统的弊端越来越明显。单片机的时钟频率较低且用软件实现数据采集,使得采集速度和效率降低,软件运行时间在整个采样时间中占很大的比例。而EDA技术的FPGA (现场可编程门阵列)有单片机无法比拟的优势:FPGA时钟频率高,内部延时小,全部控制逻辑由硬件完成,速度快、效率高 。随着复杂可编程逻辑器件的广泛应用,以EDA工具作为开发手段,运用VHDL语言来设计将使整个系统大大简化,从而提高整体的性能和可靠性。因此利用VHDL硬件描述语言来设计数据采集系统是一个比较合理的方案。这个系统的设计对以后工作及生活具有相当的意义,它不仅在工业控制中应用广泛,而且还可以用来解决生活中的一些小问题。在电子系统非常广泛应用领域内,到处可见到对信号进行模数/数模转换的数字电路。在ABS系统(汽车防抱制动系统)、计算机技术、GPRS环抱系统、工业自动控制系统等系统中,数据采集系统都有着举足轻重的作用5。数字技术及计算机技术的发展使得系统的设计更理想化,以实现更多的功能。同时,还进一步提高了系统的可靠性和工作效率。2.2数据采集系统的设计思路系统主要实现以下功能:数据采集控制系统是对生产过程或科学实验中各种物理量进行实时采集、测试和反馈控制的闭环系统。它在工业控制、军事电子设备医学监护等许多领域发挥着重要作用。本设计要求用一个CPLD/FPGA、模数转换器ADC和数模转换器DAC构成了一个数据采集系统,并用CPLD/FPGA实现数据采集中对A/D转换、数据运算、D/A转换以及有关据显示的控制。系统的组成框图如图2.1所示,其功能如下:(1)、系统按一定速率采集输入电压U1,经ADC0809转换为8位数字量DATA;(2)、输入数据与通过预置按键输入数据采集控制器内的标准数据相减,求得带极性位的差值±U(数字量);差值之绝对值送至DAC0832转换为U,它和特定的极性判别电路共同输出±U。(3) 数据采集和处理均在数据采集系统控制器的管理下有序进行。工作速率由时钟信号CLK的速率决定。CPLD/FPGA数据采集控制器DAC0832ADC0809U1DOUTU开关和控制键F8.88CLKADDAALECESTARTEOCDATA图2.1 系统组成框图编译和仿真时要选择合适的芯片,不同的芯片其速度等级是不一样的。选择速度等级高的芯片,仿真时延就小,这样便于分析时序波形。否则,将给时序分析带来一些不必要的麻烦。编译结束时,要注意认真分析芯片资源的利用情况,这其中主要包括芯片管脚和逻辑单元的利用率如果没有充分利用资源就要重新选择芯片,争取实现性价比的最大化。所以大致流程是先进行主程序的输入/输出模块,数据处理及监控模块的设计。然后对各程序进行修改、编译、仿真,并对出现问题的程序进行程序修改和调试。3.数据采集系统模块的相关介绍与分析3.1 数据输入模块3.1.1数据输入单元设计数据输入单元的设计是通过ADC0809的常规应用来实现的,其具体的实现如图3.1所示。其中ADC0809的CLOCK信号是由外部输入的。此信号的输入没有固定的要求,只要足够高就可以了,通常信号频率为640KHZ、750KHZ等。ADC0809的START信号也是由外部接入的,但是此信号的频率不宜过高,要小于1KHZ。将ADC0809的输出作为FPGA的输入。ADC0809是一种比较典型的8位8通道逐次逼近式A/D转换器CMOS工艺,可实现8路模拟信号的分时采集,片内有8路模拟选通开关,以及相应的通道地址锁存用译码电路,其转换时间为100s左右,采用双排28引脚封装。ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 AD转换,之后EOC输出信号变低,指示转换正在进行。直到AD转换完成,EOC变为高电平,指示AD转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。其引脚说明如下:IN0IN7:8路模拟量输入通道ADDAADDC:地址线用于选择模拟量输入通道ALE:地址锁存允许信号START:转换启动信号D0D7:数据输出线OE: 输出允许信号,低电平允许转换结果输出CLOCK:时钟信号输入引脚,通常使用500KHzEOC:转换结束信号,为0代表正在转换,1代表转换结束Vcc:5V电压3.1.2 ADC0809接线图此电路图主要实现将八路输入模拟信号转换为数字信号,为数据处理及监控模块提供输入信号。+5V+5VALEVOCCLKADCALESTARTADCOEOEADC0809NR4710KR4810K54321282726ADCALE 22A2 23A1 24A0 25131612 VCC7 D2521 D720 D619 D518 D48 D315 D214 D117 D0REF-REF+EOCD7D6D5D4D3D2D1D0GNDALEADDCADDBADDAIN7IN6IN5IN4IN3IN2IN1IN0 图3.1 ADC0809接线图3.1.3模块功能实现此系统是用ADC0809对模拟信号进行采样,转换为数字信号,由可编程逻辑器件读入,再送到DAC0832,将数字信号转换为模拟信号。用可编程逻辑器件实现对ADC0809的控制,由于采用查询信号EOC的方式,所以可达到ADC0809的最高速度(注:ADC0809和DAC0832都不能对负电压进行操作)。主要包括分频模块和ADC控制模块。总体框图如图3.2所示:图中OE为输出允许信号,高电平允许转换结果输出 ;EOC为转换结束信号,为0代表正在转换,1代表转换结束;DIN7.0为八路模拟量输入通道;DOUT7.0为转换后的八路数字信号输出通道。 图3.2 总体框图3.2数据采集系统各模块分析3.2.1 A/D转换控制模块ADZHKZ的设计ADC0809模数转换的控制:ADC0809是CMOS的8位A/D转换器,片内有8路模拟开关,可控制8个模拟量中的一个进入转换器中。ADC0809的分辨率为8位,转换时间约100 s,含锁存控制的8路多路开关,输出由三态缓冲器控制,单5 V电源供电。图3.3是ADC0809的管脚及主要控制信号时序图。 2NI1NI0NIADDABDDACDDAELA0D1D2D3D7D-FER5D3NI4NI5NI6NI7NITRASTCOE4DEOKLCCCV+FER6DDNG ADC0809 图3.3 ADC0809的管脚及主要控制信号的时序图对于ADC0809模数转换的控制程序段的VHDL设计,根据ADC0809的A/D转换控制要求,我们可用一个状态机来实现,其状态转换如图3.4所示。 ST0ST1ST2ST3ST6ST5ST4ALE<=0START<=0LOCK<=0 CEN<=0ALE<=1START<=0OE<=0 LOCK<=0CEN<=0ALE<=0START<=0OE<=0LOCK<=1CEN<=0EOC=0EOC=1ALE<=0START<=0OE<=1LOCK<=0CEN<=1ALE<=0START<=1OE<=0LOCK<=0CEN<=0CEN<=0ALE<=0START<=0OE<=0LOCK<=0CEN<=0ALE<=0START<=0OE<=0LOCK<=0CEN<=0图3.4 ADC0809工作时的状态转换图转换后数据的BCD码转换处理: 表3.1是在ADC0809的基准电压(Vref)为5.12 V时,模拟输入电压与输出电压的对应关系其中最小电压准位是5/28=5/256=0.2 V。 这样,当由ADC0809的D7.0收到的数据信号是10000110(即86H)时,则对照表3.1时,高4位1000是2.56 V,而低4位0110是0.12 V,所以最后的电压输出结果是2.56 V+0.12 V=2.68 V。表3.1 ADC0809模拟输入电压与输出电压的对应关系进 制参考电压(Vref)为5V162高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.24D11014.160.26E11104.480.28F11114.800.30进位 10010 0101 0110+ 0000 0001 1000 0010 0111 0100图3.5 BCD加法示意图为了方便后续的电压数据显示,我们应将输出电压表示成12位的BCD码形式。如上述的2.56 V是0010 0101 0110,0.12 V是0000 0001 0010,所以相加的结果2.68 V是0010 0110 1000,因此必须设计一个12位的BCD码加法程序。图3.5是2.56+0.18=2.74的二进制的BCD加法示意图。从图中可以看出,二进制BCD码相加时,由最低位4位加起,且每4位相加的结果超过10时需作进位操作。 A/D转换控制模块ADZHKZ的VHDL源程序:图3.6 A/D转换控制模块符号编辑文件 -ADZHKZ.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ADZHKZ IS PORT(D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); -0809的8位转换数据输出RST: IN STD_LOGIC; -复位信号 CLK: IN STD_LOGIC; -转换工作时钟信号 EOC: IN STD_LOGIC; -0809的转换结束控制信号 ALE: OUT STD_LOGIC; -0809的通道选择地址锁存信号 START: OUT STD_LOGIC; -0809的转换启动控制信号 OE: OUT STD_LOGIC; -0809的输出使能控制信号 ADDA: OUT STD_LOGIC; -0809的通道选择控制信号 BCDOUT: OUT STD_LOGIC_VECTOR(11 DOWNTO 0); -来自0809的数据经BCD转换后的输出 ); END ENTITY ADZHKZ; ARCHITECTURE ART OF ADZHKZ IS TYPE STATES IS (ST0,ST1,ST2,ST3,ST4,ST5,ST6); SIGNAL CURRENT_STATE,NEXT_STATE: STATES; SIGNAL REGL: STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL LOCK0,LOCK1: STD_LOGIC; -转换后数据输出锁存时钟信号 SIGNAL VALUE: STD_LOGIC_VECTOR(11 DOWNTO 0); SIGNAL CEN: STD_LOGIC; SIGNAL ALE0: STD_LOGIC; SIGNAL START0: STD_LOGIC; SIGNAL OE0: STD_LOGIC; BEGIN-A/D转换控制模块 STATESYSTEM: BLOCK IS BEGIN ADDA<='1' -状态转换控制 PRO: PROCESS(CURRENT_STATE,EOC) IS BEGIN CASE CURRENT_STATE IS WHEN ST0=>ALE0<='0' START0<='0' OE0<='0' LOCK0<='0' NEXT_STATE<=ST1; CEN<='0' WHEN ST1=>ALE0<='1' START0<='0' OE0<='0' LOCK0<='0' NEXT_STATE<=ST2; CEN<='0' WHEN ST2=>ALE0<='0' START0<='1' OE0<='0' LOCK0<='0' NEXT_STATE<=ST3; CEN<='0' WHEN ST3=>ALE0<='0' START0<='0' OE0<='0' LOCK0<='0' CEN<='0' IF EOC='1' THEN -测试EOC的下降沿 NEXT_STATE<=ST3; ELSE NEXT_STATE<=ST4; END IF; WHEN ST4=>ALE0<='0' START0<='0' OE0<='0' LOCK0<='0' CEN<='0' IF EOC='0' THEN NEXT_STATE<=ST4; -测试EOC的上升沿,=1表明转换结束