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

下载本文档

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

文档简介

摘要在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得十分重要。数字频率计是数字电路中的典型应用,是电子测量与仪表技术最基础的电子仪器之一,是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。与传统的频率计相比,数字频率计具有精度高、测量范围大、可靠性好等优点。是频率测量的重要手段之一。该论文研究基于FPGA的数字频率计的设计,在Quartus=2\*ROMANII环境中,运用VHDL语言完成数字频率计的设计,并对设计进行综合、编译、仿真。通过仿真分析,证明该频率计测量结果的正确性。本文的主要介绍了数字频率计的基本内容和重要性,并对数字频率计的国内外研究现状进行了总结;数字频率计设计开发环境,并对FPGA、Quartus=2\*ROMANII、VHDL进行了详细介绍对开发流程详细说明;根据实际需要对数字频率计设计方法、方案进行了可行性比较,并对其实现的功能进行了具体要求,对设计模块进行了划分,并定义了每个模块所实现的功能;用VHDL语言编程,具体实现频率计各个模块的功能,对数字频率计仿真并验证其功能。关键词:FPGA;Quartus=2\*ROMANII;VHDL;频率计AbstractInelectronics,frequencyisoneofthemostbasicparameters.Andithaveacloserelationshipwithmanymeasurementprogramofelectricalparametersandmeasurementresults,sothemeasurementoffrequencyisveryimportant.Digitalfrequencymeterisatypicalapplicationsindigitalcircuit,andoneofthemostbasicelectronicdevicesinelectronicmeasurementandinstrumentationtechnology.Digitalfrequencymeterisanindispensablemeasuringinstrumentsforscientificresearchandproductionascomputers,communicationsequipment,audio,video.Comparedwiththeconventionalfrequencycounter,digitalfrequencymeterhaveahighaccuracy,measurementrangeandagoodreliability.Itisoneofimportantmeasureforfrequencymeasurement:Thethesisresearchindesignofdigitalfrequencymeter,FPGA-based.VHDLlanguageisusedtocompletethedesignofdigitalfrequencymeterinQuartusII,andcompletedthesiswithcomposited,compiled,simulated.Throughsimulationandanalysis,Theresultsshowthattheaccuracyofmeasureforthefrequency.Thisarticlemainlyintroducestheimportanceandbasiccontentofdigitalfrequencymeter,andcurrentresearchissummarized.themaintasksandcontentofthisdesignaresummarized.Designanddevelopmentenvironmentofdigitalfrequencymeterareintroduced.FPGA,QuartusIIandVHDLaredescribedindetail.Accordingtotheactualneedsofthedigitalfrequencymeter,designmethodanddesignprogramarecomparedtoachievethefunctionsoftheirspecificrequirements,anddefinesthefunctionsofeachmoduletoachievethefunction.Keywords:FPGA,Quartus=2\*ROMANII,VHDL,digitalfrequencymet目录摘要 IAbstract II第1章绪论 11.1课题背景与意义 11.2课题目的 11.3技术指标 1第2章FPGA开发相关知识简介 32.1FPGA的介绍 32.2FPGA开发环境 4软件开发环境——QuartusII的介绍 4软件仿真环境——Modelsim的介绍 52.3硬件描述语言——VerilogHDL 62.4FPGA开发流程 8本章小结 11第3章频率计的设计方案 123.1系统的总体设计 123.1.1设计思路 12频率计的基本原理 123.2数字频率计原理方框图 13本章小结 13第4章频率计的实现 144.1时钟信号分频模块的设计 144.2测频控制信号发生模块的设计 154.3十进制计数模块的设计 164.4八位十进制计数模块的设计 184.5三十二位锁存器模块的设计 204.6顶层模块的设计 20本章小结 23结论 24致谢 25参考文献 26附录1译文 27附录2英文参考资料 30第1章绪论1.1课题背景与意义在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,频率的测量就显得尤为重要,而频率计的研究工作更具有重大的科研意义。由于大规模和超大规模数字集成电路技术、数据通信技术与单片机技术的结合,数字频率计发展进入了智能化和微型化的新阶段。近年来,随着电子设计技术的飞速发展,数字电路的研究及应用出现了广阔的空间。利用FPGA(FieldProgrammableGateArray)的设计软件可以将设计好的程序“烧写”到FPGA器件中,如同自行设计集成电路一样,可以节省电路开发的费用与时间。Altera公司提供的QuartusII软件进行FPGA设计开发流程,根据设计需要可以进行原理图、硬件描述语言进行设计,并进行编译仿真,配合Modelsim仿真软件测试设计功能的实现。课题目的传统频率计设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。随着可编程逻辑器件(CPLD/FPGA)的广泛应用,以EDA工具作为开发手段,运用硬件描述语言(VHDL/Verilog),将使整个系统大大简化,提高整体的性能和可靠性。而本课题正是采用硬件描述语言对数字频率计进行设计,整个系统非常精简,而且具有灵活的现场可更改性,在不更改硬件电路的基础上,可以对系统进行各种改进来进一步提高系统的性能,因此该数字频率计具有精确、可靠、和现场可编程等优点。1.3技术指标本设计所能达到的技术指标如下:能测量输入信号的频率范围为1hz~99Mhz;波形可以是方波等任何有固定频率的信号;运用硬件描述语言和原理图法进行设计;运用QuartusII软件进行设计和Modelsim软件仿真。第2章FPGA开发相关知识简介2.1FPGA的介绍FPGA是现场可编程门阵列(FieldProgrammableGateArray)的简称。FPGA器件及其开发系统是开发大规模数字集成电路的新技术。它利用计算机辅助设计,绘制出实现用户逻辑的原理图、编辑布尔方程或用硬件描述语言等方式作为设计输入;然后经一系列转换程序、自动布局布线、模拟仿真的过程;最后生成配置FPGA器件的数据文件,对FPGA器件初始化。这样就实现了满足用户要求的专用集成电路,真正打到了用户自行设计、自行研制和自行生产集成电路的目的。总的来说,FPGA器件具有下列优点:高密度、高速度、系列化、标准化、小型化、多功能、低功耗、低成本、,设计灵活方便,可无限次反复编程,并可现场模拟调试验证。使用FPGA器件,一般可在几天到几周内完成一个电子系统的设计和制作,可以缩短研制周期,达到快速上市和进一步降低成本的要求。FPGA的基本特点主要有:1、采用FPGA设计ASIC电路,用户不需要投片生产就能得到合用的芯片;2、FPGA可做其它全定制或半定制ASIC电路的中试样片;3、FPGA内部有丰富的触发器和引脚;4、FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一;5、FPGA采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容。FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。2.2FPGA开发环境软件开发环境——QuartusII的介绍QuartusII是Altera提供的FPGA/CPLD开发集成环境,Altera是世界最大可编程逻辑器件供应商之一。QuartusII是Altera前一代FPGA/CPLD集成环境MAX+plusII的更新换代产品,其界面友好、使用便捷。QuartusII是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。QuartusII提供了一种与结构无关的设计环境,使设计者能方便的进行设计输入、快速处理和器件编程。QuartusII包含许多十分有用的LPM(LibraryofParameterizedModules)模块,它们是复杂或高级系统建构的重要组成成分。本设计在实现原理图输入多层次设计的同时,大量运用了QuartusII的元件库,LMP是参数可设置模块库(LibraryofParameterizedModules)的缩写,Altera提供的可参数化宏功能模块和LMP函数均基于Altera器件的结构做了优化设计。LMP功能模块内容非常丰富,每一个模块的功能。参数含义,使用方法,硬件描述语言模块参数设置以及调用方法都可以在QuartusII中的HELP中查阅到。设计者可以根据实际电路的设计需要,选择LMP库中的适当模块,并为其设定适当的参数,就能够满足自己的设计需要。Altera提供的宏功能模块与LMP函数有以下几个方面:算术组件:包括累加器,加法器,乘法器和LMP算术函数;门电路:包括多路复用器和LMP门函数;I/O组件:包括时钟数据恢复(CDR),锁相环(PLL),双数据速率(DDR),千兆位收发器块(GXB),LVDS接收器和发送器,PLL重新配置和远程更新宏功能模块;存储器编译器:包括FIFOPartitioner,ROM和ROM宏功能模块;存储组件:包括存储器,移位寄存器宏模块和LMP存储器函数。QuartusII允许来自第三方的EDIF文件输入,并提供了很多EDA软件的接口,QuartusII支持层次化设计,可以在一个新的编辑输入环境中对使用不同输入设计方式完成的模块进行调试,从而解决了原理图和VHDL混合输入设计的问题。而且QuartusII拥有性能良好的设计错误定位器,用于确定文本或图形设计中的错误。AlteraQuartusII作为一种可编程逻辑的设计环境,因其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。软件仿真环境——Modelsim的介绍Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。它采用直接优化的编译技术和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。主要特点:RTL和门级优化,本地编译结构,编译仿真速度快,跨平台跨版本仿真;单内核VHDL和Verilog混合仿真;源代码模版和助手,项目管理;集成了性能分析、波形比较、代码覆盖、数据流ChaseX、SignalSpy、虚拟对象VirtualObject、Memory窗口、Assertion窗口、源码窗口显示信号值、信号条件断点等众多调试功能;对SystemC的直接支持,和HDL任意混合;支持SystemVerilog的设计功能;对系统级描述语言的最全面支持,SystemVerilog,SystemC,PSL。ModelSim分几种不同的版本:SE、PE、LE和OEM,其中SE是最高级的版本,而集成在Actel、Atmel、Altera、Xilinx以及Lattice等FPGA厂商设计工具中的均是其OEM版本。SE版和OEM版在功能和性能方面有较大差别,比如对于大家都关心的仿真速度问题,以Xilinx公司提供的OEM版本ModelSimXE为例,对于代码少于40000行的设计,ModelSimSE比ModelSimXE要快10倍;对于代码超过40000行的设计,ModelSimSE要比ModelSimXE快近40倍。ModelSimSE支持PC、UNIX和LINUX混合平台;提供全面完善以及高性能的验证功能;全面支持业界广泛的标准;MentorGraphics公司提供业界最好的技术支持与服务。ModelSim的使用方法:1.在F盘建立一个目录modelsimStudy。用任何文本编辑器编辑一个简单的例子程序,比如计数器counter.vhd。有clk、ena、reset输入,cnt作为输出;;3.编译这个文件,通过之后,work下面会出现counter这个实体。然后选中它,右键,simulate(左键双击也可);4.ModelSim有很多窗口,一开始只要选择view下面的objects和wave窗口就行了。旧版的signal窗口在6.0的版本改名为Objects。wave窗口刚打开时是空的,需要在objects窗口的add->wave->signalsinregion。这时,wave上就有clk\ena\reset等信号了;5.我们给clk来个输入激励,在object窗口中选中clk,右键选clock,给它定义个时钟;6.运行Run。就有波形出来了。硬件描述语言——VerilogHDL任何新生事物的产生都有它的历史沿革,早期的硬件描述语言是以一种高级语言为基础,加上一些特殊的约定而产生的,目的是为了实现RTL级仿真,用以验证设计的正确性,而不必像在传统的手工设计过程中那样,必须等到完成样机后才能进行实测和调试。VerilogHDL是一种硬件描述语言(HDL:HardwareDiscriptionLanguage),是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。VerilogHDL和VHDL是目前世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由GatewayDesignAutomation公司(该公司于1989年被Cadence公司收购)开发。VerilogHDL就是在用途最广泛的C语言的基础上发展起来的一种件描述语言,它是由GDA(GatewayDesignAutomation)公司的PhilMoorby在1983年末首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年Moorby推出它的第三个商用仿真器Verilog-XL,获得了巨大的成功,从而使得VerilogHDL迅速得到推广应用。1989年CADENCE公司收购了GDA公司,使得VerilogHDL成为了该公司的独家专利。1990年CADENCE公司公开发表了VerilogHDL,并成立LVI组织以促进VerilogHDL成为IEEE标准,即IEEEStandard1364-1995.VerilogHDL的最大特点就是易学易用,如果有C语言的编程经验,可以在一个较短的时间内很快的学习和掌握,因而可以把VerilogHDL内容安排在与ASIC设计等相关课程内部进行讲授,由于HDL语言本身是专门面向硬件与系统设计的,这样的安排可以使学习者同时获得设计实际电路的经验。与之相比,VHDL的学习要困难一些,但VerilogHDL较自由的语法,也容易造成初学者犯一些错误。选择VHDL还是verilogHDL?这是一个初学者最常见的问题。其实两种语言的差别并不大,他们的描述能力也是类似的。掌握其中一种语言以后,可以通过短期的学习,较快的学会另一种语言。选择何种语言主要还是看周围人群的使用习惯,这样可以方便日后的学习交流。当然,如果您是集成电路(ASIC)设计人员,则必须首先掌握verilog,因为在IC设计领域,90%以上的公司都是采用verilog进行IC设计。对于PLD/FPGA设计者而言,两种语言可以自由选择。设计人员通过计算机对HDL语言进行逻辑仿真和逻辑综合,方便高效地设计数字电路及其产品。常用的VerilogHDL语言开发软件有Altera公司的MAX+PLUSII,QuartusII和Xilinx公司的FoundationISE。2.4FPGA开发流程基于EDA工具的FPGA/CPLD开发流程:1.电路设计与输入(QuartusII中可直接进行),电路设计与输入是指通过某些规范的描述方式,将工程师电路构思输入给EDA工具。常用的设计方法有硬件描述语言(HDL)和原理图设计输入方法等。原理图设计输入法在早期应用得比较广泛,它根据设计要求,选用器件、绘制原理图、完成输入过程。这种方法的有点是直观、便于理解、元器件库资源丰富。但是在大型设计中,这种方法的可维护性较差,不利于模块构造与重用。更主要的缺点就是当所选用芯片升级换代后,所有的原理图都要做相应的改动。目前进行大型工程设计时,最常用的设计方法是HDL设计输入法,其中影响最为广泛的HDL语言是VHDL和VerilogHDL。他们的共同特点是利用由顶向下设计,利于模块的划分与复用,可移植性好,通用性好,设计不因芯片的工艺与结构不同而变化,更利于向ASIC的移植。波形输入和状态机输入方法是两种常用的辅助设计输入方法:使用波形输入时,志耘爱绘制出激励波形与输出波形,EDA软件就能自动地根据响应关系进行设计;使用状态机输入法时,设计者只需要画出状态转移图,EDA软件就能生成相应的HDL代码或原理图,使用十分方便。但是需要指出的是,波形输入和状态机输入方法只能在某些特殊情况下缓解设计者的工作量,并不适合所有的设计。2.功能仿真(modelsim),电路设计完成以后,要用专用的仿真工具对设计进行功能仿真,验证电路功能是否符合设计要求。功能仿真有时也称为前仿真。通过仿真能及时发现设计中的错误,加快设计进度,提高设计的可靠性。3.综合优化(synplicity),综合优化(Synthesize)是指将HDL语言、原理图等设计输入翻译成由与、或、非门,RAM,触发器等基本逻辑单元组成的逻辑连接(网表),并根据目标与要求(约束条件)优化所生成的逻辑连接,输出edf和edn等标准格式的网表文件,供FPGA/CPLD厂家的布局布线器进行实现。4.综合后仿真(modelsim),综合完成后需要检查综合结果是否与设计一致,做综合后仿真。在仿真时,把综合生成的标准延时文件反标志到综合仿真模型中去,可估计门延时带来的影响。综合后仿真虽然比功能仿真精确一些,但是只能估计门延时,不能估计线延时,仿真结果与布线后的实际情况还有一定的差距,并不十分准确。这种仿真的主要目的在于检查综合器的综合结果是否与设计输入一致。目前主流综合工具日益成熟,对于一般性的设计,如果设计者确信自己标注明确,没有综合歧义发生,则可省略该步骤。但是如果在布局布线后仿真时发现有电路结构与设计意图不符的现象,则常常需要回溯到综合后仿真以确认是否时由于综合歧义造成的问题。5.实现与布局布线(QuartusII中实现),综合结果的本质是一些由与、或、非门,触发器,RAM等基本逻辑单元组成的逻辑网表,它与芯片的实际的配置情况还有较大的差距。此时应该使用FPGA/CPLD厂商提供的软件工具,根据所选芯片的型号将综合输出的网表适配到具体FPGA/CPLD器件上,这个过程就叫做实现过程。因为只有器件的开发商最了解器件的内部结构,所以实现步骤必须选用器件开发商提供的工具。在实现过程中最主要的过程是布局布线(PAR)。所谓布局(Place),就是指将逻辑网表中的硬件原语或者底层单元合理地适配到FPGA内部的固有硬件结构上,布局的优劣对设计的最终结果(在速度和面积两个方面)影响很大。所谓布线(Route),是指根据布局的拓扑结构,利用FPGA内部的各种连线资源,合理正确连接各个元件的过程。FPGA的结构相对复杂,为了获得更好的实现结果,特别是保证能够满足设计的时序条件,一般采用时序驱动的引擎进行布局布线,所以对于不同的设计输入,特别是不同的时序约束,获得的布局布线结果一般有较大的差异。CPLD结构相对简单得多,其资源有限而且布线资源一般为交叉连接矩阵,故CPLD的布局布线过程相对简单明朗的多,一般称为适配过程。一般情况下,用户可以通过设置参数指定布局布线的优化准则,总的来说优化目标主要有两个方面,面积和速度。一般根据设计的主要矛盾,选择面积或者速度或者是两者平衡等优化目标,但是当两者冲突时,一般满足时序约束要求更重要一些,此时选择速度或时序优化目标更佳。6.时序仿真与验证(modelsim)将布局布线的延时信息反标注到设计网表中,所进行的仿真就叫时序仿真或布局布线后仿真,也叫后仿真。该仿真的仿真延时文件包含的延时信息最全,不仅包含了门延时,还包含了实际布线延时,所以布局布线后仿真最准确,能够较好的反映芯片的实际工作情况。一般来说,布线后仿真步骤必须进行,通过布局布线后仿真能检查设计时序与FPGA实际运行情况是否一致,确保设计的可靠性和稳定性。7.板级仿真与验证,有些高速设计情况下还需要使用第三方的板级验证工具进行仿真与验证。这些工具通过对设计的IBIS、HSPICE等模型的仿真,能较好地分析高速设计的信号完整性、电磁干扰等电路特性。8.调试与加载配置(QuartusII中生成相应的文件,直接下载到相应的电路板上实现验证),设计开发的最后步骤就是在线调试或者将生成的配置文件写入芯片中进行测试。示波器和逻辑分析仪是逻辑设计的主要调试工具。传统的逻辑功能板级验证手段是用逻辑分析仪分析信号,设计时要求FPGA和PCB设计人员保留一定数量FPGA管脚作为测试管脚,编写FPGA代码时将需要观测的信号作为模块的输出信号,在综合实现时在把这些输出信号锁定到测试管脚上,然后连接逻辑分析仪的探头到这些测试管脚,设定触发条件,进行观测。任何仿真或验证步骤出现问题,就需要根据错误定位返回到相应的步骤更改或者重新设计。因此可以将FPGA开发一般流程总结为:电路的设计与输入(HDL描述和原理如图输入方法);功能仿真(前仿真:检查所设计的电路是否满足预先设想的功能需求);综合优化(把RTL级描述和原理图描述变成门级网表描术);综合后仿真(检查综合后的结果是否和预想的设计一致);布局布线(布局:把门级网表中各个基本硬件单元适配到FPGA具体的硬件电路上;根据布局的拓扑结构和FPGA的连线资源,把这些基本硬件单元合理的连接起来);时序仿真与验证(后仿真:包含门延迟和传输线的延迟,能真是反应FPGA的实际工作情况,确保设计的稳定性和可靠性);调试与加载配置。以上的任何一步出现问题,都要回到相应的步骤进行重新设计,知道满足要求为止。FPGA开发流程图如图2-1所示。图2-4FPGA开发流程图本章小结本章分别从FPGA的介绍、FPGA的开发环境,硬件描述语言的介绍,FPGA开发流程的介绍等几个方面对FPGA设计的基础知识进行了深入浅出的阐述,通过对FPGA设计的相关基础知识的介绍,便于对下文进一步进行介绍的展开。第3章频率计的设计方案3.1系统的总体设计设计思路传统频率计设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。随着可编程逻辑器件的广泛应用,以EDA工具作为开发手段,运用硬件描述语言(VHDL/Verilog),将会使系统大大简化,从而提高整体的性能。而本课题正是采用硬件描述语言对数字频率计进行设计,整个系统非常精简,而且具有灵活的现场可更改性,在不更改硬件电路的基础上,可以对系统进行各种改进来进一步提高系统的性能,因此该数字频率计具有高速、精确、可靠、抗干扰性强和现场可编程等优点。本设计采用自顶向下的设计思路,利用Verilog硬件描述语言对频率计进行设计,利用Modelsim这一业内十分优秀的仿真软件对频率计的核心模块进行仿真,并在QuartusII综合开发软件上对设计进行编译优化和总体仿真。频率计的基本原理电子计数器测频有两种方式:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法,如周期测频法。直接测频法适用于高频信号的频率测量,间接测频法适用于低频信号的频率测量。本文阐述了基于FPGA运用直接测频法设计一个简单的数字频率计的过程,其基本原理是用计数器来计算1s内输入信号周期的个数,它由一个测频控制信号发生器TESTCTL,一个有时钟使能的得计数器(由8个有时钟功能的十进制计数器CNT10组成),和一个32位锁存器REG组成,且该部分硬件电路均由硬件描述语言(VHDL/Verilog)来设计实现,将各个模块编译和仿真保证无误之后建立顶层模块将各个模块例化按端口相应关系相连接,完全编译之后,纠正提示错误后,建立波形仿真文件,为各个输入信号添加激励时钟进行仿真即可得到8位10进制显示的数字频率计。3.2数字频率计原理方框图该测频法频率计是八位十进制数字频率计,它由一个测频控制信号发生器,测频计数模块,和一个输出信号锁存器组成。该数字测频系统组成原理图如图3-1所示。图3-2数字频率计原理方框图本章小结本章旨在介绍该设计的总体设计方案,先介绍了设计思路和频率计的基本工作原理,最后给出了原理方框图,逐步深入,很直观的对总体设计进行了阐述,以便于下一步设计的展开。第4章频率计的实现运用自顶向下的设计思想,编程时分别对控制、计数、锁存、译码等电路模块进行VHDL文本描述,使每个电路模块以及器件都以文本的形式出现,然后通过编译、波形分析、仿真、调试来完善每个器件的功能。单个器件制作完成后,然后将它们生成库文件,并产生相应的符号,最后用语言将各个已生成库文件的器件的各个端口连接在一起,从而形成了系统主电路的软件结构。在上述工作的基础上,再进行波形分析、仿真调试便完成整个软件设计。其原理流程图如图4所示:图4数字频率计原理流程图4.1时钟信号分频模块的设计由于系统时钟为1Khz,因此要将其进行1000分频得到1hz的周期信号,分频程序比较简单,其中输入时钟触发信号为输入的1Khz系统时钟信号,clk1为输出的1hz信号,现将源程序摘抄如下:moduleclkdiv(clk,clk1);inputclk;outputclk1;regclk1;reg[10:0]count;always@(posedgeclk)begincount=count+1;if(count==11'd500)begincount=11'd0;clk1=~clk1;endendendmodule运用QuartusII软件自带仿真器进行仿真的结果如图4-1所示。图4-1分频模块仿真图由上图可见当时钟计数到第500个时,输出信号发生跳变,又经过500个时钟周期后再次跳变,因此上述代码达到了1000分频的目的。4.2测频控制信号发生模块的设计频率测量的的基本原理是计算每秒内待测信号的脉冲个数。这就要求测频控制信号发生模块的计数使能信号teten能产生一个1s脉宽的周期信号,并对频率计的每一个计数器cntm10的输入时钟使能信号使能端进行同步控制。当teten高电平时允许计数,低电平时停止计数,并保持其所计的数。在停止计数器件,首先需要一个锁存信号load的上跳沿将计数器在前1秒的计数值锁存进锁存器reg1中一段时间后稳定输出。设置锁存器的好处是,显示数据的稳定,不会因为周期性的计数及清零产生闪烁。锁存信号之后,必须有一个输入清零信号cnt清零信号对计数器清零,为下一秒计数做准备。这样需设计一个测频控制信号发生模块,而且它的工作要满足一定的时序关系。为了产生这个时序,需建立一个由D触发器构成的2分频器,在每次时钟输入时钟触发信号上升沿到来时其值翻转。其中输入时钟触发信号的频率为分频模块产生的1hz信号,那么teten的脉宽恰好是1秒,可用作闸门信号。然后根据测频的时序要求,可得到load和输入清零信号cn的逻辑描述。在计数完成后,即计数使能信号teten在1秒的高电平后,利用其反相值的上升沿产生一个锁存信号load,0.5s后,输入清零信号cnt产生一个清零信号的上升沿。该模块的设计尤为重要,其源代码为:moduletestctl(clk1,tsten,clr_cnt,load);inputclk1;outputtsten,clr_cnt,load;regclr_cnt;wiretsten,load;regdiv2clk;always@(posedgeclk1)div2clk<=~div2clk;always@(clk1ordiv2clk)if(!clk1&!div2clk)clr_cnt<=1;elseclr_cnt<=0;assignload=~div2clk;assigntsten=div2clk;endmodule运用QuartusII软件自带仿真器进行仿真的结果如图4-2所示。图4-2测频控制信号发生模块由上图可见仿真结果与设计要求一致,故此模块圆满完成。4.3十进制计数模块的设计计数模块是频率计的核心部分,其有三个输入,两个输出信号组成,ena为输入时钟使能信号,clr为输入清零信号,clk为输入时钟触发信号;co为进位信号为下一级计数器时钟信号,qcnt为输出的4为2进制数据。以下为计数器源程序:modulecntm10(clk,clr,ena,co,qcnt);inputclk,clr,ena;outputco;output[3:0]qcnt;regco;reg[3:0]qcnt;always@(posedgeclkorposedgeclr)beginif(clr)beginqcnt<=4'd0;co<=1'b0;endelsebeginif(ena)beginif(qcnt==4'b1001)beginqcnt<=4'b0000;co<=1'b1;endelsebeginqcnt<=qcnt+1'b1;co<=1'b0;endendendendendmodule用Modelsim进行仿真,结果如图4-3所示:图4-3十进制计数模块仿真图可见在输入清零信号和输入时钟使能信号的作用下当计数器由0计到9后,计数器清零重新计数,并在0时产生一个进位信号co供下一级计数器作为时钟输入。4.4八位十进制计数模块的设计在十进制计数器设计完成后,需要将8个这样的计数器级联,形成8位10进制的计数器产生10的8次方个数据即0—999999999。以下为元件例化的源程序:modulecntm8(clk,clr,ena,co,qcnt);inputclk;inputclr;inputena;outputco;output[31:0]qcnt;wirew3,w4,w5,w6,w7,w8,w9;cntm10u1(.clk(clk),.clr(clr),.ena(ena),.co(w3),.qcnt(qcnt[3:0]));cntm10u2(.clk(w3),.clr(clr),.ena(ena),.co(w4),.qcnt(qcnt[7:4]));cntm10u3(.clk(w4),.clr(clr),.ena(ena),.co(w5),.qcnt(qcnt[11:8]));cntm10u4(.clk(w5),.clr(clr),.ena(ena),.co(w6),.qcnt(qcnt[15:12]));cntm10u5(.clk(w6),.clr(clr),.ena(ena),.co(w7),.qcnt(qcnt[19:16]));cntm10u6(.clk(w7),.clr(clr),.ena(ena),.co(w8),.qcnt(qcnt[23:20]));cntm10u7(.clk(w8),.clr(clr),.ena(ena),.co(w9),.qcnt(qcnt[27:24]));cntm10u8(.clk(w9),.clr(clr),.ena(ena),.co(),.qcnt(qcnt[31:28]));endmodule用Modelsim进行仿真,结果如图4-4所示:图4-48位10进制计数器模块仿真图4.5三十二位锁存器模块的设计计数器输出32位数值,需要送入锁存器保存0.5s后,待数据稳定后再输出显示,代码如下:modulereg1(load,din,dout);inputload;input[31:0]din;output[31:0]dout;reg[31:0]dout;always@(posedgeload)begindout[31:0]<=din[31:0];endendmodule运用QuartusII软件自带仿真器进行仿真的结果如图4-5所示。图4-532位锁存器模块仿真图4.6顶层模块的设计在频率计各个模块设计完成后,需要将各个模块按照相应关系组合起来,这就是顶层模块的元件例化过程。元件例化就是引入一种连接关系,将预先设计好的设计实体定义为一个元件,然后利用特定的语句将此元件与当前的设计实体中的指定端口相连接,从而为当前设计实体引入一个新的低一级的设计层次。在这里,当前设计实体相当于一个较大的电路系统,所定义的例化元件相当于一个要插在这个电路系统板上的芯片,而当前设计实体中指定的端口则相当于这块电路板上准备接受此芯片的一个插座。元件例化是使VerilogHDL设计实体构成自上而下层次化设计的一种重要途径。在一个结构体中调用子程序,包括并行过程的调用非常类似于元件例化,因为通过调用,为当前系统增加了一个类似于元件的功能模块。但这种调用是在同一层次内进行的,并没有因此而增加新的电路层次,这类似于在原电路系统增加了一个电容或一个电阻。元件例化是可以多层次的,在一个设计实体中被调用安插的元件本身也可以是一个低层次的当前设计实体,因而可以调用其它的元件,以便构成更低层次的电路模块。因此,元件例化就意味着在当前结构体内定义了一个新的设计层次,这个设计层次的总称叫元件,但它可以以不同的形式出现。如上所说,这个元件可以是来自FPGA元件库中的元件,它们可能是以别的硬件描述语言,如Verylog设计的实体。元件还可以是软的IP核,或者是FPGA中的嵌入式硬IP核。元件例化语句由两部分组成,前一部分是对一个现成的设计实体定义为一个元件,第二部分则是此元件与当前设计实体中的连接说明。以下为顶层模块源程序:modulepinlv(clk,clkin,qcnt);inputclk;inputclkin;output[31:0]qcnt;wireclk1,ena,clr,load;wire[31:0]dout;testctlu1(.clk1(clk1),.tsten(ena),.clr_cnt(clr),.load(load));clkdivu2(.clk(clk),.clk1(clk1));cntm8u3(.clk(clkin),.clr(clr),.ena(ena),.qcnt(dout[31:0]));reg1u4(.load(load),.din(dout),.dout(qcnt));endmodule对顶层模块进行编译,修改无误后,就可以建立波形文件对设计进行仿真了,其中时钟频率设为1Khz。以下是几组仿真结果。图4-6为输入时钟周期为10us时的仿真结果:图4-6输入信号为100Khz仿真图图4-7为输入时钟周期为500us时的仿真结果:图4-7输入信号为2Khz仿真图图4-8为输入时钟周期为1s时的仿真结果:图4-8输入信号为1hz仿真图本章小结本章从时钟分频、测控信号发生、十进制计数、八位十进制计数、三十二位锁存、顶层模块几个方面介绍了各个模块的原理及实现方法,并将代码和仿真结果进行了编辑,并用QuartusII软件对3个不同量级的时钟信号进行了仿真,对各个模块进行了的具体的说明及最终仿真。结论综上所述,我们可以看到自从FPGA出现,以FPGA为代表的数字系统现场集成技术就开始在电子设计领域展示它越来越重要的作用。由本文的大量分析研究可知,FPGA应用在设计领域中,以纯硬件的控制方式替代了传统的单片机、PLC等CPU的软件控制方式,既降低了系统成本也提高了系统的可靠性和稳定性。无论是通信、数字信号处理,还是仪器仪表、家用电器,用FPGA来实现电子设计可以在满足功能、性能的双重要求下,体现它的成本优势。本次设计是在前人的研究成果上对FPGA的应用进行更全面细致的探索,从数字频率计设计的角度对FPGA产品进行了系统的设计、仿真和延时的分析,并得出了一些富有参考性价值的结论,主要包括以下几个方面工作:完成FPGA器件在结构上适于应用的分析;完成市场上主流FPGA公司产品及的性能特点分析比较;完成FPGA器件应用特性分析;利用原理图输入的方法实现十进制数字频率计的设计;利用VHDL语言实现数字频率计的设计;同时,由于本次设计涉及的内容广泛,限于本人能力、时间和条件的原因,作者认为论文中还有不足,还有需要进一步深入研究的地方,现罗列如下。FPGA器件发展方向的细化还需要进一步调查研究;FPGA在更多领域的应用开拓需要了解;仿真时出现的毛刺信号需要进行更好的处理。针对以上不完善之处,本人希望能够有后来者对此进行进一步研究和探索,更希望通过我们不断地努力,使FPGA这一新兴的逻辑器件能够更好的为我们的工业生产、科学研究效力。致谢历时三个月的毕业设计终于告一段落。经过自己不断的实践努力以及丁文飞老师的耐心指导和热情帮助,本设计已经圆满完成。在这段时间里,丁老师严谨的治学态度和热忱的工作作风令我十分钦佩,她的指导使我受益非浅。同时本系实验室的开放也为我的设计提供了实习场地。在此对丁文飞老师及学院电子系表示深深的感谢。通过这次毕业设计,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了大学四年的学习成果。虽然在这次设计中对于知识的运用和衔接还不够熟练。但是我将在以后的工作和学习中继续努力、不断完善。这三个月的设计是对过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。由于自身水平有限,设计中一定存在很多不足之处,敬请各位老师批评指正。参考文献潘松,黄继业.EDA技术实用教程.第二版.北京:科学出版社.2005潘松,王国栋.VHDL实用教程.成都:电子科技大学出版社.2000徐志平,徐光辉.CPLD/FPGA的开发与应用.北京:电子工业出版社.2002侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电子设计.西安:西安电子科技大学出版社.1997边计年,薛宏熙译.用VHDL设计电子线路.北京:清华大学出版社.2000夏宇闻.VerilogHDL数字设计与综合.北京:电子工业出版社.2004任涛等.闪速存储器数据简明速查手册.北京:电子工业出版社.1997何立民,单片机应用技术选编.北京:北京航空航天大学出版社.2000余孟尝.数字电子技术基础简明教程.北京:高等教育出版社,2006朱耀东,张焕春.电子技术应用.北京:清华大学出版社,2003ZhouSK,ChellappaR,MoghaddanB.Visualtrackingandrecognitionusingappearance-adaptivemodelsinparticlefilters.IEEETransactionsonImageProcessing,2004[12]HuWM,TanTN,WangL,MaybankS.Asurveyonvisualsurveillanceofobjectmotionandbehaviors.IEEETransactionsonSystems,Man,andCybernetics-PartC:ApplicationsandReviews,2004附录1译文FPGA是英文Field-ProgrammableGateArray的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA的简介目前以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。早在1980年代中期,FPGA已经在PLD设备中扎根。CPLD和FPGA包括了一些相对大数量的可以编辑逻辑单元。CPLD逻辑门的密度在几千到几万个逻辑单元之间,而FPGA通常是在几万到几百万。CPLD和FPGA的主要区别是他们的系统结构。CPLD是一个有点限制性的结构。这个结构由一个或者多个可编辑的结果之和的逻辑组列和一些相对少量的锁定的寄存器。这样的结果是缺乏编辑灵活性,但是却有可以预计的延迟时间和逻辑单元对连接单元高比率的优点。而FPGA却是有很多的连接单元,这样虽然让它可以更加灵活的编辑,但是结构却复杂的多。CPLD和FPGA另外一个区别是大多数的FPGA含有高层次的内置模块(比如加法器和乘法器)和内置的记忆体。一个因此有关的重要区别是很多新的FPGA支持完全的或者部分的系统内重新配置。允许他们的设计随着系统升级或者动态重新配置而改变。一些FPGA可以让设备的一部分重新编辑而其他部分继续正常运行。FPGA工作原理FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。FPGA的基本特点主要有:采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。FPGA可做其它全定制或半定制ASIC电路的中试样片。FPGA内部有丰富的触发器和I/O引脚。FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。FPGA配置模式FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。如何实现快速的时序收敛、降低功耗和成本、优化时钟管理并降低FPGA与PCB并行设计的复杂性等问题,一直是采用FPGA的系统设计工程师需要考虑的关键问题。如今,随着FPGA向更高密度、更大容量、更低功耗和集成更多IP的方向发展,系统设计工程师在从这些优异性能获益的同时,不得不面对由于FPGA前所未有的性能和能力水平而带来的新的设计挑战。例如,领先FPGA厂商Xilinx最近推出的Virtex-5系列采用65nm工艺,可提供高达33万个逻辑单元、1,200个I/O和大量硬IP块。超大容量和密度使复杂的布线变得更加不可预测,由此带来更严重的时序收敛问题。此外,针对不同应用而集成的更多数量的逻辑功能、DSP、嵌入式处理和接口模块,也让时钟管理和电压分配问题变得更加困难。幸运地是,FPGA厂商、EDA工具供应商正在通力合作解决65nmFPGA独特的设计挑战。不久以前,Synplicity与Xilinx宣布成立超大容量时序收敛联合工作小组,旨在最大程度帮助地系统设计工程师以更快、更高效的方式应用65nmFPGA器件。最近FPGA的配置方式已经多元化!FPGA主要生产厂商介绍1、Altera2、Xilinx3、Actel4、Lattice其中Altera和Xilinx主要生产一般用途FPGA,其主要产品采用RAM工艺。Actel产品主要基于反熔丝工艺和FLASH工艺。只要你在任何一种高速和多协议的复杂系统中使用了FPGA,你就很可能需要努力解决好器件配置、电源管理、IP集成、信号完整性和其他的一些关键设计问题。不过,你不必独自面对这些挑战,因为在当前业内领先的FPGA公司里工作的应用工程师每天都会面对这些问题,而且他们已经提出了一些将令你的设计工作变得更轻松的设计指导原则和解决方案。附录2英文参考资料FPGAisinEnglishField-ProgrammableGateArrayacronym,thatis,field-programmablegatearrays,itisinPAL,GAL,CPLDandotherprogrammabledevicesbasedonthefurtherdevelopmentoftheproduct.Itisasapplicationspecificintegratedcircuit(ASIC)inthefieldofasemi-customcircuitsarise,notonlysolvethelackofcustomcircuits,butalsotoovercometheoriginalgatealimitednumberofprogrammabledevicesshortcomings.

1.FPGAIntroduction

Currentlyhardwaredescriptionlanguage(VerilogorVHDL)completedthecircuitdesign,synthesisandlayoutthroughasimple,fastandburnittoFPGAonthetestisproventechnologyinmodernICdesignmainstream.Thesecaneditthecomponentcanbeusedtoachievesomeofthebasiclogicgates(egAND,OR,XOR,NOT)ormorecomplexcombinationsoffeaturessuchasdecodersormathematicalformula.InmostoftheFPGAinsidetheeditablecomponentswherealsoincludememorydevicessuchasflip-flop(Flip-flop)orothermorecompleteblocksofmemory.

ThesystemdesignercanbeeditedthroughtheconnectiontotheinternalFPGAlogicblocksconnected,justlikeacircuittestboardwasplacedonachip.AfterafactoryfinishedFPGAlogicblocksandconnectionscanbechangedaccordingtothedesigner,soyoucancompletetherequiredFPGAlogicfunction.

FPGAingeneralthantheASIC(ApplicationSpecificIntegratedChip)isslower,unabletocompletethecomplexdesign,butalsoconsumemorepower.Buttheyalsohavealotofadvantagessuchasfastproductthatcanbemodifiedtocorrecterrorsintheprogramandcheapercost.Manufacturersmayalsoprovidecheap,butpooreditingoftheFPGA.Becausethesechipscanbearelativelypooreditingcapabilities,sothesedesignsforFPGAdevelopmentiscompletedintheordinary,andthentransferredtoasimilardesignofASICchips.AnotherapproachistouseCPLD(complexprogrammablelogicdeviceby).

Asearlyasthemid-1980s,FPGAdeviceshavebeenrootedinthePLD.CPLDandFPGA,includinganumberofrelativelylargenumberoflogiccellscanbeedited.CPLDlogicgatedensityofafewthousandtotensofthousandsamongthelogiccells,whiletheFPGAisusuallyinthetensofthousandstoseveralmilliondollars.

ThemaindifferencebetweenCPLDandFPGAistheirsystemarchitecture.CPLDisasomewhatrestrictivestructure.Thisstructureiscomposedofoneormoreeditable,andthelogicoftheresultsofthegroupcolumns,andsomerelativelysmallnumberoflockregisters.Theresultisthelackofeditingflexibility,buttherecanbeexpectedthatthedelaytimeandlogicunitconnectedtothehighratioofunitbenefits.TheFPGAisalotofconnectionunits,soalthoughitcanbemoreflexibleediting,butthestructureismorecomplicated.

CPLDandFPGAAnotherdifferenceisthatmostoftheFPGAcontainsahigh-levelbuilt-inmodules(suchasaddersandmultipliers)andbuilt-inmemory.Therefore,animportantdifferencerelatedtoalotofnewFPGAsupportsfullorpartialsystemreconfiguration.Allowingthemtodesignwiththesystemupgrade,ordynamicreconfigurationchange.SomepartoftheFPGAdevicecanre-edittheotherpartscontinuetorunnormally.

2.FPGAWorkingPrinciple

FPGAlogiccellarrayusingLCA(LogicCellArray)suchaconcept,includingtheinternalconfigurablelogicblocksC

温馨提示

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

评论

0/150

提交评论