毕业论文设计函数信号发生器的FPGA设计Word格式.docx
- 文档编号:19789734
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:28
- 大小:154.01KB
毕业论文设计函数信号发生器的FPGA设计Word格式.docx
《毕业论文设计函数信号发生器的FPGA设计Word格式.docx》由会员分享,可在线阅读,更多相关《毕业论文设计函数信号发生器的FPGA设计Word格式.docx(28页珍藏版)》请在冰豆网上搜索。
1引言-1-
1.1编写函数信号发生器的目的及意义-1-
1.2本设计的主要内容-2-
2FPGA概述-3-
2.1FPGA技术的发展历程和动向-3-
2.2FPGA的设计方法-3-
2.3FPGA的设计流程-4-
2.3.1基于“自顶向下”设计方法的FPGA设计流程-4-
2.3.2基于“自顶向下”设计流程的优点-5-
2.4VHDL硬件描述语言介绍-5-
2.4.1VHDL语言的发展历史-5-
2.4.2VHDL语言的特点-6-
2.4.3VHDL语言的开发流程-7-
2.4.4VHDL语言设计总结-7-
2.5QuartusII软件介绍-9-
2.5.1QuartusII概述-9-
2.5.2QuartusII的设计流程-10-
2.5.3QuartusII设计方法-10-
3函数信号发生器的FPGA设计-12-
3.1三角波信号发生器的设计-12-
3.1.1三角波的VHDL描述-12-
3.1.2三角波信号发生器的逻辑电路图-13-
3.2正弦波信号发生器的设计-14-
3.2.1正弦波的VHDL描述-14-
3.2.2正弦波信号发生器的逻辑电路图-17-
3.3方波信号发生器的设计-18-
3.3.1方波的VHDL描述-18-
3.3.2方波信号发生器的逻辑电路图-20-
3.4波形选择模块的设计-20-
3.4.1波形选择模块的VHDL描述-20-
3.4.2波形选择模块的逻辑电路图-22-
3.5顶层模块的设计-22-
3.5.1顶层模块的VHDL描述-22-
3.5.2顶层模块的逻辑电路图-24-
4函数信号发生器的仿真结果及分析-25-
4.1三角波信号发生器的仿真结果及分析-25-
4.2正弦波信号发生器的仿真结果及分析-26-
4.3方波信号发生器的仿真结果及分析-26-
5结束语-27-
5.1总结-27-
5.2下一步展望-27-
参考文献-28-
致谢-29-
摘要
函数信号发生器是各种测试和实验过程中不可缺少的工具,在通信、测量、雷达、控制、教学等领域应用十分广泛。
在科技飞速发展的今天,FPGA在函数信号发生器的领域的应用已经非常普遍。
随着我国经济和科技的发展,对相应的测试仪器和测试手段也提出了更高的要求,信号发生器己成为测试仪器中至关重要的一类,因此开发信号发生器具有重大意义。
函数信号发生器能够产生正弦波、方波、三角波等等各波形信号,还能够将其中任意两种信号或三种信号叠加产生叠加波形。
波形频率可以调节,通过拨码开关可以选择波形以不同频率输出。
输出的波形信息是8位二进制数字量,可通过D/A期间转换为模拟量后进行放大输出。
设计通过硬件描述语言VHDL来实现,并使用Altera的QuartusII软件进行编译、调试与仿真,验证了函数信号发生器完全可以实现预定的功能。
关键词:
函数信号发生器;
FPGA;
VHDL;
QuartusII软件
Abstract
Functionsignalgeneratoristhemostessentialtoolinallkindsoftestandexperiment.Itisverywidelyusedincommunications,measuring,radar,control,teachingetc.Inthedaysofrapiddevelopmentofscienceandtechnology,FPGAhasbeenprevalentlyappliedinthefieldoffunctionsignalgenerator.Alongwiththefastdevelopmentofeconomyandscienceinourcountry,thecorrespondingtestinginstrumentandtestmethodentailhigherspeedandquality,signalgeneratorhasbecomeavitalcategory,thusdevelopingsignalgeneratorisofgreatsignificance.
Functionsignalgeneratorcangeneratesinewave,triangular,square,etc.variouswaveformsignal,includingsuperpositionwaveformproducedbyanytwoorthreekindsofsignals.Becausewavefrequencyisadjustablesodialthroughcodeswitchitcanoutputdifferentfrequencywaveform.Theoutputwaveforminformationis8binaryNumbers,alsoitcanbetransformedtoanalogthroughtheD/Atobeamplifiedandthenoutput.
ThedesignisaccomplishedbytheVHDLhardwaredescriptionlanguageanduseQuartusIIsoftwareforcompile,debugandsimulation.Itisverifiedtoprovethatthefunctionsignalgeneratorcanachievepredeterminedfunction.
Keywords:
Functionsignalgenerator;
FPGA;
VHDL;
QuartusIIsoftware.
1引言
1.1编写函数信号发生器的目的及意义
函数信号发生器是各种测试和实验过程中不可缺少的工具,在电子工程、通信工程、自动控制、遥测控制、测量仪器、仪表和计算机等技术领域,应用十分地广泛;
并且在这些技术领域,经常需要用到各种各样波形的函数信号发生器。
不论是在生产、科研还是教学上,信号发生器都是电子工程师信号仿真实验的最佳工具,而且,信号发生器的设计方法多,设计技术也越来越先进。
随着集成电路的迅速发展,用集成电路可很方便地构成各种波形的函数信号发生器。
用集成电路实现的各种波形的函数信号发生器与其它各种波形的函数信号发生器相比,其波形质量、幅度和频率稳定性等性能指标,都有了很大的提高。
同时,随着我国经济和科技的发展,对相应的测试仪器和测试手段也提出了更高的要求,信号发生器己成为测试仪器中至关重要的一类,因此开发信号发生器具有重大意义。
但传统的信号发生器大多采用专用芯片或单片机或模拟电路,成本高或控制方式不灵活或波形种类较少等不能满足要求。
目前我国在研制函数信号发生器等方面有可喜的成果。
但总的来说,我国函数信号发生器还没有形成真正的产业。
中国在函数信号发生器这个产业的发展中,出现了很多的问题。
如产业结构不合理、产业集中于劳动力密集型产品;
技术密集型产品明显落后于发达工业国家;
生产要素决定性作用正在削弱;
产业能源消耗大、产出率低、环境污染严重、对自然资源破坏力大;
企业总体规模偏小,技术创新能力薄弱、管理水平落后等。
就目前国内的成熟产品来看,核心部分多为专用芯片,存在着成本高、控制不灵活等特点,并且我国目前函数信号发生器的种类和性能都与国外同类产品存在着较大的差距。
因此,开发出高性价比的函数信号发生器,保持与国外同类产品在性价比上的优势,打破国外技术垄断和封锁,对发展我国电子产业有非常重大的意义,具有广泛的应用前景,加紧对这类产品的研制显得非常紧迫。
本课题利用FPGA(FiledProgrammableGateArray的缩写,即现场可编程逻辑门阵列)技术进行设计;
使用超高速集成电路硬件描述语言(VHSICHardwareDescriptionLanguage),简称VHDL语言实现;
同时,利用Altera的QuartusII软件进行编程、调试、仿真,其可提供一个非常容易适应特定设计所需要的完整的多平台设计环境。
本设计验证了函数信号发生器的完全可以实现预定的功能,具有一定的实用性。
1.2本设计的主要内容
在熟悉FPGA设计相关知识的基础上,设计一种函数信号发生器,能稳定地产生方波、正弦波、三角波等等各波形,并设置一个波形选择开关,通过此开关可以选择以上各波形之一并输出。
本设计采用自上而下的切割重组设计方法。
因此,设计的第一个步骤就是划分确定整体的结构,将设计划分为几个小块,然后把这些小块一一实现,最后再把这些小块组合起来,实现整个FPGA预定的功能。
同时研究函数信号发生器的原理,编写相应的代码,利用QuartusII软件工具进行仿真调试。
2FPGA概述
2.1FPGA技术的发展历程和动向
FPGA是英文FieldProgrammableGateArray的缩写,即现场可编程门阵列[9],它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。
作为一种可编程逻辑器件,FPGA的出现是可编程逻辑器件发展变化的必然,它的出现推动着可编程逻辑器件的进一步发展。
因此说,了解了可编程逻辑器件的发展历程,也就了解了FPGA的发展历程。
可编程逻辑器件[5](ProgrammableLogicDevice,PLD)是20世纪70年代发展起来的一种新型器件。
它的应用不仅简化了电路设计,降低了成本,提高了系统的可靠性,而且给数字系统的设计方式带来了革命性的变化。
可编程逻辑器件的发展是以微电子制作技术的不断进步为基础的,其结构和工艺的变化经历了一个不断发展变革的过程。
20世纪70年代,早期的可编程逻辑器件只有可编程只读存储器(PROM)、紫外线可擦除只读存储器(EPROM)和电可擦除只读存储器(EEPROM)3种。
随后,出现了一类结构稍微复杂的可编程芯片,即可编程逻辑阵列(ProgrammableLogicArray,PLA)。
PLA在结构上由一个可编程的与阵列和可编程的或陈列构成,阵列规模小,编程过程复杂繁琐。
PLA既有现场可编程的,也有掩膜可编程的。
在这之后出现了可编程阵列逻辑(ProgrammableArrayLogic,PAL)器件。
这些早期的PLD器件的一个共同特点是可以实现速度特性较好的逻辑功能,但由于其结构过于简单,因此,只能用于实现较小规模的电路设计。
为了弥补这一缺陷,20世纪80年代中期,著名的可编程逻辑器件厂商Altera和Xilinx分别推出了扩展型的复杂可编程逻辑器件(ComplexProgrammableLogicDevice,CPLD)和类似于标准门阵列的现场可编程门阵列(FieldProgrammableGateArray,FPGA)。
如今,FPGA器件已成为当前主流的可编程逻辑器件之一。
经过近20年的发展,可编程逻辑器件已经取得了长足的进步,资源更加丰富,使用越来越方便。
将来的可编程逻辑器件,密度会更高、速度会更快、功耗会更低,同时还会增加更多新的功能,向着集成了可编程逻辑、CPU、存储器等组件的可编程单片系统(SystemOnProgrammableChip,SOPC)方向发展。
2.2FPGA的设计方法
FPGA的常用设计方法包括“自顶向下”和“自下而上”[6]。
目前大规模FPGA设计一般选择“自顶向下”的设计方法。
所谓“自顶向下”设计方法,简单地说,就是采用可完全独立于芯片厂商及其产品结构的描述语言,在功能级对设计产品进行定义,并结合功能仿真技术,以确保设计的正确性,在功能定义完成后,利用逻辑综合技术,把功能描述转换成某一具体结构芯片的网表文件,输出给厂商的布局布线器进行布局布线。
布局布线结果还可反标回同一仿真器,进行包括功能和时序的后验证,以保证布局布线所带来的门延时和线延时不会影响设计的性能。
“自顶向下”设计方法的优越性是显而易见的。
首先,由于功能描述可完全独立于芯片结构,在设计的最初阶段,设计师可不受芯片结构的约束,集中精力进行产品设计,进而避免了传统设计方法所带来的重新再设计风险,大大缩短了设计周期。
其次,设计的再利用得到保证。
目前的电子产品正向模块化方向发展。
所谓模块化就是对以往设计成果进行修改、组合和再利用,产生全新的或派生设计。
而“自顶向下”设计方法的功能描述可与芯片结构无关。
因此,可以以一种IP(IntelligenceProperty知识产权)的方式进行存档,以便将来重新利用。
第三,设计规模大大提高。
简单的语言描述即可完成复杂的功能,而不需要手工绘图。
第四,芯片选择更加灵活。
设计师可在较短的时间内采用各种结构芯片来完成同一功能描述,从而在设计规模、速度、芯片价格及系统性能要求等方面进行平衡,选择最佳结果。
目前,最为常用的功能描述方法是采用均已成为国际标准的两种硬件描述语言VHDL和VeilogHDL。
2.3FPGA的设计流程
2.3.1基于“自顶向下”设计方法的FPGA设计流程
FPGA开发采用的是一种高层次设计方法[4],这是一种“自顶向下”的方法,适应了当今芯片开发的复杂程度提高、上市时间紧迫的特点。
这种设计方法首先从系统设计入手,在顶层进行功能方框的划分和结构设计,在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统进行描述,在系统一级(层)进行验证。
然后用综合优化工具生成具体门电路的网表,其对应的物理实现级(层)可以是印刷电路板或专用集成电路。
由于设计的主要仿真和调试过程是在高层次上完成的,这不仅有利于早期发现结构设计上的错误,避免设计工作的浪费,而且也减少了逻辑功能仿真的工作量,提高了设计的一次成功率。
其设计流程步骤如下:
(1)按照“自顶向下”的设计方法进行系统划分。
(2)输入VHDL代码。
这是高层次设计中最为普遍的输入方式,用任何文本编辑器都可以。
此外,还可以采用图形输入方式(如框图、状态图等),这种输入方式具有直观、容易理解的优点。
(3)将以上的设计输入编译成标准的VHDL文件,然后将文件调入仿真软件进行功能仿真,检查逻辑功能是否正确。
对于大型设计,进行代码级的功能仿真主要是检验系统功能设计的正确性,因为对于大型设计,综合、试配要花费数小时,在综合前对源代码仿真,就可以大大减少设计重复的次数和时间。
(4)利用综合器对源代码进行综合优化处理,生成门级描述的网表文件,即将源文件调入逻辑综合软件进行逻辑分析处理。
(5)如果整个设计超出器件的宏单元或I/0单元资源,可以将设计划分到多片同系列的器件中。
(6)将适配器产生的器件编程文件通过编程器或下载电缆载入到目标芯片FPGA中。
2.3.2基于“自顶向下”设计流程的优点
基于“自顶向下”设计流程的优点[7]如下:
(1)设计流程从功能描述开始到物理实现的完成与设计人员的开发思路符合,方便设计人员进行开发。
(2)功能设计完全独立于物理实现。
(3)设计再利用较方便。
设计结果完全可以以一种知识产权(IntellectualProperty,IP)的方式作为设计成果,应用于其他电子产品设计中,做到设计成果再利用。
(4)易于设计的更改。
(5)设计并处理大规模、复杂电路。
目前的FPGA器件正向高集成度、深亚微米工艺发展。
为设计系统的小型化、低功耗、高可靠性等提供了集成的手段。
(6)设计周期缩短,生产率大大提高,产品上市时间提前,性能明显提高,产品竞争力加强。
据统计,采用“自顶向下”设计流程的生产率可达到传统设计方法的2-4倍。
FPGA是近几年集成电路中发展最快的产品。
随着可编程逻辑器件的高速发展,可编程逻辑器件将进一步扩大其领地,向着更高密度和更大容量方向迈进。
2.4VHDL硬件描述语言介绍
目前,硬件描述语言可谓是百家争鸣,有VHDL、Superlog、Verilog、SystemC、Cynlib、C++、CLevel等。
本设计采用VHDL语言来编写程序的。
2.4.1VHDL语言的发展历史
VHDL语言的基础知识与其他高级语言有许多相同之处[1],但因VHDL语言是一种描述硬件电路的语言,故其基础知识也有自己的特点,如VHDL语言中信号是一种特有的对象。
VHDL语言还可以由设计人员自己定义数据类型,这一点也是其他高级语言做不到的。
自从硬件描述语言产生以后,众多EDA公司和科研单位纷纷研制开发了适应自身EDA开发工具的硬件描述语言。
这些硬件描述语言具有很大的差异,并且只能在本公司的EDA开发工具上使用,这大大限制了硬件描述语言的使用。
因些电路设计人员需要一种强大的面向设计的多层次、多领域并得到了广大EDA厂商认同的标准化硬件描述语言。
(1)20世纪70年代末和80年代初,美国国防部提出了VHSIC(VeryHighSpeedIntegratedCircuit)计划,VHSIC计划的目标是为下一代集成电路的生产、实现阶段性的工艺极限以及完成10万门级以上的设计,建立一项新的描述方法。
(2)1981年,美国国防部提出了一种新的硬件描述语言——超高速集成电路硬件描述语言(VHSICHardwareDescriptionLanguage),简称VHDL语言。
这个语言只是一个使电路文体化的一种标准,目的是使文本描述的电路设计能够为其他人所理解,同时也可以作为一种模型语言并能采用软件进行模拟。
(3)1986年,IEEE致力于VHDL语言的标准化工作,并成立了一个VHDL语言标准化小组。
经过多次反复的修改与扩充,直到1987年12月,VHDL语言才被接纳为IEEE1076标准。
1988年,Milstd454规定所有为美国国防部设计的ASIC产品必须采用VHDL语言来进行描述。
1993年,IEEE1076标准被修订,更新为新的VHDL语言标准IEEE1164。
1996年,IEEE1076.3成为VHDL语言的综合标准。
2.4.2VHDL语言的特点
VHDL语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。
但是它也并不是一种完全理想的硬件描述语言。
同样,它也具有一些自身的缺点,或者说VHDL语言还有一些需要不断完善的地方。
图2-1为VHDL硬件描述语言的优缺点对照。
优点
缺点
1.VHDL语言功能强大,设计方式多样
1.VHDL语言有时不能准确地描述硬件电路
2.VHDL语言具有强大的硬件描述能力
3.VHDL语言具有强大的移植能力
2.VHDL语言的系统级抽象描述能力较差
4.VHDL语言的设计描述与器件无关
5.VHDL语言程序易于共享和复用
3.VHDL语言不能描述模拟电路
图2-1VHDL优缺点对照
2.4.3VHDL语言的开发流程
VHDL语言作为一种标准化的硬件描述语言[3],在对硬件电路进行描述的过程中应该遵循一定的流程。
对于设计人员来说,掌握VHDL语言的开发流程图和开发步骤是具有普遍指导意义的。
采用VHDL语言进行硬件电路设计的流程图如图2-2所示。
图2-2VHDL设计流程图
2.4.4VHDL语言设计总结
通过前面对VHDL的学习,基本掌握了基于FPGA的VHDL语言的设计方法和理念。
以下是基于FPGA的VHDL设计的一些经验。
养成良好的编程习惯是非常重要的[2],特别是在刚开始学习VHDL设计时,一定要注意编写代码的格式和风格,这对以后的学习和工作都有重大的促进意义。
良好的编程习惯就是在满足功能和性能目标的前提下,增强代码的可读性、可移植性。
良好的代码编写风格的通则简要地概括如下:
(1)对所有的信号名、变量名和端口名都用小写,这样做是为了和业界的习惯保持一致;
对常量名和用户定义的类型用大写。
(2)使用有意义的信号名、端口名、函数名和参数名。
(3)信号名长度不要太长,要注意简洁明了。
对于超过28个字符的信号名,有些EDA工具不能够识别,再者太长的信号名也不容易记忆。
因此,在描述清楚的前提下,根据信号本身的功能,尽可能采用较短的信号命名,最好是利用信号功能的英文单词缩写来命名。
(4)对于时钟信号使用clk作为信号名,如果设计中存在多个时钟,使用clk作为时钟信号的前缀,如clk1、clk2、clk_interace等。
(5)对来自同一驱动源的信号,在不同的子模块中采用相同的名字,这要求在芯片总体设计时就定义好顶层子模块间连线的名字,端口和连接端口的信号尽可能采用相同的名字。
(6)对于低电平有效的信号,应该以一个下划线跟一个小字母b或n表示(a2b_req_n、a2b_req_b)。
注意,在同一个设计中要使用同一个小写字母表示低电平有效。
(7)对于复位信号使用rst作为信号名,如果复位信号是低电平有效,建议使用rst_n。
(8)尽量遵守业界已经习惯的一些约定。
如*_r表示寄存器输出,*_a表示异步信号等等一些习惯的约定。
(9)在源文件、批处理文件的开始处应该包含一个文件头,文件头是程序中很重要的一部分,有助于程序阅读者对程序的理解,提高程序的可读性。
文件头一般包含如下的内容:
文件名,设计者,模块名,模块的实现功能概述,使用的仿真软件以及软件运行的平台,使用的综合工具以及工具运行的平台,文件创建时间,文件修改时间。
(10)使用适当简短的语句注释所有的进程、函数、端口含义、信号含义、变量含义及信号组、变量组的意义等。
注释应在代码附近,要求简明扼要,只要足够说明设计意图即可,避免过于复杂。
(11)每一行语句独立成行。
(12)建议采用缩进提高续行和嵌套语句的可读性。
(13)在RTL源码的设计中任何元素,包括端口、信号变量函数、任务、模块等的命名都不能取Verilog和VHDL的保留字。
例如:
将输出端口命名为out,就和VHDL的保留字OUT相同,编译时就会报错。
(14)在进行模块的端口申明时,每行只申明一个端口,并建议采用以下
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业论文 设计 函数 信号发生器 FPGA