多功能波形发生器的设计论文_第1页
多功能波形发生器的设计论文_第2页
多功能波形发生器的设计论文_第3页
多功能波形发生器的设计论文_第4页
多功能波形发生器的设计论文_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

1、1 / 64西安大西安大 学学毕业设计(论文)毕业设计(论文)题 目: 多功能波形发生器的设计 学 院: 电子工程学院 系 部: 光电子技术系 专 业: 光电信息工程 班 级:学生:导师:职称: 副教授 起止时间: 2013 年 3 月 4 日2013 年 6 月 14 日 1 / 64毕业设计(论文)诚信声明书毕业设计(论文)诚信声明书本人声明:本人所提交的毕业论文 多功能波形发生器的设计 是本人在指导教师指导下独立研究、写作的成果,论文中所引用他人的文献、数据、图件、资料均已明确标注;对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明并表示感。本人完全清楚本声明的法律后果,申请

2、学位论文和资料若有不实之处,本人愿承担相应的法律责任。论文作者签名: 时间: 年 月 日指导教师签名: 时间: 年 月 日1 / 64邮电大学邮电大学毕业设计毕业设计( (论文论文) )任务书任务书任务与要求任务与要求开始日期开始日期2013-03-042013-03-04 完成日期完成日期2013-06-142013-06-14 系主任系主任( (签字签字) )20132013 年年3 3 月月1717 日日任务:任务: 1.1. 掌握可编程逻辑器件的工作原理;掌握可编程逻辑器件的工作原理; 2.2. 利用可编程利用可编程逻辑器件完成多功能波形发生器的设计并且进行仿真验证;逻辑器件完成多功能

3、波形发生器的设计并且进行仿真验证; 3.3. 完成毕业设计论文的撰写。完成毕业设计论文的撰写。 要求:要求: 1.1. 熟悉可编程逻辑器件的熟悉可编程逻辑器件的工作原理与工作原理与 VHDLVHDL 语言编程;语言编程; 2.2. 熟悉熟悉 QUARTUSQUARTUS IIII 软件的使用;软件的使用;有一定的数字系统设计能力。有一定的数字系统设计能力。 1 / 64工作进程工作进程起止时间工 作 容2013.3.4 2013.3.17 了解多功能波形发生器的功能与工作原理2013.3.182013.3.31 熟悉可编程逻辑器件的工作原理,QUARTUS软件的使用以与 VHDL 语言编程的相

4、关知识2013.4.12013.4.19 结合多功能波形发生器需要实现的功能,利用可编程逻辑器件完成多功能波形发生器的设计; 2013.4.202013.5.19 根据所得结果进行分析,用 Verilog 语言编程进行仿真,验证设计方案是否能实现多功能波形发生器的功能以与实现的效果如何; 2013.5.202013.6.14 整理材料,撰写论文。1 / 64主要参考书目(资料):EDA 技术与应用ModelSim 电子系统分析与仿真等主要仪器设备与材料:计算机与相应资料论文(设计)过程中教师的指导安排:每周三下午三号实验楼 518 答疑对计划的说明:无 指导教师签字: 2013 年 3 月 6

5、 日1 / 64大学毕业设计(论文)开题报告课题名称:多功能波形发生器的设计电子工程学院学院光电子技术 系(部)光电信息工程专业班学生: 学号: 指导教师: 报告日期: 2013 年 3 月 11 日 1 / 641本课题所涉与的问题与应用现状综述波形发生器亦称函数发生器,作为实验用信号源,是现今各种电子电路实验设计应用中必不可少的仪器设备之一。所谓多功能波形发生器是能够产生大量的标准信号和用户自定义信号,并保证高精度、高稳定性、可重复性和已操作性的电子仪器。因而它具有广阔的应用前景。可编程逻辑器件英文全称为:programmable logic device 即 PLD。PLD 是作为一种通

6、用集成电路产生的,它的逻辑功能按照用户对器件编程来确定。对于可编程逻辑器件,设计人员可利用价格低廉的软件工具快速开发、仿真和测试其设计。 然后,可快速将设计编程到器件中,并立即在实际运行的电路中对设计进行测试。 在设计阶段中客户可根据需要修改电路,直到对设计工作感到满意为止。 这是因为 PLD基于可重写的存储器技术要改变设计,只需要简单地对器件进行重新编程。传统波形发生器大多由振荡器、放大器、衰减器、指示器和调制器组成。这种传统设计方法的特点是硬件和软件截然不同,设计中不可相互替代,而且硬件连线复杂,可靠性较差。硬件描述语言 VHDL 和可编程逻辑器件的广泛应用打破了硬件和软件的屏障。基于 V

7、erilog 语言,以EDA 技术作为开发手段,采用现场可编程器件作为控制核心实现的波形发生器,与传统的设计相比较,不仅简化了硬件控制,提高了系统的整体性能和工作可靠性,也为进一步提高系统集成创造了条件。本课题所涉与的问题包括了解多功能波形发生器的功能,熟悉可编程逻辑器件的工作原理、QUARTUS软件的使用与 Verilog 语言编程,利用可编程逻辑器件完成多功能波形发生器的设计并且进行仿真验证。2 2本课题需要重点研究的关键问题、解决的思路与实现预期目标的可行性分析本课题需要重点研究的关键问题是利用可编程逻辑器件完成多功能波形发生器的设计并进行仿真验证。解决思路是在深入理解多功能波形发生器的

8、功能和可编程逻辑器件的工作原理的基础上,用 Verilog 语言编程,利用可编程逻辑器件完成多功能波形发生器的设计并且进行仿真,验证设计方案是否能实现多功能波形发生器的功能以与实现的效果如何。1 / 643 3完成本课题的工作方案2013.3.42013.3.17了解多功能波形发生器的功能与工作原理;2013.3.182013.3.31熟悉可编程逻辑器件的工作原理,QUARTUS软件的使用以与 VHDL语言编程的相关知识;2013.4.12013.4.19结合多功能波形发生器需要实现的功能,利用可编程逻辑器件完成多功能波形发生器的设计;2013.4.202013.5.19根据所得结果进行分析,

9、用 Verilog 语言编程进行仿真,验证设计方案是否能实现多功能波形发生器的功能以与实现的效果如何;2013.5.202013.6.14整理材料,撰写论文。4 4指导教师审阅意见指导教师指导教师(签字):2013 年 3 月 13 日1 / 641 / 641 / 64I / 64目录目录摘要摘要 IIIIABSTRACTABSTRACTIIIIII引言引言 1 11.1. EDAEDA 与软件简介与软件简介 2 21.1 EDA 技术发展 21.2 FPGA 介绍 31.3 Modelsim 介绍 41.4 Verilog 与 VHDL 语言介绍 51.5 测试激励文件介绍 51.6 软件

10、使用入门 51.6.1 系统仿真软件 Modulsim 使用 51.6.2 Quartus II 软件使用 72 2 系统总体设计系统总体设计 9 92.1 硬件总体框图 92.2 软件总体框图 92.3 软件与硬件设计总结 103 3 系统各模块设计系统各模块设计 11113.1 时钟模块设计 113.2 增斜波设计 133.3 减斜波设计 153.4 方波设计 183.5 三角波设计 203.6 正弦波设计 223.7 阶梯波设计 254 4 系统软硬件联合调试系统软硬件联合调试 29294.1 系统整体模块结构图 294.2 系统仿真输出图 30结论结论 3131II / 64致致 33

11、33参考文献参考文献 3434附录附录 3 35 5译文译文 4545摘要摘要在函数发生器发展过程中,出现了很多波形发生的方法,其部分是利用 DDS原理制作而成,比如说由晶体管、运放 IC 等通用器件制作而成,或者利用单片集成芯片制做而成。但是随着 FPGA 的出现,波形发生的方法更加多元化。将DDS 原理成功的移植到 FPGA 中,就能产生多种波形,频率可调,相位可选的波形发生装置,也可以自行设计方法产生波形,使得开发更加简单。本文提出了一种基于可编程逻辑器件 FPGA 产生任意波形发生器的设计方法。完成了在 FPGA 的控制下,产生递增斜波、递减斜波、方波、三角波、正弦波与阶梯波行,利用

12、Modelsim 和 Quartus II 进行仿真,验证波形,并给出了实验结果。实验结果表明,此任意波形发生器能够按照要求输出相应波形,达到了设计要求。关键字:关键字:FPGA,斜波;方波;三角波;正弦波;阶梯波III / 64ABSTRACTABSTRACT With function generator in the rapid development process, there have been many ways to generate waveform,And most of them do it with DDS. For example, a transistor, op

13、amp IC and other common devices made it , Or the use of monolithic integrated chip system to do. But with the emergence of FPGA,waveform generation method is more diversified. Produce a variety of waveforms, adjustable frequency, phase, selectable waveform generating device.FPGA can design their own

14、 methods of generating waveforms, making development easier.This paper proposes a method of arbitrary waveform generator ,which was based on programmable logic device FPGA design .Under the control of the FPGA,it gnenrated increasing oblique wave and decreasing oblique wave, square wave, triangle wa

15、ve, sine sweep ladder wave line,and then verify the results by the softwave of Modelsim.The experimental results showed that the arbitrary waveform generator can output waveform accordingly in accordance with the requirements, and has reached the design requirements.Keyword:Keyword: FPGA,oblique wav

16、e, square wave, triangle wave, sine wave and step wave1 / 64引言在电子、通信、实验教学等领域,高精度、高分辨率、幅度相位可控的信号发生器有着广泛的应用。信号发生器又称为信号源或者振荡器,在生产实践和科技领域中有着广泛的应用。函数发生器是使用最广的通用信号源,提供正弦波、锯齿波、方波、脉冲波等波形,有的还同时具有调制和扫描功能。 函数波形发生器在设计上分为模拟式和数字合成式。众所周知,数字合成式函数信号源(DDS)无论就频率、幅度乃至信号的信噪比(S/N)均优于模拟式,其锁相环(PLL)的设计让输出信号不仅是频率精准,而且相位抖动(ph

17、aseJitter)与频率漂移均能达到相当稳定的状态,但数字式信号源中,数字电路与模拟电路之间的干扰始终难以有效克服,也造成在小信号的输出上不如模拟式的函数信号发生器。 本文引入利用 FPGA 来产生阶梯波、三角波、递增斜波、递减斜波、正弦波、方波。具有以下优势:开发信号发生器简单,容易实现,成本低廉,能够根据用户需求进行定制等功能。FPGA 是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。因为其是一种半定制的电路结构,因而 FPGA 具有很多灵活性,能够根据本系统的需求灵活改变部电路,以达到系统的需要。另外一方面,硬件描述语

18、言出现,使得 FPGA 开发随心应手,方便快捷。因为硬件描述语言具有设计的行为特性、设计的数据流特性、设计的结构组成以与包含响应监控和设计验证方面的时延和波形产生机制,这样使得从顶层整体架构到底层具体模块的开发,以与后续的验证,时延等更加方便快捷。从 FPGA 开发多功能信号发生器的角度来说,因为有了自我定制电路以与灵活高效的硬件描述语言,使得本系统开发简单,编程容易,可靠性高,代码冗余量少。而且能够积极扩展,使得设计更加多元化,甚至能做成任意信号发生器。2 / 641. EDA 与软件简介1.1 EDA 技术发展在电子设计自动化(英语:Electronic design automation

19、,缩写:EDA)出现之前,设计人员必须手工完成集成电路的设计、布线等工作,这是因为当时所谓集成电路的复杂程度远不与现在。工业界开始使用几何学方法来制造用于电路光绘(photoplotter)的胶带。到了 1970 年代中期,开发人应尝试将整个设计过程自动化,而不仅仅满足于自动完成掩膜草图。第一个电路布线、布局工具研发成功。设计自动化会议(Design Automation Conference)在这一时期被创立,旨在促进电子设计自动化的发展。从 1981 年开始,电子设计自动化逐渐开始商业化。1984 年的设计自动化会议(Design Automation Conference)上还举办了第一

20、个以电子设计自动化为主题的销售展览。Gateway 设计自动化在 1986 年推出了一种硬件描述语言Verilog,这种语言在现在是最流行的高级抽象设计语言。1987 年,在美国国防部的资助下,另一种硬件描述语言 VHDL 被创造出来。现代的电子设计自动化设计工具可以识别、读取不同类型的硬件描述。根据这些语言规产生的各种仿真系统迅速被推出,使得设计人员可对设计的芯片进行直接仿真。后来,技术的发展更侧重于逻辑综合。目前的数字集成电路的设计都比较模块化(参见集成电路设计、设计收敛(Design closure)和设计流(Design flow (EDA)) ) 。半导体器件制造工艺需要标准化的设计

21、描述,高抽象级的描述将被编译为信息单元(cell)的形式。设计人员在进行逻辑设计时尚无需考虑信息单元的具体硬件工艺。利用特定的集成电路制造工艺来实现硬件电路,信息单元就会实施预定义的逻辑或其他电子功能。半导体硬件厂商大多会为它们制造的元件提供“元件库” ,并提供相应的标准化仿真模型。相比数字的电子设计自动化工具,模拟系统的电子设计自动化工具大多并非模块化的,这是因为模拟电路的功能更加复杂,而且不同部分的相互影响较强,而且作用规律复杂,电子元件大多没有那么理想。Verilog AMS 就是一种用于模拟电子设计的硬件描述语言。此文,设计人员可以使用硬件验证语言来完成项目的验证工作目前最新的发展趋势

22、是将集描述语言、验证语言集成为一体,典型的例子有 SystemVerilog。随着集成电路规模的扩大、半导体技术的发展,电子设计自动化的重要性急剧增加。这些工具的使用者包括半导体器件制造中心的硬件技术人员,他们的工作是操作半导体器件制造设备并管理整个工作车间。一些以设计为主要业3 / 64务的公司,也会使用电子设计自动化软件来评估制造部门是否能够适应新的设计任务。电子设计自动化工具还被用来将设计的功能导入到类似现场可编程逻辑门阵列的半定制可编程逻辑器件,或者生产全定制的专用集成电路。EDA 代表了当今电子设计技术的最新发展方向,它的基本特征是:设计人员按照“自顶向下”的设计方法,对整个系统进行

23、方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件。这样的设计方法被称为高层次的电子设计方法。下面介绍与 EDA 基本特征有关的几个概念。1) “自顶向下”的设计方法10 年前,电子设计的基本思路还是选择标准集成电路“自底向上”(BottomUp)的构造出一个新的系统,这样的设计方法就如同一砖一瓦建造金字塔,不仅效率低、成本高而且容易出错。高层次设计给我们提供了一种“自顶向下”(TopDown)的全新设计方法,这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。

24、在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。然后用综合优化工具生成具体门电路的网表,其对应的物理实现级可以是印刷电路板或专用集成电路。由于设计的主要仿真和调试过程是在高层次上完成的,这一方面有利于早期发现结构设计上的错误,避免设计工作的浪费,同时也减少了逻辑功能仿真的工作量,提高了设计的一次成功率。2) ASIC 设计现代电子产品的复杂度日益加深,一个电子系统可能由数万个中小规模集成电路构成,这就带来了体积大、功耗大、可靠性差的问题,解决这一问题的有效方法就是采用 ASIC(Application Specific Integrated Circ

25、uits)芯片进行设计。ASIC 按照设计方法的不同可分为:全定制 ASIC,半定制 ASIC,可编程 ASIC(也称为可编程逻辑器件)。设计全定制 ASIC 芯片时,设计师要定义芯片上所有晶体管的几何图形和工艺规则,最后将设计结果交由 IC 厂家掩膜制造完成。优点是:芯片可以获得最优的性能,即面积利用率高、速度快、功耗低。缺点是:开发周期长,费用高,只适合大批量产品开发。半定制 ASIC 芯片的版图设计方法有所不同,分为门阵列设计法和标准单元设计法,这两种方法都是约束性的设计方法,其主要目的就是简化设计,以牺牲芯片性能为代价来缩短开发时间。4 / 64可编程逻辑芯片与上述掩膜 ASIC 的不

26、同之处在于:设计人员完成版图设计后,在实验室就可以烧制出自己的芯片,无须 IC 厂家的参与,大大缩短了开发周期。可编程逻辑器件自七十年代以来,经历了 PAL、GAL、CPLD、FPGA 几个发展阶段,其中 CPLD/FPGA 属高密度可编程逻辑器件,目前集成度已高达 200 万门/片,它将掩膜 ASIC 集成度高的优点和可编程逻辑器件设计生产方便的特点结合在一起,特别适合于样品研制或小批量产品开发,使产品能以最快的速度上市,而当市场扩大时,它可以很容易的转由掩膜 ASIC 实现,因此开发风险也大为降低。上述 ASIC 芯片,尤其是 CPLD/FPGA 器件,已成为现代高层次电子设计方法的实现载

27、体。1.2 FPGA 介绍FPGA(FieldProgrammable Gate Array) ,即现场可编程门阵列,它是在PAL、GAL、CPLD 等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数

28、学方程式。在大多数的 FPGA 里面,这些可编辑的元件里也包含记忆元件例如触发器(Flipflop)或者其他更加完整的记忆块。目前市场上开发 FPGA 的主要有两大供应商,一个就是 ALTERA 公司,另一个就是 Xilinx 公司。Altera 的主流 FPGA 分为两大类,一种侧重低成本应用,容量中等,性能可以满足一般的逻辑设计要求,如 Cyclone,CycloneII;还有一种侧重于高性能应用,容量大,性能能满足各类高端应用,如 Startix,StratixII 等,用户可以根据自己实际应用要求进行选择。在性能可以满足的情况下,优先选择低成本器件。MAX+PLUSII:普遍认为 Ma

29、xplusII 曾经是最优秀的 PLD 开发平台之一,适合开发早期的中小规模 PLD/FPGA 由 QuartusII 替代,不再推荐使用。QuartusII:Altera 新一代 FPGA/PLD 开发软件,适合新器件和大规模 FPGA的开发,已经取代 MaxplusII。SOPC Builder: 配合 QuartusII,可以完成集成 CPU 的 FPGA 芯片的开发工5 / 64作DSP Builder: QuartusII 与 Matlab 的接口,利用 IP 核在 Matlab 中快速完成数字信号处理的仿真和最终 FPGA 实现。Xilinx 的主流 FPGA 分为两大类,一种侧重

30、低成本应用,容量中等,性能可以满足一般的逻辑设计要求,如 Spartan 系列;还有一种侧重于高性能应用,容量大,性能能满足各类高端应用,如 Virtex 系列,用户可以根据自己实际应用要求进行选择。 在性能可以满足的情况下,优先选择低成本器件。 ISE:Xilinx 公司集成开发的工具 Foundation: Xilinx 公司早期的开发工具,逐步被 ISE 取代嵌入式开发套件(EDK): 用于开发集成 PowerPC 硬核和 MicroBlaze 软核CPU 的工具System Generator for DSP :配合 Matlab,在 FPGA 中完成数字信号处理的工具1.3 Mode

31、lsim 介绍Mentor 公司的 ModelSim 是业界最优秀的 HDL 语言仿真软件,它能提供友好的仿真环境,是业界唯一的单核支持 VHDL 和 Verilog 混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk 技术、和单一核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护 IP 核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是 FPGA/ASIC 设计的首选仿真软件。ModelSim 分几种不同的版本:SE、PE、LE 和 OEM,其中 SE 是最高级的版本,而集成在 Actel、Atmel、Altera、Xilinx 以与 Lattice 等 FPG

32、A 厂商设计工具中的均是其 OEM 版本。SE 版和 OEM 版在功能和性能方面有较大差别,比如对于大家都关心的仿真速度问题,以 Xilinx 公司提供的 OEM 版本 ModelSim XE为例,对于代码少于 40000 行的设计,ModelSim SE 比 ModelSim XE 要快 10 倍;对于代码超过 40000 行的设计,ModelSim SE 要比 ModelSim XE 快近 40 倍。ModelSim SE 支持 PC、UNIX 和 LINUX 混合平台;提供全面完善以与高性能的验证功能;全面支持业界广泛的标准;Mentor Graphics 公司提供业界最好的技术支持与服

33、务。1.4 Verilog 与 VHDL 语言介绍Verilog HDL 语言是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。其具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以与包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外,Verilog HDL 语言提供6 / 64了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。VHDL 语言是一种用于电路设计的高级语言。VHDL 主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL 的语言

34、形式、描述风格以与语法是十分类似于一般的计算机高级语言。VHDL 的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,与端口)和部(或称不可视部分) ,既涉与实体的部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其部开发完成后,其他的设计就可以直接调用这个实体。1.5 测试激励文件介绍测试激励也叫 testbench,它是一种验证的手段。首先,任何设计都是会有输入输出的。但是在软环境中没有激励输入,也不会对你设计的输出正确性进行评估。那么此时便有一种,模拟实际环境的输入激励和输出校验的一种“虚拟平台”的产生。在这个平台上你可

35、以对你的设计从软件层面上进行分析和校验。用通俗的话来表示:测试激励就是启动模块的钥匙,它能够模拟模块的输入变量,使其能够按照工程师的要求进行工作。1.6 软件使用入门1.6.1 系统仿真软件 Modulsim 使用Modulsim 是目前市场上最流行的 FPGA 仿真软件,以其卓越的性能和操作简单性著称。下面以 Modelsim 10.0 来做个使用向导。1) 软件安装好之后,打开软件 modulsim,点击 FILE-new-project,将出现如图 1-4 所示画面,起名为 test。7 / 64图 1-4 新建工程2) 在如图 1-5 所示界面添加 verilog 文件与测试文件,然后

36、进行编译,将出现图 1-6 所示画面图 1-5 添加文件图 1-6 编译结果3) 双击测试文件,tb_sysgen 将出现图 1-7 所示现象,然后在测试文件tb_sysgen 上右击选中 start simulation ,会出现如图 1-8 所示现象。8 / 64图 1-7 点击仿真图 1-8 添加波形4) 运行仿真,将开始进行波形仿真,如图 1-9 所示:9 / 64图 1-9 波形仿真图1.6.2 Quartus II 软件使用Quartus II 软件是目前市场上最流行的 FPGA 开发综合软件,它的开发者是altera 公司。其容易操作,具有良好的可视化,开发简单,易于被初学这接受

37、。以下介绍 Quartus II 12.0 的简单使用。1) 打开 Quartus II 软件,点击 File 选项,然后选择 new,选择 new Quartus II project,选择好器件以与存放路径,就建立好工程文件了,如图 2-10。10 / 64图 1-10 新建工程2) 点击 File,选择 new,新建 verilog HDL,比如文件名字叫 test。编程完毕之后,可以编译下,看看有没有语法错误,如果没有语法错误,则进入测试文件建立模块。3) 点击菜单栏中 processing,选择 start,选择 start testbench template write。此时会自

38、动生成 testbench 模板到项目文件夹simulation 里面,后缀为.vt ,这时候就可以通过 modulesim 进行仿真了。2 系统总体设计 本系统是基于 FPGA 开发的多功能波形发生器,利用硬件描述语言Verilog 进行编程,Quartus II 上进行编译,并仿真验证结构,接着利用Modelsim 进行再次仿真验证,以达到本系统的要求,产生增斜波、减斜波、方波、三角波、正弦波、阶梯波形。但是确定该方案之前还是有很多方案: 方案一: 用分立元件组成的函数发生器:通常是单函数发生器且频率不高,其工作不很稳定,不易调试方案二:可以由晶体管、运放 IC 等通用器件制作,更多的则是

39、用专门的函数信号发生器 IC 产生。早期的函数信号发生器 IC,如L8038、BA205、XR2207/2209 等,它们的功能较少,精度不高,频率上限只有300kHz,无法产生更高频率的信号,调节方式也不够灵活,频率和占空比不能独立调节,二者互相影响。11 / 64方案三:利用单片集成芯片的函数发生器:能产生多种波形,达到较高的频率,且易于调试。鉴于此,美国美信公司开发了新一代函数信号发生器ICMAX038,它克服了(2)中芯片的缺点,可以达到更高的技术指标,是上述芯片望尘莫与的。MAX038 频率高、精度好,因此它被称为高频精密函数信号发生器 IC。在锁相环、压控振荡器、频率合成器、脉宽调

40、制器等电路的设计上,MAX038 都是优选的器件。方案四: 利用专用直接数字合成 DDS 芯片的函数发生器:能产生任意波形并达到很高的频率。但成本较高相比以上四种方案,利用 FPGA 进行开发具有自己的优势性:1) 可以根据自己的需求进行定制特定的电路;2) 综合仿真容易实现,拥有 Quartus II、Modelsim 和 ISE 等软件编程;3) 可编程性强,Verilog 语言编程语法比较类似与熟悉的 C 语言,学习简单易用2.1 硬件总体框图硬件设计主要包含三个模块,即时钟产生模块、FPGA 信号产生模块、D/A 数模转换模块。总体框图如图 3-1 所示图 3-1时钟模块是用来给 FP

41、GA 提供基准时钟,其稳定性决定了信号产生器的稳定;FPGA 信号产生模块是各种波形信号产生如:正弦波,方波,斜波,锯齿波,三角波,波形频率设定;D/A 数模转化模块是将 FPGA 输出的数据整合成模拟的波形。12 / 64图 3-22.2 软件总体框图软件系统设计主要包含三个模块,即基于 altera 公司的 Quartus II 分频模块,波形产生模块,仿真软件 Modelsim 波形仿真模块。总体设计如图 3-2所示。时钟分频模块是指将基准时钟进行分频,以达到变换频率的功能。波形产生模块用来产生各种波形,如增斜波,减斜波,正弦波,阶梯波形,方波。数字输出模块,将各种波形用数字进行输出。2

42、.3 软件与硬件设计总结综上所述软硬件结构,利用时钟模块产生基准时钟传输到 FPGA 上,FPGA利用锁相环对时钟倍频产生更高的时钟频率,然后根据用户需要,对时钟进行分频,产生不同频率的波形。通过 Verilog 语言进行编程来产生各种波形,输出到 DA 数模转换模块,产生模拟波形信号。3 系统各模块设计3.1 时钟模块设计时钟模块的功能是分配系统时钟,使得 FPGA 输出不同的频率的波形。根据这个功能,利用 Verilog 编写了分频时钟模块。利用 ALTERA 公司开发的 QuartusII13 / 64软件进行综合,布线之后,得到如图 3-1 模块原理图:图 3-1 分频时钟模块时钟模块

43、 Verilog 代码如下:module clk_div(sysclk ,reset,div ,clk_out );input sysclk,reset;input 7:0 div;output clk_out;reg clk_out;/reg clk_out_tmp=0;reg 7:0 count;reg 7:0 div_2;always (posedge sysclk or negedge reset) beginif(!reset) beginclk_out = 0;count = 0;div_2 = div1;endelse beginif(count=div_2) beginclk_

44、out = clk_out;count = 0;endelsecount = count + 1;endendendmodule14 / 64从图 3-1 和时钟模块代码中可以得到以下信息:模块的输入变量是:外部基准时钟 sysclk,模块复位输入 reset,分频系数输入 div,波形时钟输出 clk_out;复位输入 reset 低电平时,时钟模块复位,系统不运作;分频系数 div 决定波形时钟,其分频计算公式是:,比如说 div 值为 1,则输出时钟是1div 系统时钟频率输出时钟频率系统时钟的二分之一;根据以上程序,编写了下列测试程序:module tb_clkdiv;/ Inputs

45、reg sysclk;reg reset;reg 7:0 div;/ Outputswire clk_out;/ Instantiate the Unit Under Test (UUT)clk_div uut (.sysclk(sysclk), .reset(reset), .div(div), .clk_out(clk_out);always #10 sysclk = sysclk;initial begin/ Initialize Inputssysclk = 0;reset = 0;div = 0;/ Wait 100 ns for global reset to finish#100

46、; reset = 1;div = 1;#200;div = 2;15 / 64endendmodule从上述激励中看出,div=1,也就是 2 分频,系统的运行周期是 20ns。利用 Modelsim 软件对时钟模块进行仿真,结果如图 3-2 所示:图 3-2 两分频时钟波形从图中可以看出在 div=1,rest=1 的情况下,输出时钟 clk_out 是输入时钟 clk_in 的一半,这很好地证明了分频时钟的正确性。再用 Quartus II 软件进行综合仿真,结果如图 3-3 所示。图 3-3 两分频时钟波形从图 3-3 所示的时钟波形来看输出时钟 clk_out 时钟频率是输入时钟的一

47、半,但是存在小量的延时,比如说以 1us 为周期的情况下,延时大约是0.25us,但是由于我们采用分频后的时钟作为产生波形的基准时钟,所以这点延时不影响整个结果。综上所述,该时钟分频模块能够将输入时钟频率按照自己系统需求分配出不同频率。3.2 增斜波设计增斜波是指波形按照一定的步幅递增,达到最高点后又回到值为零的状态,这样循环进行。按照这种思想设计出来软件流程图如图 3-4 所示。16 / 64图 3-4 增斜波软件流程图根据图 3-4 所示软件流程图设计出增斜波模块的模块框图,如图 3-5 所示。图 3-5 增斜波模块框图 从图 3-5 中来分析该模块的输入输出模块以与引脚定义:模块的输入变

48、量是:外部基准时钟 sysclk_in,模块复位输入reset_in,分频系数输入 div。输出时钟波形时钟输出 Qout_add;复位输入 reset 低电平时,时钟模块复位,系统不运作;分频系数 div 决定波形时钟,其分频计算公式是:,比如说 div 值为 1,则输出时钟是1div系统时钟频率输出时钟频率系统时钟的二分之一;Qout_add 是增斜波模块的波形输出。根据软件流程图以与模块框图中输入输出引脚定义,使用 Verilog 语言设计了以下代码:开始rest,sysclk,div输入输出递增波形结束分频初始化变量rest=1NOYES17 / 64module add(SysClk

49、 ,/系统时钟rest,/复位开关,低电平复位div,/分频Qout_add /递增斜波 );input SysClk;input rest;input 7:0 div;input SysClk;input rest;input 7:0 div;output 7:0 Qout_add;wire clk_out;clk_div clk(.sysclk(SysClk),.reset(rest),.div(div) ,.clk_out(clk_out);/产生递增斜波reg 7:0 tmp_add=0;always (posedge clk_out or negedge rest) beginif(

50、!rest) beginQout_add = 0;tmp_add = 0;endelse begintmp_add = tmp_add + 1 ;if(tmp_add = 8b1111_1111) begintmp_add = 0;endelse beginQout_add = tmp_add;18 / 64endendendendmodule通过以上的方法可以输出递增波形,其波形的频率决定于输入时钟和分频系数。设计测试文件,将 div 设置为 1 即为 2 分频,sysclk 设置周期为 20ns。通过 Modelsim 仿真得到图 3-6 增斜波输出:图 3-6 增斜波输出从图 3-6 中

51、,看出波形输出 Qout_add 是按照增斜波的趋向增长的,步进值是 1,从 0 达到 255,到 255 溢出又变为 0 值。为了进一步验证该递增波形的正确性,我们采用 Quartus II 进行波形仿真,得到的仿真波形图如图 3-7 所示。图 3-7 增斜波输出从图 3-6 和图 3-7 分别是 Modelsim 和 Quartus II 仿真出来的波形,从波形上来观察可以看出基本没有区别,进一步验证了该递增斜波产生模块的正确性。 3.3 减斜波设计减斜波是指波形按照一定的步幅递减,达到最高点后又回到最大值的状态,这样循环进行。根据模块需求设计出模块流程图如图 3-8 所示。19 / 64

52、图 3-8 减斜波软件流程图根据图 3-8 所示软件流程图设计出减斜波模块的模块框图,如图 3-9 所示。图 3-9 减斜波模块原理图从图 3-9 中来分析该模块的输入输出模块以与引脚定义:模块的输入变量是:外部基准时钟 sysclk,模块复位输入 reset,分频系数输入 div。输出时钟波形时钟输出 Qout_min;复位输入 reset 低电平时,时钟模块复位,系统不运作;分频系数 div 决定波形时钟,其分频计算公式是:,比如说 div 值为 1,则输出时钟是1div 系统时钟频率输出时钟频率系统时钟的二分之一;Qout_min 是减斜波模块的波形输出。根据软件流程图以与模块框图中输入

53、输出引脚定义,使用 Verilog 语言设计了以下代码:module min1(SysClk ,/系统时钟rest,/复位开关,低电平复位开始rest,sysclk,div输入输出递减波形结束分频初始化变量rest=1NOYES20 / 64div,/分频Qout_min /递增斜波 );input SysClk;input rest;input 7:0 div;input SysClk;input rest;input 7:0 div;output 7:0 Qout_min;wire clk_out;clk_div clk(.sysclk(SysClk),.reset(rest),.div(

54、div) ,.clk_out(clk_out);/产生递减斜波reg 7:0 tmp_min=8b1111_1111;always (posedge clk_out or negedge rest) beginif(!rest) beginQout_min = 0;tmp_min = 8b1111_1111;endelse begintmp_min = tmp_min - 1 ;if(tmp_min = 0) begintmp_min = 8b1111_1111;endelse beginQout_min = tmp_min;endendend21 / 64endmodule从上述代码可以分析

55、出输出 Qout_min 从最大的 255 开始递减,每来一次分频过的时钟减 1,一直到 0,然后又恢复到 255,这样循环往复。设计测试文件,将 div 设置为 1 即为 2 分频,sysclk 设置周期为 20ns。通过 Modelsim 仿真得到图 3-10 波形:图 3-10 减斜波波形输出图 3-10 可以清楚看出递减斜波的波形图,即从最大值开始依次往小减,直到最小值 0,又重新恢复到最大,这样循环往复。为了进一步验证该模块的正确性,采用 Quartus II 进行波形仿真,其结果如图 3-11 所示。图 3-11 减斜波波形输出 从图 3-11 中可以发现跟图 3-10 中发现的一

56、样的周期性减斜波,进一步验证了模块的正确性。3.4 方波设计方波是指非正弦曲线的波形,输出的形状如矩形,只有0 , 1两个值。根据模块需求设计出模块流程图如图 3-12 所示。22 / 64图 3-12 方波模块软件流程图根据图 3-12 所示软件流程图设计出方波模块的模块框图,如图 3-13 所示。图 3-13 方波模块原理图从图 3-13 中来分析该模块的输入输出模块以与引脚定义:模块的输入变量是:外部基准时钟 sysclk,模块复位输入 reset,分频系数输入 div。输出时钟波形时钟输出 Qout_squ;复位输入 reset 低电平时,时钟模块复位,系统不运作;分频系数 div 决

57、定波形时钟,其分频计算公式是:,比如说 div 值为 1,则输出时钟是1div 系统时钟频率输出时钟频率系统时钟的二分之一;Qout_squ 是方波波模块的波形输出。根据软件流程图以与模块框图中输入输出引脚定义,使用 Verilog 语言设计了以下核心代码:/产生方波reg 7:0 tmp_squ=0;reg squ_flag=0;always (posedge clk_out or negedge rest) beginif(!rest) beginQout_squ = 0;tmp_squ = 0;squ_flag=0;end23 / 64else begintmp_squ = tmp_sq

58、u + 1;if(tmp_squ = 8b0000_1111) begintmp_squ = 0;squ_flag = squ_flag;endif(squ_flag)Qout_squ = 8b1111_1111;elseQout_squ = 0;endend简单分析下以上代码:tmp_squ 是用来计部时钟 clk_out 的脉冲次数,当达到 8b0000_1111 时,重新计 0,这个时候,将输出变量翻转,产生方波。设计测试文件,将 div 设置为 1 即为 2 分频,sysclk 设置周期为 20ns。通过Modelsim 仿真得到图 3-14 波形:图 3-14 方波波形仿真图从图 3

59、-14 中可以看出当 div=1 和 reset=1 的情况下 clk_out_tmp 是输入时钟的一办,每来 16 个周期 Qout_squ 输出电平翻转一遍,以产生标准的方波。为了验证方波模块的正确性,采用 Quartus II 进行波形仿真,得到如图 3-15所示仿真波形图。图 3-15 方波波形仿真图从图 3-14 中也可以看到和图 3-15 同样的现象每经过 16 个周期电平翻转一次,也就是说每 32 个周期产生一个方波波形,完全符合标准,另外,其频率取24 / 64决于分频系数 div 和系统输入时钟。3.5 三角波设计三角波形是指波形值从最小值开始递增,到达最高点后又开始依次减小

60、,直到减小到最小值,依次反复,形状想三角形。根据模块需求设计出模块流程图如图 3-16 所示。图 3-16 三角波软件流程图根据图 3-16 所示软件流程图设计出方波模块的模块框图,如图 3-17 所示。图 3-17 三角波模块原理图从图 3-17 中来分析该模块的输入输出模块以与引脚定义:模块的输入变量是:外部基准时钟 sysclk,模块复位输入 reset,分频系数输入 div。输出时钟波形时钟输出 Qout_tri;复位输入 reset 低电平时,时钟模块复位,系统不运作;分频系数 div 决定波形时钟,其分频计算公式是:,比如说 div 值为 1,则输出时钟是1div 系统时钟频率输出

温馨提示

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

评论

0/150

提交评论