毕业设计说明书电子琴.docx

上传人:b****8 文档编号:29211800 上传时间:2023-07-21 格式:DOCX 页数:48 大小:294.90KB
下载 相关 举报
毕业设计说明书电子琴.docx_第1页
第1页 / 共48页
毕业设计说明书电子琴.docx_第2页
第2页 / 共48页
毕业设计说明书电子琴.docx_第3页
第3页 / 共48页
毕业设计说明书电子琴.docx_第4页
第4页 / 共48页
毕业设计说明书电子琴.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

毕业设计说明书电子琴.docx

《毕业设计说明书电子琴.docx》由会员分享,可在线阅读,更多相关《毕业设计说明书电子琴.docx(48页珍藏版)》请在冰豆网上搜索。

毕业设计说明书电子琴.docx

毕业设计说明书电子琴

 

2012届毕业设计说明书

基于CPLD的电子琴设计

系、部:

电气与信息工程系

学生姓名:

吴灵敏

指导教师:

陈华容职称高级工程师

专业:

电子信息工程技术

班级:

电信0901

学号:

09400230136

完成时间:

2012年5月

 

摘要

 

随着基于CPLD的EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制用计算机等领域的重要性日益突出。

作为一个学电子信息专业的学生,我们必须不断地了解更多的新产品信息,这就更加要求我们对EDA有个全面的认识。

本系统是采用EDA技术设计,基于CPLD芯片设计的一个简易的八音符电子琴。

该电子琴的设计大体可以由三个模块构成,分别是电子琴发声模块、存储器模块和选择控制模块。

用硬件描述语言VHDL编程可以实现各个模块的功能。

能实现弹琴和演奏的功能,可以存储任意一段音乐,并且可以即时的播放出来。

在设计过程中用MAX+PLUS平台,对各模块进行仿真验证,本系统的功能比较齐全,有一定的现实使用的价值。

系统实现是用硬件描述语言VHDL按照模块化方式进行设计,然后进行编程、时序仿真、总体整合。

本文中介绍了电子琴系统的整体的设计,并基于VHDL在相关的芯片上编程实现的

 

关键字

电子琴;EDA;VHDL;音调发生;CPLD;

 

Abstract

WiththetechnologybasedonCPLDEDAdevelopmentandapplicationdomainexpansionandin-depth,EDAtechnologyintheelectronicinformation,communication,automaticcontrolcomputerinthefieldsofgrowingimportance.Asastudyelectronicinformationprofessionalstudents,wemustcontinuetolearnmorenewproductsinformation,itismorerequireustohaveacomprehensiveunderstandingoftheEDA.ThissystemistouseEDAtechnologydesign,basedonCPLDchipdesignofasimpleeightnoteselectronicorgan.Thiskeyboarddesigngeneralcanbemadebythreemodules,whicharerespectivelythekeyboards,memorymoduleandvoicemoduleselectioncontrolmodule.UsehardwaredescriptionlanguageprogrammingcanrealizeVHDLthefunctionofeachmoduleof.Canrealizethefunctionoftheharpandplay,canstoreanyamusic,andcanbeinstantplayout.InthedesignprocesswithMAX+PLUSplatform,ineachmoduleofthesimulationvalidation,thefunctionofthissystemiscomplete,hascertainpracticalusevalue.SystemistousehardwaredescriptionlanguageVHDLmodulardesignaccordingtotheway,thentheprogramming,timingsimulation,overallintegration.Thispaperintroducesthedesignofthesystem'soverallkeyboards,andbasedonthechipintherelevantVHDLfortheprogramming

 

Keyword:

Electronicmusicalinstrument;EDA;VHDL;CPLD

 

1.EDA概述

 

随着EDA技术的进展,基于可编程ASIC的数字电子系统设计的完整方案越来越受到人们的重视,并且以EDA技术为核心的能在可编程ASIC上进行系统芯片集成的新设计方法,也正在快速地取代基于PCB板的传统设计方式。

EDA技术是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。

它是以计算机为工具,根据硬件描述语言HDL完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。

典型的EDA工具中必须包含两个特殊的软件包,综合器和适配器。

综合器的功能就是将设计者在EDA平台上完成的针对某个系统项目的HDL、原理图或状态图形描述,针对给定的硬件系统组件,进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。

综合器在工作前,必须给定所要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。

也就是说,综合器是软件描述与硬件实现的一座桥梁。

综合过程就是将电路的高级语言描述转换低级的、可与目标器件FPGA/CPLD相映射的网表文件。

适配器的功能是将由综合器产生的王表文件配置与指定的目标器件中,产生最终的下载文件,如JED文件。

适配所选定的目标器件(FPGA/CPLD芯片)必须属于在综合器中已指定的目标器件系列。

硬件描述语言HDL是相对于一般的计算机软件语言,如:

C、PASCAL而言的。

HDL语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。

设计者可利用HDL程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程能控制FPGA和CPLD内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件或下载文件。

目前,就FPGA/CPLD开发来说,比较常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL。

在信息通信领域,要优先发展高速宽带信息网、深亚微米集成电路、新型元器件、计算机及软件技术、第三代移动通信技术、信息管理、信息安全技术,积极开拓以数字技术、网络技术为基础的新一代信息产品,发展新兴产业,培育新的经济增长点。

要大力推进制造业信息化,积极开展计算机辅助设计(CAD)、计算机辅助工程(CAE)、计算机辅助工艺(CAPP)、计算机机辅助制造(CAM)、产品数据管理(PDM)、制造资源计划(MRPII)及企业资源管理(ERP)等。

有条件的企业可开展“网络制造”,便于合作设计、合作制造,参与国内和国际竞争。

开展“数控化”工程和“数字化”工程。

自动化仪表的技术发展趋势的测试技术、控制技术与计算机技术、通信技术进一步融合,形成测量、控制、通信与计算机(M3C)结构。

在ASIC和PLD设计方面,向超高速、高密度、低功耗、低电压方向发展。

VHDL语言是一种用于电路设计的高级语言。

它在80年代的后期出现。

最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。

但是,由于它在一定程度上满足了当时的设计需求,于是他在1987年成为ANSI/IEEE的标准(IEEESTD1076-1987)。

1993年更进一步修订,变得更加完备,成为ANSI/IEEE的ANSI/IEEESTD1076-1993标准。

目前,大多数的CAD厂商出品的EDA软件都兼容了这种标准。

 

2系统设计

 

2.1系统设计的总体概述

本设计的指导思想是利用EDA技术,采用VHDL语言编程、对FPGA进行配置来实现电子琴的功能,可以利用FPGA的内部存储单元的开发来实现电子琴的曲谱存储和演奏。

采用分频的方法输出不同音符的信号。

系统主要由自动演奏及键盘编码模块(AUTOMUSIC)、音符产生模块(TONE)、声音输出控制模块(SPEAKER)组成。

EDA代表了当今电子设计技术的最新发展方向,它的基本特征是:

设计人员按照"自顶,向下"的设计方法,对整个系统进行方案设计和功能划分,而VHDL语言不仅具有良好的电路行为描述和系统描述能力而且更加通俗易懂。

采用FPGA技术,还可以获得高性能,满足成本要求,并享有快速有效地对新设计进行优化的灵活性。

本设计系统的关键电路是用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(VHDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件。

该系统基于可编程逻辑器件FPGA(FieldProgrammableLogicalDevice)芯片,利用VHDL硬件描述语言设计系统核心部件,再配以适当的外围电路,可从琴键上进行演奏也可自动进行乐曲演奏,可模拟传统乐器笛、风琴、小号、单簧、双簧等音色。

该电子琴共有12个琴键(7个白色琴键,5个黑色琴键),分高音、中音、低音三个音区,演奏时音名可动态显示。

2.2总体方案设计

设计要求电子琴共有12个琴键,分高音、中音、低音三个音区,演奏时音名动态显示。

该系统基于可编程逻辑器件FPGA芯片,以VHDL硬件描述语言设计系统核心部件,配以适当的外围电路来实现从琴键上进行演奏和自动进行乐曲演奏的功能。

主系统图如图2.2所示。

整体电路由自动演奏及键盘编码模块(AUTOMUSIC)、音符产生模块(TONE)和声音输出控制模块(SPEAKER)三大模块以及外围电路(基准频率产生器,音色发生器,功率放大器,扬声器,发光二极管,数码管及各类开关按键)组成。

首先通过AUTOMUSIC模块选择自动演奏或是键盘编码模式,TONE模块根据手动按键所发音音符的分频预置数和由基准频率产生器产生6MHZ的基准频率,输出相应的周期数,供SPEAKER模块对从CLK端输入一个信号进行三次分频后产生脉冲。

然后通过音色产生器,使在发同一音符时的波形频谱和包络特性的变化,从而模拟出不同传统乐器的音乐。

最后通过功率放大器,将其产生的音乐信号进行放大,就产生了我们从扬声器中听到的乐曲。

自动演奏及键盘编码模块分为两部分:

键盘输入编码及乐曲自动演奏。

在此模块中,为了实现手动弹奏和自动演奏之间的切换,要设计一个选择开关。

当控制开关auto为0时,由存储在此模块中的12位二进制数作为发声控制输入,可自动演奏乐曲。

当auto为1时。

则由图左侧琴键控制发音。

当按下高音,则代表高音的发光二极管亮起。

同时。

数码管显示所按琴键代表的数值。

这样为增强所设计的电子琴的功能(即能实现手动弹奏和自动演奏)奠定了基础;音符产生模块(TONE)的作用是产生各音符的分频预置值根据用户的键入,输出相应的周期数供SPEAKER产生脉冲。

声音输出控制模块是一个可预置的数控分频器,用来获得各个音符频率的两倍频率。

它的CLK端输入一个信号,通过SPEAKER分频后再音调输出时在进行二分频,将脉冲展宽由SPKOUT输出。

 

3乐理知识

 

音频就是一个专业术语,人们能够听到的所有的声音都可以称之为音频,它可能包括处理;如果把它制作成CD,这时候所有的声音都不会有改变了,因为CD本来就是音频文件的一个种类。

音频只是储存在计算机里的声音,如果现在有一台计算机再加上相应的音频卡——就是我们说的声卡,这样一来我们把我们想放的声音录制下了,声音的声学特性像是音的高低是可以用计算机硬盘文件的方式把它们储存下来的;反过来,我们也可以把储存在计算机硬盘文件的音频文件用一定的音频程序播放,还原以前录下的声音。

3.1音频的数字化处理

  随着计算机科学技术的发展,特别是海量存储设备和大容量内存在PC机上的运用,对音频进行数字化处理便成为了可能了。

数字化处理的核心就是对音频信息的采样,通过对采集到的样本数据进行处理,得到所需要的相应数据,这是音频数字化处理的基本含义。

不同采样率、频率、通道数之间的变换和转换。

而变换就是信息的一种格式转化成可利用的格式,转化就离不开采样了,有时候还要根据精确度的需要采用一些算法(如插值)以补偿转化中的失真现象。

现在有淡入、淡出、音量调节等方法是针对音频数据本身进行的各种变换的。

而高通、低通滤波器是通过数字滤波算法进行的变换。

音乐产生原理及硬件设计由于一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。

本次设计中单片机晶振为12MHZ,那么定时器的计数周期为1MHZ,假如选择工作方式1,那T值便为T=216--5﹡105/相应的频率,那么根据不同的频率计算出应该赋给定时器的计数值。

那么根据不同的频率计算出应该赋给定时器的计数值,列出不同音符与单片机计数T0相关的计数值如下表所示:

 

图2同音符与单片机计数T0相关的计数值

音符频率(HZ)简谱码(T值)

中1DO52364580

中2RE58764684

中3M65964777

中4FA69864820

中5SO78464898

中6LA88064968

中7SI98865030

采用查表程序进行查表时,可以为这个音符建立一个表格,有助于通过查表的方式来获得相应的数据:

TABLEDW64580,64684,64777,64820,64898,64968,65030

长期以来,计算机的研究者们一直低估了声音对人类在信息处理中的作用。

当虚拟技术不断发展之时,人们就不再满足单调平面的声音,而更催向于具有空间感的三维声音效果。

听觉通道可以与视觉通道同时工作,所以声音的三维化处理不仅可以表达出声音的空间信息,而且与视觉信息的多通道的结合可以创造出极为逼真的虚拟空间,这在未来的多媒体系统中是极为重要的。

这也是在媒体处理方面的重要措施。

 人类感知声源的位置的最基本的理论是双工理论,这种理论基于两种因素:

两耳间声音的到达时间差和两耳间声音的强度差。

时间差是由于距离的原因造成,当声音从正面传来,距离相等,所以没有时间差,但若偏右三度则到达右耳的时间就要比左耳约少三十微秒,而正是这三十微秒,使得我们辨别出了声源的位置。

强度差是由于信号的衰减造成,信号的衰减是因为距离而自然产生的,或是因为人的头部遮挡,使声音衰减,产生了强度的差别,使得靠近声源一侧的耳朵听到的声音强度要大于另一耳。

  基于双工理论,同样地,只要把一个普通的双声道音频在两个声道之间进行相互混合,便可以使普通双声道声音听起来具有三维音场的效果。

这涉及到以下有关音场的两个概念:

音场的宽度和深度。

音场的宽度利用时间差的原理完成,由于现在是对普通立体声音频进行扩展,所以音源的位置始终在音场的中间不变,这样就简化了我们的工作。

要处理的就只有把两个声道的声音进行适当的延时和强度减弱后相互混合。

由于这样的扩展是有局限性的,即延时不能太长,否则就会变为回音。

音场的深度利用强度差的原理完成,具体的表现形式是回声.音场越深,则回音的延时就越长.所以在回音的设置中应至少提供三个参数:

回音的衰减率、回音的深度和回音之间的延时。

同时,还应该提供用于设置另一通道混进来的声音深度的多少的选项。

音频是个专业术语,人类能够听到的所有声音都称之为音频,它可能包括噪音等。

声音被录制下来以后,无论是说话声、歌声、乐器都可以通过数字音乐软件处理,或是把它制作成CD,这时候所有的声音没有改变,因为CD本来就是音频文件的一种类型。

而音频只是储存在计算机里的声音。

如果有计算机再加上相应的音频卡——就是我们经常说的声卡,我们可以把所有的声音录制下来,声音的声学特性如音的高低等都可以用计算机硬盘文件的方式储存下来。

反过来,我们也可以把储存下来的音频文件用一定的音频程序播放,还原以前录下的声音。

 

3.2节拍及音符

在音乐中,时间被分成均等的基本单位,每个单位叫做一个“拍子”或称一拍。

拍子的时值是以音符的时值来表示的,一拍的时值可以是四分音符(即以四分音符为一拍),也可以是二分音符(以二分音符为一拍)或八分音符(以八分音符为一拍)。

拍子的时值是一个相对的时间概念,比如当乐曲的规定速度为每分钟60拍时,每拍占用的时间是一秒,半拍是二分之一秒;当规定速度为每分钟120拍时,每拍的时间是半秒,半拍就是四分之一秒,依此类推。

拍子的基本时值确定之后,各种时值的音符就与拍子联系在一起。

例如,当以四分音符为一拍时,一个全音符相当于四拍,一个二分音符相当于两拍,八分音符相当于半拍,十六分音符相当于四分之一拍;如果以八分音符做为一拍,则全音符相当于八拍,二分音符是四拍,四分音符是两拍,十六分音符是半拍。

小节中强拍和弱拍的循环称2拍子;强拍、弱拍、弱拍循环的称3拍子。

表示每小节中基本单位拍的时值和数量的记号,称拍号。

拍号的上方数字表示每小节的拍数,下方数字表示每拍的时值。

例如,2/4表示以4分音符为1拍,每小节有2拍。

拍号中时值的实际时间,应视乐曲所标速度而定。

例如快速度2/2中的2分音符就可能比慢速度4/4中的4分音符占时更短,因此不能视为3/4比3/2快,3/8比3/4更快。

每小节只有一个强拍的叫做单拍子,如2/4、2/8是单2拍子,3/4、3/8是单3拍子。

每小节有一个强拍并有次强拍的叫做复拍子,因为它可被看作是单拍子的组合,如4/4、6/8是复2拍子,9/8、9/16是复3拍子。

还有另一种划分单、复拍子的方法,即:

每拍是单音符(如□或□)的叫做单拍子。

每拍是附点音符(如□.或□.)的叫做复拍子。

根据这种拍子划分法,4/2、4/4、4/8等是单4拍子,12/4、12/8、12/16等是复4拍子。

单位拍时值相同而拍数不同的单拍子组合在一小节内,叫做混合拍子。

常见的有:

5拍子(如5/4是由2/4+3/4或3/4+2/4组合而成)和7拍子(如7/8是由2/8+2/8+3/8或2/8+3/8+2/8或3/8+2/8+2/8组合而成等)。

不能把每小节包含两个3拍子和一个2拍子的8拍子(如8/8是由2+3+3/8或3+2+2/8或□组合而成)和每小节由两个4拍子组成的复拍子相混淆。

在计算机术语中,一个CPU时钟周期也成为节拍。

在运营管理理论中,节拍是指在一个工作站上完成相邻两个产品的实际时间,又可称之为产品间隔时间.

音符们各有不同,不同的音符代表不同的长度。

音符有以下几种:

全音符:

没有符干和符尾的空心的白色音符叫“全音符”。

它是音符家族的老大哥,其他音符的时值都比它短,而且要以它为准。

依次分为两半。

二分音符:

带有符干、没有符尾的白色音符叫“二分音符”。

它只有全音符的一半长,等于全音符1/2的时值;

四分音符:

带有符干、没有符尾的黑色音符叫“四分音符”。

它比二分音符又小一半,等于全音符1/4的时值;

八分音符:

带有符干和1条符尾的黑色音符叫“八分音符”。

它比四分音符还小一半,等于全音符1/8的时值;

十六分音符:

带有符干和2条符尾的黑色音符叫“十六分音符”。

它比八分音符还小一半,等于全音符1/16的时值;

三十二分音符:

带有符干和3条符尾的黑色音符叫“三十二分音符”。

它比十六分音符小一半,等于全音符1/32的时值;

六十四分音符:

带有符干4条符尾的黑色音符叫“六十四分音符”。

它比三十二分音符小一半,等于全音符1/64的时值。

音名与频率的关系:

音乐的十二平均率规定:

每两个八度音(如简谱中的中音1与高音1)之间的频率相差一倍。

在两个八度音之间,又可分为十二个半音,每两个半音的频率比为。

另外,音名A(简谱中的低音6)的频率为440Hz,音名B到C之间、E到F之间为半音,其余为全音。

由此可以计算出简谱中从低音1至高音1之间每个音名的频率,如表5所示。

由于音阶频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。

若基准频率过低,则由于分频系数过小,四舍五入取整后的误差较大。

若基准频率过高,虽然误码差变小,但分频结构将变大。

实际的设计应综合考虑两方面的因素,在尽量减小频率误差的前提下取合适的基准频率。

本实验中选取5MHZ的基准频率。

若无5MHz的时钟频率,则可以先分频得到4MHz或换一个新的基准频率。

实际上,只要各个音名间的相对频率关系不变,C作1与D作1演奏出的音乐昕起来都不会“走调”。

3.3程序设计的流程图

 

 

图3程序设计的流程图

3.3自动演奏及键盘编码模块端口介绍及程序

该模块程序中clk接基准频率产生器,输入系统的基准频率6MHZ;auto为键盘输入演奏与自动演奏的切换开关,当auto=“0”时,选择音乐存储器里的乐曲,自动演奏;auto=“1”时,选择键盘输入的信号,从琴键上演奏。

high2,med2,low2分别接键盘上高、中、低音的控制开关,与之对应的有三个分别代表高、低、中音的发光二极管。

分别显示所按键的形式。

Index2[0]~Index2[11]分别接键盘上的十二个琴键(7个白色琴键,5个黑色琴键),HIGH0,med0,low0分别表示输出音调的音区信息(分别对应高音、中音、低音区);Index0[0]~Index0[11]为输出琴键编码或音乐存储器里的乐曲的音符编码。

(1)端口介绍如

Med2:

键盘上中音控制开关

Low2:

键盘上低音控制开关

High2:

键盘上高音控制开关

Clk:

系统输入时钟

Auto:

自动演奏与琴键控制键:

当Auto为1时,琴键演奏;当Auto为0时,自动演奏

Med0:

输出音调的中音区信息

Low0:

输出音调的低音区信息

High0:

输出音调的高音区信息

Index2:

键盘琴键

Index0:

输出琴键编码或音乐存储器里的乐曲的音符编码

(2)自动演奏程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_arith.all;

USEIEEE.STD_LOGIC_unsigned.all;

ENTITYautomusicIS

PORT(clk,auto:

INSTD_LOGIC;--系统时钟;键盘输入/自动演奏

Index2:

INSTD_LOGIC_VECTOR(11DOWNTO0);

high2:

INSTD_LOGIC;

med2:

INSTD_LOGIC;

low2:

INSTD_LOGIC;

HIGH0:

OUTSTD_LOGIC;

med0:

OUTSTD_LOGIC;

low0:

OUTSTD_LOGIC;

Index0:

OUTSTD_LOGIC_VECTOR(11DOWNTO0));

END;

ARCHITECTUREbehaveOFautomusicIS

signalcount0:

integerrange0to11;

signalclk2,clk3:

STD_LOGIC;

BEGIN

p01:

process(clk)-

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1