




已阅读5页,还剩59页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
兰州交通大学毕业设计(论文)基于FPGA/CPLD的脉冲信号型乐曲播放器的设计毕业论文目录第一章绪论1第一节EDA技术概述1第二节EDA技术的基本特征2一、自顶向下的设计方法2二、ASIC设计3三、硬件描述语言3四、系统框架结构4第二章开发环境介绍5第一节QUARTUS介绍5一、设计输入5二、综合7三、仿真8第二节仿真环境简介8一、仿真器设置9二、建立波形文件9三、仿真9第三节下载环境及下载流程10一、打开下载窗口10二、设置下载电缆10三、设置JTAG链10四、下载11第三章原理分析及方案论证12第一节基本原理12一、音高频率分析12二、音高控制分析13三、顺序控制分析13第二节方案论证及选择14一、方案一15二、方案二15第四章脉冲型乐曲播放器的设计17第一节顶层设计原理图17一、方案一的顶层设计17二、方案二的顶层设计17第二节分频模块的设计实现18一、分频器“DFC”和“DFC1”的设计18二、分频器“DFC”和“DFC1”的仿真19第三节顺序控制模块“SXKZ”的设计实现21一、 “SXKZ” 模块的设计21二、 “SXKZ” 模块的仿真22第四节音高控制模块“YGKZ”的设计实现23一、“YGKZ”模块的设计23二、“YGKZ”模块的仿真23第五节地址产生模块“ADDR”的设计实现25一、“ADDR”模块的设计25二、“ADDR”模块的仿真26第六节顺序控制模块“ROM”的设计实现27一、“ROM”模块的设计27二、“ROM”模块的仿真29第五章总体设计的编译仿真及下载31第一节方案一的编译及仿真31一、方案一仿真实体的建立31二、方案一的功能仿真波形图31第二节方案二的编译及仿真32一、方案二仿真实体的建立32二、方案二的功能仿真波形图32结论34致谢35参考文献36附录37附录世上只有妈妈好的乐谱37附录“DFC”模块的源程序38附录“DFC1”模块的源程序40附录“SXKZ”模块的源程序42附录“YGKZ”模块的源程序51附录“ADDR”模块的源程序53附录“ROM”模块的源程序5561第一章绪论第一节EDA技术概述微电子技术的进步主要表现在大规模集成电路加工技术及半导体工艺技术的发展上,表征半导体工艺水平的线宽已经达到了60nm,并还在不断地缩小,而在硅片单位面积上,更多的晶体管集成电路设计正在不断地向超大规模、极低功耗和超高速的方向发展,专用集成电路ASIC(Application Specific Integrated Circuit)的设计成本不断降低,在功能上,现代的集成电路已能够实现单片电子系统SOC(System On a Chip)。现代电子设计技术的核心已日趋转向基于计算机的电子设计自动化技术,即EDA(Electronic Design Automation)技术。EDA技术就是依赖功能强大的计算机,在EDA工具平台上,对以硬件描述语言HDL(Hardware Description Language)为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、化简、分割、综合布局布线以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。EDA技术的设计者的工作仅限于软件的方式,即利用硬件描述语言和EDA软件来完成对系统硬件功能的实现,这是电子设计技术的一个巨大进步。 近30年电子设计技术的发展历程,可将EDA技术分为三个阶段。 (1) 七十年代为CAD阶段,这一阶段人们开始用计算机辅助进行IC版图编辑和PCB布局布线,取代了手工操作,产生了计算机辅助设计的概念。 (2)八十年代为CAE阶段,与CAD相比,除了纯粹的图形绘制功能外,又增加了电路功能设计和结构设计,并且通过电气连接网络表将两者结合在一起,以实现工程设计,这就是计算机辅助工程的概念。CAE的主要功能是:原理图输入,逻辑仿真,电路分析,自动布局布线,PCB后分析。(3)九十年代为EDA阶段。尽管CAD/CAE技术取得了巨大的成功,但并没有把人从繁重的设计工作中彻底解放出来。在整个设计过程中,自动化和智能化程度还不高,各种EDA软件界面千差万别,学习使用困难,并且互不兼容,直接影响到设计环节间的衔接。基于以上不足,人们开始追求贯彻整个设计过程的自动化,这就是EDA即电子系统设计自动化1。 从目前的EDA技术来看,其发展趋势是政府重视、使用普及、应用广泛、工具多样、软件功能强大。 中国EDA市场已渐趋成熟,不过大部分设计工程师面向的是PC主板和小型ASIC领域,仅有小部分(约11%)的设计人员面向复杂的片上系统器件。为了与台湾和美国的设计工程师形成更有力的竞争,中国的设计队伍也在购入一些最新的EDA技术。 在信息通信领域,优先发展高速宽带信息网、深亚微米集成电路、新型元器件、计算机及软件技术、第三代移动通信技术、信息管理、信息安全技术,积极开拓以数字技术、网络技术为基础的新一代信息产品,发展新兴产业,培育新的经济增长点。要大力推进制造业信息化,积极开展计算机辅助设计(CAD)、计算机辅助工程(CAE)、计算机辅助工艺(CAPP)、计算机机辅助制造(CAM)、产品数据管理(PDM)、制造资源计划(MRPII)及企业资源管理(ERP)等。有条件的企业开展了“网络制造”, 便于合作设计、合作制造,参与国内和国际竞争。开展“数控化”工程和“数字化”工程。自动化仪表的技术发展趋势的测试技术、控制技术与计算机技术、通信技术进一步融合, 形成测量、控制、通信与计算机(M3C)结构。在ASIC和PLD设计方面,向超高速、高密度、低功耗、低电压方向发展。 中国自1995年以来加速开发半导体产业,先后建立了几所设计中心,推动系列设计活动以应对亚太地区其它EDA市场的竞争。 在EDA软件开发方面,目前主要集中在美国。但各国也正在努力开发相应的工具。日本、韩国都有ASIC设计工具,但不对外开放 。中国华大集成电路设计中心,也提供IC设计软件,但性能不是很强。据最新统计显示,中国和印度正在成为电子设计自动化领域发展最快的两个市场,年复合增长率分别达到了50%和30%。 EDA技术发展迅猛,完全可以用日新月异来描述。EDA技术的应用广泛,现在已涉及到各行各业。EDA水平不断提高,设计工具已趋于完善。EDA市场日趋成熟,但我国的研发水平还很有限,需迎头赶上。第二节EDA技术的基本特征 EDA技术代表了当今电子设计技术的最新发展方向,它的基本特征是:设计人员按照自顶向下的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件。这样的设计方法被称为高层次的电子设计方法。 一、自顶向下的设计方法 10年前,电子设计的基本思路还是选择标准集成电路自底向上(Bottom-Up)地构造出一个新的系统,这样的设计方法就如同一砖一瓦地建造金字塔,不仅效率低、成本高而且还容易出错。高层次设计给我们提供了一种自顶向下(Top-Down)的全新的设计方法,这种设计方法首先从系统设计入手,在顶层进行功能方框图的划分和结构设计。在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统行为进行描述,在系统一级进行验证。然后用综合优化工具 生成具体门电路的网表,其对应的物理实现级可以是印刷电路板或专用集成电路。由于设计的主要 仿真和调试过程是在高层次上完成的,这不仅有利于早期发现结构设计上的错误,避免设计工作的浪费,而且也减少了逻辑功能仿真的工作量,提高了设计的一次成功率。 二、ASIC设计 现代电子产品的复杂度日益加深,一个电子系统可能由数万个中小规模集成电路构 成,这就带来了体积大、功耗大、可靠性差的问题,解决这一问题的有效方法就是采用ASIC (Application Specific Integrated Circuits)芯片进行设计。ASIC按照设计方法的不同可分为:全定制ASIC,半定制ASIC,可编程ASIC(也称为可编程逻辑器件)。设计全定制ASIC芯片时,设计师要定义芯片上所有晶体管的几何图形和工艺规则,最后将设计结果交由IC厂家掩膜制造完成。优点是:芯片可以获得最优的性能,既面积利用率高、速度快、功耗低。缺点是:开发周期长,费用高,只适合大批量产品开发。 半定制ASIC芯片的版图设计方法有所不同,分为门阵列设计法和标准单元设计法,这两种方法都是约束性的设计方法,其主要目的就是简化设计,以牺牲芯片性能为代价来缩短开发时间。 可编程逻辑芯片与上述掩膜ASIC的不同之处在于:设计人员完成版图设计后,在实验室内就可以烧制出自己的芯片,无须IC厂家的参与,大大缩短了开发周期。 可编程逻辑器件自七十年代以来,经历了PAL、GAL、CPLD、FPGA几个发展阶段,其中 CPLD/FPGA属高密度可编程逻辑器件,目前集成度已高达200万门/片,它将掩膜ASIC集成度高的优点和可编程逻辑器件设计生产方便的特点结合在一起,特别适合于样品研制或小批量产品开发,使产品能以最快的速度上市,而当市场扩大时,它可以很容易的转由掩膜ASIC实现,因此开发风险也大为降低。 上述ASIC芯片,尤其是CPLD/FPGA器件,已成为现代高层次电子设计方法的实现载体。三、硬件描述语言 硬件描述语言(HDL-Hardware Description Language)是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,与传统的门级描述方式相比,它更适合大规模系统的设计。例如一个32位的加法器,利用图形输入软件需要输入500至1000个门,而利用VHDL语言只需要书写一行A=B+C即可,而且VHDL语言可读性强, 易于修改和发现错误。早期的硬件描述语言,如ABEL-HDL、AHDL,是由不同的EDA厂商开发的,互相不兼容,而且不支持多层次设计,层次间翻译工作要由人工完成。为了克服以上缺陷,1985年美国国防部正式推出了VHDL(Very High Speed IC Hardware Description Language)语言,1987年IEEE采纳VHDL为硬件描述语言标准(IEEE STD-1076)。 VHDL是一种全方位的硬件描述语言,包括系统行为级、寄存器传输级和逻辑门级多个设计层次,支持结构、数据流、行为三种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件描述语言的功能,整个自顶向下或自底向上的电路设计过程都可以用VHDL来完成。另外,VHDL还具有以下优点:VHDL的宽范围描述能力使它成为高层次设计的核心,将设计人员的工作重心提高到了系统功能的实现与调试,只需花较少的精力用于物理实现。VHDL可以用简洁明确的代码描述来进行复杂控制逻辑的设计,灵活且方便,而且也便于设计结果的交流、保存和重用。VHDL的设计不依赖于特定的器件,方便了工艺的转换。VHDL是一个标准语言,为众多的EDA厂商支持,因此移植性好。四、系统框架结构 EDA系统框架结构(Framework)是一套配置和使用EDA软件包的规范,目前主要的EDA系统都建立了框架结构,如Cadence公司的Design Framework、Mentor公司的Falcon Framework等,这些框架结构都遵守国际CFI组织(CAD Framework Initiative)制定的统一技术标准。Framework能将来自不同EDA厂商的工具软件进行优化组合,集成在一个易于管理的统一的环境之下,而且还支持任务之间、设计师之间在整个产品开发过程中实现信息的传输与共享,这是并行工程和Top-Down设计方法的实现基础。第二章开发环境介绍第一节QUARTUS介绍Quartus II设计软件是Altera公司刚推出的一款功能强大的EDA工具,是适合单芯片可编程系统(SOPC)的最全面的设计环境。Quartus II设计软件提供完整的多平台设计环境,它可以轻易满足特定设计的需要。它是单芯片可编程系统(SOPC)设计的综合性环境,Quartus II软件拥有FPGA和CPLD设计的所有阶段的解决方案2。一、设计输入1.输入流程QuartusII 软件中的工程由所有设计文件和与设计有关的设置组成。可以使用Quartus II Block Editor、Text Editor、MegaWizard Plug-InManager(Tools 菜单)和 EDA设计输入工具建立包括 Altera宏功能模块、参数化模块库 (LPM)函数和知识产权 (IP) 函数在内的设计。可以使用Settings 对话框(Assignments 菜单)和Assignment Editor 设定初始设计约束条件。图2.1显示设计输入流程。 图2.1 设计输入的流程图2.建立工程Quartus II 软件将工程信息存储在 Quartus II工程配置文件 (.quartus) 中。它包含有关Quartus II工程的所有信息,包括设计文件、波形文件、SignalTap II 文件、内存初始化文件以及构成工程的编译器、仿真器和软件构建设置。可以使用New Project Wizard(File 菜单)或quartus_map可执行文件建立新工程。使用New Project Wizard,可以为工程指定工作目录、分配工程名称以及指定最高层设计实体的名称。还可以指定要在工程中使用的设计文件、其它源文件、用户库和 EDA 工具,以及目标器件系列和器件(也可以让Quartus II软件自动选择器件)。建立工程后,可以使用Settings对话框(Assignments 菜单)的Add/Remove页在工程中添加和删除设计和其它文件。在执行Quartus IIAnalysis & Synthesis期间,Quartus II软件将按Add/Remove页中显示的顺序处理文件。3.建立设计可以使用Quartus II软件在Quartus II Block Editor中建立设计,或使用Quartus II Text Editor通过AHDL、Verilog HDL或VHDL设计语言建立设计。Quartus II软件还支持采用EDA设计输入和综合工具生成的EDIF输入文件(.edf)或VQM文件(.vqm)建立的设计。还可以在EDA设计输入工具中建立Verilog HDL或VHDL设计,以及生成EDIF输入文件和VQM文件,或在Quartus II工程中直接使用Verilog HDL或VHDL设计文件。使用Quartus II Block Editor Block Editor用于以原理图和流程图的形式输入和编辑图形设计信息。Quartus II的Block Editor读取并编辑原理图设计文件和MAX+PLUS II图形设计文件。可以在Quar- tus II软件中打开图形设计文件并将其另存为原理图设计文件。 每个原理图设计文件包含块和符号,这些块和符号代表设计中的逻辑,Block Editor 将每个流程图、原理图或符号代表的设计逻辑融合到工程中。可以用原理图设计文件中的块建立新设计文件,可以在修改块和符号时更新设计文件,也可以在原理图设计文件的基础上生成块符号文件(.bsf)、AHDL包含文件(.inc)和HDL文件。还可以在编译之前分析原理图设计文件是否出错。Block Editor还提供有助于您在原理图设计文件中连接块和基本单元(包括总线和节点连接以及信号名称映射)的一组工具。可以更改Block Editor的显示选项,例如根据您的偏好更改导向线和网格间距、橡皮带式生成线、颜色和屏幕元素、缩放以及不同的块和基本单元属性。使用Quartus II Text EditorQuartus II Text Editor是一个灵活的工具,用于以AHDL、VHDL和Verilog HDL语言以及Tcl脚本语言输入文本型设计。还可以使用Text Editor输入、编辑和查看其它 ASCII文本文件,包括为Quartus II软件或由Quartus II软件建立的那些文本文件。还可以用Text Editor将任何AHDL语句或节段模板、Tcl命令或任何支持的VHDL 或Verilog HDL构造模板插入当前文件中。AHDL、VHDL和verilog HDL模板为您输入 HDL语法提供了一个简便的方法,可以提高设计输入的速度和准确度。还可以获取有关所有AHDL元素、关键字和语句以及宏功能模块和基本单元的上下文相关帮助。使用Quartus II Symbol Editor Symbol Editor用于查看和编辑代表宏功能、宏功能模块、基本单元或设计文件的预定义符号。每个Symbol Editor文件代表一个符号。对于每个符号文件,均可以从包含Altera宏功能模块和LPM函数的库中选择。可以自定义这些块符号文件,然后将这些符号添加到使用Block Editor建立的原理图中。Symbol Editor读取并编辑块符号文件和MAX+PLUS II符号文件(.sym),并将它们转存为块符号文件。使用Verilog HDL、VHDL 与 AHDL 可以使用Quartus II Text Editor或其它文本编辑器建立文本设计文件、Verilog设计文件和VHDL设计文件,并在分级设计中将这些文件与其它类型的设计文件相结合。Verilog设计文件和VHDL设计文件可以包含由Quartus II支持的构造的任意组合。它们还可以包含Altera提供的逻辑函数,包括基本单元和宏功能模块以及用户自定义的逻辑函数。在Text Editor中,使用Create/Update命令(File 菜单)从当前的Verilog HDL或 VHDL 设计文件建立块符号文件,然后将其合并到原理图设计文件中。同样,可以建立代表 Verilog HDL或VHDL设计文件的AHDL包含文件,并将其合并到文本设计文件中或另一个Verilog HDL或VHDL设计文件中。AHDL是一种完全集成到Quartus II系统中的高级模块化语言。AHDL支持布尔等式、状态机、条件逻辑和解码逻辑。AHDL还可用于建立和使用参数化函数,并完全支持 LPM函数。AHDL特别适合设计复杂的组合逻辑、批处理、状态机、真值表和参数化逻辑。二、综合可以使用Compiler的Quartus II Analysis & Synthesis模块分析设计文件和建立工程数据库。Analysis&Synthesis使用Quartus II IntegratedSynthesis综合VHDL设计文件(.vhd)或Verilog设计文件(.v)。用户喜欢的话,可以使用其它EDA综合工具综合VHDL或Verilog HDL设计文件,然后再生成可以与Quartus II软件配合使用的EDIF网表文件(.edf)或VQM 文件 (.vqm)。综合设计流程如图2.2: 图2.2 综合设计流程三、仿真 可以使用EDA仿真工具或使用Quartus II仿真器进行设计的功能与时序仿真。Quartus II软件提供以下功能,用于在EDA仿真工具中进行设计仿真: _ NativeLink集成EDA仿真工具 _ 生成输出网表文件 _ 功能与时序仿真库 _ PowerGauge功耗估算 _ 生成测试台模板和内存初始化文件使用EDA仿真工具和Quartus II仿真器的仿真流程如图2.3所示:图2.3 使用EDA仿真工具和Quartus II仿真器的仿真流程第二节仿真环境简介可以使用Quartus II仿真器在工程中仿真任何设计。视所需的信息类型而定,可以进行功能仿真以测试设计的逻辑运算,也可以进行时序仿真以在目标器件中测试设计的逻辑运算和最差时序。Quartus II软件可以仿真整个设计,或仿真设计的任何部分。在Quartus II软件中进行功能或时序仿真的基本流程3如下:一、仿真器设置通过建立仿真器设置,指定要仿真的类型、仿真涵盖的时间段、激励向量以及其它仿真选项。可以使用Settings对话框(Assignments 菜单)或仿真器Settings Wizard(Processing 菜单)建立仿真器设置的自定义组,也可以使用每次建立新工程时自动生成的默认仿真器设置。二、建立波形文件Quartus II Waveform Editor可以建立和编辑用于波形格式仿真的输入矢量。使用Waveform Editor,可以将输入矢量添加到波形文件中。Quartus II软件支持矢量波形文件 (.vwf)、表文件 (.tbl)、矢量文件 (.vec) 和矢量表输出文件 (.tbl) 格式的波形文件。 可以在Quartus II软件中将Quartus II仿真器通道文件 (.scf) 另存为表文件,然后使用 Waveform Editor 打开表文件并另存为矢量波形文件。三、仿真 1.在菜单栏的“Processing”里边单击“Simulator Tool”,选择要仿真的已经建立好的波形文件,先点“Generate Functional Simulation Netlist”生成网表文件。2.然后使用Start Start Simulation命令(Processing 菜单)或使用quartus_sim可执行文件运行仿真。3.Status窗口显示仿真进度和处理时间。Report窗口的Summary Section区域显示仿真结果。仿真对话框如图2.4所示:图2.4 仿真对话框第三节下载环境及下载流程 把适配后生成的下载或配置文件,通过编程器向FPGA进行下载,以便进行硬件调试和验证(Hardware Debugging)。下载的主要流程如下:一、打开下载窗口在Quartus II软件菜单栏里点“Processing”,在其下拉菜单里点“Open Programmer”如图2.5所示: 图2.5 “Processing”下拉菜单二、设置下载电缆 在图2.6中选择setup进行设置, 然后从下拉菜单中选择下载电缆。图2.6 下载设置对话框三、设置JTAG链 在图2.7中新建一个JTAG 链,然后设置JTAG模式,再加入文件准备下载。图2.7 JTAG设置对话框四、下载当你的下载链中的文件与下载电缆已经设置好了之后,点击开始按钮开始下载。进度表(Progress)中显示目前完成下载的比率。如图2.8所示:图2.8 下载对话框第三章原理分析及方案论证第一节基本原理声音的频谱范围约在几十到几千赫兹,若能利用程序来控制FPGA某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。乐曲中的每一音符对应着一个确定的频率,要想FPGA发出不同音符的音调,实际上只要控制它输出相应音符的频率即可。乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在扬声器上连续地发出各个音符的音调。本设计作为世上只有妈妈好乐曲演奏电路的实现,其工作原理是这样的:我们知道,组成乐曲的每一个音符的频率值及其持续的时间是乐曲能连续演奏所需的两个基本数据。音符频率可以由一个可变频率的分频器产生,其分频数由顺序控制模块产生。一、音高频率分析多个不同频率的信号可通过对某个基准频率进行分频获得。由于各个音符的频率多为非整数,而分频数又不能为小数,故必须将计算机得到的分频数四舍五入取整。若基准频率过低,则分频数过小,四舍五入取整后的误差较大。若基准频率过高,虽然可以减少频率的相对误差,但分频结构将变大。实际上应该综合考虑这两个方面的因素,在尽量减少误差的前提下,选取合适的基准频率。我们要使用到的全局时钟的频率是20MHZ,用一个分频器将此20MHZ的频率分成1MHZ以便于计算各个音符的分频数,1MHZ的频率由图3.1中的分频模块DFC1产生.用1MHZ的基准频率计算出各个音符所需的分频数,音高与频率的对应关系如表3.1所示:表3.1 音高频率对照表1234567低音131147165175196221248中音262294330350393441496高音525589661700786882990从中提出我们乐曲所需要的音符,世上只有妈妈好(乐谱见附录)中所用到的音符有低音的5和6;中音的1、2、3、5和6;高音的1。对于N进制的计数器,其进位输出频率F和输入频率F1之间的关系是 式(31)可以得到分频数N的计算公式 式(32)运用公式(32)计算出乐曲世上只有妈妈好中用到的所有音符所对应的分频数,见表3.2。表3.2 音高分频数对照表12356低音25512262中音19081701151512721134高音952利用表3.2中各个音符频率的分频数值进行音符频率产生模块的构思,就可以设计出比较准确的控制音符频率产生的模块。二、音高控制分析音符的频率可以由图3.3中“YGKZ”模块获得,这是一个可变频分频器,它的作用是将由“DFC1”产生的1MHZ的时钟“CLK2”按“A11.0”输入的分频数进行分频,从而得到所需音符的频率,所以“Q”的输出频率决定每一音符的音调。“YGKZ”的预置值“A11.0”与“Q”的输出频率又对应关系。例如在“SXKZ”模块中若输出Q11.0=D1908,将发音符为“2”音的信号频率。其具体工作原理让我们以“3”音的产生来说明。要产生“3”音的频率时,“SXKZ”模块中输出Q11.0=D1515,即“YGKZ”的预置值A11.0 =D1515。此时,“YGKZ”模块就是一个模为1515的分频计数器,由于“CLK2”频率为1MHZ,所以其输出信号“Q”的频率为330HZ,这正是音符“3”的音高频率。三、顺序控制分析音符的持续时间须根据乐曲的播放速度及每个音符的节拍数来确定,如我们可以将一个节拍的长度设为0.5秒。图3.3中的“SXKZ”模块的功能首先是为“YGKZ”模块提供决定音符的分频预置数,其次是控制此分频预置数持续的时间,而此数停留的时间即为此音符的节拍数。模块“SXKZ”中设置了世上只有妈妈好乐曲全部音符所对应的分频预置数,共32个,每一节拍的时间长短由“CLK1”的输入频率决定,在此为2HZ。这32个值的输出,各个值所持续的节拍数不一样,对于它们所需的节拍数在“SXKZ”模块内部用变量计数控制的方式控制。将“SXKZ”模块中所需输出的值及其所需的节拍数全部统计如下表:表3.3 预置值节拍数对照表序号预置值节拍数序号预置值节拍数序号预置值节拍数11134312127222315152 212721131515224170123151521419081251908441272215113412612723595221612721271515161134117151512817011712721181701429190818113441917013302262 19151522015151311908110127212112723321272811113412211341如图3.1中所示,我们可以设计一个节拍发生器即“分频器1”,用它产生一个固定时间长度的节拍,即给顺序控制模块提供一个频率一定的时钟信号,为顺序控制模块控制每个音符的节拍数提供触发信号和基准依据。为了将预置数按一定顺序输出,我们还可以用另一种方法设计此模块。将一串准备输出的预置值存到一个ROM中(图3.2中的模块“ROM”),在此“ROM”模块中已经将各个音符的预置数按乐曲所需的顺序和节拍存好,只需一个一个寻址输出即可。此时,需要一个地址产生器来控制其工作。图3.2中的地址产生器模块是一个地址产生器,在这个地址产生器的作用下,将在 “ROM” 模块中连续按顺序其输出端输出各个音符的预置数,从而控制音高控制模块输出各个音调。第二节方案论证及选择与利用微处理器(CPU或MCU)来实现乐曲演奏相比,用纯硬件来完成乐曲演奏的电路的逻辑要复杂的多,如果不借助于功能强大的EDA工具和硬件描述语言,仅凭传统的数字逻辑技术,即使最简单的电路也难以实现。用硬件来完成乐曲演奏电路,其实现方案很多。可以用单片机实现,可以是基于FPGA的设计,也可以是基于CPLD的设计,还可以通过模拟电路来实现。考虑到设计要求、可行性和设计成本,我们选择了基于FPGA的设计方案。基于FPGA的设计,我们考虑了两种设计方案,两种设计方案的主要去区别在于顺序控制模块的实现方法不同,对于本模块通过VHDL文本输入和ROM数据表的方式均可以实现,为了更好的掌握基于FPGA的脉冲型乐曲播放器的设计。我选择用两种方案分别实现此设计。现在一一介绍论证如下:一、方案一此方案中顺序控制模块采用的是VHDL文本输入方法实现的,其设计的总体框图4如图3.1。分频器1顺序控制模块音高控制模块分频器2D/A转换喇叭器图3.1 方案一的总体框图其中涉及以下几部分: 1分频器1:系统时钟频率是20MHZ,此模块是一个节拍发生器,而设计中设置一个节拍的时间长度为0.5秒,要用此节拍发生器的输出信号的一个周期作为一个节拍,可知此模块是一个10000000进制的计数分频器。 2分频器2:此模块的作用是将20MHZ的频率分成1MHZ的频率,以便于分频预置数的计算,所以此模块是一个10进制的计数分频器。3顺序控制模块:此模块的功能首先是为音高控制模块提供决定音符的分频预置数,而此数停留的时间即为此音符的节拍数。4音高控制模块:此模块可以根据一定得分频预置数产生一定的音符频率,一定的频率产生一定的音高。二、方案二此方案中顺序控制模块采用的ROM数据表方法实现的,其设计的总体框图如图3.2所示: 分频器1地址产生器音高控制模块 分频器2D/A转换喇叭器顺序控制模块(ROM)图3.2 方案二的总体框图此方案中除了顺序控制模块的实现方法不同外,还多了一个地址产生器模块。顺序控制模块(ROM)所要实现的功能和方案一中的顺序控制模块的一样,只不过是实现方式不同而已。 地址产生器模块的作用是产生一定的地址,以方便于从顺序控制模块(ROM)中按顺序取出已经存好的音符分频预置数。第四章脉冲型乐曲播放器的设计第一节顶层设计原理图一、方案一的顶层设计前面已经叙述了设计的基本原理并进行了方案论证,方案一的顶层设计图如下图所示:图4.1 方案一的顶层设计图此设计中包含四个模块,分别有节拍发生器“DFC”、分频器“DFC1”、顺序控制模块“SXKZ”、音高控制模块“YGKZ”。 在此方案中,模块“YGKZ”接受一定音符的分频预置数,从而产生一定音符的音高频率;模块“SXKZ”中已经设置了乐曲世上只有妈妈好的所有音符,当它接到一定的时钟时,此模块就会以已经在“SXKZ”中设置好的间隔输出各个音符的预置数,从而使“YGKZ”模块按顺序输出各个音符的音高频率。模块“DFC”和模块“DFC1”其实都是分频器,只不过它们想要得到的频率值不一样,所以它们的工作原理是一样的。系统时钟频率是20MHZ,“DFC”是一个节拍发生器,而设计中设置一个节拍的时间长度为0.5秒,所以“DFC”是一个10000000进制的计数分频器;模块“DFC1”的作用是将20MHZ的频率分成1MHZ的频率,以便于分频预置数的计算,所以“DFC1”是一个10进制的计数分频器。二、方案二的顶层设计方案二的顶层设计图如下图所示:图4.2 方案二的顶层设计图 此设计中包含五个模块,分别是节拍发生器“DFC”、分频器“DFC1”、顺序控制 “ROM” 模块、音高控制模块“YGKZ”和地址发生器“ADDR”。此方案是在方案一的基础上改变了顺序控制模块的实现方式,我们可以将乐曲世上只有妈妈好的所有音符按顺序存放的ROM里边,再给ROM模块加一个地址发生器,把音符从ROM里边按顺序读出;设计这个地址发生器ADDR,应当考虑到所要寻址的ROM数据表的位宽和字长。在设计时将此地址发生器接到“ROM”模块上,就能达到预期的效果,即从“ROM”中按顺序取出所需音符的分频预置数,从而使“YGKZ”模块按顺序输出各个音符的音高频率。第二节分频模块的设计实现一、分频器“DFC”和“DFC1”的设计模块“DFC”和模块“DFC1”其实都是分频器,只不过它们想要得到的频率值不一样,所以它们的工作原理是一样的。系统时钟频率是20MHZ,“DFC”是一个节拍发生器,而设计中设置一个节拍的时间长度为0.5秒,所以“DFC”是一个5000000进制的计数分频器;模块“DFC1”的作用是将20MHZ的频率分成1MHZ的频率,以便于分频预置数的计算,所以“DFC1”是一个10进制的计数分频器。1.源程序5模块“DFC”的源程序见附录。2.模块“DFC”的元件符号 模块“DFC”的元件包括一个输入管脚(时钟输入CLK)、一个输出管脚(分频得到的信号CO)和一个复位信号。如图4.3所示:图4.3 模块“DFC”的元件图 图中输入时钟CLK是频率为20MHZ的系统时钟,通过此模块的分频所得到的输出信号CO的频率为1HZ,所以它是一个5000000进制的计数分频器。RESET是一个复位信号输入管脚,它的作用是保证每次开始计数时能够从“0”开始。3.源程序模块“DFC1”的源程序见附录。4.模块“DFC1”的元件符号模块“DFC1”的元件的管脚和模块“DFC”差不多,如图4.4所示:图4.4 模块“DFC1”的元件图图中输入时钟CLK是频率为20MHZ的系统时钟,通过此模块的分频所得到的输出信号CO的频率为1MHZ,所以它是一个10进制的计数分频器。RESET是一个复位信号输入管脚,它的作用是保证每次开始计数时能够从“0”开始。二、分频器“DFC”和“DFC1”的仿真1.模块“DFC”的仿真建立仿真实体在Quartus II的Block Editor中建立设计模块“DFC”的仿真实体如图4.5所示:图4.5 模块“DFC”的仿真实体模块“DFC”的仿真波形图 模块“DFC”的功能仿真波形图如图4.6 所示:图4.6 模块“DFC”的仿真波形 为了在较短的结束时间内实现其功能仿真,图中输入时钟CLK的频率是500MHZ,将分频数减少了100000倍,所以它是一个100进制的计数分频器。由图可知输出信号CO的频率为5MHZ。图中可以看到当RESET为1时,分频器正常工作,当它为0时,就保证开始计数时能够从“0”开始。所以从此功能仿真结果可以看到已经实现了模块“DFC”所要求的功能。2.模块“DFC1”的仿真波形图建立仿真实体在Quartus II的 Block Editor 中建立模块“DFC”的仿真实体如图4.7所示:图4.7 模块“DFC”的仿真实体模块“DFC1”的仿真波形图模块“DFC1”的功能仿真波形图如图4.8所示:图4.8 模块“DFC1”的仿真波形此模块的仿真和模块“DFC”的仿真同理,图中输入时钟CLK的频率是100MHZ。将分频数减少了1000000倍,所以它是一个10进制的计数分频器。由图可知输出信号CO的频率为10MHZ。图中可以看到当RESET为1时,分频器正常工作,当它为0时,就保证开始计数时能够从“0”开始。所以从此功能仿真结果可以看到已经实现了模块“DFC1”所要求的功能。第三节顺序控制模块“SXKZ”的设计实现一、“SXKZ”模块的设计 在模块“SXKZ”中设置好乐曲世上只有妈妈好的所有音符,用状态机控制它的工作顺序。当它接到一定的时钟时,此模块就会从以下状态进行循环:“S0”“S1” “S2”“S3” “S”“S”“S”“S”“S”“S”“S10”“S11”“S12” “S13”“S14”“S15”“S16”“S17”“S18”“S19”“S20”“S21”“S22”“S23” “S24”“S25”“S26”“S27”“S28”“S29”“S30”“S31”“S32”。模块“SXKZ”中的每一个状态中预存着一个音符的预置数。1.源程序6此模块需要包含所有需要播放的音符的分频预置数,所以此模块的实现比较麻烦,程序也比较冗长。实现“SXKZ”模块的源程序见附录。2.模块“SXKZ”的元件符号 模块“SXKZ”的元件有一个输入管脚(时钟输入CLK1)和十二个输出管脚(分频数值输出Q11.0),模块“SXKZ”的元件符号如图4.9所示:图4.9 模块“SXKZ”的元件图图中输入时钟CLK1应接到模块“DFC”的输出脚“CO”上,频率为2HZ,它的一个周期代表乐曲中一个节拍的时间长度。Q11.0是分频预置数的输出管脚,接到“YGKZ”模块的A11.0上,设置好的各个音符的预置数以一定的间隔输出,从而使“YGKZ”模块按顺序输出各个音符的音高频率。二、“SXKZ”模块的仿真1.建立设计实体 在Quartus II的Block Editor中建立设计模块“SXKZ”的仿真实体如图4.10所示:图4.10 模块“SXKZ”的仿真实体2.模块“SXKZ”的仿真波形图 模块“SXKZ”的功能仿真波形图如图4.11所示:图4.11 模块“SXKZ”的仿真波形在图中,时钟CLK1的频率为100MHZ,前面三个时钟周期内Q输出“1701”(此数为中音2的分频数)、然后输出了一个时钟周期的“1515”(此数是中音3的分频数)、再后输出了三个时钟周期的“1272”(此数是中音5的分频数)当然,在硬件电路下载时时钟CLK1接节拍产生器的输出,一个周期代表一个节拍。所以又此图可以看出实现了模块“SXKZ”进行顺序及节拍控制的功能。第四节音高控制模块“YGKZ”的设计实现一、“YGKZ”模块的设计 模块“YGKZ”是一个可变频分频器,它的作用是将由“DFC1”产生的1MHZ的时钟“CLK2”按“A11.0”输入的分频数进行分频,从而得到所需音符的频率,所以“Q”的输出频率决定每一音符的音调。“YGKZ”的预置值“A11.0”与“Q”的输出频率又对应关系。1.源程序“YGKZ”模块的源程序见附录。2.模块“YGKZ”的原件符号模块“YGKZ”的原件有十三个输入管脚(时钟CLK2和分频预置数A11.0)和一个输出管脚(Q),模块“YGKZ”的原件符号如图4.12所示:图4.12 模块“YGKZ”的元件图 图中管脚CLK2的输入时钟是本模块工作的触发信号,也是进行分频的基准信号,应接在模块“DFC1”的输出脚CO上,以便为得到音高频率提供1MHZ的基准频率。A11.0为此模块的分频提供分频数,如当在A11.0管脚输入100时,模块“YGKZ”就是一个100进制的分频器。而输入的数值就对应了乐曲中的音符,按此数进行分频所得到的频率就对应于音符的音高。二、“YGKZ”模块的仿真1.建立设计实体在Quartus II的Block Editor中建立设计模块“YGKZ”的仿真实体如图4.13所示:图4.13 模块“YGKZ”的仿真实体2.模块“YGKZ”的仿真波形图 模块“YGKZ”的功能仿真波形图如图4.14所示:图4.14 模块“YGKZ”的仿真波形 图中输入时钟CLK2的频率为200MHZ, A11.0是音符分频数的输入,在仿真时考虑到过大的分频数得到的仿真结果看不出Q的频率,所以在A11.0处以随机的时间长度输入一系列比较小的分频数来验证模块的功能。图中所示,当在A11.0管脚输入90时,模块“YGKZ”就是一个90进制的分频器,在输出Q得到了1MHZ的频率。可见,此模块已经实现了所要完成的功能。由于用Quartus II的仿真工具进行仿真时,“End time”既结束时间不能设的太长,不然会需要很长时间才能仿真出结果来,同理,输入时钟周期也不能太小。考虑到这些因素,我们将输入的分频预置数设置的较小,从而缓解以上两个不足所带来的困
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 特色班级文明礼仪建设方案设计
- 车位买卖合同补充协议样本
- 公路安全知识竞赛题库及答案解析
- 考基金从业资格考试及答案解析
- 2025年甘肃省兰州财经大学考核招聘博士研究生补充(第三期)考试参考题库及答案解析
- 会计从业考试能带计算器及答案解析
- 2025四川成都市金牛区西华社区卫生服务中心招聘4人考试参考题库及答案解析
- 合肥电梯安全管理员证考试题库及答案解析
- 汽车销售合同风险提示及范本
- 城市安全中的多层级网络安全防护策略研究-洞察及研究
- 次氯酸钠培训
- 腰椎间盘突出伴神经根病
- 幼儿园孩子受伤赔偿协议书范文
- 合肥市肥东县大学生乡村医生专项计划招聘考试真题
- 林地恢复协议书(2篇)
- 2024年哈尔滨卫生系统考试真题
- 非结核分枝杆菌病诊断与治疗指南(2020年版)解读课件
- 内部控制手册
- 护理分层培训考核分析问题总结
- 研学大赛理论模拟试题二附有答案
- 红火蚁监测和防控技术
评论
0/150
提交评论