版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大连东软信息学院本科毕业设计(论文)论文题目论文题目:基于FPGA的八音电子琴设计与实现系所:电子工程系专业:电子信息工程(集成电路设计与系统方向)学生姓名:学生学号:指导教师:导师职称:讲师完成日期:2014年5月2日大连东软信息学院DalianNeusoftUniversityofInformation大连东软信息学院毕业设计(论文)摘要V基于FPGA的八音电子琴设计与实现摘要电子琴是一种音乐与科技相结合的产物,在电子化和信息化的时代,为音乐的普及、大众化做出了杰出的贡献,大部分音乐制作都需要有电子琴来完成,然后再通过媒介传播,例如常见的电影、电视剧和曲目,音乐会现场的音效,甚至是家用电器的一系列发声器件都可能含有电子琴的身影。本设计介绍了基于FPGA的电子琴的相关知识、工作原理及其设计过程。基于计算机中时钟分频器的原理,采用自顶向下的设计方法,使用硬件描述语言verilog,在QuartusII平台上实现电子琴的手动弹奏和自动弹奏功能。本设计主要模块有键盘控制、音频发声和存储器模块组成。选择手动弹奏模式时,按下音符键后就会播放其相应频率的声音;选择自动模式时,会将存储器中已编辑好的音乐信息依次读取出,再通过各个对应的频率输出,实现自动演奏。音频发生器由分频器实现,产生8种不同频率,各频率经放大后驱动喇叭发出声音。关键词:电子琴,FPGA,Verilog,音调发生大连东软信息学院毕业设计(论文)AbstractOctaveElectronicPianoDesignandImplementationbasedonFPGAAbstractElectronicpianoisaproductofthecombinationofmusicandtechnology.Intheageofelectronicandinformationtechnology,electronicpianoforthepopularityofthemusicmadeanoutstandingcontribution.Electronicpianoisessentialformanymusicproduction,suchasthefilm,TVshowmusic,concertsoundandaudiblesignaldevicesofhouseholdappliances.ThisdesignintroductiontoelectronicpianoisbasedonknowledgeaboutFPGA,andworkingprincipleanddesignprocessalsoisaboutFPGAtechnology.Thisdesignclockdividerisbasedontheprincipleofthecomputer,andusedtop-downdesignmethodologyandhardwaredescriptionlanguageVerilogtoimplement.Finally,manualplayandautoplayfeatureonQuartusIIplatform.Thedesignoftheelectronicpianoingeneralconsistsofthreemodules,suchasnamelythekeyboardsoundmodules,memorymodulesandselectandcontrolmodule.WhenyouselectManualmode,itwillplayitscorrespondingfrequenciesofsoundafteryoupresstheaccentkey.WhenyouselecttheAutomode,itwillturntoreadoutthememoryandoutputtoachieveautoplay.AudiogeneratorimplementedbycrossoverstoproduceEightdifferentfrequenciesandamplifytodrivespeakermakesasound.Keywords:Electronicpiano,FPGA,Verilog,Tone
occurred大连东软信息学院毕业设计(论文)目录目录TOC\o"1-3"\u摘要 IAstract II第1章绪论 11.1论文研究主要内容 11.2研究设计方案选择 12.1.1方案一 12.1.2方案二 1第2章关键技术介绍 22.1音符频率 22.2Verilog硬件描述语言 22.2.1VerilogHDL语言简介 22.2.2关于Verilog语言的历史 32.2.3VerilogHDL的主要能力 32.2.4VerilogHDL和VHDL的比较 42.2.5VerilogHDL设计方法 42.3FPGA简介 52.4QuartusII简介 62.5EDA简介 7第3章系统分析 93.1功能需求 93.2模块需求 93.2.1输入 93.2.2自动演奏功能 93.2.3发声 103.2.4音符显示 103.3系统开发环境 103.4系统任务的可行性分析 10第4章系统设计 124.1设计思想 124.2设计模块 124.2.1按键输入模块 124.2.2自动演奏模块 134.2.3数控分频模块 134.2.4显示模块 134.3系统的控制流程 14第5章系统实现 155.1模块拼接 155.2系统控制流程图 155.3主要模块关键代码展示 165.3.1按键输入模块(key_solve) 165.3.2自动演奏模块(store&Choose) 175.3.3数控分频模块(tone) 175.3.4显示模块(SEG7_LUT) 175.4各模块仿真波形图 185.4.1按键模块 185.4.2自动播放模块 185.4.3数控分频模块 185.4.4显示模块 19第6章系统测试 206.1测试方案拟定 206.2测试结果 206.3最终结论 21第7章结论 22参考文献 23致谢 24大连东软信息学院毕业设计(论文)-第1章绪论社会早已进入了一个充满电子信息的时代,身边到处都是各式各样的电子产品,而像电子琴这类早期就有的电子产品现在更是种类繁多,电视剧和电影的插曲、电视节目音效、甚至手机铃声,都很可能包含电子琴的身影;作为一个电子工程系的学生,有理由去了解并研究一下这类电子产品的工作原理及制作。1.1论文研究主要内容选题内容基于QuartusII平台,运用Verilog语言对简易电子琴各个模块进行设计编写,并用EDA工具仿真验证。根据功能分类,将整体设计分为:自动演奏模块、音调发生模块和数控分频模块三大部分,最后整合一起后通过电路的输入输出端关系连起来。本设计主要通过verilog硬件描述语言的设计思想,按照数据传递顺序划分若干功能模块。通过该课程设计深入学习并掌握大学所学的理论知识,达到课程设计的目的。1.2研究设计方案选择2.1.1方案一采用数字逻辑电路制作,这种方法虽然直观且简单方便,但需要的器件繁多,连接复杂,体积和功耗都很大。并且,焊接点和线路很多,使成品的稳定度和精度大大削减。2.1.2方案二用可编程逻辑器件(FPGA)制作,将所有器件集成在一块芯片上,大大减小了电子琴的体积,用verilog编程实现时更加方便,而且易于进行功能扩展,并可调试仿真,制作时间大大缩短。与方案一作比较,本文选用了方案二进行设计。大连东软信息学院毕业设计(论文)第2章关键技术介绍2.1音符频率乐曲的12平均率规定:每两个八度音之间的频率要相差1倍,比如简谱中的中音2与高音2。在2个八度音之间,又可分为12个半音。另外,音符A(简谱中的低音5)的频率为392Hz,音符E到F之间、B到C之间为半音,其余为全音。由此可以推算出简谱中从低音l至高音1之间每个音符的频率。音名与对应频率对照表如图2.1所示。图2.1音名—频率对照图因为为了驱动喇叭发声,还需要进行一次二分频,所以,分频系数的计算可以根据下面的方法进行。以中音1为例,对应的频率值为523Hz,则它的分频系数应该为:0.5MHz/523Hz=0.5*10^6/523=956。2.2Verilog硬件描述语言2.2.1VerilogHDL语言简介VerilogHDL和VHDL是目前世界上最常见的两种硬件描述语言(HDL:HardwareDescriptionLanguage),均为IEEE标准,被广泛地使用于基于可编程逻辑器件的各类项目开发。这两种语言都是在20世纪80年代中期出现的,前者由GatewayDesignAutomation公司(该公司在1989年被Cadence公司收购)创造,后者则是美国军方研发创造的。HDL语言用文本的方法来表述数字系统硬件的结构和行为,是种用形式化方式来描述数字电路和系统的硬件语言,使用它可以从上层到下层来逐一层次的描述自己的设计思想。也就是用一系列分层次的模块去表示一个复杂的数字系统,并且逐层的进行验证仿真,然后把具体的模块组合用综合工具转化成门级网表,接着再使用布局布线工具将网表转化成具体的电路结构实现。当前,这种自顶向下的设计方法已经被广泛的使用。概括地讲,HDL语言主要包含以下各类特征:HDL语言不仅含有部分高级程序设计语言的形式结构,而且还包含了描述硬件线路连接的详细结构。通过这种结构级行为描述,能够在不同的抽象层次描述设计。这种HDL语言采用自顶向下的数字电路设计方法,主要包括3个领域5个抽象层次。HDL语言处理方式是并行执行的,具有在同一时间执行多个任务的能力。这与一般的高级设计语言(比如C语言)串行执行的特征不同。HDL语言拥有一种时序的概念。在平常的高级编程语言中普遍都没有这种时序概念,但是在普遍硬件电路中从输入到输出的过程终归是有延时存在的,为了详细描述出这一特征,就必须引入时延这一概念。HDL语言不但能够描述硬件电路的各类功能,还可以描述电路的时序。2.2.2关于Verilog语言的历史1983年,GatewayDesignAutomation(GDA)硬件描述语言公司的PhilipMoorby开创了VerilogHDL这一语言。后来Moorby成为了VerilogHDL-XL的重要设计者和Cadence公司的第一合伙人。1984-1986年,Moorby设计出首个关于VerilogHDL的仿真器,同时提出了应用于快速门级仿真的XL算法,让VerilogHDL语言得到了突飞猛进的发展。1987年Synonsys公司着手使用VerilogHDL行为语言当做综合工具的输入。1989年Cadence公司将Gateway公司收购,VerilogHDL成为了Cadence公司的私有财产。直至1990年初,Cadence公司将VerilogHDL和VerilogHDL-XL分开,并且公开发布了VerilogHDL。随后成立了OVI(OpenVerilogHDLInternational)组织用来负责VerilogHDL的发展和制定其相关标准,OVI由VerilogHDL的使用用户和CAE供应商两部分组成。1993年,几乎全部的ASIC厂商都逐渐开始支持VerilogHDL,并且认为VerilogHDL-XL是当下最好的仿真器。与此同时,OVI还推出了2.0版本的VerilongHDL规范条件,IEEE则是将OVI的VerilogHDL2.0作为IEEE标准的提案。在1995年12月,IEEE制定并发布了VerilogHDL的标准IEEE1364-1995。现在,最新的Verilog语言版本是在2000年IEEE发布的Verilog2001标准,这进一步大幅度地升级了了系统级和可综合性能。2.2.3VerilogHDL的主要能力VerilogHDL不仅是一种行为描述语言,还是一种结构描述语言。只要依照规定的规则与风格编写代码,就能将功能行为模块用工具自动转变为门级互连的结构模块。这就说明利用Verilog语言所拥有的各项功能,就足以构建一个模块间的清晰结构,用来描述繁琐的大型设计,并且对所需的逻辑电路进行严格的设计。以下列出的是Verilog语言主要的功能:可以用来描述顺序执行程序结构或者并行执行程序结构;过程的启动时间通过延迟表达式或者时间表达式来准确的控制;用命名的事件来触发其它过程中的激活行为或者停止行为;拥有条件和循环等各种程序结构;提供了可以带参数,并且非零延续时间的任务程序结构;拥有可以定义新的操作符的函数结构;提供了算术运算符、逻辑运算符和位运算符用于建立表达式;拥有一整套完整的用来表示组合逻辑基本元件的原语;拥有对双向通路和电阻器件的描述;可以建立对MOS器件的电荷分享与衰减模型;能够通过构造性语句精确地建立信号模型;2.2.4VerilogHDL和VHDL的比较VerilogHDL和VHDL都是用于逻辑设计的硬件描述语言。VHDL在1987年成为IEEE标准,VerilogHDL则是在1995年才成为了IEEE标准,这是因为VHDL为美国军方所组织开发的,而VerilogHDL则是从民间的公司转化而来,所以想要成为国际标准就必须放弃专利。两者相较而言,VerilogHDL具有更强的生命力。VerilogHDL与VHDL的共同点在于:都能形式化的抽象表示所需电路的行为和结构;两者都支持逻辑设计中层次与范围的描述;都能够简化电路行为的描述;均具有电路仿真和验证机制;都支持电路描述由高层到低层的综合转换;设计均与实现工艺无关;方便管理和设计重用。但VerilogHDL和VHDL又各自有各自的特点,由于VerilogHDL的推出比VHDL早,所以拥有更加广泛的客户群体和更加丰富的资源。VerilogHDL还具有的一个优点就是很容易掌握,如果使用者具有一定的C语言学习基础,就可以很快的掌握。而VHDL则需要Ada编程语言的基础,一般情况下至少需要半年左右的专业学习才能够掌握。传统观点都认为VerilogHDL在系统级抽象方面较差,不是很适合特大型的系统。但是经过Verilog2001标准的扩展补充之后,系统级表述性能和可综合性能有了质的飞跃。当然,VerilogHDL和VHDL语言也仍然在不断完善的过程中,都在向着更高级、更准确和更快速的描述语言方向前进。2.2.5VerilogHDL设计方法自下而上的设计方法:自下而上的设计是最普遍的设计方法,主要是从基本单元出发,对设计进行逐层的划分过程。这种设计方法和使用电子元器件在模拟实现板上创建一个系统的步骤有着密切的联系。它的优点和缺点分别如下:优点:设计人员对这种设计方法较为熟悉;用来实现各个子模块所需要的时间较短。缺点:如果对系统的整体功能不是很明确;因为必须先对多个子模块进行设计,所以用来实现整体系统功能的所需时间较长;另外,这种方法对于设计人员之间的相互协作也有很高的要求。自顶向下的设计方法:自顶向下的设计方法指的是从系统级开始,将系统先简单划分为数个基本单元,然后再次把基本单元划分为更细一层次的基本单元,直至可用EDA元件能够实现为止。这种方法的优点和缺点如下。优点:在设计周期的开始就已经做好了系统分析;因为设计的主要仿真和调试过程都是在高层完成的,所以可以尽早的发现结构设计上的错误,避免了设计工作时间和精力上的浪费;方便了系统的划分和整个项目的管理,能够减少设计人员的劳动量,避免了重复设计。缺点:所得到的最小单元不标准,并且制造成本较高。混合的设计方法:对于复杂数字逻辑电路和系统设计过程,一般是上面两种设计方法的结合。在设计时需要考虑多个目标的综合平衡。使用自顶向下的设计方法实现设计高层系统,而使用自下而上的方法从库元件或着以往设计库中调用已有的设计单元。混合设计方法兼有以上两种方法的优点,并且可使用先进的矢量测试方法。2.3FPGA简介工作原理:FPGA其工作原理是采用了逻辑单元阵列LCA(Logic
Cell
Array)这样一个概念,其内部包括可配置逻辑模块CLB(Configurable
Logic
Block)、输出输入模块IOB(Input
Output
Block)和内部连线(Interconnect)三个部分。FPGA优点:采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片;FPGA可做其它全定制或半定制ASIC电路的中试样片;FPGA内部有丰富的触发器和I/O引脚;FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一;
FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。2.4QuartusII简介 QuartusII是Altera公司提供的FPGA/CPLD集成开发软件,Altera是世界上最大的可编程逻辑器件供应商之一。QuartusII于二十一世纪初被推出,是Altera公司一代FPGA/CPLD集成开发软件MAX+plusII的更新换代产品,其界面更友好,使用更方便快捷。在QuartusII上可以完成设计输入、HDL综合、布局布线(适配)、仿真、选择和硬件测试等各种流程,它提供了一个与结构完全无关的设计环境,让设计者可以很方便的进行各种设计输入、开始处理和器件编程。QuartusII提供了一整套的多平台设计环境,它可以满足各种特定的设计需求,也是单片机可编程系统(SoPC)设计的综合环境与SoPC开发设计的基本工具,并且为AlteraDSP的开发包用来实现系统模型设计提供了良好的集成综合环境。QuartusII设计完全支持VHDL与Verilog的设计流程,它的内部含有VHDL和Verilog逻辑综合器。QuartusII可以使用第三方的的综合工具(例如LeonardoSpectrum、SynplifyPro、FPGAComplierII)并且能够直接调用这些综合工具。同样QuartusII具备仿真功能,并且支持第三方的仿真工具(如Modelsim)。另外,QuartusII与MATLAB和DSPBuilder结合,可以使用进行基于FPGA的DSP系统开发,是DSP硬件系统实现的EDA工具。QuartusII包括模块化的编译器。便以其含有的功能模块有分析/综合器(Analysis&Synthesis),适配器(Fitter),装配器(Assembler),时序分析器(TimingAnalyzer),设计辅助模块(DesignAssistant),EDA网表生成器(EDANetlistWriter)和编译器数据库接口(ComplierDatabaseInterface)等。不仅可以通过选择StartComplicetion运行所有的编译器模块,还可以提供选择Start独立运行各个模块。也可以通过选择ComlierTool(Tools)菜单,在ComplierTool窗口中运行该模块来启动编译器模块。在ComlierTool窗口中,可以打开该模块的设置文件或报告文件,或打开其它相关窗口。2.5EDA简介EDA是电子设计自动化的简写,在60年代中期从计算机的辅助设计(CAD),计算机的辅助制造(CAM),计算机的辅助测试(CAT)和计算机的辅助工程(CAE)的概念发展来的。20世纪90年代,国际电子技术和计算机技术较先进的国家,一直在积极探索电子电路设计和彻底的变化,在设计方法,工具使用的新方法的使用方面,取得了巨大的成功。在电子设计技术,可编程逻辑器件的应用得到了广泛的传播领域,这些设备用于数字系统的设计带来了极大的灵活性。这些设备可以被重建,并通过软件来进行编程,硬件设计加上一部分的软件设计,可以使硬件设计更加简便,更加方便。这一切都极大地改变了传统的数字系统设计的方法,设计过程以及设计的理念,促进了EDA技术的快速发展。EDA技术是将计算机作为一种工具,设计者在EDA软件平台,硬件描述语言VHDL设计文件完成后,再由计算机逻辑进行编译,化简,分割,综合,优化,布局,布线和仿真自动完成,直到特定目标芯片的适配编译,映射和编程逻辑的下载工作。自从出现了EDA技术,极大地提高了人们对于电路设计和可操作性的效率,降低设计人员的劳动强度。利用EDA工具,电子设计师从概念,算法,协议等开始设计电子系统,大量工作可以通过计算机和电子产品就完成电路设计,性能分析到IC布局的全过程。EDA设计的印刷电路板,还能自动处理或布局在电脑上。现在对于EDA的概念或范畴非常广泛。在各个领域,包括机械设计制造,电子通信,航空航天技术,化工产业,矿产产业,生物科学,医学,军事发展等方面,都有EDA应用。目前EDA技术已在各大公司,企事业单位和科研教学部门被广泛使用。例如,在飞机制造过程中,从设计,性能测试和表征直到飞行模拟,都能涉及到EDA技术。EDA技术的概念,指的是利用计算机工作平台,结合电子技术应用,计算机技术,信息处理和智能技术对电子产品进行自动设计。“引进来VLSI系统”在电子设计自动化的发展,米德和林恩康威在1980年出版的(介绍VLSI系统)为标志的文件作为EDA发展的下一个重要阶段。本文提出通过编程语言设计的新思路,对于芯片行业发展具有重大意义。如果要实现这个想法,芯片设计的复杂性可以显著提高。这主要是由于用于逻辑模拟的集成电路,功能验证工具的性能大大提高。随着计算机仿真技术的发展,软件设计的项目可以通过构建实际的硬件电路仿真,芯片布局布线设计的要求,来降低劳动力。使用先进的软件可以使代码错误率大大降低。即使在今天,尽管语言和工具都在不断的开发使用。但是编程语言设计,验证电路预期的行为,利用EDA的方式来简化物理设计的抽象程度,降低软件工具使用率,在不断的发展中。自1981年以来,电子设计自动化逐渐开始实现商业化。1984年设计自动化会议也举行了首个电子设计自动化主题展销。网关设计自动化公司推出的硬件描述语言Verilog,在1986年这种语言是最流行的高抽象的设计语言。1987年,美国国防部门的主持下,另一种硬件描述语言VHDL已创建。目的是找出现代电子设计自动化的最新工具,可以读取不同类型的硬件的描述语言。根据各种模拟系统快速生成这些语言规范被引入,使设计人员设计的芯片可以直接被模拟。再后来,技术的发展更侧重于逻辑综合。数字集成电路的设计更加注重模块化设计的和流程的设计。半导体器件制造过程中需要抽象描述一个高层次的标准化设计。描述的设计在以信息单元为基础的形式会被编译。硬件设计师需要特定的硬件信息技术来对单元逻辑进行详尽的设计。过程中要考虑使用工具的问题。使用专用集成电路的制造工艺,实现了硬件电路的初步设计,信息单元将使用一个预定义的逻辑或实现其他的电子功能。大多数半导体硬件厂商会为他们生产的组件提供了一个“图书馆”,并提供一个标准化的仿真模型。相比于数字电子设计自动化工具,模拟系统大多是电子设计自动化工具,但是这些工具不是模块化的,这是因为设计较复杂的模拟电路,以及复杂的不同部位的器件会有很强的相互影响,电子元件一般不能用于模块化设计的,VerilogAMS是一种硬件描述语言,用于模拟电子设计。本文中,设计人员可以使用硬件验证语言来完成该项目的验证。电子行业最新的发展趋势将变成硬件设计描述语言与验证语言的集成,典型的例子是SystemVerilog。集成电路的规模,半导体技术发展,膨胀的电子设计原理使EDA的重要性显着增加。这些工具的用户,包括半导体器件的制造中心的硬件技术人员,他们工作在一家以经营半导体器件制造和设备的整个工作车间和管理。一些设计公司的主营业务,将采用电子设计自动化的软件,以评估制造的产品是否能利用新的设计软件来完成任务。电子设计自动化工具也被用来使设计功的能集成到一个类似的现场可编程门阵列逻辑的半定制的可编程逻辑器件,或者生产全定制的ASIC。大连东软信息学院毕业设计(论文)第3章系统分析3.1功能需求既然要设计的是一个电子琴,那么首先就需要有一个人机互动的数据采集模块,让使用者可以对设计成品进行操作的一个终端。仅仅能输入还不行,还要一个能够将使用者操作的动态保存起来的一个地方,在需要的时候又能读取出来,保证能够实现自动演奏的功能;然后,需要一种方法,让电子琴能够发声,并且是发出特定频率声音的方法。最后,为了方便刚刚接触乐器的使用者更直观的知道电子琴发出的是什么声音,还要有一个能够注释当前发出的声音是哪个的显示器。3.2模块需求3.2.1输入 目前市场上能够买到的电子琴,多数按键用的都是由导电橡胶、弹簧和压力传感器焊接而成,所以起初本人设想使用简易的压力传感器作为设计目标,但经由网上调查发现,这种方法不仅个人难以实现成功焊接连线,而且最次质量的压力传感器价格也在50元人民币以上,8个按键就需要400元的价格,成本过于昂贵,成功率还没有保证,自然这个方法被淘汰了。而后想到FPGA实现开发板上带有许多按键,可以代替电子琴的按键,作为本设计的输入,所以决定用Verilog语言和FPGA开发板上的按键实现电子琴的琴键功能。3.2.2自动演奏功能想要实现自动演奏,首先要保证有一个存储功能,还要有一个可控的读取功能。思考后,有两套方案可简单的实现这两种方法。方案一:使用单片机内部的存储结构实现该功能。每个单片机自身就会有一定的存储空间,一部分单片机也会有RAM(可随机读写存储器),使用起来很方便。而且单片机价格并不贵,还能重复使用。方案二:使用虚拟的RAM存储数据并读取,实现自动播放功能。就是用Verilog硬件描述语言描述出一个RAM模块,让这串代码实现正常RAM的功能要求,这种设计方法并没有成本问题,使用的是FPGA板上的存储空间。比较方案一和方案二,两种方法都可以实现自动播放功能的基本需求,也都很容易实现,但方案一作为电子琴的存储有一点瑕疵,就是单片机的存储空间问题。单片机自身的存储空间并不大,通常都是几十KB左右,鲜有到1M空间的,难以扩充大小,而方案二中,因为用的是虚拟的RAM,空间大小可以根据用户需求修改,只要外界的存储空间够大,虚拟RAM可以调整到任意大小。所以最后我决定决定使用Verilog语言描述出一个虚拟的RAM,在FPGA板存储单元中预留出想要的大小。3.2.3发声一个电子琴最终的目的肯定是出声,而对于声音的理解,我们知道是由于振动发出的。市场上的正规音频合成器肯定是不能纳入方案,因为复杂程度已经超出我所能达到的范围。所以我需要一种便宜、实用,而且简单易行的方法实现最后的发声。在我们使用的FPGA开发板上,一般都会带有蜂鸣器或者扬声器的装置,我们可以利用这一便利条件实现发声。3.2.4音符显示因为不是每个人都能听出电子琴发出的声音是哪个音符,很多刚接触音乐的人不能分辨出自己按下的是什么键,所以我需要设计一个让所有人能看出来的“声音”,就是显示当前音符的显示器。他需要实时准确的显示出发出声音的是那个音符,直观的告知使用者。3.3系统开发环境软件环境:ModelSim/QuartusII。开发语言:Verilog硬件描述语言。3.4系统任务的可行性分析技术可行性分析:本设计主要在FPGA(现场可编程逻辑器件)开发板上设计实现,FPGA是近几年来各大电子行业潮流选择,也是今后的发展趋势。它简单方便,成本低廉,可实现功能强大。各个FPGA的开发厂商们不仅想要制作更高效、更便捷迅速的产品,还致力于让产品价格更低廉,受众面更广泛,让消费者们接受。从各方面来看,FPGA开发板用来做本设计的电子琴是再好不过的选择。整个电子琴的设计语言都是Verilog硬件描述语言。Verilog语言是1983年出现的,照现在看虽并不是很前卫的硬件语言,但是它旺盛的生命力使他到现在都依然在各种电子器件中运行,尤其是民间个人使用,更是频繁。而它经久不衰的要点就是它准确快速,相对易学,使用也简单。作为本设计的使用语言,它足以实现各模块的功能需求。设计整体完全不需要其他硬件外设支持,仅用FPGA开发板即可实现,在成本上必须多其它方法更加廉价,也更加便捷。从市场方面看,电子琴在现在早已不是什么新鲜玩意儿,经过不断的改进,很多音乐爱好者已经用便宜的电子琴取代昂贵的钢琴,而且很多电子琴还能发出不同乐器的声音,一琴多用;不仅如此,我们还经常能看见许多家长买玩具店中各式各样的玩具电子琴送给自己的孩子,而价格通常在20-100不等,十分廉价,所以本设计不仅可以提供给专业音乐爱好者使用演奏,也可以制作成孩童的幼儿玩具,市场营销范围广泛。 第4章系统设计4.1设计思想先查询并计算各音符对应频率,生成查询表,将其存入某个模块中备用,提供对照功能。当用户按下某一按键,该键位立即激活并发出特定的信号,接收模块根据指定按键激活并从查询表中提取出对应音符频率。将接入时钟进行多次分频,得到与查询表数据相近的音频,为了保证占空比,进行二分频,便于驱动喇叭。存储模块可读写、可擦除,在设计时可自定义存储空间大小,并且工作时可进行手动播放/自动播放模式切换。4.2设计模块根据第三章中需求所得出的各个模块,将各模块按信号流动顺序连接,并加入时钟、复位等必须的信号,最后在FPGA中实现全部功能。根据以上要求,可绘成如图4.1的整体设计结构设计框图。图4.1设计框图4.2.1按键输入模块图4.2按键模块 按键输入模块实质上就是模仿真实琴键的输入;当用户按下一个键位后,key接口接收并对其产生反应,en信号转高电平为确认手动模式下当前有键按下,从index口输出对应按键的音频信息告知后续模块的工作需求。如图4.2所示。因为电子琴所需音调数量并不多,所以可以用case语句很容易的实现出来。4.2.2自动演奏模块图4.3自动演奏模块为了实现可以读出和写入的存储功能,该模块需要一个RAM,QuartusII中可以直接调取该基础模块,另外还需要一个小的选择(Choose)模块辅助实现,为的是可以实现手动播放/自动播放功能。外界开关会给出一个save信号;当save信号为高电位时,证明当前为手动模式,en信号高电位时,RAM存储index输入的信息,并由index_out输出给Choose,Choose会选择index1作为输出信号。当save信号为低电位时,证明当前为自动播放模式,RAM提取已存储的信息并输出,模拟上一次手动按键。clk为存入时所用的1MHZ时钟,而读取时为了避免太快听不清或形成不了节奏,所以用的是clk四分频后的clk4。如图4.3所示。4.2.3数控分频模块图4.4数控分频模块数控分频模块的作用是对基准脉冲clk分频,得到index中从中音do到高音do八个音符对应频率,形成波形信号,由beep口输出,如图4.4所示。该模块的语言描述中包含了以下进程。首先在模块内写一个各个音符频率的对照表,然后等按键信息来时使用对应项做分频对照,从clk得到1MHz的脉冲,然后按照对照项对1MHz的脉冲再次分频,得到的便是所对应音符的频率。4.2.4显示模块图4.5显示模块显示模块中使用了七位数码管器件用来显示当前发声的音符简谱,其模块图如图4.5所示。iDIG口接收当前准备播放的音符序号,然后根据序号给出七个高低电位驱动数码管的七个二极管发光,根据亮光的数码管告知当前的音符简谱。4.3系统的控制流程本系统上电后先判断是否为自动播放模式,如为手动模式,则从人为键入某一按键开始,按键模块识别出是哪一个键后给出按键信息和en信号,并将信息存储进RAM,然后继续传递至选择模块,选择模块根据save信号为高电平判断为手动模式后,送给数控分频模块进行音符分频,模拟出合适的波形输出,最后由扬声器播放声音。大连东软信息学院毕业设计(论文)第5章系统实现5.1模块拼接各模块都能实现其功能和要求后,将对应接口连接,加入clk、rst_n等必须的外界信号,形成整体系统,最后由beep_out实现预计的发声功能,连线后整体框图如图5.1~5.2所示。图5.1RTL系统框图(左)图5.2RTL系统框图(右)5.2系统控制流程图本文设计的电子琴整体设计构思,如图5.3流程图所示。图5.3信号流程图框图5.3主要模块关键代码展示5.3.1按键输入模块(key_solve)if(!rst_n)index<=0;当rst_n为非下降沿(上升沿)时,复位至0;elseif(en)case(key)16'b00000000_00000001:index<=0;16'b00000000_00000010:index<=1;16'b00000000_00000100:index<=2;16'b00000000_00001000:index<=3;16'b00000000_00010000:index<=4;16'b00000000_00100000:index<=5;16'b00000000_01000000:index<=6;16'b00000000_10000000:index<=7;16'b00000001_00000000:index<=8;16'b00000010_00000000:index<=9;16'b00000100_00000000:index<=10;16'b00001000_00000000:index<=11;16'b00010000_00000000:index<=12;16'b00100000_00000000:index<=13;16'b01000000_00000000:index<=14;16'b10000000_00000000:index<=15;endcase当en有效(有键按下)时(十六位二进制,一位代表一个按键,共16个按键,低音5、6两个,中音七个,高音七个),根据高电平位置给出对应按键编号0~15。5.3.2自动演奏模块(store&Choose)assignindex_out=(save)?index1:index2;选择模块根据save信号选择使用两条线路的哪一条,高电平选index1(手动模式信息),低电平选index2(自动播放模式信息)。5.3.3数控分频模块(tone)always@(posedgeclk)if(clk_cnt>=cnt)beginclk_cnt<=0;clk_f<=!clk_f;endelseclk_cnt<=clk_cnt+1;assignbeep=clk_f;一开始该模块会有一个对照表,根据按键把对照表的音符频率赋予cnt,然后clk_cnt不断+1,并与cnt比较,直到clk_cnt大于等于cnt时,clk_f会反转一次,clk_f不断反转便会形成对应频率的波形脉冲。5.3.4显示模块(SEG7_LUT)always@(iDIG)begin case(iDIG) 4'h1:oSEG=7'b1111001; 4'h2:oSEG=7'b0100100; 4'h3:oSEG=7'b0110000; 4'h4:oSEG=7'b0011001; 4'h5:oSEG=7'b0010010; 4'h6:oSEG=7'b0000010; 4'h7:oSEG=7'b1111000; 4'h8:oSEG=7'b0000000; 4'h9:oSEG=7'b0011000; 4'ha:oSEG=7'b0001000; 4'hb:oSEG=7'b0000011; 4'hc:oSEG=7'b1000110; 4'hd:oSEG=7'b0100001; 4'he:oSEG=7'b0000110; 4'hf:oSEG=7'b0001110; 4'h0:oSEG=7'b1000000; endcase显示模块使用的是七位数码管,所以根据iDIG所给信息,分别给高低电位,只激活特定位置二极管,让亮起的二极管形成数字,供使用者观看。5.4各模块仿真波形图本系统仿真图均由QuartuasII中自带的Modelsim仿真功能仿真出图,仿真结果显示各模块工作正常,都可以实现预期要求的功能,仿真图如下各图所示:5.4.1按键模块图5.4按键模块仿真图从图5.4中可看出,当按下某一按键后,对应按键变为高电平,且en信号给出一个脉冲,证明该模块有效。5.4.2自动播放模块图5.5存储模块仿真图图5.6选择模块仿真图由图5.5可以看出,index给出某个信号且en&save有效时,index_out给出对应信号,证明该模块工作正常。而从图5.6可以看出,当save低电平(自动模式)时,index_out放入的时index2(自动播放数据)中的数据,当save转为高电平时,index_out开始放入index1(手动数据)的数据。5.4.3数控分频模块图5.7数控分频模块仿真图由图5.7可看出,当按下中音fa(index对照表为5号)时,beep可产生对应的有规律的波形,说明该模块工作正常,可以使用。5.4.4显示模块图5.8显示模块仿真图由图5.8可以看出,当iDIG口收到不同信号时,数码管依照预定规律显示高电平,证明显示模块也可以使用。总结:由以上各图及说明可以证明,本设计中各模块均能依照预计功能正常工作,由此可见本设计在仿真级别上已经成功。大连东软信息学院毕业设计(论文)第6章系统测试6.1测试方案拟定先将代码下载到FPGA开发板中,正确连线,按下复位键,将手动/自动开关切换到手动模式,准备按键测试。依次按下键位,听喇叭是否出声,并分辨是否是按键时的顺序发声,观察数码管是否正确显示音符简谱信息。通过后,再次复位,切换到手动模式,按随意顺序按下键位,让RAM存储信息,准备测试自动播放模式。将手动/自动开关切换到自动播放模式,测试喇叭是否发声,且与上次输入的音符顺序相同,观察七位数码管显示,是否与上次按键相同。如果以上测试均成功,证明本设计成功,通过测试。6.2测试结果先将电脑与FPGA开发板正确连线,下载正常,按下复位键,切换到手动模式,然后依次按下中音do到高音do,发现FPGA连接的喇叭发出声音,且是按中音do到高音do的顺序发声,数码管也依次准确亮起,如图6.1按键测试图所示。重新复位,然后选取按下中音区的2、4、6、按键,将开关切换到自动播放模式,听到喇叭发出准确声音,且数码管也准确显示了数字,如图6.2自动播放测试图所示。图6.1按键测试图图6.2自动播放测试图6.3最终结论从测试结果可以看出,本设计整体工作一切正常,可现实简谱,按键有效,可正常发声,各项均达到预期要求功能,证明本电子琴设计已成功。大连东软信息学院毕业设计(论文)第7章结论目前中国的歌曲个人创作正在蓬勃发展,网络歌曲层出不穷,除了吉他,小提琴等常见乐器,更多的人开始使用电子琴的各种便利功能,便宜的价格及功能的强大是其他乐器无法比拟的,成为许多音乐爱好者的首选乐器。越来越多的音响厂家添加了支持电子琴的输入接口,也能证明电子琴是目前音乐界乐器宠儿。本设计的八音电子琴经过各种设计、测试、修改,已成功发声,达到预期设计要求,并且可以很简单的将八音扩展升级为十六音(包括中音、高音和低音的两个音阶),也已通过测试,证明可以正常使用。本设计中主要使用QuartusII进行代码编写、检错、调试,并用其自带的Modelsim软件进行波形仿真,检测无误后下板调试。最终形成一个可切换手动/自动播放模式控制,能显示发声音符简谱的模拟电子琴。设计电子琴的初期因为过于纠结存储功能的实现,浪费了很长一段时间,最后通过同学的开导才得以解决,最终才有了这一套完整的方案。这套方案的设计难点在于自动演奏模块的连接位置,以及如何保持持续按键时候的连续发声,解决这两方面后,其余的就是各种音符的基本分频操作。当然本电子琴设计也存在一定遗憾。最大的遗憾就是发出的声音并没有真的琴那种颤音、渐弱以及音色,仅仅是FPGA的一个单调的频率的声音。这方面的知识在同学的帮助下找到了几种相关算法,编写时也添加过这些方法想要实现功能,但是最后由于各种原因并没有能够实现,所以没有加入该设计,这方面有待以后加以改进。总而言之,我已成功利用Verilog硬件描述语言实现了一个可自动演奏,键入发声的电子琴功能,再经过综合仿真,下载调试,最终
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 老人平台应急预案(3篇)
- 药物过量应急预案流程(3篇)
- 装修延期更换施工方案(3篇)
- 车辆重复维修应急预案(3篇)
- 配送公司配送应急预案(3篇)
- 阜阳顶管施工方案(3篇)
- 隧道施工方案在哪看(3篇)
- 餐饮新店营销活动方案(3篇)
- 血管介入治疗后的注意事项
- 2026-2031年中国音像行业市场调查研究及发展前景预测报告
- 丙肝防治培训课件
- 2025年中级通信工程师互联网技术真题及答案
- 2025年尾矿库防汛演练脚本
- 睾丸下降不全课件
- 正颌外科手术护理查房
- 社保考试题库及答案
- 购买土葬地协议书
- 运营部总监KPI考核
- 《PLC应用项目工单实践教程》课件 模块1 S7-1500 PLC初步使用
- 政协提案答复格式及范文
- 2024年员工薪酬调整补充协议
评论
0/150
提交评论