基于FPGA的等精度数字频率计设计毕业论文设计_第1页
基于FPGA的等精度数字频率计设计毕业论文设计_第2页
基于FPGA的等精度数字频率计设计毕业论文设计_第3页
基于FPGA的等精度数字频率计设计毕业论文设计_第4页
基于FPGA的等精度数字频率计设计毕业论文设计_第5页
已阅读5页,还剩54页未读, 继续免费阅读

下载本文档

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

文档简介

兰州交通大学毕业设计(论文)摘要频率是常用的物理量,工程中很多物理量的测量,如时间测量、速度控制等,都可转化为频率测量。此外,还经常遇到以频率为参数的测量信号,例如流量、转速等。所以频率测量方法的研究越来越受到重视。基于传统测频原理的频率计的测量精度将随被测信号频率的下降而降低,在实用中有较大的局限性,而等精度频率计不但具有较高的测量精度,而且在整个频率区域能保持恒定的测试精度。本课题设计的等精度数字频率计是采用当今电子设计领域流行的EDA技术,以FPGA为核心,配合STC89C51单片机。同时,采用等精度测频原理,实现了0.01Hz--50MHz信号频率的等精度频率测量。此外,该系统还实现测量周期、脉宽、占空比等功能。设计中用一块FPGA芯片EP2C5Q208C8完成各种时序逻辑控制、计数功能。在OuartusII平台上,用VHDL语言编程完成FPGA的软件设计、编译、调试、仿真和下载。用STC89C51单片机作为系统的主控部件,实现整个电路的测试信号控制、数据运算处理、键盘扫描和控制数码管的显示输出。系统将单片机STC89C51的控制灵活性及FPGA芯片的现场可编程性相结合,不但大大缩短了开发研制周期,而且使本系统具有结构紧凑、体积小,可靠性高,测频范围宽、精度高等优点。关键词:频率计;EDA技术;FPGA;单片机AbstractFrequencyiscommonlyusedphysicalquantity,lotsofmeasurementofphysicalquantityintheproject,suchasthemeasurementoftime,thecontrolofvelocity,canbechangedintothemeasurementoffrequency.Besides,themeasuredsignalwithafrequencyparameter,suchastherateofflow,therotationalspeed,isoftenencountered.Sotheresearchofthemethodofmeasuringfrequencyhasbecomemoreandmoresignificantintherealapplication.Accordingtotheprinciplesoftraditionalfrequencymeasurement,themeasurementaccuracyoffrequencymeterwilldecreasewiththesignalfrequencydecrease.butithasmorelimitationsintherealapplication,equalprecisionfrequencymeternotonlyhashighaccuracy,butalsomaintainsconstanttestaccuracyinthewholefrequencyregion.WiththehelpofFPGAandcooperatingwiththesinglechipcomputerSTC89C51,Thedigitalfrequencydesigninourprogramhasrealizedtheprecisionmeasurementof0.01Hz-50MHzsignalfrequencybyadoptingthecurrentEDAtechniqueprevailingintheelectronicdesignsandusingtheprincipleofmulti-periodsynchronyfrequencymeasurement.Besides,thesystemcancompletethecycle,pulsewidth,dutycyclemeasurementfunction.Inthisdesign,usinganFPGAchipEP2C5Q208C8completesavarietyoftemporallogiccontrolandcountingfunction.IntheplatformofOuartusII,usingVHDLlanguagecompletesFPGAsoftwaredesign,compiler,debugging,simulation,anddownload.ByuseoftheSTC89C51singlechipcomputerasthemaincontrollingparts,thecontrolofthetestedsignal,thescanofkeyboardandtheoutputdisplayofLEDcanberealized.ThesystemcombinesthecontrolflexibilityofSTC89C51withprogrammableperformanceofFPGA,consequently,notonlycanitshortentheperiodofthedevelopmentandresearch,butalsoithastheadvantagesofcompactstructure,littlevolume,highreliability,widescopeandhighprecision.Keywords:Frequencymeter,EDAtechnique,FPGA,Singlechipcomputer毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作者签名:日期:指导教师签名:日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名:日期:

学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名: 日期:年月日导师签名:日期:年月日

目录摘要 IAbstract II目录 III1绪论 31.1本课题的研究背景及意义 31.2本课题的主要内容 32系统设计的相关理论 32.1频率测量方法的研究 32.1.1常用测频方案 32.1.2等精度测频原理 32.1.3等精度测频误差分析 32.2单片机模块理论及知识 32.2.1MCS-51单片机结构简介 32.2.2Keilμvision3软件概述 32.2.3Proteus软件概述 32.3FPGA模块理论及知识 32.3.1FPGA原理概述 32.3.2QuartusII软件概述 32.3.3VHDL语言简介及开发优点 33系统硬件电路设计 33.1系统顶层电路组成 33.2被测信号放大整形电路设计 33.3单片机模块设计 33.3.1单片机最小系统 33.3.2键盘接口电路 33.3.3LED数码管显示电路 33.4FPGA模块电路设计 33.4.1基本单元电路 33.4.2测量与自检选择电路 33.4.3脉宽控制电路 33.4.4测频与测周期电路 33.5单片机与FPGA的相互控制电路 34系统软件设计 34.1单片机主程序设计 34.2复位自检程序设计 34.3键盘程序设计 34.4测频子程序设计 34.5测周期子程序设计 34.6测脉宽子程序设计 34.7测占空比子程序设计 34.8LED数码管显示子程序设计 35系统性能分析 35.1测量范围分析 35.2测量精度分析 35.3被测信号幅值分析 3结论 3致谢 3参考文献 3附录一FPGA程序 3附录二单片机程序 3绪论本课题的研究背景及意义EDA(ElectronicDesignAutomation——电子设计自动化)代表了当今电子设计技术的最新发展方向,通过VHDL(VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage)硬件描述语言的设计,用FPGA(Field-ProgrammableGateArray——现场可编程门阵列)来实现小型电子设备的设计,是开发仪器仪表的主流。据统计,目前发达国家在电子产品开发中EDA工具的利用率已达很高,而大部分的FPGA已采用HDL(HardwareDescriptionLanguage——硬件描述语言)设计。由于VHDL已成为IEEE标准,目前的EDA工具可以使ASIC系统的行为、功能、算法用VHDL描述直接生成FPGA器件,使设计者将精力集中于设计构思,提高了设计效率,同时也利于设计的分解、交流和重用。随着微电子技术和计算机技术的发展,可编程逻辑器件,EDA技术,SOPC等新概念和新技术层出不穷,新技术的应用迅速渗透到电子、通信、信息、汽车制造等领域,有力的推动了社会生产力的发展和社会信息化程度的提高。目前,市场上的频率计厂家可分为三类:中国大陆厂家、中国台湾厂家、欧美厂家。其中,欧美频率计厂家所占有的市场份额最大。欧美频率计厂家主要有:PendulumInstruments和Agilent科技。PendulumInstruments公司是一家瑞典公司,总部位于瑞典首都斯德哥尔摩。Pendulum公司源于Philips公司的时间、频率部门,在时间频率测量领域具有40多年的研发生产经历。PendulumInstruments公司常规频率计型号主要有:CNT-91、CNT-90、CNT-81、CNT-85。同时,PendulumInstruments公司还推出铷钟时基频率计CNT-91R、CNT-85R。以及微波频率计CNT-90XL(频率测量范围高达60G)。Agilent科技公司是一家美国公司,总部位于美国的加利福尼亚。Agilent科技公司成立于1939年,在电子测量领域也有着70多年的研发生产经历。Agilent科技公司的常规频率计信号主要有:53181A、53131A、53132A。同时,Agilent科技公司还推出微波频率计:53150A,53151A,53152A(频率测量范围最高可达46G)。基于FPGA的等精度频率计有运算速度快、系统较稳定、测量范围广等特点。其中主要应用到EDA(电子设计自动化)技术。伴随着集成电路技术的发展,EDA逐渐成为重要的设计手段。已经广泛应用于模拟与数字电路系统等许多领域。EDA是一种实现电系统或电子产品自动化设计的技术,它与电子技术、微电子技术的发展密切相关,它吸收了计算机科学领域的大多数最新研究成果,以高性能的计算机为工作平台,促进了工程发展。本设计利用FPGA进行测频计数,单片机实施控制,实现频率计的设计过程。该频率计利用等精度的设计方法,克服了基于传统测频原理的频率计的测量精度随被测信号频率的下降而降低的缺点。等精度的测量方法不但具有较高的测量精度,而且在整个测频区域内保持恒定的测试精度。本课题的主要内容随着EDA(ElectronicsDesignAutomation)技术的发展和可编程逻辑器件的广泛应用,传统的自下而上的数字电路设计方法、工具、器件已远远落后于当今技术的发展。基于EDA技术正在承担起越来越多的数字系统设计任务。本设计主要论述了利用FPGA进行测频计数,单片机实施控制,实现多功能频率计的过程,使得频率计具有了测量精度高、功能丰富、控制灵活等特点。该频率计依照等精度的测量原理,克服了传统计数器测频原理随被测信号频率下降而降低的缺点。等精度测量方法不但具有较高的精度,而且在整个频率域保持恒定的测量精度。该频率计利用FPGA来实现对频率、周期、脉宽、占空比的测量计数,由单片机实现对系统的控制、数据的显示、数据运算及数制转换等功能。本课题的主要工作包括以下几项内容:(1)简述了本课题研究的背景和意义。(2)详细地论述了系统设计的相关理论,主要包括等精度频率计的测频原理、单片机和FPGA应用平台的介绍。(3)完成了频率计的系统硬件电路的设计,同时完成了基于数字硬件电路设计平台QuartusⅡ的FPGA硬件电路设计,FPGA模块用来完成高速计数器的功能;单片机完成测试控制、数据处理、键盘输入控制、数码管显示控制等功能,并对整个系统进行总体控制。(4)用C语言完成了系统中单片机控制的的软件设计。(5)对频率计的系统性能进行分析,通过分析得出,本设计的测频范围是0.01Hz~50MHz,测量精度为百万分之一,被测信号的幅度为0.2mv-5v。本文分5章介绍了基于FPGA的等精度数字频率计的设计原理、设计步骤,性能分析等。系统设计的相关理论频率测量方法的研究常用测频方案在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。测量频率的方法有多种,其中等精度测量频率具有精度高、使用方便、测量迅速,以及便于现测量、过程自动化等优点,是频率测量的重要手段之一。普通测频有两种方式:一是间接测频法,二是直接测频法。方案一:采用间接测频法,即周期法。通过测量待测信号的周期并求其倒数,需要有标准频率的信号,在待测信号的一个周期内,记录标准频率的周期数,这种方法的计数值会产生最大为±1个脉冲误差,并且测试精度与计数器中记录的数值有关,为了保证测试精度,测周期法仅适用于低频信号的测量。方案二:采用直接测频法。直接测频法就是在确定的闸门时间内,记录被测信号的脉冲个数。由于闸门时间通常不是待测信号的整数倍,这种方法的计数值也会产生最大为±1个脉冲误差。进一步分析测量准确度:设待测信号脉冲周期为Tx,频率为Fx,当测量时间为T=1s时,测量准确度为&=Tx/T=1/Fx。由此可知直接测频法的测量准确度与信号的频率有关:当待测信号频率较高时,测量准确度也较高,反之测量准确度也较低。因此直接测频法只适合测量频率较高的信号,不能满足在整个测量频段内的测量精度保持不变的要求。方案三:采用等精度频率测量法,测量精度保持恒定,不随所测信号的变化而变化。在快速测量的要求下,要保证较高精度的测频,必须采用较高的标准频率信号。单片机受本身时钟频率和若干指令运算的限制,测频速度较慢,无法满足高速、高精度的测频要求;而采用高集成度、高速的现场可编程门阵列FPGA为实现高速、高精度的测频提供了保证。综上所述,本设计所采用的测频方法就是等精度频率测量法,下面我们将对等精度频率测量法做进一步介绍。等精度测频原理等精度测频方法是在直接测频方法的基础上发展起来的。它的闸门时间不是固定的值,而是被测信号周期的整数倍,即与被测信号同步,因此,避免了对被测信号计数所产生±1个字误差,并且达到了在整个测试频段的等精度测量。其测频原理如图2.1所示。在测量过程中,有两个计数器分别对标准信号和被测信号同时计数。首先给出闸门开启信号(预置闸门上升沿),此时计数器并不开始计数,而是等到被测信号的上升沿到来时,计数器才真正开始计数。然后预置闸门关闭信号(下降沿)到时,计数器并不立即停止计数,而是等到被测信号的上升沿到来时才结束计数,完成一次测量过程。可以看出,实际闸门时间t与预置闸门时间t1并不严格相等,但差值不超过被测信号的一个周期[1]。图2.1等精度测频原理波形图等精度测频的实现方法可简化为图2.2所示。CNT1和CNT2是两个可控计数器,标准频率信号从CNT1的时钟输入端CLK输入;经整形后的被测信号从CNT2的时钟输入端CLK输入。当预置门控信号为高电平时,经整形后的被测信号的上升沿通过D触发器的Q端同时启动CNT1和CNT2。CNT1、CNT2同时对标准频率信号和经整形后的被测信号进行计数,分别为NS与NX。当预置门信号为低电平的时候,随后而来的被测信号的上升沿将使两个计数器同时关闭,所测得的频率为(FS/NS)*NX。则等精度测量方法测量精度与预置门宽度和标准频率有关,与被测信号的频率无关。在预置门时间和常规测频闸门时间相同而被测信号频率不同的情况下,等精度测量法的测量精度不变。图2.2等精度测频实现原理图等精度测频误差分析设在一次实际闸门时间t中计数器对被测信号的计数值为Nx,对标准信号的计数值为Ns。标准信号的频率为fs,则被测信号的频率如式(2-1):fx=(Nx/Ns)·fs(2-1)由式2-1可知,若忽略标频fs的误差,则等精度测频可能产生的相对误差如式(2-2):δ=(|fxe-fx|/fxe)×100%(2-2)其中fxe为被测信号频率的准确值。在测量中,由于fx计数的起停时间都是由该信号的上升沿触发的,在闸门时间t内对fx的计数Nx无误差(t=NxTx);对fs的计数Ns最多相差一个数的误差,即|ΔNs|≤1,其测量频率如式(2-3):fxe=[Nx/(Ns+ΔNs)]·fs(2-3)将式(2-1)和(2-3)代入式(2-2),并整理如式(2-4):δ=|ΔNs|/Ns≤1/Ns=1/(t·fs)(2-4)由上式可以看出,测量频率的相对误差与被测信号频率的大小无关,仅与闸门时间和标准信号频率有关,即实现了整个测试频段的等精度测量。闸门时间越长,标准频率越高,测频的相对误差就越小。标准频率可由稳定度好、精度高的高频率晶体振荡器产生,在保证测量精度不变的前提下,提高标准信号频率,可使闸门时间缩短,即提高测试速度[2]。单片机模块理论及知识MCS-51单片机结构简介MCS-51单片机分为51和52两个系列,包括80c51、87c51、80c52、87c52等典型产品型号,它们的结构基本相同,主要差别仅在片内存储器、计数器。中断源的配置有所不同,其中52子系列在存储器容量、计数器和中断源数量都高于51子系列。考虑到本设计采用STC89C51,这里将以80c51为例进行介绍[3]。MCS-51单片机的内部结构包含了作为微型计算机必需的基本功能部件,如CPU、RAM、ROM、定时/计数器和可编程并行I/O口、可编程串行口等。这些功能部件通常都挂靠在单片机内部总线上,通过内部总线穿送数据信息和控制信息。其基本内部结构如图2.3所示。图2.3MCS-51单片机内部基本结构80C51单片机内部资源主要包括:8位中央处理器;片内振荡器和时钟电路;4KB片内程序存储器(ROM);128字节的片内RAM;2个16位定时/计数器;可寻址64KB外部程序存储器和64KB数据存储空间的控制电路;4个8位双向I/O口;1个全双工串行口;5个中断源;80C51单片机采用40引脚双列直插式封装形式,其引脚分布如图2.4所示。(1)电源及晶振引脚(4只)VCC、GND、XTALL1、XTAL2;(2)控制引脚(4只)PSEN、ALE、EA、RST;(3)并行I/O口引脚(32只)P0.0-P0.7、P1.0-P1.7、P2.0-P2.7、P3.0-P3.7。图2.480c51单片机引脚图Keilμvision3软件概述Keil是德国KeilSoftware公司出品的单片机集成开发软件,该软件支持51单片机的所有变种。Keil提供了包括C编译器、宏汇编、连接器、库管理及一个功能强大的仿真调试器在内的完整开发方案,并通过一个集成开发环境(μVision3)将这些部分组合在一起。Keil单片机集成开发软件可以运行在Windows98/NT/2000及XP等操作系统下。μVision3软件界面包括4大组成部分,即菜单工具栏、项目管理窗口、文件窗口和输出窗口。其软件开发流程为:(1)创建一个项目,从器件库中选择目标器件,配置工具设置;(2)用C语言或汇编语言创建源程序;(3)用项目管理器生成应用;(4)修改源程序中的错误;(5)测试,连接应用。Proteus软件概述Proteus软件是英国Labcenter公司开发的电路及单片机系统设计与仿真软件。Proteus软件可以实现数字电路、模拟电路及微控制器系统与外设的混合电路系统的电路仿真、软件仿真、系统协同仿真和PCB设计等功能。Proteus软件是目前唯一能对各种处理器进行实时仿真、调试与测试的EDA工具,真正实现了在没有目标原形时可以对系统进行调试、测试和验证。Proteus软件大大提高了企业的产品开发率,降低了开发风险。由于Proteus软件逼真、真实的协同仿真功能,它也特别适合于作为配合单片机课堂教学和实验的学习工具。Proteus软件提供了30多个元器件库、7000余种元器件。元器件涉及电阻、电容、二极管、三极管、变压器、继电器、各种放大器、各种激励源、各种微控制器、各种门电路和各种终端等。Proteus软件还提供有交直流电压表、逻辑分析仪、示波器、定时/计数器和信号发生器等测试信号工具,用于电路测试。Proteus软件主要由两个设计平台组成:(1)ISIS(IntelligentSchematicInputSystem)原理图设计与仿真平台,它用于电路原理图的设计以及交互式仿真。(2)ARES(AdvancedRoutingAndEditingSoftware)高级布线和编辑软件平台,它用于印制电路板的设计,并产生输出文件。FPGA模块理论及知识FPGA原理概述FPGA器件具有高密度、高速率、系列化、标准化、小型化、多功能、低功耗、低成本,设计灵活方便,可无限次反复编程,并可现场模拟调试验证等特点。使用FPGA器件,可在较短地时间内完成一个电子系统地设计和制作,缩短了研制周期,达到快速上市和进一步降低成本的要求[4]。FPGA具有掩模可编程门阵列地通用结构,它由排成阵列的逻辑功能块组成,由可编程的互连资源连接这些逻辑功能块来实现不同的设计。FPGA由可配置逻辑块(CLB-ConfigurableLogicBlock)、输入/输出模块(IOB-I/OBlock)和互连资源(IR-InterconnectResource)三部分组成。可配置逻辑块CLB是实现用户功能的基本单元,它们通常规则地排列成一个阵列,散布于整个芯片;可编程输入/输出模块(IOB)主要完成芯片上逻辑与外部封装脚的接口,它通常排列在芯片的四周;可编程互连资源(IR)包括各种长度的连线线段和一些可编程连接开关,它们将各个CLB之间或CLB、IOB之间以及IOB之间连接起来,构成特定功能的电路。(1)可配置逻辑块(CLB)一般有三种结构形式:①查找表结构;②多路开关结构;③多级与非门结构。CLB是FPGA地主要组成部分,它主要由逻辑函数发生器、触发器、数据选择器等电路组成。(2)输入/输出模块(IOB)IOB主要由输入触发器、输入缓冲器和输出触发/锁存器、输出缓冲器组成。其结构如下图所示。每个IOB控制一个引脚,它们可被配置为输入、输出或双向I/O功能。(3)可编程连线(IR)FPGA芯片内部单个CLB输入输出之间、各个CLB之间、CLB和I/OB之间的连线由许多金属线段构成,这些金属线段带有可编程开关,通过自动布线实现所需功能的电路连接。连线通路的数量与器件内部阵列的规模有关,阵列规模越大,连线数量越多。QuartusII软件概述QuartusII是Altera公司提供的FPGA/CPLD开发集成环境,Altera是世界上最大的可编程逻辑器件供应商之一。QuartusII在21世纪初推出,是Altera前一代FPGA/CPLD集成开发环境MAX+PLUSII的更新换代产品,其界面友好,使用便捷。它提供了一种与结构无关的设计环境,使设计者能方便地进行设计输入、快速处理和器件编程。Altera的QuartusII提供了完整的多平台设计环境,能满足各种特定设计的需要,也是单芯片可编程系统(SOPC)设计的综合性环境和SOPC开发的基本设计工具,并为AlteraDSP开发包进行系统模型设计提供了集成组合环境。QuartusII设计工具完全支持VHDL、Verilog的设计流程,其内部嵌有VHDL、Verilog逻辑综合器。QuartusII也可利用第三方的综合工具。同样,QuartusII具备仿真功能,同时也支持第三方的仿真工具,如ModelSim。此外,QuartusII与MATLAB和DSPBuilder结合,可以进行基于FPGA的DSP系统开发和数字通信模块的开发。QuartusII包括模块化的编译器。编译器包括的功能模块有分析/综合器(Analsis&Synthesis)、适配器(Fitter)、装配器(Assembler)、时序分析器(TimingAnalyzer)、设计辅助模块(DesignAssistant)、EDA网表文件生成器(EDANetlistWriter)、编辑数据接口(CompilerDatabaseInterface)等。可以通过选择StartCompilation来运行所有的编译器模块,也可以通过选择Start单独运行各个模块。还可以通过选择CompilerTool(Tools菜单),在CompilerTool窗口中运行该模块来启动编译器模块。在CompilerTool窗口中,可以打开该模块的设置文件或报告文件,或打开其他相关窗口。此外,QuartusII还包含许多十分有用的LPM(LibraryofParameterizedModules)模块,它们是复杂或高级系统构建的重要组成部分,在SOPC设计中被大量使用,也可以与QuartusII普通设计文件一起使用。Altera提供的LPM函数均基于Altera器件的结构做了优化设计。在许多实用情况中,必须使用宏功能模块才可以使用一些Altera特定器件的硬件功能,如各类片上存储器、DSP模块、LVDS驱动器、PLL以及SERDES和DDIO电路模块等。QuartusII编译器支持的硬件描述语言有VHDL(支持VHDL’87及VHDL’97标准)、VerilogHDL及AHDL(AlteraHDL)。QuartusII支持层次化设计,可以在一个新的编辑输入环境中对使用不同输入设计方式完成的模块(元件)进行调用,从而解决了原理图与HDL混合输入设计的问题。在设计输入之后,QuartusII的编译器将给出设计输入的错误报告。可以使用QuartusII带有的RTLViewer观察综合后的RTL图。QuartusII作为目前CPLD/FPGA开发工具理想的综合、仿真软件,具有许多优良的特性。(1)继承了MAX+PLUSII的优点图形输入依然形象,图形符号与MAX+PLUSII一样符合数字电路的特点,大量74系列器件符号使能初学者在较短的时间里利用图形编辑设计出需要的电路。文本输入几乎和MAX+PLUSII相同,而且在文本的每一行都有行号,使用语言编写的电路清晰易读。低层编辑仍然采用Chipview方式,引脚排列位置映射了实际器件引脚,只要简单地鼠标拖放即可完成低层编辑。(2)支持的器件更多除了支持MAX3000、MAX7000、FLEX6000、FLEX10KE、ACEX1K等MAX+PLUSII已经支持的器件外,还支持PEX20K、APEX20KE、AREXII、EXCALIBUR-ARM、Mercury、Stratix等MAX+PLUSII下无法支持的大容量高性能的器件。(3)增加了网络编辑功能QuartusII支持一个工作组环境下的设计要求,包括支持基于Internet的协作设计,与Cadence、ExemplarLogi、MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。(4)提升了调试能力QuartusII增加了一个新的快速适配编译选项,可保留最佳性能的设置,加快了编译过程,可缩短50%的编译时间,对设计性能的影响小。(5)不足之处软件结构庞大,使用复杂,不如MAX+PLUSII简单、易学易用。VHDL语言简介及开发优点VHDL的英文名全称是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL进行了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。VHDL主要用于描述数字系统的结构,行为,功能和接口,非常适用于可编程逻辑芯片的应用设计。与其它的HDL相比,VHDL具有更强的行为描述能力,从而决定了它成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。就目前流行的EDA工具和VHDL综合器而言,将基于抽象的行为描述风格的VHDL程序综合成为具体的FPGA和CPLD等器件的网表文件已不成问题。VHDL语言与其它HDL语言相比有一些自己的特色,下面作一简要说明。(1)设计功能强、方法灵活、支持广泛。VDHL语言可以支持自上而下(Top_Down)的设计方法,它具有功能强大的语言结构,可用简洁明确的代码描述来进行复杂控制逻辑的设计,可以支持同步电路、异步电路、以及其它随机电路的设计。其范围之广是其它HDL语言所不能比拟的。此外,VHDL语言可以自定义数据类型,这也给编程人员带来了较大的自由和方便。(2)系统硬件描述能力强。VHDL语言具有多层次的设计描述功能,可以从系统的数学模型直到门级电路,支持设计库和可重复使用的组件生成,它支持阶层设计且提供模块设计的创建。VHDL语言能进行系统级的硬件描述是它的一个最突出的优点。(3)可以进行与工艺无关编程。VHDL语言设计系统硬件时,没有嵌入描述与工艺相关的信息,不会因为工艺变化而使描述过时。与工艺技术有关的参数可通过VHDL提供的类属加以描述,工艺改变时,只需修改相应程序中的类属参数即可。(4)VHDL语言标准、规范,易于共享和复用。VHDL既是IEEE承认的标准,故VHDL的设计描述可以被不同的EDA设计工具所支持。从一个仿真工具移植到另一个仿真工具,从一个综合工具移植到另一个综合工具,从一个工作平台移植到另一个工作平台去执行。这意味着同一个VHDL设计描述可以在不同的设计项目中采用,方便了设计成果的设计和交流。另外,VHDL语言的语法比较规范,从而其可读性比较好,给阅读和使用都带来了极大的好处。(5)方便ASIC移植。VHDL语言的效率之一,就是如果你的设计是被综合到一个CPLD或FPGA的话,则可以使你设计的产品以最快速度上市。当产品的产量达到相当的数量时,采用VHDL进行的设计可以很容易转成用专用集成电路(ASIC)来实现,仅仅需要更换不同的库重新进行综合。由于VHDL是一个成熟的定义型语言,可以确保ASIC厂商交付优良质量的器件产品。此外,由于工艺技术的进步,需要采用更先进的工艺时,仍可以采用原来的VHDL代码。系统硬件电路设计系统顶层电路组成本设计的核心部件为STC89C51单片机和现场可编程芯片FPGA,所有信号包括标准频率信号,被测信号,自检信号均可在STC89C51单片机的控制下送到FPGA芯片中,单片机将每次测试结果读入内存RAM中,经运算处理后,由RXD口以BCD码的形式送入数码管显示电路进行显示。整个系统在硬件上可分为标准频率信号模块、被测信号放大整形电路模块、单片机模块和FPGA模块。系统的总体设计框图如图3.1所示。键盘控制命令直连单片机,快速的实现测频、测周期、测脉宽、测占空比及复位等功能的控制。该设计以FPGA开发板外接的50MHz晶振作为标准频率信号,在应用时我们只需将晶振的引脚与我们设计的FPGA芯片对应配置就可以了。单片机由外接的12MHz标准晶振提供时钟电路。图3.1等精度数字频率计系统的总体设计框图被测信号放大整形电路设计为了能测量不同幅值与不同波形的周期信号的频率,必须对被测信号进行放大与整形处理,使之成为能被计数器有效识别的矩形脉冲信号。信号放大与波形整形电路的作用即在于此。信号放大可以采用一般的运算放大电路,波形整形可采用施密特触发器。在设计过程中,考虑到输入的信号幅度不定,这时很难确定放大器的放大倍数,并且施密特触发器要求输入电平很高,所以放大器的放大倍数要随输入信号幅度随时调整,因此采用一般的方案实现困难。为了解决这个问题,我们采用集成运算放大器构成过零比较器[5]来实现,这时只要被测信号电压达到20mV(由运放参数决定)以上,即可将输入的三角波、正弦波或锯齿波整形成能被计数器识别的矩形脉冲信号。所设计的电路如图3.2所示,其中,R1是输入耦合电阻,R2是稳压管的限流电阻,D1和D2是4.3v稳压管,经放大整形后输出矩形波,其幅度是±5V。图3.2被测信号放大整形电路设输入波形(被测信号)为30mV、1KHz的正弦波,经Proteus仿真得到的输入、输出波形如图3.3所示。图3.3被测信号输出波形单片机模块设计单片机最小系统单片机最小系统包括时钟电路和复位电路,此为固定电路,其原理图如图3.4所示。单片机在启动运行时需要复位,使CPU及其它功能部件处于一个确定的初始状态,并从这个初始状态开始工作,单片机应用程序必须以此作为设计的前提条件。另外,在单片机工作过程中,如果出现死机,也必须对单片机进行复位,使其重行开始工作。产生单片机复位的条件是:在RST引脚端出现满足复位时间要求的高电平状态,该时间等于系统时钟振荡周期建立时间再加两个机器周期时间(一般不小于10ms)。本设计采用复合复位接法的复位电路。单片机执行指令的过程可分为取指令、分析指令和执行指令三个步骤,每个步骤又有许多微操作所组成,这些微操作必须在统一的时钟控制下才能按照正确的顺序执行。单片机的时钟信号可以由两种方式产生,即内部时钟方式和外部时钟方式。本设计采用内部时钟方式,内部时钟方式是利用单片机芯片内部的振荡电路实现的,此时需要单片机的XTAL1和XTAL2引脚外接定时元件。定时元件一般用晶体振荡器和电容组成并联谐振回路,电容C1和C2一般取30pF左右,主要作用是帮助振荡器起振,晶体振荡器的频率范围在1.2—13MHz。晶体振荡频率越高,则系统的时钟频率越高,单片机运行速度也就越快。图3.4单片机最小系统键盘接口电路本设计采用由数字芯片74LS148组成的独立式键盘,其一般应用在按键数量比较少的系统中,键盘接口电路如图3.5所示。键盘控制命令由键盘扫描编码电路读入,当有按键按下时向单片机发出中断请求并读取键值。键盘编码电路的YEX引脚接单片机的外部中断0(INT0)输入引脚,用于向单片机发出中断请求并读取键值。没有按键按下时,键盘编码电路的YEX为高电平;当有按键按下时,键盘扫描编码电路在确定不是干扰后,YEX引脚变为低电平,向单片机发出中断请求读取键值,当按键撤销后,YEX恢复高电平。键盘编码电路的Y[0..2]用于向单片机输入键值,其Y[0..2]接单片机的P1[0..2]。由于单片机读取键值的操作是通过外部中断引起的,这样在没有键按下时,CPU就不会执行扫描程序,提高了CPU工作的效率。图3.5键盘接口电路74LS148为8线--3线编码器,其逻辑符号如图3.6所示,编码器输入信号均为低电平有效,且I7的优先权最高,I6次之,I0最低。编码输出信号Y2、Y1和Y0则为二进制反码输出,将其取反就可得到原码输出。选通输入端(使能输入端)S、使能输出端以及扩展输出端YEX是为了便于使用而设置的三个控制端。74LS148的逻辑功能表如表3.1所示。图3.674LS164的逻辑符号表3.174LS164的逻辑功能表输入输出SI0I1I2I3I4I5I6I7Y2Y1Y0YSYEX1000000000×1×××××××0×1××××××01×1×××××011×1××××0111×1×××01111×1××011111×1×0111111×10111111111000011111100110011110101000110111111111100000000当S=1时,编码器不工作,编码器输出Y2、Y1和Y0及YEX和YS全为1(真值表第一行),所有的输出端都被锁在高电平。当S=0时,编码器工作,如果没有有效的编码输入信号需要的编码,Y2、Y1和Y0仍然全为1,但YS、YEX为0、1,(真值表第二行),如果有有效的编码输入信号需要的编码,则按输入的优先级对优先权最高的一个有效输入信号进行编码,且YS、YEX为1、0(真值表第3—10行)。LED数码管显示电路LED数码管显示电路采用八片首尾相连的74LS164锁存器和8个共阴LED数码管显示测试结果。考虑到提高单片机IO口的利用率,降低编程复杂性,提高单片机的计算速度以及降低数码显示器对主系统的干扰,采用串行静态显示方式。八片首尾相连的74LS164作为LED数码管的静态显示锁存器,数字芯片74LS164为TTL单向8位移位寄存器,其引脚图如图3.7所示,逻辑图如图3.8所示,可实现串行输入,并行输出。其中DSA、DSB(第1、2管脚)为串行数据输入端,两个引脚按逻辑与运算规律输入信号,数据通过两个输入端(DSA或DSB)之一串行输入,任意一个输入端可以用作高电平使能端,控制另一输入端的数据输入。也可以把两个输入端连接在一起,或者把不用的输入端接高电平,一定不要悬空。时钟信号(CP)每次由低变高时,数据右移一位,输入到Q0,Q0是两个数据输入端(DSA和DSB)的逻辑与的结果。复位(MR)输入端上的一个低电平将使其它所有输入端都无效,同时异步地清除寄存器,强制所有的输出端为低电平。本次设计中将DSA和DSB接到STC89C51的RXD端,CP(第8管脚)为时钟输入端,连接到STC89C51的TXD端。每一个时钟信号的上升沿加到CP端时,移位寄存器移一位,8个时钟脉冲过后,8位二进制数全部移入74LS164中。MR(第9管脚)为复位端,当CLR=0时,移位寄存器各位输出为0,只有当CLR=1时,时钟脉冲才起作用。图3.774LS164引脚图图3.874LS164逻辑图由于74LS164芯片输出低电平时具有8mA的灌电流能力,在静态显示方式下足以保证显示亮度。因为74LS164输出没有锁存功能,所以在传送信号时输出端数码管会有瞬间闪烁,但由于系统采用12MHz晶振,传送波特率高达1M,且一次发送数据较少,故闪烁并不明显。FPGA模块电路设计FPGA模块电路由测量与自检选择模块、脉宽控制模块和测频/测周期模块组成。整个FPGA模块电路设计如图3.9所示。其中测量与自检选择模块是在系统自检时,将标准频率作为被测频率信号送给系统,而在系统正常测量时,将被测信号送给系统。脉宽控制模块和测频/测周期模块是根据按键的键值共同控制选择被测量。其中管脚SPUL为脉宽和测频/测周期的选择输入信号,由单片机根据需要发出。当CLR为高电平时,D触发器异步清零,输出端为低电平,从而使每个计数器的使能端为低电平,系统清零。当SPUL为高电平时,测频/测周期模块的32位计数器的输入使能由D触发器控制,其测量预置门控时间为被测信号周期的整数倍,此时计数值用来计算被测信号的频率;当CL变为高电平时,在随后到来的TCLK的上升沿,TENA及START引脚变为高电平,计数器开始计数;当CL变为低电平时,在随后到来的TCLK上升沿,TENA变为低电平,计数器停止计数。同时START引脚变为低电平,用以通知单片机计数结束。在单片机发出的SEL2~SEL0控制下通过DATA7~DATA0分8次将计数器的计数值读入单片机[6]。当SPUL为低电平时,标准频率信号计数器的输入使能由脉宽控制模块的输出PL来控制,测量门控时间为被测信号的一个正脉宽的时间或一个负脉宽的时间宽度,此时标准频率信号的计数器的计数值用来测量被测信号的脉宽宽度。这时,若CL为‘1’,测TCLK的高电平脉宽,若CL为‘0’,测TCLK的低电平脉宽,然后通过单片机控制SEL2~SEL0从DATA7~DATA0数据口读出对标准频率信号的计数值,同时EEND由低电平变到高电平指示脉宽计数结束。图3.9FPGA模块电路原理图基本单元电路(1)D触发器设计D触发器是现代数字系统中最基本的时序单元和低层元件,它是等精度测频设计的核心模块。本设计采用VHDL文本输入,其程序见附录。该D触发器具有异步清零功能,其时序仿真波形图如图3.10所示。当复位信号CLR为高电平时,D触发器的输出端q输出逻辑0,当复位信号CLR为低电平时,每当时钟输入CLK有一个上升沿时,输出端q便输出与输入信号d相同的逻辑值。为了在设计FPGA顶层模块时能够顺利地调用它,我们将其生成原理图模块,该原理图模块如图3.11所示。图3.10D触发器时序仿真波形图3.11D触发器原理图模块(2)32位计数器设计计数器就是指能够记忆时钟信号脉冲个数的时序逻辑电路,它是数字电路中应用极其广泛的一种基本逻辑单元,不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。本设计采用VHDL文本输入,其设计程序见附录。由于标准频率信号的频率为50MHz,为了提高测量精度,因此将计数器的位数设为32位,并且计数器以二进制数据的形式计数。该设计用到两个32位计数器,分别用于计量标准频率信号和被测频率信号的脉冲个数。标准频率信号计数器和被测频率信号计数器的时序仿真波形分别如图3.12(a)和(b)所示,现以被测信号计数器为例介绍其逻辑功能,当CLR信号为高电平时,计数器的值清零,当CLR信号为低电平,同时被测信号计数器使能端TENA为高电平有效的情况下,每当被测频率信号TCLK有一个上升沿到达时,计数器的值便加1,直至使能端TENA变为低电平。Q[31..0]显示的数值即为被测信号计数器的计数值,Q[31..0]引脚的作用是将计数器的值送到MUX64-8多路选择器,以便单片机将计数值读入。标准频率信号计数器的逻辑功能和被测频率信号计数器的一样,只是输入和输出引脚不一样而已。当CLR信号为高电平时,计数器的值清零,当CLR信号为低电平,同时标准频率信号计数器使能端BENA为高电平有效的情况下,每当标准频率信号BCLK有一个上升沿到达时,计数器的值便加1,直至使能端BENA变为低电平。为了在设计FPGA顶层模块时能够顺利地调用这两个计数器模块,我们将其生成原理图模块,该原理图模块如图3.13(a)和(b)所示。图3.12(a)标准信号(SC32)时序仿真波形图图3.12(b)被测信号(TC32)时序仿真波形图(a)(b)图3.13标准信号(SC32)/被测信号(TC32)原理图模块(3)MUX64_8多路选择器因为单片机的数据总线有限,不可能一次性将两个计数器的值读入。MUX64-8多路选择器的作用就是将两个计数器的64位计数值暂时存储,然后在单片机发出的选择信号SEL2~SEL0的控制下分8次将计数值读入。本设计采用VHDL文本输入,其设计程序见附录。MUX64-8多路选择器的时序仿真波形图如图3.14所示,当SEL分别为“000”、“001”、“010”、“011”时,由低8位到高8位读取标准频率计数值;当SEL分别为“100”、“101”、“110”、“111”时,由低8位到高8位读取被测频率计数值。为了在设计FPGA顶层模块时能够顺利地调用它,我们将其生成原理图模块,该原理图模块如图3.15所示。图3.14MUX64_8多路选择器时序仿真波形图图3.15MUX64_8多路选择器原理图模块(4)MUX21选择器设计本设计采用VHDL文本输入,其设计程序见附录。MUX2-1选择器芯片的功能是在选择信号S的控制下输出端Z输出不同的信号。其时序仿真波形图如图3.16所示,当S为逻辑0时,输出信号Z与输入信号A相同,当S为逻辑1时输出端与输入信号B相同。为了在设计FPGA顶层模块时能够顺利地调用它,我们将其生成原理图模块,该原理图模块如图3.17所示。图3.16MUX21选择器时序仿真波形图图3.17MUX21选择器原理图模块(5)SS1电路模块本设计采用VHDL文本输入,其设计程序见附录。SS1模块为脉宽控制模块的组成部分。其时序仿真波形图如图3.18所示,当Q1=1,Q2=0时,则PL=1;否则PL=‘0’。当Q1=1,Q2=1时,则EEND=1;否则EEND=0。为了在设计脉宽控制模块时能够顺利地调用它,我们将其生成原理图模块,该原理图模块如图3.19所示图3.18SS1时序仿真波形图图3.19SS1原理图模块测量与自检选择电路测量与自检选择电路采用的是图形输入方式,其原理图如图3.20所示。AS为测量与自检选择端口,接单片机的P2.7引脚,FX接标准频率信号输入,FS接被测频率信号输入。测频与自检选择电路用于系统自检,当AS为高电平时,系统自检开始,FOUT输出标准频率信号BCLK,将标准频率信号作为被测频率信号进行测量,根据测量结果来判断系统运行是否正常;当AS为低电平时,系统自检结束,FOUT输出被测频率信号TCLK。标准频率信号取自FPGA开发板自带频率为50MHz的外部晶振。图3.20测量与自校选择电路原理图测频与自检选择电路的时序仿真波形图如图3.21所示,当选择控制信号AS为高电平时,输出端FOUT为BCLK,当AS为低电平时,输出端FOUT为TCLK。为了在设计FPGA顶层模块时能够顺利地调用它,我们将其生成原理图模块,该原理图模块如图3.22所示。图3.21测量与自检电路时序仿真波形图图3.22测量与自检电路原理图模块脉宽控制电路该电路采用的是图形输入法,在该模块的设计中调用了我们设计的基本电路模块D触发器和SSI模块,其原理图如图3.23所示。CL为单片机发出的预置门控信号,CLR为单片机发出的复位信号,TCLK为被测信号的输入,D触发器输入引脚d始终接高电平1。输出引脚PL作为标准频率计数器的使能控制信号,输出引脚EEND作为计数器计数结束信号通知单片机读取数据。图3.23脉宽控制原理图其时序仿真波形如图3.24所示,当CLR为高电平时,输出PL为低电平,当CLR为低电平时,CL与SPUL联合控制实现其功能,SPUL为低电平,若CL=0时,PL输出一个宽度为被测信号负脉冲的脉冲;CL=1时,PL输出一个宽度为被测信号正脉冲的脉冲。此脉冲作为计数器的计数使能信号,控制计数的起止。图3.24脉宽控制电路时序仿真波形图为了在设计FPGA顶层模块时能够顺利地调用它,我们将其生成原理图模块,该原理图模块如图3.25所示。图3.25脉宽控制原理图模块测频与测周期电路该电路采用的是图形输入法,在该模块的设计中调用了我们已经设计好的基本电路模块D触发器、32位标准频率信号计数器、32位被测频率信号计数器和MUX64_8选择器模块以及测量与自检电路模块,其电路原理图如图3.26所示。BCLK管脚为标准频率信号的输入引脚,TCLK管脚为被测频率信号的输入引脚;CL管脚为预置门控信号输入引脚;CLR为计数器清零信号输入引脚,每次新的测量开始时都要将计数器清零,以免产生错误;SEL2~SEL0管脚为单片机读入数据时的数据选择信号输入,以便单片机分八次将两个32位计数器的计数值读入。当系统开始测量被测信号的频率时,首先由单片机将CLR端置为高电平,完成测试电路的初始化。接下来,单片机将门控信号CL置为高电平,由被测信号的上升沿将两个计数器同时打开,对被测频率和标准频率同时进行计数。门控时间结束后,单片机将门控信号CL置为低电平,在被测信号的下一个脉冲的上升沿到来时,两个计数器将同时停止工作。计数结束后,由START端输出的低电平来指示计数的结束,通过SEL信号和MUX64-8多路选择器将计数器中得到的64位数据分8次读入单片机进行处理和结果显示。图3.13测频与测周期原理图单片机与FPGA的相互控制电路本设计由单片机控制FPGA完成整个系统的电路测试、数据处理和显示输出等各种功能。单片机引脚分配如下:(1)SEL2~SEL0:单片机的数据总线为8位,但是系统的两个计数器的总位数为64位,因此单片机需要分8次将计数器的计数结果读入。SEL2~SEL0引脚的作用就是控制多路通道的数据选择。当SEL分别为“000”、“001”、“010”、“011”时,由低8位到高8位读取标准频率信号的计数值,当SEL分别为“100”、“101”、“110”、“111”时,由低8位到高8位读取被测频率信号的计数值。SEL2~SEL0分别接单片机P2口的P2.2、P2.3、P2.4引脚。(2)SPUL:此引脚的作用是控制系统选择测频或测脉宽,SPUL接单片机P2.5引脚控制。当SPUL=0时,测脉宽;SPUL=1时,等精度测量频率。(3)CLR:系统清零,高电平有效。每一测频周期开始时,都应该首先清零。由单片机的P2.1口控制。(4)START:计数结束信号,用来通知单片机计数器计数结束,此信号接单片机外部中断1(INT1)输入引脚。EEND的功能与START基本相同,当其由低电平变到高电平时指示脉宽计数结束。(5)CL:CL和SPUL协同控制操作,即当SPUL为1时,CL作为预置门控信号,用于测频计数的时间控制(本设计取0.5秒);当SPUL为0时,CL作为测脉宽控制信号。这时,CL若为1,测TCLK的高电平脉宽,而当CL为0时,则测TCLK的低电平脉宽。然后分别从DATA7~DATA0数据口读出对标准频率的计数,即只需令SEL的取值分别为000、001、010、011即可。(6)Y[0..2]:键盘译码,接单片机的P1[0..2]。 (7)YEX:按键标志信号,用来通知单片机有键按下,接单片机的外部中断0(INT0)输入引脚。(8)DATA7--DATA0:单片机与FPGA之间的数据总线,负责读取测频数据,接单片机P0口。(9)AS:测量与自检选择控制,接单片机P2.7口。AS=0时用于自检,AS=1时用于测频。系统软件设计单片机主程序设计单片机主程序流程图如图4.1所示。系统上电后,单片机内部首先开始执行的是复位自检程序。自检程序结束后,如果系统正常,则8片LED显示“88888888”,否则显示“--------”,等待用户检修。在自检正常后,系统就开始无限循环等待有键按下进行测量。图4.1主程序流程图复位自检程序设计在本系统中为了便于很好的系统初始化,我们采用了软件复位。当复位键按下后就开始执行此程序。首先是对系统进行初始化,此部分包括对各个控制信号初值的设置、各个特殊功能寄存器的初值设置以及定时器、串行口的初始化等等。在进行初始化设置完毕以后就开始进行自检。自检结束后,如果系统正常则8片LED显示“88888888”,否则显示“--------”,等待用户自修。在自检正常以后单片机便继续执行下面的程序。复位自检程序流程图如图4.2所示。图4.2复位自检程序流程图键盘程序设计键盘主要的作用有:对键盘进行防抖动的处理,当有键按下时将其转换为相对应的键值,在确认有键按下并且不是干扰后向单片机发出读取键值的请求。本设计采用的是软件防抖方法。当第一次检测到有键按下时,先用软件延时10ms,而后再确认该键电平是否仍维持闭合状态。若保持闭合状态,则确认此键确已按下,从而消除了抖动的影响。键值读取是通过中断来实现的,外部有键按下且有效是通过外部中断0请求来通知单片机读取键值。单片机读取并判断键值,根据键值的不同调用不同的功能模块,从而实现不同的功能。键盘程序的流程图如图4.3所示。图4.3键盘程序流程图测频子程序设计测频子程序的流程图如图4.4所示。测频子程序先置测频控制位CLR(P2.1)将FPGA内的计数器清零,然后通过键盘将预置门CL的时间值读入单片机,打开预置门CL进行测频计数,等预置门CL时间到后,关断预置门CL,FPGA关断预置门CL后将给单片机一个结束信号,单片机读到结束信号后,通过SEL的不同值分8次将测频结果的64位数据读入单片机,计算后将结果转换为BCD码送LED显示输出。图4.4测频子程序流程图测周期子程序设计我们知道,周期为频率的倒数,因此完全可以利用频率测量原理来测量信号周期,只要把相应的公式改动一下。公式如4-1所示。(4-1)其中Tx为被测频率信号的周期,Nx为被测频率信号的计数值,Ns为标准信号的计数值,Fs为标准信号的频率。测周期时只要把计算结果由频率值取倒转换为周期值即可。测脉宽子程序设计脉宽的测量子程序与周期测量子程序基本一致,只是脉宽测量是在被测信号的脉宽内对标准频率进行计数,所以FPGA内要有对上下沿的处理过程,而且计数结果为一组数据,不像测频和测周期一样同时对被测信号和标准信号进行计数。测占空比子程序设计占空比子程序是在脉宽子程序的基础上,先对一个脉宽进行计数,测得计数值为N1,然后将输入信号反相,再测其脉冲宽度,测得计数值为N2,则可以计算出:占空比=N1/(N1+N2)*100%(4-2)占空比测量程序是本设计中的一个重要的功能,当调用占空比程序时就开始实现本功能。此程序首先将脉宽高低控制位置1,然后调用脉宽测量程序,测出被测信号的高电平脉宽宽度并读取计数器计数值;然后将脉宽控制位置0,测出被测信号低电平脉宽宽度并读取计数器计数值,占空比测量结束。占空比测量程序流程图如图4.5所示。图4.5占空比测量程序流程图LED数码管显示子程序设计此次设计采用8位LED显示,LED显示器工作在静态方式,通过74LS164与单片机相连。进入显示子程序后,首先要从显示缓冲区取数,然后送段选码、位选码进行显示,等待八位都显示结束后便结束此子程序。此显示子程序流程图如图4.6所示。图4.6显示子程序流程图系统性能分析任何仪器设备都会有测量范围限制和测量精度问题的考虑,二者是相互影响,并且与很多因素相关。本系统设计中被测信号与标准信号均不进行分频和倍频处理,下面就针对于这两个方面进行简单的分析。测量范围分析本设计中所采用的标准频率信号频率为50MHz,决定低端频率信号的是计数器的最大计数值,因为测量时间为被测信号周期的整数倍,本设计采用的计数器时32位二进制计数器,其最大计数值为232,即为4294967296,根据测频公式2-1可知,fx=(Nx/Ns)·fs(2-1)当Nx为1,Ns为最大值,即4294967296时,被测信号的频率为低端频率,此时Fx小于0.01,因此此设计的低端频率信号理论上可达到0.01Hz。再根据测频公式2-1可知,影响测量信号高端频率

温馨提示

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

评论

0/150

提交评论