《多功能波形发生器的设计论文.doc》由会员分享,可在线阅读,更多相关《多功能波形发生器的设计论文.doc(63页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、西安大 学毕业设计(论文)题 目: 多功能波形发生器的设计 学 院: 电子工程学院 系 部: 光电子技术系 专 业: 光电信息工程 班 级:学生:导师:职称: 副教授 起止时间: 2013年3月4日2013年6月14日 49 / 63毕业设计(论文)诚信声明书本人声明:本人所提交的毕业论文 多功能波形发生器的设计 是本人在指导教师指导下独立研究、写作的成果,论文中所引用他人的文献、数据、图件、资料均已明确标注;对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式注明并表示感。本人完全清楚本声明的法律后果,申请学位论文和资料若有不实之处,本人愿承担相应的法律责任。论文作者签名: 时间: 年
2、 月 日指导教师签名: 时间: 年 月 日邮电大学毕业设计(论文)任务书任务: 1. 掌握可编程逻辑器件的工作原理; 2. 利用可编程逻辑器件完成多功能波形发生器的设计并且进行仿真验证; 3. 完成毕业设计论文的撰写。 要求: 1. 熟悉可编程逻辑器件的工作原理与VHDL语言编程; 2. 熟悉QUARTUS II软件的使用;有一定的数字系统设计能力。 任务与要求开始日期2013-03-04 完成日期2013-06-14 系主任(签字)2013 年3 月17 日工作进程起止时间工 作 容2013.3.42013.3.17 了解多功能波形发生器的功能与工作原理2013.3.182013.3.31
3、熟悉可编程逻辑器件的工作原理,QUARTUS软件的使用以与VHDL语言编程的相关知识2013.4.12013.4.19 结合多功能波形发生器需要实现的功能,利用可编程逻辑器件完成多功能波形发生器的设计; 2013.4.202013.5.19 根据所得结果进行分析,用Verilog语言编程进行仿真,验证设计方案是否能实现多功能波形发生器的功能以与实现的效果如何; 2013.5.202013.6.14 整理材料,撰写论文。主要参考书目(资料):EDA技术与应用ModelSim电子系统分析与仿真等主要仪器设备与材料:计算机与相应资料论文(设计)过程中教师的指导安排:每周三下午三号实验楼518答疑对计
4、划的说明:无 指导教师签字: 2013年 3 月 6 日大学毕业设计(论文)开题报告课题名称:多功能波形发生器的设计电子工程学院学院光电子技术 系(部)光电信息工程专业班学生: 学号: 指导教师: 报告日期: 2013 年 3 月 11 日 1本课题所涉与的问题与应用现状综述波形发生器亦称函数发生器,作为实验用信号源,是现今各种电子电路实验设计应用中必不可少的仪器设备之一。所谓多功能波形发生器是能够产生大量的标准信号和用户自定义信号,并保证高精度、高稳定性、可重复性和已操作性的电子仪器。因而它具有广阔的应用前景。可编程逻辑器件英文全称为:programmable logic device 即
5、PLD。PLD是作为一种通用集成电路产生的,它的逻辑功能按照用户对器件编程来确定。对于可编程逻辑器件,设计人员可利用价格低廉的软件工具快速开发、仿真和测试其设计。 然后,可快速将设计编程到器件中,并立即在实际运行的电路中对设计进行测试。在设计阶段中客户可根据需要修改电路,直到对设计工作感到满意为止。 这是因为PLD基于可重写的存储器技术要改变设计,只需要简单地对器件进行重新编程。传统波形发生器大多由振荡器、放大器、衰减器、指示器和调制器组成。这种传统设计方法的特点是硬件和软件截然不同,设计中不可相互替代,而且硬件连线复杂,可靠性较差。硬件描述语言VHDL和可编程逻辑器件的广泛应用打破了硬件和软
6、件的屏障。基于Verilog语言,以EDA技术作为开发手段,采用现场可编程器件作为控制核心实现的波形发生器,与传统的设计相比较,不仅简化了硬件控制,提高了系统的整体性能和工作可靠性,也为进一步提高系统集成创造了条件。本课题所涉与的问题包括了解多功能波形发生器的功能,熟悉可编程逻辑器件的工作原理、QUARTUS软件的使用与Verilog语言编程,利用可编程逻辑器件完成多功能波形发生器的设计并且进行仿真验证。2本课题需要重点研究的关键问题、解决的思路与实现预期目标的可行性分析本课题需要重点研究的关键问题是利用可编程逻辑器件完成多功能波形发生器的设计并进行仿真验证。解决思路是在深入理解多功能波形发生
7、器的功能和可编程逻辑器件的工作原理的基础上,用Verilog语言编程,利用可编程逻辑器件完成多功能波形发生器的设计并且进行仿真,验证设计方案是否能实现多功能波形发生器的功能以与实现的效果如何。3完成本课题的工作方案2013.3.42013.3.17了解多功能波形发生器的功能与工作原理;2013.3.182013.3.31熟悉可编程逻辑器件的工作原理,QUARTUS软件的使用以与VHDL语言编程的相关知识;2013.4.12013.4.19结合多功能波形发生器需要实现的功能,利用可编程逻辑器件完成多功能波形发生器的设计;2013.4.202013.5.19根据所得结果进行分析,用Verilog语
8、言编程进行仿真,验证设计方案是否能实现多功能波形发生器的功能以与实现的效果如何;2013.5.202013.6.14整理材料,撰写论文。4指导教师审阅意见指导教师(签字):2013年 3 月 13 日目录摘要IIABSTRACTIII引言11. EDA与软件简介21.1 EDA技术发展21.2 FPGA介绍31.3 Modelsim介绍41.4 Verilog与VHDL语言介绍51.5 测试激励文件介绍51.6 软件使用入门51.6.1 系统仿真软件Modulsim使用51.6.2 Quartus II软件使用72 系统总体设计92.1 硬件总体框图92.2 软件总体框图92.3软件与硬件设计
9、总结103 系统各模块设计113.1 时钟模块设计113.2 增斜波设计133.3 减斜波设计153.4 方波设计183.5 三角波设计203.6正弦波设计223.7 阶梯波设计254 系统软硬件联合调试294.1 系统整体模块结构图294.2 系统仿真输出图30结论31致33参考文献34附录35译文45摘要在函数发生器发展过程中,出现了很多波形发生的方法,其部分是利用DDS原理制作而成,比如说由晶体管、运放IC等通用器件制作而成,或者利用单片集成芯片制做而成。但是随着FPGA的出现,波形发生的方法更加多元化。将DDS原理成功的移植到FPGA中,就能产生多种波形,频率可调,相位可选的波形发生装
10、置,也可以自行设计方法产生波形,使得开发更加简单。本文提出了一种基于可编程逻辑器件FPGA产生任意波形发生器的设计方法。完成了在FPGA的控制下,产生递增斜波、递减斜波、方波、三角波、正弦波与阶梯波行,利用Modelsim和Quartus II进行仿真,验证波形,并给出了实验结果。实验结果表明,此任意波形发生器能够按照要求输出相应波形,达到了设计要求。关键字:FPGA,斜波;方波;三角波;正弦波;阶梯波ABSTRACT With function generator in the rapid development process, there have been many ways to g
11、enerate waveform,And most of them do it with DDS. For example, a transistor, op 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 f
12、requency, phase, selectable waveform generating device.FPGA can design their own 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 gnenrat
13、ed increasing oblique wave and decreasing oblique wave, square wave, triangle wave, 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 require
14、ments, and has reached the design requirements.Keyword: FPGA,oblique wave, square wave, triangle wave, sine wave and step wave引言在电子、通信、实验教学等领域,高精度、高分辨率、幅度相位可控的信号发生器有着广泛的应用。信号发生器又称为信号源或者振荡器,在生产实践和科技领域中有着广泛的应用。函数发生器是使用最广的通用信号源,提供正弦波、锯齿波、方波、脉冲波等波形,有的还同时具有调制和扫描功能。函数波形发生器在设计上分为模拟式和数字合成式。众所周知,数字合成式函数信号源(D
15、DS)无论就频率、幅度乃至信号的信噪比(S/N)均优于模拟式,其锁相环(PLL)的设计让输出信号不仅是频率精准,而且相位抖动(phaseJitter)与频率漂移均能达到相当稳定的状态,但数字式信号源中,数字电路与模拟电路之间的干扰始终难以有效克服,也造成在小信号的输出上不如模拟式的函数信号发生器。 本文引入利用FPGA来产生阶梯波、三角波、递增斜波、递减斜波、正弦波、方波。具有以下优势:开发信号发生器简单,容易实现,成本低廉,能够根据用户需求进行定制等功能。FPGA是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。因为其是一种半
16、定制的电路结构,因而FPGA具有很多灵活性,能够根据本系统的需求灵活改变部电路,以达到系统的需要。另外一方面,硬件描述语言出现,使得FPGA开发随心应手,方便快捷。因为硬件描述语言具有设计的行为特性、设计的数据流特性、设计的结构组成以与包含响应监控和设计验证方面的时延和波形产生机制,这样使得从顶层整体架构到底层具体模块的开发,以与后续的验证,时延等更加方便快捷。从FPGA开发多功能信号发生器的角度来说,因为有了自我定制电路以与灵活高效的硬件描述语言,使得本系统开发简单,编程容易,可靠性高,代码冗余量少。而且能够积极扩展,使得设计更加多元化,甚至能做成任意信号发生器。1. EDA与软件简介1.1
17、 EDA技术发展在电子设计自动化(英语:Electronic design automation,缩写:EDA)出现之前,设计人员必须手工完成集成电路的设计、布线等工作,这是因为当时所谓集成电路的复杂程度远不与现在。工业界开始使用几何学方法来制造用于电路光绘(photoplotter)的胶带。到了1970年代中期,开发人应尝试将整个设计过程自动化,而不仅仅满足于自动完成掩膜草图。第一个电路布线、布局工具研发成功。设计自动化会议(Design Automation Conference)在这一时期被创立,旨在促进电子设计自动化的发展。从1981年开始,电子设计自动化逐渐开始商业化。1984年的设
18、计自动化会议(Design Automation Conference)上还举办了第一个以电子设计自动化为主题的销售展览。Gateway设计自动化在1986年推出了一种硬件描述语言Verilog,这种语言在现在是最流行的高级抽象设计语言。1987年,在美国国防部的资助下,另一种硬件描述语言VHDL被创造出来。现代的电子设计自动化设计工具可以识别、读取不同类型的硬件描述。根据这些语言规产生的各种仿真系统迅速被推出,使得设计人员可对设计的芯片进行直接仿真。后来,技术的发展更侧重于逻辑综合。目前的数字集成电路的设计都比较模块化(参见集成电路设计、设计收敛(Design closure)和设计流(De
19、sign flow (EDA))。半导体器件制造工艺需要标准化的设计描述,高抽象级的描述将被编译为信息单元(cell)的形式。设计人员在进行逻辑设计时尚无需考虑信息单元的具体硬件工艺。利用特定的集成电路制造工艺来实现硬件电路,信息单元就会实施预定义的逻辑或其他电子功能。半导体硬件厂商大多会为它们制造的元件提供“元件库”,并提供相应的标准化仿真模型。相比数字的电子设计自动化工具,模拟系统的电子设计自动化工具大多并非模块化的,这是因为模拟电路的功能更加复杂,而且不同部分的相互影响较强,而且作用规律复杂,电子元件大多没有那么理想。Verilog AMS就是一种用于模拟电子设计的硬件描述语言。此文,设
20、计人员可以使用硬件验证语言来完成项目的验证工作目前最新的发展趋势是将集描述语言、验证语言集成为一体,典型的例子有SystemVerilog。随着集成电路规模的扩大、半导体技术的发展,电子设计自动化的重要性急剧增加。这些工具的使用者包括半导体器件制造中心的硬件技术人员,他们的工作是操作半导体器件制造设备并管理整个工作车间。一些以设计为主要业务的公司,也会使用电子设计自动化软件来评估制造部门是否能够适应新的设计任务。电子设计自动化工具还被用来将设计的功能导入到类似现场可编程逻辑门阵列的半定制可编程逻辑器件,或者生产全定制的专用集成电路。EDA代表了当今电子设计技术的最新发展方向,它的基本特征是:设
21、计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件。这样的设计方法被称为高层次的电子设计方法。下面介绍与EDA基本特征有关的几个概念。1) “自顶向下”的设计方法10年前,电子设计的基本思路还是选择标准集成电路“自底向上”(BottomUp)的构造出一个新的系统,这样的设计方法就如同一砖一瓦建造金字塔,不仅效率低、成本高而且容易出错。高层次设计给我们提供了一种“自顶向下”(TopDown)的全新设计方法,这种设计方法首先从系统设计入
22、手,在顶层进行功能方框图的划分和结构设计。在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。然后用综合优化工具生成具体门电路的网表,其对应的物理实现级可以是印刷电路板或专用集成电路。由于设计的主要仿真和调试过程是在高层次上完成的,这一方面有利于早期发现结构设计上的错误,避免设计工作的浪费,同时也减少了逻辑功能仿真的工作量,提高了设计的一次成功率。2) ASIC设计现代电子产品的复杂度日益加深,一个电子系统可能由数万个中小规模集成电路构成,这就带来了体积大、功耗大、可靠性差的问题,解决这一问题的有效方法就是采用ASIC(Application Speci
23、fic Integrated Circuits)芯片进行设计。ASIC按照设计方法的不同可分为:全定制ASIC,半定制ASIC,可编程ASIC(也称为可编程逻辑器件)。设计全定制ASIC芯片时,设计师要定义芯片上所有晶体管的几何图形和工艺规则,最后将设计结果交由IC厂家掩膜制造完成。优点是:芯片可以获得最优的性能,即面积利用率高、速度快、功耗低。缺点是:开发周期长,费用高,只适合大批量产品开发。半定制ASIC芯片的版图设计方法有所不同,分为门阵列设计法和标准单元设计法,这两种方法都是约束性的设计方法,其主要目的就是简化设计,以牺牲芯片性能为代价来缩短开发时间。可编程逻辑芯片与上述掩膜ASIC的
24、不同之处在于:设计人员完成版图设计后,在实验室就可以烧制出自己的芯片,无须IC厂家的参与,大大缩短了开发周期。可编程逻辑器件自七十年代以来,经历了PAL、GAL、CPLD、FPGA几个发展阶段,其中CPLD/FPGA属高密度可编程逻辑器件,目前集成度已高达200万门/片,它将掩膜ASIC集成度高的优点和可编程逻辑器件设计生产方便的特点结合在一起,特别适合于样品研制或小批量产品开发,使产品能以最快的速度上市,而当市场扩大时,它可以很容易的转由掩膜ASIC实现,因此开发风险也大为降低。上述ASIC芯片,尤其是CPLD/FPGA器件,已成为现代高层次电子设计方法的实现载体。1.2 FPGA介绍FPG
25、A(FieldProgrammable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编
26、辑的元件里也包含记忆元件例如触发器(Flipflop)或者其他更加完整的记忆块。目前市场上开发FPGA的主要有两大供应商,一个就是ALTERA公司,另一个就是Xilinx公司。Altera 的主流FPGA分为两大类,一种侧重低成本应用,容量中等,性能可以满足一般的逻辑设计要求,如Cyclone,CycloneII;还有一种侧重于高性能应用,容量大,性能能满足各类高端应用,如Startix,StratixII等,用户可以根据自己实际应用要求进行选择。在性能可以满足的情况下,优先选择低成本器件。MAX+PLUSII:普遍认为MaxplusII曾经是最优秀的PLD开发平台之一,适合开发早期的中小规模
27、PLD/FPGA由QuartusII替代,不再推荐使用。QuartusII:Altera新一代FPGA/PLD开发软件,适合新器件和大规模FPGA的开发,已经取代MaxplusII。SOPC Builder: 配合QuartusII,可以完成集成CPU的FPGA芯片的开发工作DSP Builder: QuartusII与Matlab的接口,利用IP核在Matlab中快速完成数字信号处理的仿真和最终FPGA实现。Xilinx的主流FPGA分为两大类,一种侧重低成本应用,容量中等,性能可以满足一般的逻辑设计要求,如Spartan系列;还有一种侧重于高性能应用,容量大,性能能满足各类高端应用,如Vi
28、rtex系列,用户可以根据自己实际应用要求进行选择。 在性能可以满足的情况下,优先选择低成本器件。ISE:Xilinx公司集成开发的工具Foundation: Xilinx公司早期的开发工具,逐步被ISE取代嵌入式开发套件(EDK): 用于开发集成PowerPC硬核和MicroBlaze软核CPU的工具System Generator for DSP :配合Matlab,在FPGA中完成数字信号处理的工具1.3 Modelsim介绍Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单核支持VHDL和Verilog混合仿真的仿真器。它采用直接
29、优化的编译技术、Tcl/Tk技术、和单一核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。ModelSim分几种不同的版本:SE、PE、LE和OEM,其中SE是最高级的版本,而集成在 Actel、Atmel、Altera、Xilinx以与Lattice等FPGA厂商设计工具中的均是其OEM版本。SE版和OEM版在功能和性能方面有较大差别,比如对于大家都关心的仿真速度问题,以Xilinx公司提供的OEM版本ModelSim XE为例,对于代码少于40000行的设计,ModelSim
30、 SE 比ModelSim XE要快10倍;对于代码超过40000行的设计,ModelSim SE要比ModelSim XE快近40倍。ModelSim SE支持PC、UNIX和LINUX混合平台;提供全面完善以与高性能的验证功能;全面支持业界广泛的标准;Mentor Graphics公司提供业界最好的技术支持与服务。1.4 Verilog与VHDL语言介绍Verilog HDL 语言是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。其具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以与包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使
31、用同一种建模语言。此外,Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。VHDL语言是一种用于电路设计的高级语言。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以与语法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,与端口)和部(或称不可视部分),既涉与实体的部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其部开发完成后,其他的设计就可以
32、直接调用这个实体。1.5 测试激励文件介绍测试激励也叫testbench,它是一种验证的手段。首先,任何设计都是会有输入输出的。但是在软环境中没有激励输入,也不会对你设计的输出正确性进行评估。那么此时便有一种,模拟实际环境的输入激励和输出校验的一种“虚拟平台”的产生。在这个平台上你可以对你的设计从软件层面上进行分析和校验。用通俗的话来表示:测试激励就是启动模块的钥匙,它能够模拟模块的输入变量,使其能够按照工程师的要求进行工作。1.6 软件使用入门1.6.1 系统仿真软件Modulsim使用Modulsim是目前市场上最流行的FPGA仿真软件,以其卓越的性能和操作简单性著称。下面以Modelsi
33、m 10.0 来做个使用向导。1) 软件安装好之后,打开软件modulsim,点击FILE-new-project,将出现如图1-4所示画面,起名为test。图1-4 新建工程2) 在如图1-5所示界面添加verilog文件与测试文件,然后进行编译,将出现图1-6所示画面图1-5 添加文件图1-6 编译结果3) 双击测试文件,tb_sysgen将出现图1-7所示现象,然后在测试文件tb_sysgen上右击选中start simulation ,会出现如图1-8所示现象。图1-7 点击仿真图1-8 添加波形4) 运行仿真,将开始进行波形仿真,如图1-9所示:图1-9 波形仿真图1.6.2 Qua
34、rtus II软件使用Quartus II软件是目前市场上最流行的FPGA开发综合软件,它的开发者是altera公司。其容易操作,具有良好的可视化,开发简单,易于被初学这接受。以下介绍Quartus II 12.0的简单使用。1) 打开Quartus II 软件,点击File选项,然后选择new,选择new Quartus II project,选择好器件以与存放路径,就建立好工程文件了,如图2-10。图1-10 新建工程2) 点击File,选择new,新建verilog HDL,比如文件名字叫test。编程完毕之后,可以编译下,看看有没有语法错误,如果没有语法错误,则进入测试文件建立模块。3
35、) 点击菜单栏中processing,选择start,选择start testbench template write。此时会自动生成testbench模板到项目文件夹simulation里面,后缀为.vt ,这时候就可以通过modulesim进行仿真了。2 系统总体设计 本系统是基于FPGA开发的多功能波形发生器,利用硬件描述语言Verilog进行编程,Quartus II上进行编译,并仿真验证结构,接着利用Modelsim进行再次仿真验证,以达到本系统的要求,产生增斜波、减斜波、方波、三角波、正弦波、阶梯波形。但是确定该方案之前还是有很多方案: 方案一: 用分立元件组成的函数发生器:通常是
36、单函数发生器且频率不高,其工作不很稳定,不易调试方案二:可以由晶体管、运放IC等通用器件制作,更多的则是用专门的函数信号发生器IC产生。早期的函数信号发生器IC,如L8038、BA205、XR2207/2209等,它们的功能较少,精度不高,频率上限只有300kHz,无法产生更高频率的信号,调节方式也不够灵活,频率和占空比不能独立调节,二者互相影响。方案三:利用单片集成芯片的函数发生器:能产生多种波形,达到较高的频率,且易于调试。鉴于此,美国美信公司开发了新一代函数信号发生器ICMAX038,它克服了(2)中芯片的缺点,可以达到更高的技术指标,是上述芯片望尘莫与的。MAX038频率高、精度好,因
37、此它被称为高频精密函数信号发生器IC。在锁相环、压控振荡器、频率合成器、脉宽调制器等电路的设计上,MAX038都是优选的器件。方案四: 利用专用直接数字合成DDS芯片的函数发生器:能产生任意波形并达到很高的频率。但成本较高相比以上四种方案,利用FPGA进行开发具有自己的优势性:1) 可以根据自己的需求进行定制特定的电路;2) 综合仿真容易实现,拥有Quartus II、Modelsim和ISE等软件编程;3) 可编程性强,Verilog语言编程语法比较类似与熟悉的C语言,学习简单易用2.1 硬件总体框图硬件设计主要包含三个模块,即时钟产生模块、FPGA信号产生模块、D/A数模转换模块。总体框图
38、如图3-1所示图3-1时钟模块是用来给FPGA提供基准时钟,其稳定性决定了信号产生器的稳定;FPGA信号产生模块是各种波形信号产生如:正弦波,方波,斜波,锯齿波,三角波,波形频率设定;D/A数模转化模块是将FPGA输出的数据整合成模拟的波形。图3-22.2 软件总体框图软件系统设计主要包含三个模块,即基于altera 公司的Quartus II分频模块,波形产生模块,仿真软件Modelsim波形仿真模块。总体设计如图3-2所示。时钟分频模块是指将基准时钟进行分频,以达到变换频率的功能。波形产生模块用来产生各种波形,如增斜波,减斜波,正弦波,阶梯波形,方波。数字输出模块,将各种波形用数字进行输出
39、。2.3软件与硬件设计总结综上所述软硬件结构,利用时钟模块产生基准时钟传输到FPGA上,FPGA利用锁相环对时钟倍频产生更高的时钟频率,然后根据用户需要,对时钟进行分频,产生不同频率的波形。通过Verilog语言进行编程来产生各种波形,输出到DA数模转换模块,产生模拟波形信号。3 系统各模块设计3.1 时钟模块设计时钟模块的功能是分配系统时钟,使得FPGA输出不同的频率的波形。根据这个功能,利用Verilog编写了分频时钟模块。利用ALTERA公司开发的QuartusII软件进行综合,布线之后,得到如图3-1模块原理图:图3-1 分频时钟模块时钟模块Verilog代码如下:module clk
40、_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_out = clk_out;count = 0;end
41、elsecount = count + 1;endendendmodule从图3-1和时钟模块代码中可以得到以下信息:l 模块的输入变量是:外部基准时钟sysclk,模块复位输入reset,分频系数输入div,波形时钟输出clk_out;l 复位输入reset低电平时,时钟模块复位,系统不运作;l 分频系数div决定波形时钟,其分频计算公式是:,比如说div值为1,则输出时钟是系统时钟的二分之一;根据以上程序,编写了下列测试程序:module tb_clkdiv;/ Inputsreg sysclk;reg reset;reg 7:0 div;/ Outputswire clk_out;/ I
42、nstantiate 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; reset = 1;div = 1;#200;div = 2;endendmodule从上述激励中看出,div=
43、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时钟频率是输入时钟的一半,但是存在小量的延时,比如说以1us为周期的情况下,延时大约是0.25us,但是由于我们采用分频后的时钟作为产生波形的基准时钟,所以这点延时不影响整个结果。综上所述,该时钟分频模
44、块能够将输入时钟频率按照自己系统需求分配出不同频率。3.2 增斜波设计增斜波是指波形按照一定的步幅递增,达到最高点后又回到值为零的状态,这样循环进行。按照这种思想设计出来软件流程图如图3-4所示。图3-4 增斜波软件流程图根据图3-4所示软件流程图设计出增斜波模块的模块框图,如图3-5所示。图3-5 增斜波模块框图 从图3-5中来分析该模块的输入输出模块以与引脚定义:l 模块的输入变量是:外部基准时钟sysclk_in,模块复位输入reset_in,分频系数输入div。输出时钟波形时钟输出Qout_add;l 复位输入reset低电平时,时钟模块复位,系统不运作;l 分频系数div决定波形时钟,其分频计算公式是:,比如说div值为1,则输出时钟是系统时钟的二分之一;l Qout_add是增斜波模块的波形输出。根据软件流程图以与模块框图中输入输出引脚定义,使用Verilog语言设计了以下代码:module add(SysClk,/系统时钟rest,/复位开关,低电平复位div,/分频Qout_add /递增斜波