基于FPGA的数字频率及设计与实现.docx
- 文档编号:12551193
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:32
- 大小:219.64KB
基于FPGA的数字频率及设计与实现.docx
《基于FPGA的数字频率及设计与实现.docx》由会员分享,可在线阅读,更多相关《基于FPGA的数字频率及设计与实现.docx(32页珍藏版)》请在冰点文库上搜索。
基于FPGA的数字频率及设计与实现
第1章绪论
1.1课题背景与意义
在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,频率的测量就显得尤为重要,而频率计的研究工作更具有重大的科研意义。
由于大规模和超大规模数字集成电路技术、数据通信技术与单片机技术的结合,数字频率计发展进入了智能化和微型化的新阶段。
近年来,随着电子设计技术的飞速发展,数字电路的研究及应用出现了广阔的空间。
利用FPGA(FieldProgrammableGateArray)的设计软件可以将设计好的程序“烧写”到FPGA器件中,如同自行设计集成电路一样,可以节省电路开发的费用与时间。
Altera公司提供的QuartusII软件进行FPGA设计开发流程,根据设计需要可以进行原理图、硬件描述语言进行设计,并进行编译仿真,配合Modelsim仿真软件测试设计功能的实现。
1.2本课题主要研究内容
传统频率计设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。
随着可编程逻辑器件(CPLD/FPGA)的广泛应用,以EDA工具作为开发手段,运用硬件描述语言(VHDL/Verilog),将使整个系统大大简化,提高整体的性能和可靠性。
而本课题正是采用硬件描述语言对数字频率计进行设计,整个系统非常精简,而且具有灵活的现场可更改性,在不更改硬件电路的基础上,可以对系统进行各种改进来进一步提高系统的性能,因此该数字频率计具有精确、可靠、和现场可编程等优点。
本设计所能达到的技术指标如下:
1.能测量输入信号的频率范围为1hz~99Mhz;
2.波形可以是方波等任何有固定频率的信号;
3.运用硬件描述语言和原理图法进行设计;
4.运用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开发环境
2.2.1软件开发环境——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函数有以下几个方面:
1.算术组件:
包括累加器,加法器,乘法器和LMP算术函数;
2.门电路:
包括多路复用器和LMP门函数;
3.I/O组件:
包括时钟数据恢复(CDR),锁相环(PLL),双数据速率(DDR),千兆位收发器块(GXB),LVDS接收器和发送器,PLL重新配置和远程更新宏功能模块;
4.存储器编译器:
包括FIFOPartitioner,ROM和ROM宏功能模块;
5.存储组件:
包括存储器,移位寄存器宏模块和LMP存储器函数。
QuartusII允许来自第三方的EDIF文件输入,并提供了很多EDA软件的接口,QuartusII支持层次化设计,可以在一个新的编辑输入环境中对使用不同输入设计方式完成的模块进行调试,从而解决了原理图和VHDL混合输入设计的问题。
而且QuartusII拥有性能良好的设计错误定位器,用于确定文本或图形设计中的错误。
AlteraQuartusII作为一种可编程逻辑的设计环境,因其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。
2.2.2软件仿真环境——Modelsim的介绍
Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。
它采用直接优化的编译技术和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。
主要特点:
1.RTL和门级优化,本地编译结构,编译仿真速度快,跨平台跨版本仿真;
2.单内核VHDL和Verilog混合仿真;
3.源代码模版和助手,项目管理;
4.集成了性能分析、波形比较、代码覆盖、数据流ChaseX、SignalSpy、虚拟对象VirtualObject、Memory窗口、Assertion窗口、源码窗口显示信号值、信号条件断点等众多调试功能;
5.对SystemC的直接支持,和HDL任意混合;
6.支持SystemVerilog的设计功能;
7.对系统级描述语言的最全面支持,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作为输出;
2.打开Modelsim,首先createproject,工程名随意取了,比如命名为test,目录设在modelsimStudy下,默认的库work不变(这样就不用管什么建立库之类的东西了)。
然后addexistingfile,把counter.vhd加入当前工程;
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。
就有波形出来了。
2.3硬件描述语言——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开发一般流程总结为:
1.电路的设计与输入(HDL描述和原理如图输入方法);
2.功能仿真(前仿真:
检查所设计的电路是否满足预先设想的功能需求);
3.综合优化(把RTL级描述和原理图描述变成门级网表描术);
4.综合后仿真(检查综合后的结果是否和预想的设计一致);
5.布局布线(布局:
把门级网表中各个基本硬件单元适配到FPGA具体的硬件电路上;根据布局的拓扑结构和FPGA的连线资源,把这些基本硬件单元合理的连接起来);
6.时序仿真与验证(后仿真:
包含门延迟和传输线的延迟,能真是反应FPGA的实际工作情况,确保设计的稳定性和可靠性);
7.调试与加载配置。
以上的任何一步出现问题,都要回到相应的步骤进行重新设计,知道满足要求为止。
图2-1所示为FPGA开发流程图。
图2-1:
FPGA开发流程图
本章小结
本章分别从FPGA的介绍、FPGA的开发环境,硬件描述语言的介绍,FPGA开发流程的介绍等几个方面对FPGA设计的基础知识进行了深入浅出的阐述,通过对FPGA设计的相关基础知识的介绍,便于对下文进一步进行介绍的展开。
第三章频率计的设计方案
3.1系统的总体设计
3.1.1设计思路
传统频率计设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。
随着可编程逻辑器件的广泛应用,以EDA工具作为开发手段,运用硬件描述语言(VHDL/Verilog),将会使系统大大简化,从而提高整体的性能。
而本课题正是采用硬件描述语言对数字频率计进行设计,整个系统非常精简,而且具有灵活的现场可更改性,在不更改硬件电路的基础上,可以对系统进行各种改进来进一步提高系统的性能,因此该数字频率计具有高速、精确、可靠、抗干扰性强和现场可编程等优点。
本设计采用自顶向下的设计思路,利用Verilog硬件描述语言对频率计进行设计,利用Modelsim这一业内十分优秀的仿真软件对频率计的核心模块进行仿真,并在QuartusII综合开发软件上对设计进行编译优化和总体仿真。
3.1.2频率计的基本原理
电子计数器测频有两种方式:
一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法,如周期测频法。
直接测频法适用于高频信号的频率测量,间接测频法适用于低频信号的频率测量。
本文阐述了基于FPGA运用直接测频法设计一个简单的数字频率计的过程,其基本原理是用计数器来计算1s内输入信号周期的个数,它由一个测频控制信号发生器TESTCTL,一个有时钟使能的得计数器(由8个有时钟使能的十进制计数器CNT10组成),和一个32位锁存器REG组成,且该部分硬件电路均由硬件描述语言(VHDL/Verilog)来设计实现,将各个模块编译和仿真保证无误之后建立顶层模块将各个模块例化按端口相应关系相连接,完全编译之后,纠正提示错误后,建立波形仿真文件,为各个输入信号添加激励时钟进行仿真即可得到8位10进制显示的数字频率计。
3.2数字频率计原理方框图
该测频法频率计是八位十进制数字频率计,它由一个测频控制信号发生器,测频计数模块,和一个输出信号锁存器组成。
该数字测频系统组成原理图如图3-1所示。
图3-1:
数字频率计原理方框图
本章小结
本章旨在介绍该设计的总体设计方案,先介绍了设计思路和频率计的基本工作原理,最后给出了原理方框图,逐步深入,很直观的对总体设计进行了阐述,以便于下一步设计的展开。
第四章频率计的实现
4.1时钟信号分频模块的设计
由于系统时钟为1Khz,因此要将其进行1000分频得到1hz的周期信号,分频程序比较简单,其中clk为输入的1Khz系统时钟信号,clk1为输出的1hz信号,现将源程序摘抄如下:
moduleclkdiv(clk,clk1);
inputclk;
outputclk1;
regclk1;
reg[10:
0]count;
always@(posedgeclk)
begin
count=count+1;
if(count==11'd500)
begin
count=11'd0;
clk1=~clk1;
end
end
endmodule
运用QuartusII软件自带仿真器进行仿真的结果如图4-1所示。
图4-1:
分频模块仿真图
由上图可见当时钟计数到第500个时,输出信号发生跳变,又经过500个时钟周期后再次跳变,因此上述代码达到了1000分频的目的。
4.2测频控制信号发生模块的设计
频率测量的的基本原理是计算每秒内待测信号的脉冲个数。
这就要求测频控制信号发生模块的计数使能信号teten能产生一个1s脉宽的周期信号,并对频率计的每一个计数器cntm10的ena使能端进行同步控制。
当teten高电平时
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 数字 频率 设计 实现