版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-.z**大学毕业设计〔论文〕题目:多功能波形发生器的设计-.z毕业设计〔论文〕诚信声明书本人声明:本人所提交的毕业论文?多功能波形发生器的设计?是本人在指导教师指导下独立研究、写作的成果,论文中所引用他人的文献、数据、图件、资料均已明确标注;对本文的研究做出重要奉献的个人和集体,均已在文中以明确方式注明并表示感谢。本人完全清楚本声明的法律后果,申请学位论文和资料假设有不实之处,本人愿承当相应的法律责任。论文作者签名:时间:年月日指导教师签名:时间:年月日-.z**邮电大学毕业设计(论文)任务书任务:1.掌握可编程逻辑器件的工作原理;2.利用可编程逻辑器件完成多功能波形发生器的设计并且进展仿真验证;3.完成毕业设计论文的撰写。要求:1.熟悉可编程逻辑器件的工作原理及VHDL语言编程;2.熟悉QUARTUSII软件的使用;有一定的数字系统设计能力。任务与要求开场日期2013-03-04完成日期2013-06-14系主任(签字)2013年3月17日-.z工作进程起止时间工作内容———— 2013.3.17 了解多功能波形发生器的功能及工作原理—2013.3.31 熟悉可编程逻辑器件的工作原理,QUARTUSⅡ软件的使用以及VHDL语言编程的相关知识—2013.4.19 结合多功能波形发生器需要实现的功能,利用可编程逻辑器件完成多功能波形发生器的设计;—2013.5.19 根据所得结果进展分析,用Verilog语言编程进展仿真,验证设计方案是否能实现多功能波形发生器的功能以及实现的效果如何;————2013.6.14 整理材料,撰写论文。-.z主要参考书目(资料):EDA技术及应用ModelSim电子系统分析及仿真等主要仪器设备及材料:计算机及相应资料论文(设计)过程中教师的指导安排:每周三下午三号实验楼518答疑对方案的说明:无指导教师签字:2013年3月6日-.z**大学课题名称:多功能波形发生器的设计电子工程学院学院光电子技术系〔部〕光电信息工程专业班学生**:**:指导教师:报告日期:2013年3月11日-.z1.本课题所涉及的问题及应用现状综述波形发生器亦称函数发生器,作为实验用信号源,是现今各种电子电路实验设计应用中必不可少的仪器设备之一。所谓多功能波形发生器是能够产生大量的标准信号和用户自定义信号,并保证高精度、高稳定性、可重复性和已操作性的电子仪器。因而它具有广阔的应用前景。可编程逻辑器件英文全称为:programmablelogicdevice即PLD。PLD是作为一种通用集成电路产生的,它的逻辑功能按照用户对器件编程来确定。对于可编程逻辑器件,设计人员可利用价格低廉的软件工具快速开发、仿真和测试其设计。然后,可快速将设计编程到器件中,并立即在实际运行的电路中对设计进展测试。
在设计阶段中客户可根据需要修改电路,直到对设计工作感到满意为止。这是因为PLD基于可重写的存储器技术——要改变设计,只需要简单地对器件进展重新编程。传统波形发生器大多由振荡器、放大器、衰减器、指示器和调制器组成。这种传统设计方法的特点是硬件和软件截然不同,设计中不可相互替代,而且硬件连线复杂,可靠性较差。硬件描述语言VHDL和可编程逻辑器件的广泛应用打破了硬件和软件的屏障。基于Verilog语言,以EDA技术作为开发手段,采用现场可编程器件作为控制核心实现的波形发生器,与传统的设计相比拟,不仅简化了硬件控制,提高了系统的整体性能和工作可靠性,也为进一步提高系统集成创造了条件。本课题所涉及的问题包括了解多功能波形发生器的功能,熟悉可编程逻辑器件的工作原理、QUARTUSⅡ软件的使用及Verilog语言编程,利用可编程逻辑器件完成多功能波形发生器的设计并且进展仿真验证。2.本课题需要重点研究的关键问题、解决的思路及实现预期目标的可行性分析本课题需要重点研究的关键问题是利用可编程逻辑器件完成多功能波形发生器的设计并进展仿真验证。解决思路是在深入理解多功能波形发生器的功能和可编程逻辑器件的工作原理的根底上,用Verilog语言编程,利用可编程逻辑器件完成多功能波形发生器的设计并且进展仿真,验证设计方案是否能实现多功能波形发生器的功能以及实现的效果如何。-.z3.完本钱课题的工作方案—了解多功能波形发生器的功能及工作原理;—熟悉可编程逻辑器件的工作原理,QUARTUSⅡ软件的使用以及VHDL语言编程的相关知识;—结合多功能波形发生器需要实现的功能,利用可编程逻辑器件完成多功能波形发生器的设计;—根据所得结果进展分析,用Verilog语言编程进展仿真,验证设计方案是否能实现多功能波形发生器的功能以及实现的效果如何;—整理材料,撰写论文。4.指导教师审阅意见指导教师(签字):2013年3月13日-.z-.z-.z-.z目录摘要IIABSTRACTIII引言11.EDA与软件简介21.1EDA技术开展21.2FPGA介绍31.3Modelsim介绍41.4Verilog与VHDL语言介绍51.5测试鼓励文件介绍51.6软件使用入门51.6.1系统仿真软件Modulsim使用51.6.2QuartusII软件使用72系统总体设计92.1硬件总体框图92.2软件总体框图92.3软件与硬件设计总结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中,就能产生多种波形,频率可调,相位可选的波形发生装置,也可以自行设计方法产生波形,使得开发更加简单。本文提出了一种基于可编程逻辑器件FPGA产生任意波形发生器的设计方法。完成了在FPGA的控制下,产生递增斜波、递减斜波、方波、三角波、正弦涉及阶梯波行,利用Modelsim和QuartusII进展仿真,验证波形,并给出了实验结果。实验结果说明,此任意波形发生器能够按照要求输出相应波形,到达了设计要求。关键字:FPGA,斜波;方波;三角波;正弦波;阶梯波ABSTRACTWithfunctiongeneratorintherapiddevelopmentprocess,therehavebeenmanywaystogeneratewaveform,AndmostofthemdoitwithDDS.Fore*ample,atransistor,opampICandothermondevicesmadeit,Ortheuseofmonolithicintegratedchipsystemtodo.ButwiththeemergenceofFPGA,waveformgenerationmethodismorediversified.Produceavarietyofwaveforms,adjustablefrequency,phase,selectablewaveformgeneratingdevice.FPGAcandesigntheirownmethodsofgeneratingwaveforms,makingdevelopmenteasier.Thispaperproposesamethodofarbitrarywaveformgenerator,whichwasbasedonprogrammablelogicdeviceFPGAdesign.UnderthecontroloftheFPGA,itgnenratedincreasingobliquewaveanddecreasingobliquewave,squarewave,trianglewave,sinesweepladderwaveline,andthenverifytheresultsbythesoftwaveofModelsim.Thee*perimentalresultsshowedthatthearbitrarywaveformgeneratorcanoutputwaveformaccordinglyinaccordancewiththerequirements,andhasreachedthedesignrequirements.Keyword:FPGA,obliquewave,squarewave,trianglewave,sinewaveandstepwave-.z引言在电子、通信、实验教学等领域,高精度、高分辨率、幅度相位可控的信号发生器有着广泛的应用。信号发生器又称为信号源或者振荡器,在生产实践和科技领域中有着广泛的应用。函数发生器是使用最广的通用信号源,提供正弦波、锯齿波、方波、脉冲波等波形,有的还同时具有调制和扫描功能。函数波形发生器在设计上分为模拟式和数字合成式。众所周知,数字合成式函数信号源〔DDS〕无论就频率、幅度乃至信号的信噪比〔S/N〕均优于模拟式,其锁相环〔PLL〕的设计让输出信号不仅是频率精准,而且相位抖动〔phaseJitter〕及频率漂移均能到达相当稳定的状态,但数字式信号源中,数字电路与模拟电路之间的干扰始终难以有效克制,也造成在小信号的输出上不如模拟式的函数信号发生器。本文引入利用FPGA来产生阶梯波、三角波、递增斜波、递减斜波、正弦波、方波。具有以下优势:开发信号发生器简单,容易实现,本钱低廉,能够根据用户需求进展定制等功能。FPGA是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的缺乏,又克制了原有可编程器件门电路数有限的缺点。因为其是一种半定制的电路构造,因而FPGA具有很多灵活性,能够根据本系统的需求灵活改变内部电路,以到达系统的需要。另外一方面,硬件描述语言出现,使得FPGA开发随心应手,方便快捷。因为硬件描述语言具有设计的行为特性、设计的数据流特性、设计的构造组成以及包含响应监控和设计验证方面的时延和波形产生机制,这样使得从顶层整体架构到底层具体模块的开发,以及后续的验证,时延等更加方便快捷。 从FPGA开发多功能信号发生器的角度来说,因为有了自我定制电路以及灵活高效的硬件描述语言,使得本系统开发简单,编程容易,可靠性高,代码冗余量少。而且能够积极扩展,使得设计更加多元化,甚至能做成任意信号发生器。1.EDA与软件简介1.1EDA技术开展在电子设计自动化〔英语:Electronicdesignautomation,缩写:EDA〕出现之前,设计人员必须手工完成集成电路的设计、布线等工作,这是因为当时所谓集成电路的复杂程度远不及现在。工业界开场使用几何学方法来制造用于电路光绘〔photoplotter〕的胶带。到了1970年代中期,开发人应尝试将整个设计过程自动化,而不仅仅满足于自动完成掩膜草图。第一个电路布线、布局工具研发成功。设计自动化会议〔DesignAutomationConference〕在这一时期被创立,旨在促进电子设计自动化的开展。
从1981年开场,电子设计自动化逐渐开场商业化。1984年的设计自动化会议〔DesignAutomationConference〕上还举办了第一个以电子设计自动化为主题的销售展览。Gateway设计自动化在1986年推出了一种硬件描述语言Verilog,这种语言在现在是最流行的高级抽象设计语言。1987年,在美国国防部的资助下,另一种硬件描述语言VHDL被创造出来。现代的电子设计自动化设计工具可以识别、读取不同类型的硬件描述。根据这些语言规*产生的各种仿真系统迅速被推出,使得设计人员可对设计的芯片进展直接仿真。后来,技术的开展更侧重于逻辑综合。
目前的数字集成电路的设计都比拟模块化〔参见集成电路设计、设计收敛〔Designclosure〕和设计流〔Designflow(EDA)〕〕。半导体器件制造工艺需要标准化的设计描述,高抽象级的描述将被编译为信息单元〔cell〕的形式。设计人员在进展逻辑设计时尚无需考虑信息单元的具体硬件工艺。利用特定的集成电路制造工艺来实现硬件电路,信息单元就会实施预定义的逻辑或其他电子功能。半导体硬件厂商大多会为它们制造的元件提供“元件库〞,并提供相应的标准化仿真模型。相比数字的电子设计自动化工具,模拟系统的电子设计自动化工具大多并非模块化的,这是因为模拟电路的功能更加复杂,而且不同局部的相互影响较强,而且作用规律复杂,电子元件大多没有则理想。VerilogAMS就是一种用于模拟电子设计的硬件描述语言。此文,设计人员可以使用硬件验证语言来完成工程的验证工作目前最新的开展趋势是将集描述语言、验证语言集成为一体,典型的例子有SystemVerilog。随着集成电路规模的扩大、半导体技术的开展,电子设计自动化的重要性急剧增加。这些工具的使用者包括半导体器件制造中心的硬件技术人员,他们的工作是操作半导体器件制造设备并管理整个工作车间。一些以设计为主要业务的公司,也会使用电子设计自动化软件来评估制造部门是否能够适应新的设计任务。电子设计自动化工具还被用来将设计的功能导入到类似现场可编程逻辑门阵列的半定制可编程逻辑器件,或者生产全定制的专用集成电路。EDA代表了当今电子设计技术的最新开展方向,它的根本特征是:设计人员按照“自顶向下〞的设计方法,对整个系统进展方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件。这样的设计方法被称为高层次的电子设计方法。下面介绍与EDA根本特征有关的几个概念。“自顶向下〞的设计方法10年前,电子设计的根本思路还是选择标准集成电路“自底向上〞(Bottom–Up)的构造出一个新的系统,这样的设计方法就如同一砖一瓦建造金字塔,不仅效率低、本钱高而且容易出错。高层次设计给我们提供了一种“自顶向下〞(Top–Down)的全新设计方法,这种设计方法首先从系统设计入手,在顶层进展功能方框图的划分和构造设计。在方框图一级进展仿真、纠错,并用硬件描述语言对高层次的系统行为进展描述,在系统一级进展验证。然后用综合优化工具生成具体门电路的网表,其对应的物理实现级可以是印刷电路板或专用集成电路。由于设计的主要仿真和调试过程是在高层次上完成的,这一方面有利于早期发现构造设计上的错误,防止设计工作的浪费,同时也减少了逻辑功能仿真的工作量,提高了设计的一次成功率。ASIC设计现代电子产品的复杂度日益加深,一个电子系统可能由数万个中小规模集成电路构成,这就带来了体积大、功耗大、可靠性差的问题,解决这一问题的有效方法就是采用ASIC(ApplicationSpecificIntegratedCircuits)芯片进展设计。ASIC按照设计方法的不同可分为:全定制ASIC,半定制ASIC,可编程ASIC(也称为可编程逻辑器件)。设计全定制ASIC芯片时,设计师要定义芯片上所有晶体管的几何图形和工艺规则,最后将设计结果交由IC厂家掩膜制造完成。优点是:芯片可以获得最优的性能,即面积利用率高、速度快、功耗低。缺点是:开发周期长,费用高,只适合大批量产品开发。半定制ASIC芯片的幅员设计方法有所不同,分为门阵列设计法和标准单元设计法,这两种方法都是约束性的设计方法,其主要目的就是简化设计,以牺牲芯片性能为代价来缩短开发时间。可编程逻辑芯片与上述掩膜ASIC的不同之处在于:设计人员完成幅员设计后,在实验室内就可以烧制出自己的芯片,无须IC厂家的参与,大大缩短了开发周期。可编程逻辑器件自七十年代以来,经历了PAL、GAL、CPLD、FPGA几个开展阶段,其中CPLD/FPGA属高密度可编程逻辑器件,目前集成度已高达200万门/片,它将掩膜ASIC集成度高的优点和可编程逻辑器件设计生产方便的特点结合在一起,特别适合于样品研制或小批量产品开发,使产品能以最快的速度上市,而当市场扩大时,它可以很容易的转由掩膜ASIC实现,因此开发风险也大为降低。上述ASIC芯片,尤其是CPLD/FPGA器件,已成为现代高层次电子设计方法的实现载体。1.2FPGA介绍FPGA〔Field-ProgrammableGateArray〕,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的根底上进一步开展的产物。它是作为专用集成电路〔ASIC〕领域中的一种半定制电路而出现的,既解决了定制电路的缺乏,又克制了原有可编程器件门电路数有限的缺点。以硬件描述语言〔Verilog或VHDL〕所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进展测试,是现代IC设计验证的技术主流。这些可编辑元件可以被用来实现一些根本的逻辑门电路〔比方AND、OR、*OR、NOT〕或者更复杂一些的组合功能比方解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器〔Flip-flop〕或者其他更加完整的记忆块。目前市场上开发FPGA的主要有两大供给商,一个就是ALTERA公司,另一个就是*ilin*公司。Altera的主流FPGA分为两大类,一种侧重低本钱应用,容量中等,性能可以满足一般的逻辑设计要求,如Cyclone,CycloneII;还有一种侧重于高性能应用,容量大,性能能满足各类高端应用,如Starti*,Strati*II等,用户可以根据自己实际应用要求进展选择。在性能可以满足的情况下,优先选择低本钱器件。MA*+PLUSII:普遍认为Ma*plusII曾经是最优秀的PLD开发平台之一,适合开发早期的中小规模PLD/FPGA由QuartusII替代,不再推荐使用。QuartusII:Altera新一代FPGA/PLD开发软件,适合新器件和大规模FPGA的开发,已经取代Ma*plusII。SOPCBuilder:配合QuartusII,可以完成集成CPU的FPGA芯片的开发工作DSPBuilder:QuartusII与Matlab的接口,利用IP核在Matlab中快速完成数字信号处理的仿真和最终FPGA实现。*ilin*的主流FPGA分为两大类,一种侧重低本钱应用,容量中等,性能可以满足一般的逻辑设计要求,如Spartan系列;还有一种侧重于高性能应用,容量大,性能能满足各类高端应用,如Virte*系列,用户可以根据自己实际应用要求进展选择。在性能可以满足的情况下,优先选择低本钱器件。
ISE:*ilin*公司集成开发的工具Foundation:*ilin*公司早期的开发工具,逐步被ISE取代嵌入式开发套件〔EDK〕:用于开发集成PowerPC硬核和MicroBlaze软核CPU的工具SystemGeneratorforDSP:配合Matlab,在FPGA中完成数字信号处理的工具1.3Modelsim介绍Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。ModelSim分几种不同的版本:SE、PE、LE和OEM,其中SE是最高级的版本,而集成在Actel、Atmel、Altera、*ilin*以及Lattice等FPGA厂商设计工具中的均是其OEM版本。SE版和OEM版在功能和性能方面有较大差异,比方对于大家都关心的仿真速度问题,以*ilin*公司提供的OEM版本ModelSim*E为例,对于代码少于40000行的设计,ModelSimSE比ModelSim*E要快10倍;对于代码超过40000行的设计,ModelSimSE要比ModelSim*E快近40倍。ModelSimSE支持PC、UNI*和LINU*混合平台;提供全面完善以及高性能的验证功能;全面支持业界广泛的标准;MentorGraphics公司提供业界最好的技术支持与效劳。1.4Verilog与VHDL语言介绍VerilogHDL语言是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。其具有下述描述能力:设计的行为特性、设计的数据流特性、设计的构造组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外,VerilogHDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部设计,包括模拟的具体控制和运行。VHDL语言是一种用于电路设计的高级语言。VHDL主要用于描述数字系统的构造,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。VHDL的程序构造特点是将一项工程设计,或称设计实体〔可以是一个元件,一个电路模块或一个系统〕分成外部〔或称可视局部,及端口)和内部〔或称不可视局部〕,既涉及实体的内部功能和算法完成局部。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。1.5测试鼓励文件介绍测试鼓励也叫testbench,它是一种验证的手段。首先,任何设计都是会有输入输出的。但是在软环境中没有鼓励输入,也不会对你设计的输出正确性进展评估。则此时便有一种,模拟实际环境的输入鼓励和输出校验的一种“虚拟平台〞的产生。在这个平台上你可以对你的设计从软件层面上进展分析和校验。 用通俗的话来表示:测试鼓励就是启动模块的钥匙,它能够模拟模块的输入变量,使其能够按照工程师的要求进展工作。1.6软件使用入门1.6.1系统仿真软件Modulsim使用Modulsim是目前市场上最流行的FPGA仿真软件,以其卓越的性能和操作简单性著称。下面以Modelsim10.0来做个使用向导。软件安装好之后,翻开软件modulsim,点击FILE->new->project,将出现如图1-4所示画面,起名为test。图1-4新建工程在如图1-5所示界面添加verilog文件与测试文件,然后进展编译,将出现图1-6所示画面图1-5添加文件图1-6编译结果双击测试文件,tb_sysgen将出现图1-7所示现象,然后在测试文件tb_sysgen上右击选中startsimulation,会出现如图1-8所示现象。图1-7点击仿真图1-8添加波形运行仿真,将开场进展波形仿真,如图1-9所示:图1-9波形仿真图1.6.2QuartusII软件使用 QuartusII软件是目前市场上最流行的FPGA开发综合软件,它的开发者是altera公司。其容易操作,具有良好的可视化,开发简单,易于被初学这承受。以下介绍QuartusII12.0的简单使用。翻开QuartusII软件,点击File选项,然后选择new,选择newQuartusIIproject,选择好器件以及存放路径,就建立好工程文件了,如图2-10。图1-10新建工程点击File,选择new,新建verilogHDL,比方文件名字叫test。编程完毕之后,可以编译下,看看有没有语法错误,如果没有语法错误,则进入测试文件建立模块。点击菜单栏中processing,选择start,选择starttestbenchtemplatewrite。此时会自动生成testbench模板到工程文件夹simulation里面,后缀为.vt,这时候就可以通过modulesim进展仿真了。2系统总体设计本系统是基于FPGA开发的多功能波形发生器,利用硬件描述语言Verilog进展编程,QuartusII上进展编译,并仿真验证构造,接着利用Modelsim进展再次仿真验证,以到达本系统的要求,产生增斜波、减斜波、方波、三角波、正弦波、阶梯波形。但是确定该方案之前还是有很多方案:方案一:用分立元件组成的函数发生器:通常是单函数发生器且频率不高,其工作不很稳定,不易调试方案二:可以由晶体管、运放IC等通用器件制作,更多的则是用专门的函数信号发生器IC产生。早期的函数信号发生器IC,如L8038、BA205、*R2207/2209等,它们的功能较少,精度不高,频率上限只有300kHz,无法产生更高频率的信号,调节方式也不够灵活,频率和占空比不能独立调节,二者互相影响。方案三:利用单片集成芯片的函数发生器:能产生多种波形,到达较高的频率,且易于调试。鉴于此,美国美信公司开发了新一代函数信号发生器ICMA*038,它克制了〔2〕中芯片的缺点,可以到达更高的技术指标,是上述芯片望尘莫及的。MA*038频率高、精度好,因此它被称为高频精细函数信号发生器IC。在锁相环、压控振荡器、频率合成器、脉宽调制器等电路的设计上,MA*038都是优选的器件。方案四:利用专用直接数字合成DDS芯片的函数发生器:能产生任意波形并到达很高的频率。但本钱较高相比以上四种方案,利用FPGA进展开发具有自己的优势性:可以根据自己的需求进展定制特定的电路;综合仿真容易实现,拥有QuartusII、Modelsim和ISE等软件编程;可编程性强,Verilog语言编程语法比拟类似与熟悉的C语言,学习简单易用2.1硬件总体框图硬件设计主要包含三个模块,即时钟产生模块、FPGA信号产生模块、D/A数模转换模块。总体框图如图3-1所示图3-1时钟模块是用来给FPGA提供基准时钟,其稳定性决定了信号产生器的稳定;FPGA信号产生模块是各种波形信号产生如:正弦波,方波,斜波,锯齿波,三角波,波形频率设定;D/A数模转化模块是将FPGA输出的数据整合成模拟的波形。图3-22.2软件总体框图软件系统设计主要包含三个模块,即基于altera公司的QuartusII分频模块,波形产生模块,仿真软件Modelsim波形仿真模块。总体设计如图3-2所示。时钟分频模块是指将基准时钟进展分频,以到达变换频率的功能。波形产生模块用来产生各种波形,如增斜波,减斜波,正弦波,阶梯波形,方波。数字输出模块,将各种波形用数字进展输出。2.3软件与硬件设计总结综上所述软硬件构造,利用时钟模块产生基准时钟传输到FPGA上,FPGA利用锁相环对时钟倍频产生更高的时钟频率,然后根据用户需要,对时钟进展分频,产生不同频率的波形。通过Verilog语言进展编程来产生各种波形,输出到D\A数模转换模块,产生模拟波形信号。3系统各模块设计3.1时钟模块设计时钟模块的功能是分配系统时钟,使得FPGA输出不同的频率的波形。根据这个功能,利用Verilog编写了分频时钟模块。利用ALTERA公司开发的QuartusII软件进展综合,布线之后,得到如图3-1模块原理图:图3-1分频时钟模块时钟模块Verilog代码如下:moduleclk_div( sysclk , reset , div , clk_out);inputsysclk,reset;input[7:0]div;outputclk_out;regclk_out;//regclk_out_tmp=0;reg[7:0]count;reg[7:0]div_2;always(posedgesysclkornegedgereset)begin if(!reset)begin clk_out=0; count=0; div_2=div>>1; end elsebegin if(count>=div_2) begin clk_out=~clk_out; count=0; end else count=count+1; end endendmodule从图3-1和时钟模块代码中可以得到以下信息:模块的输入变量是:外部基准时钟sysclk,模块复位输入reset,分频系数输入div,波形时钟输出clk_out;复位输入reset低电平时,时钟模块复位,系统不运作;分频系数div决定波形时钟,其分频计算公式是:,比方说div值为1,则输出时钟是系统时钟的二分之一;根据以上程序,编写了以下测试程序:moduletb_clkdiv; //Inputs regsysclk; regreset; reg[7:0]div; //Outputs wireclk_out; //InstantiatetheUnitUnderTest(UUT) clk_divuut( .sysclk(sysclk), .reset(reset), .div(div), .clk_out(clk_out) ); always*10sysclk=~sysclk; initialbegin //InitializeInputs sysclk=0; reset=0; div=0; //Wait100nsforglobalresettofinish *100;reset=1; div=1; *200; div=2; endendmodule从上述鼓励中看出,div=1,也就是2分频,系统的运行周期是20ns。利用Modelsim软件对时钟模块进展仿真,结果如图3-2所示:图3-2两分频时钟波形从图中可以看出在div=1,rest=1的情况下,输出时钟clk_out是输入时钟clk_in的一半,这很好地证明了分频时钟的正确性。再用QuartusII软件进展综合仿真,结果如图3-3所示。图3-3两分频时钟波形 从图3-3所示的时钟波形来看输出时钟clk_out时钟频率是输入时钟的一半,但是存在小量的延时,比方说以1us为周期的情况下,延时大约是0.25us,但是由于我们采用分频后的时钟作为产生波形的基准时钟,所以这点延时不影响整个结果。 综上所述,该时钟分频模块能够将输入时钟频率按照自己系统需求分配出不同频率。3.2增斜波设计增斜波是指波形按照一定的步幅递增,到达最高点后又回到值为零的状态,这样循环进展。按照这种思想设计出来软件流程图如图3-4所示。图3-4增斜波软件流程图根据图3-4所示软件流程图设计出增斜波模块的模块框图,如图3-5所示。图3-5增斜波模块框图从图3-5中来分析该模块的输入输出模块以及引脚定义:模块的输入变量是:外部基准时钟sysclk_in,模块复位输入reset_in,分频系数输入div。输出时钟波形时钟输出Qout_add;复位输入reset低电平时,时钟模块复位,系统不运作;分频系数div决定波形时钟,其分频计算公式是:,比方说div值为1,则输出时钟是系统时钟的二分之一;Qout_add是增斜波模块的波形输出。根据软件流程图以及模块框图中输入输出引脚定义,使用Verilog语言设计了以下代码:moduleadd( SysClk , //系统时钟 rest , //复位开关,低电平复位 div , //分频 Qout_add //递增斜波); inputSysClk; inputrest; input[7:0]div; inputSysClk; inputrest; input[7:0]div; output[7:0]Qout_add; wireclk_out; clk_divclk( .sysclk(SysClk) , .reset(rest) , .div(div) , .clk_out(clk_out) ); //产生递增斜波 reg[7:0]tmp_add=0; always(posedgeclk_outornegedgerest)begin if(!rest)begin Qout_add=0; tmp_add=0; end elsebegin tmp_add=tmp_add+1; if(tmp_add>=8'b1111_1111)begin tmp_add=0; end elsebegin Qout_add=tmp_add; end end endendmodule通过以上的方法可以输出递增波形,其波形的频率决定于输入时钟和分频系数。设计测试文件,将div设置为1即为2分频,sysclk设置周期为20ns。通过Modelsim仿真得到图3-6增斜波输出:图3-6增斜波输出从图3-6中,看出波形输出Qout_add是按照增斜波的趋向增长的,步进值是1,从0到达255,到255溢出又变为0值。为了进一步验证该递增波形的正确性,我们采用QuartusII进展波形仿真,得到的仿真波形图如图3-7所示。图3-7增斜波输出从图3-6和图3-7分别是Modelsim和QuartusII仿真出来的波形,从波形上来观察可以看出根本没有区别,进一步验证了该递增斜波产生模块的正确性。3.3减斜波设计减斜波是指波形按照一定的步幅递减,到达最高点后又回到最大值的状态,这样循环进展。根据模块需求设计出模块流程图如图3-8所示。图3-8减斜波软件流程图根据图3-8所示软件流程图设计出减斜波模块的模块框图,如图3-9所示。图3-9减斜波模块原理图从图3-9中来分析该模块的输入输出模块以及引脚定义:模块的输入变量是:外部基准时钟sysclk,模块复位输入reset,分频系数输入div。输出时钟波形时钟输出Qout_min;复位输入reset低电平时,时钟模块复位,系统不运作;分频系数div决定波形时钟,其分频计算公式是:,比方说div值为1,则输出时钟是系统时钟的二分之一;Qout_min是减斜波模块的波形输出。根据软件流程图以及模块框图中输入输出引脚定义,使用Verilog语言设计了以下代码:modulemin1( SysClk , //系统时钟 rest , //复位开关,低电平复位 div , //分频 Qout_min //递增斜波); inputSysClk; inputrest; input[7:0]div; inputSysClk; inputrest; input[7:0]div; output[7:0]Qout_min; wireclk_out; clk_divclk( .sysclk(SysClk) , .reset(rest) , .div(div) , .clk_out(clk_out) ); //产生递减斜波 reg[7:0]tmp_min=8'b1111_1111; always(posedgeclk_outornegedgerest)begin if(!rest)begin Qout_min=0; tmp_min=8'b1111_1111; end elsebegin tmp_min=tmp_min-1; if(tmp_min==0)begin tmp_min=8'b1111_1111; end elsebegin Qout_min=tmp_min; end end endendmodule从上述代码可以分析出输出Qout_min从最大的255开场递减,每来一次分频过的时钟减1,一直到0,然后又恢复到255,这样循环往复。设计测试文件,将div设置为1即为2分频,sysclk设置周期为20ns。通过Modelsim仿真得到图3-10波形:图3-10减斜波波形输出图3-10可以清楚看出递减斜波的波形图,即从最大值开场依次往小减,直到最小值0,又重新恢复到最大,这样循环往复。为了进一步验证该模块的正确性,采用QuartusII进展波形仿真,其结果如图3-11所示。图3-11减斜波波形输出从图3-11中可以发现跟图3-10中发现的一样的周期性减斜波,进一步验证了模块的正确性。3.4方波设计方波是指非正弦曲线的波形,输出的形状如矩形,只有‘0’,‘1’两个值。根据模块需求设计出模块流程图如图3-12所示。图3-12方波模块软件流程图根据图3-12所示软件流程图设计出方波模块的模块框图,如图3-13所示。图3-13方波模块原理图从图3-13中来分析该模块的输入输出模块以及引脚定义:模块的输入变量是:外部基准时钟sysclk,模块复位输入reset,分频系数输入div。输出时钟波形时钟输出Qout_squ;复位输入reset低电平时,时钟模块复位,系统不运作;分频系数div决定波形时钟,其分频计算公式是:,比方说div值为1,则输出时钟是系统时钟的二分之一;Qout_squ是方波波模块的波形输出。根据软件流程图以及模块框图中输入输出引脚定义,使用Verilog语言设计了以下核心代码: //产生方波 reg[7:0]tmp_squ=0; regsqu_flag=0; always(posedgeclk_outornegedgerest)begin if(!rest)begin Qout_squ=0; tmp_squ=0; squ_flag=0; end elsebegin tmp_squ=tmp_squ+1; if(tmp_squ>=8'b0000_1111)begintmp_squ=0; squ_flag=~squ_flag;end if(squ_flag) Qout_squ=8'b1111_1111; else Qout_squ=0; end end简单分析下以上代码:tmp_squ是用来计内部时钟clk_out的脉冲次数,当到达8’b0000_1111时,重新计0,这个时候,将输出变量翻转,产生方波。设计测试文件,将div设置为1即为2分频,sysclk设置周期为20ns。通过Modelsim仿真得到图3-14波形:图3-14方波波形仿真图从图3-14中可以看出当div=1和reset=1的情况下clk_out_tmp是输入时钟的一办,每来16个周期Qout_squ输出电平翻转一遍,以产生标准的方波。为了验证方波模块的正确性,采用QuartusII进展波形仿真,得到如图3-15所示仿真波形图。图3-15方波波形仿真图从图3-14中也可以看到和图3-15同样的现象每经过16个周期电平翻转一次,也就是说每32个周期产生一个方波波形,完全符合标准,另外,其频率取决于分频系数div和系统输入时钟。3.5三角波设计三角波形是指波形值从最小值开场递增,到达最高点后又开场依次减小,直到减小到最小值,依次反复,形状想三角形。根据模块需求设计出模块流程图如图3-16所示。图3-16三角波软件流程图根据图3-16所示软件流程图设计出方波模块的模块框图,如图3-17所示。图3-17三角波模块原理图从图3-17中来分析该模块的输入输出模块以及引脚定义:模块的输入变量是:外部基准时钟sysclk,模块复位输入reset,分频系数输入div。输出时钟波形时钟输出Qout_tri;复位输入reset低电平时,时钟模块复位,系统不运作;分频系数div决定波形时钟,其分频计算公式是:,比方说div值为1,则输出时钟是系统时钟的二分之一;Qout_tri是三角波模块的波形输出。根据软件流程图以及模块框图中输入输出引脚定义,使用Verilog语言设计了以下代码:moduletri2(SysClk , //系统时钟 rest , //复位开关,低电平复位 div , //分频 Qout_tri ); inputSysClk; inputrest; input[7:0]div; output[7:0]Qout_tri; wireQout_tri; clk_divclk_out( .sysclk(SysClk) , .reset(rest) , .div(div) , .clk_out(clk_out) ); //产生三角波 reg[7:0]tmp_tri=0; regtri_flag=0; always(posedgeclk_outornegedgerest)begin if(!rest)beginQout_tri=0; tmp_tri=0; tri_flag=0;end elsebegin if(!tri_flag)begin tmp_tri=tmp_tri+1; if(tmp_tri==8'b0000_1111) tri_flag=1; end elsebegin tmp_tri=tmp_tri-1; if(tmp_tri==0) tri_flag=0; end Qout_tri=tmp_tri; end endendmodule简单分析下代码:tmp_tri用来记录时间脉冲的次数,以上升沿方式触发计数;在未到达8’b0000_1111时,输出上升波形,到达8’b0000_1111时,输出下降波形。设计测试文件,将div设置为1即为2分频,sysclk设置周期为20ns。通过Modelsim仿真得到图3-18波形:图3-18三角波形仿真图从图3-18可以看出输出的波形是标准的三角波,波形从开场的最小值到最大值再从最大值到最小值。为了验证三角波形产生模块的正确性,利用QuartusII对该模块进展仿真,得到地仿真波形如图3-19所示。图3-19三角波形仿真图从图3-18和图3-19中可以看出,利用QuartsII和Modelsim软件仿真均能产生三角波形,但是从结果直观地观察,在Modelsim中三角波形比拟光滑、平整,而在QuartusII中却有一些很小的毛刺,这经过分析只能将原因归结于没有完全会使用QuartusII,或是QuartusII波形仿真跟Modelsim本身就存在差距。3.6正弦波设计正弦波是频率成分最为单一的一种信号,因这种信号的波形是数学上的正弦曲线而得名。该波形设计相比其他波形比拟复杂,其实现方法:首先设计一个ROM用来存放正弦函数的幅度数据;用一个计数器来指定ROM地址〔相位〕的增加,输出相应的幅度值。这样在连续的时间内显示的就是一个完整的正弦波形。根据上述查找的思想,可以设计出软件,但是正弦函数的幅度数据需要自己去设定,设定方法是通过MATLAB软件,进展编程得到128位深度的值。在MATLAB里面输入代码为:y=ceil(128*sin(0:pi*2/127:2*pi))+127,也就是128个点的数组,简单得解析一下上述命令:ceil是产生数组的函数,因为正弦函数*围是0到1*围之内的,因此要乘以128才能使其在~127到+128之内,又因为FPGA无法产生负数,所以得加上127的偏置。0:pi*2/127:2*pi是指从0到QUOTE*围内依次取127个点,步进值是QUOTE。根据查表思想,以及MATLAB产生的128个数组,设计出软件流程图如图3-20所示。图3-20正弦波软件流程图根据图3-20所示软件流程图设计出正弦波模块的模块框图,如图3-21所示。图3-21正弦波模块原理图从图3-21中来分析该模块的输入输出模块以及引脚定义:模块的输入变量是:外部基准时钟sysclk,模块复位输入reset,分频系数输入div。输出时钟波形时钟输出Qout_sin;复位输入reset低电平时,时钟模块复位,系统不运作;分频系数div决定波形时钟,其分频计算公式是:,比方说div值为1,则输出时钟是系统时钟的二分之一;Qout_sin是正弦波模块的波形输出。根据软件流程图以及模块框图中输入输出引脚定义,使用Verilog语言设计了以下核心代码〔其中由于篇幅过长,讲128点赋值去了〕:reg[7:0]tmp_sin=0; always(posedgeclk_outornegedgerest)begin if(!rest)begin tmp_sin=0; Qout_sin=0; end elsebegin case(tmp_sin)………..//128点,赋值endcase tmp_sin=tmp_sin+1; if(tmp_sin==127)begin tmp_sin=0; Qout_sin=128; end end end设计测试文件,将div设置为1即为2分频,sysclk设置周期为20ns。通过Modelsim仿真得到图3-22波形:图3-22正弦波波形仿真从上图可以看出,通过该模块设计能够产生正弦数字信号,二分频时其周期是输入时钟的256倍,是输出时钟的128。为了进一步验证波形仿真结果,使用QuartusII进展软件仿真,得到结果如图3-23所示结果。图3-23正弦波波形仿真 图3-22和图3-23所示波形显示出该正弦波模块能够产生正弦波,其中专业的波形仿真软件Modelsim中显示的正弦波平滑得多,也没有个别毛刺。而QuartusII软件仿真出来的结果却又明显的毛刺,可能是因为QuartusII仿真软件的问题,或者自己设置引起的。3.7阶梯波设计所谓的阶梯波形就是指像台阶那样,一级又一级,逐渐增大直到到达最大台阶,然后转变为最低台阶,再重复循环出现的波形。根据模块需求设计出模块流程图如图3-24所示.图3-24软件流程图根据图3-24所示软件流程图设计出正弦波模块的模块框图,如图3-25所示。图3-25阶梯波形原理图从图3-25中来分析该模块的输入输出模块以及引脚定义:模块的输入变量是:外部基准时钟sysclk,模块复位输入reset,分频系数输入div。输出时钟波形时钟输出Qout_lad;复位输入reset低电平时,时钟模块复位,系统不运作;分频系数div决定波形时钟,其分频计算公式是:,比方说div值为1,则输出时钟是系统时钟的二分之一;Qout_lad是正弦波模块的波形输出。根据该原理图以及上述各局部说明,用verilog语言设计出阶梯波核心程序:reg[7:0]tmp_lad; always(posedgeclk_outornegedgerest)begin if(!rest)begin tmp_lad=0; Qout_lad=0; end elsebegin case(tmp_lad) 8'd0: Qout_lad=0;8'd16: Qout_lad=16; 8'd32: Qout_lad=32; 8'd48: Qout_lad=48; 8'd64: Qout_lad=64; 8'd80: Qout_lad=80; 8'd96: Qout_lad=96; 8'd112: Qout_lad=112; 8'd128: Qout_lad=128; 8'd144: Qout_lad=144; 8'd160: Qout_lad=160; 8'd176: Qout_lad=176; 8'd192: Qout_lad=192; 8'd208: Qout_lad=208; 8'd224: Qout_lad=224; 8'd240: Qout_lad=240; 8'd255: begin Qout_lad=255; tmp_lad=0; end endcase tmp_lad=tmp_lad+1; end end从上述代码可以看出阶梯值是16,每16个周期步进一格,从0开场直到255,再变为0,这样不断循环。设计测试文件,将div设置为1即为2分频,sysclk设置周期为20ns。通过Modelsim仿真得到图3-26波形:图3-26阶梯波形仿真图从上图可以看出,通过该模块设计能够产生阶梯波形数字信号,每过16个周期波形,阶梯递增一个台阶,知道最高台阶之后又重新恢复到最低台阶,这样循环往复,成为阶梯波行的周期信号。为了进一步验证阶梯波形仿真图,使用QuartusII软件进展软件仿真,得到波形仿真结果如图3-27所示。图3-27阶梯波形仿真图从图3-26和图3-27所得的结果可以看出,设计的阶梯波形模块能够正常地产生阶梯波形,但是在Modelsim中明显很光滑,完全跟预期的一样,而用QuartusII软件得到的仿真结果在中间的时刻会突然出现很大的尖峰毛刺,可能是由于QuartusII仿真的问题。4系统软硬件联合调试经过前两章的介绍,将系统软硬件的总体构造原理图以及各个子模块的原理图都详细介绍了一下。目前各个模块的设计以及仿真结果验证正确,下一步就是要将所有子系统模块联合起来建立成多波形发生器系统。以下介绍多波形发生系统的联合调试构造以及调试结果。4.1系统整体模块构造图 1)系统整个构造图包含2个局部:时钟调制模块,波形产生模块。其中时钟调制模块是用来将输入时钟进展分频配置,输出系统需要的时钟信号,波形产生模块用来产生多种波形信号。构造原理图如图4-1所示。图4-1系统整体构造图波形产生模块包含了6个局部:增斜波模块,减斜波模块,方波模块,三角波模块,正弦波模块,阶梯波模块。其中增斜波模块是用来产生增斜波波形,减斜波模块是用来产生减斜波波形,方波模块产生方波波形,三角波模块用来产生三角波波形,正弦波模块产生正弦波信号,阶梯波模块产生阶梯波形。其构造图如图4-2所示。图4-2波形产生器构造图4.2系统仿真输出图 将系统整体模块设计出来以后,用Verilog语言进展编程,编译出整个系统的软件体系。软件编译通过,利用QuartusII软件或者ISE对其进展综合,综合成功之后就要做波形仿真,观察波形。因为Modelsim拥有观察模拟输出的功能,所以选择该软件进展波形仿真,其结果如图4-3所示图4-3从上图可以看出增斜波,减斜波的周期比拟大,但是分辨率高,三角波形的周期跟方波的是一样的,正弦波取值一个周期点数是128点分辨率还是相当可以的,至于阶梯波形,可以明显的看到阶梯现象。结论利用FPGA产生波形,其原理简单,但是实现起来也并非看起来则容易,里面牵扯到很多知识。比方说:FPGA开发软件QuartusII以及ISE的学习与应用,目前最流行的第三方波形仿真软件Modelsim的学习与使用。Verilog语言语法学习,其虽然在语法表达上有点像C语言但是作为一种硬件描述语言还是跟C语言有很大差异的,比方C语言有乘法和除法,但是Verilog语言却没有,因此在很多时候,虽然逻辑和波形都是对的,但是综合起来多出现错误,布线啥的都不成功。另外就是测试鼓励文件的编写,虽然简单,但是在系统设计的过程中还是非常有必要的,特别是能够利用测试鼓励进展仿真,这样比直接加载波形进展人工仿真要好的多,在ALTERA公司开发的DSPBuilder中可以自动生成测试鼓励,当然*ilin*公司开发SystemGenerate软件中也有相似的功能,给FPGA开发带来了很大的方便。本系统是利用FPGA产生多种波形,方波、增斜波,减斜波,三角波,阶梯波,正弦波。这些波形能够通过通过同一个基准时钟产生,而且通过时钟分频模块到达了频率可调的目的。利用业界最好的仿真软件Modelsim,进展仿真,可以明显看到可靠结论,每种波形输出准确,精度高。文中所用的系统构造图,都是利用FPGA开发软件生成Symbol,然后利用原理图输入的方式画出来的,通过这种方式,可以将每个模块都已一种硬件的模块展示在读者面前,这样使得整个系统设计简单明了,容易理解。 在软件选型上面,还是破费周折。由于业界两大FPGA厂商的软件产品QuartusII和ISE都很好,由于同学介绍还是选择了QuartusII软件做布线综合以及波形仿真验证,又使用第三方软件Modelsim进展仿真再验证。两者均能产生想要的波形,但是也是有差异的。专业的仿真软件Modelsim中显示的结果很平滑,效果很好,而在QuartusII中就不则好了,这样可以看出QuartusII的波形仿真在软件上就不如Modelsim专业,在用法的简单性方面也远不如。 虽然该系统可以产生不同频率的多种波形,但是不能控制波形相位,而且在速度上面还不太理想,需要进一步改良。最好就是使用DDS原理,进展设计,以到达最正确的效果。该系统在仿真上可以到达各种波形发生的效果,但是没有使用具体的硬件资源进展调试,造成了本设计的遗憾,可以推荐使用8位的D/A数模转化器接在输出端,利用示波器观察各波形。 本系统设计简单明了,而且能够产生多种波形,以及频率可调,但是还有有缺乏之处,比方说不可能把频率做得太高,因为用的是D/A数模转化模块,其速度在很大程度上取决于系统时钟以及数模转化速度。但是在灵活性,多样性方面有着明显的优势。相信该多功能函数发生器只是个雏形,不可能走向群众化的。因为目前市场上的各个厂家的函数发生器其波形的发生频率很高,比方说学校最常见的RIGOL函数发生器发生频率可以到达正弦波信号可以到达20MHz,根据该系统正弦设计,一个周期有128个点,也就是说每运行128下才能产生一个周期的正弦波,要到达20M频率就得让FPGA的时钟频率为20M*128=2,560MHz也就是2.5GHz,这是不可能到达的,对于目前低本钱的FPGA来说,时钟频率高一点是100M,低一点的是50M,就算在FPGA内部倍频上去也不可能到达1G,而且2.5G的模数转化器也是不会有的。但是该设计有一个好处就是能够随心所遇产生各种波形,甚至是任意信号。举个例子来说,可以产生将一阶斜波与二阶斜波叠加起来的波形。通过这种方法,就能根据用户系统的需求,进展电路定制,产生所需要的波形。致谢本论文是在我的导师薛延霞教授的亲切关心和悉心指导下完成的。她严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和鼓励着我。从课题的选择到工程的最终完成她都始终给予我细心的指导和不懈的支持。薛教授不仅在学业上给了我精心的指导,同时还在思想、生活上给我以无微不至的关心,在此谨向薛教师致以诚挚的谢意和崇高的敬意。同时感谢我的室友们,从遥远的家来到这个陌生的城市里,是你们和我共同维系着彼此之间姐妹般的感情,维系着寝室那份家的融洽。在论文即将完成之际,我的心情无法平静,从开场进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请承受我诚挚的谢意!最后我还要感谢培养我长大含辛茹苦的父母,我永远的支持者,正是在你们殷切目光的注视下,我才一步步完成求了学生涯。没有你们就不会有今天的我。我一直很感谢你们,让我拥有一个如此温馨的家庭,让我所有的一切都可以在你们这里得到理解与支持,得到谅解和分担,你们的支持和鼓励是我前进的动力。最后再次感谢所有曾经帮助过我的人,祝你们在今后的工作中一帆风顺,万事如意参考文献[1]SamirPalnitkar.VerilogHDL:AGuidetoDigitalDesignandSynthesisSecondEdition[M].电子工业,2001.[2]朱正伟.EDA技术及应用[M].:清华大学,2005.[3]*文波,田耕.*ilin*FPGA开发实用教程[M],:清华大学,2012.[4]于斌,米秀杰.ModelSim电子系统分析及仿真[M],:电子工业,2009[5]王诚,蔡**,等.Altera公司推荐FPGA/CPLD培训教材•AlteraFPGA/CPLD设计(根底篇)(第2版)[M],:人民邮电,2011[6]吴继华,蔡**,等.Altera公司推荐FPGA/CPLD培训教材•AlteraFPGA/CPLD设计(高级篇)(第2版)[M],:人民邮电,2011附录moduleallmodule( clkin , //系统时钟 rest , //复位开关,低电平复位 div , //分频 Qout_add , //递增斜波 Qout_min ,//递减斜波 Qout_tri , //三角波 Qout_squ , //方波 Qout_sin , //正弦波 Qout_lad , //阶梯波 clk_out_tmp ); inputclkin; inputrest; input[7:0]div; output[7:0]Q
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 26635-2025动植物油脂生育酚及生育三烯酚含量测定高效液相色谱法
- 2026年反网络电信诈骗知识考试卷及答案(二)
- 2025年大学大四(通信技术)通信技术前沿应用研究阶段测试题及答案
- 2025年中职(物流法律法规)物流合同条款解读阶段测试试题及答案
- 2025年高职食品检验检测技术(食品微生物检验)试题及答案
- 2025年大学食品质量与安全(食品毒理学)试题及答案
- 2025年大学大四(设计学)设计创新基础理论测试题及答案
- 2025年高职(直播电商运营)直播话术设计综合测试题
- 2025年大学林学(林业技术研发)试题及答案
- 2025年中职护理(养老护理方向)(康复理疗)试题及答案
- 医院安全生产培训教育制度
- USB数据线产品质量控制流程详解
- 肾性贫血PDCA课件
- 人工智能通识教程 课件 第12章-提示词工程
- 人工智能+灵活就业创新模式研究报告
- 福建省计算机专项考评员试题含答案
- 译林版新高一英语《语法填空》专项练习题汇编(含答案解析)
- 电吹管保养维护知识培训课件
- 眼科干眼门诊建设与运营规范
- 2.3 第2课时 中国第一大河-长江 导学案(含答案)湘教版(2024)地理八年级上册
- 医院一站式服务
评论
0/150
提交评论