ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:335.33KB ,
资源ID:19960988      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19960988.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(硬件乐曲自动演奏电路设计要点Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

硬件乐曲自动演奏电路设计要点Word文件下载.docx

1、4.4乐曲硬件演奏电路顶层电路的设计和仿真 215实验总结与心得 246参考文献 25前 言乐曲演奏广泛用于自动答录装置、手机铃声、集团电话、及智能仪器仪表设备。实现方法有许多种,随着FPGA集成度的提高,价格下降,EDA设计工具更新换代,功能日益普及与流行,使这种方案的应用越来越多。如今的数字逻辑设计者面临日益缩短的上市时间的压力,不得不进行上万门的设计,同时设计者不允许以牺牲硅的效率达到保持结构的独特性。使用现今的EDA软件工具来应付这些问题,并不是一件简单的事情。FPGA预装了很多已构造好的参数化库单元LPM器件。通过引入支持LPM的EDA软件工具,设计者可以设计出结构独立而且硅片的使用

2、效率非常高的产品。本课设在EDA开发平台上利用VHDL语言设计数控分频器电路,利用数控分频的原理设计乐曲硬件演奏电路,以“欢乐颂”乐曲为例,将音乐数据存储到音乐节拍器中,就达到了以纯硬件的手段来实现乐曲的演奏效果。只要修改音乐节拍器所存储的音乐数据,将其换成其他乐曲的音乐数据,连接到程序中就可以实现其它乐曲的演奏。关键词:FPGA;EDA;VHDL;音乐乐曲硬件演奏电路EDA设计1设计要求利用可编程逻辑器件FPGA,设计一个乐曲硬件演奏电路。由键盘输入控制音响,同时可自动演奏乐曲。演奏时可选择键盘输入乐曲或者已存入的乐曲,并配以一个小扬声器。其结构如图所示,该设计产生的音乐选自欢乐颂片段。图2

3、.1乐曲演奏电路结构方框图2设计方案利用FPGA来实现乐曲硬件演奏电路。乐曲的12平均率规定:每2个八度(如简谱中的中音1与高音1)之间的频率相差1倍。在2个八度音之间,又可分为12个半音,每2个半音的频率比为12/2。另外,音符A的频率为440HZ,音符B到C之间,E到F之间为半音,其余为全音。由此可以计算出简谱中从低音l至高音1之间每个音符的频率。设计音符查找表电路模块,时钟模块,数控分频器模块,音乐节拍产生模块电路。3原理描述产生音乐的两个因素是音乐频率和音乐的持续时间(即音高和节拍),以纯硬件完成演奏电路比利用微处理器(CPU)来实现乐曲演奏要复杂的多如果不借助于功能强大的EDA工具和

4、硬件描述语言,凭借传统的数字逻辑技术,即使最简单的演奏电路也难以实现。根据设计要求,乐曲硬件演奏电路系统主要由数控分频器和乐曲存储模块组成。数控分频器对FPGA的基准频率进行分频,得到与各个音阶对应的频率输出。乐曲存储模块产生节拍控制和音阶选择信号,即在此模块中可存放一个乐曲曲谱真值表,由一个计数器来控制此真值表的输出,而由计数器的计数时钟信号作为乐曲节拍控制信号。3.1 音名与频率的关系音乐的十二平均率规定:每两个八度音(如简谱中的中音与高音)之间的频率相差一倍在两个八度音之间,又可分为十二个半音,每两个半音的频率比为4。另外,音名(简谱中的低音)的频率为440Hz,音名B到C之间,E到F之

5、间为半音,其余为全音,由此可以计算出简谱中从低音1到高音1之间每个音名的频率如下表所示.表3-1简谱中的音名与频率的关系音名频率/Hz低音1261.63中音1532.25高音11046.50低音2293.67中音2587.33高音21174.66低音3329.63中音3659.25高音31318.51低音4349.23中音4698.46高音41396.92低音5391.99中音5783.99高音51567.98低音6440中音6880高音61760低音7493.88中音7987.76高音71975.52由于音阶频率多为非整数,而分频系数又不能为小数,故必须将得到的分频数四舍五入取整。若基准频率

6、过低,则由于分频系数过小,四舍五入取整后的误差较大,若基准频率过高,虽然误码差变小,但分频结构将变大。实际的设计应综合考虑两方面的因素,在尽量减小频率误差的前提下取舍合适的基准频率。本设计中选取4MHz的基准频率,若无4MHz的时钟频率,实际上,只要各个音名间的相对品频率关系不变,C作1与D作1演奏出的音乐听起来都不会“走调”。各音阶频率及相应的分频系数如下表所示。为了减少输出的偶次谐波分量,最后输出到扬声器的波形应为对称方波,因此在到达扬声器之前,有一个二分频的分频器。由于最大的分频系数为7644,故采用13位二进制计数器已能满足分频要求。在下面表中除给出了分频比以外,给出了对应于各个音阶频

7、率时计数器不同的初始值,对于乐曲中的休止符,要将分频系数设为0,即初始值为8191即可,此时扬声器将不会发声。对于不同的分频系数,加载不同的初始值即可。用加载初始值而不是将分频输出译码反馈,可以有效地减少本设计占用可编程逻辑器件的资源,也是同步计数器的一个常用设计技巧。3.2 控制音长的节拍发生器该演奏电路演奏的乐曲是“欢乐颂”片段,其最小的节拍为1拍。将1拍的时长定为0.25秒,则只需要再提供一个4Hz的时钟频率即可产生1拍的时长,演奏的时间控制通过ROM查表的方式来完成。对于占用时间较长的节拍(一定是拍的整数倍),如全音符为4拍(重复4),2/4音符为2拍(重复2),1/4音符为1拍(重复

8、1)。要求演奏时能循环进行,因此需另外设置一个时长计数器,当乐曲演奏完成时,保证能自动从头开始演奏。该计数器控制真值表按顺序输出简谱。4乐曲硬件演奏电路的层次化设计方案根据层次化的设计思路,可把乐曲硬件演奏电路分为三个模块,音乐节拍发生器NoteTabs模块,音符译码电路Tonetaba模块,数控分频模块(speaker)。下面给出其EDA设计过程:4.1 音乐节拍发生器NoteTabs该模块将利用FPGA的片内ROM存放乐曲简谱真值表,由一个二进制计数器为乐曲数据存储器ROM的地址发生器。该计数器的计数频率为4Hz,即每一计数值的停留时间为0.25秒,随着NoteTaba中计数器按4Hz的时

9、钟频率作加法计数时,即随地址值递增时,乐曲数据ROM中的音符数据,将从ROM中的输出口输向音符译码电路Tonetaba,所存储乐曲就开始连续自然地演奏起来。二进制计数器的位数将根据所存放乐曲简谱基本节拍数来决定,对于乐曲“欢乐颂”片段其节拍数为138,即选择计数器的位数为8即可。其VHDL源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY NoteTabs IS PORT ( clk : IN STD_LOGIC; ToneIndex : OUT INTEGER RANGE 0 TO 15 );END;ARCHITECTURE one O

10、F NoteTabs IS SIGNAL Counter : INTEGER RANGE 0 TO 138;BEGIN CNT8 : PROCESS(clk) BEGIN IF Counter = 138 THEN Counter = 0; ELSIF (clkEVENT AND clk = 1) THEN Counter ToneIndex WHEN 02 = WHEN 03 = WHEN 04 = WHEN 05 = WHEN 06 = WHEN 07 = WHEN 08 = 11; WHEN 09 = WHEN 10 = WHEN 11 = WHEN 12 = 12; WHEN 13 =

11、 WHEN 14 = WHEN 15 = WHEN 16 = WHEN 17 = WHEN 18 = WHEN 19 = WHEN 20 = WHEN 21 = WHEN 22 = WHEN 23 = WHEN 24 = WHEN 25 = WHEN 26 = WHEN 27 = WHEN 28 = 9; WHEN 29 = WHEN 30 = WHEN 31 = WHEN 32 = 8; WHEN 33 = WHEN 34 = WHEN 35 = WHEN 36 = WHEN 37 = WHEN 38 = WHEN 39 = WHEN 40 = WHEN 41 = WHEN 42 = WHE

12、N 43 = WHEN 44 = WHEN 45 = WHEN 46 = WHEN 47 = WHEN 48 = WHEN 49 = WHEN 50 = WHEN 51 = WHEN 52 = WHEN 53 = WHEN 54 = WHEN 55 = WHEN 56 = WHEN 57 = WHEN 58 = WHEN 59 = WHEN 60 = WHEN 61 = WHEN 62 = WHEN 63 = WHEN 64 = WHEN 65 = WHEN 66 = WHEN 67 = WHEN 68 = WHEN 69 = WHEN 70 = WHEN 71 = WHEN 72 = WHE

13、N 73 = WHEN 74 = WHEN 75 = WHEN 76 = WHEN 77= WHEN 78 = WHEN 79 = WHEN 80 = WHEN 81 = WHEN 82 = WHEN 83 = WHEN 84 = WHEN 85= WHEN 86 = WHEN 87 = WHEN 88 = WHEN 89 = WHEN 90 = WHEN 91 = WHEN 92 = WHEN 93 = WHEN 94 = WHEN 95 = WHEN 96 = WHEN 97 = WHEN 98 = WHEN 99 = WHEN 100 = WHEN 101 = WHEN 102 = WH

14、EN 103 = WHEN 104 = WHEN 105 = WHEN 106 = WHEN 107 = WHEN 108 = WHEN 109 = WHEN 110 = WHEN 111 = WHEN 112 = WHEN 113 = WHEN 114 = WHEN 115 = WHEN 116 = WHEN 117 = WHEN 118 = WHEN 119 = WHEN 120 = WHEN 121 = WHEN 122 = WHEN 123 = WHEN 124 = WHEN 125 = WHEN 126 = WHEN 127 = WHEN 128 = WHEN 129 = WHEN

15、130 = WHEN 131 = WHEN 132 = WHEN 133 = WHEN 134 = WHEN 135 = WHEN 136 = WHEN 137 = WHEN 138 = WHEN OTHERS = NULL; END CASE;END PROCESS;音乐节拍发生器的仿真输出波形文件如图4.1(a)所示,分析可知仿真结果正确无误,将以上设计的音乐节拍发生器电路设置成可调用的元件,以备高层设计中使用,其元件符号如图4.1(b)所示(a)(b) 图4.1音乐节拍发生器 (a) 仿真输出波形(b)元件符号图图4.2欢乐颂曲谱4.2 音符译码电路Tonetaba模块音符译码电路即音调

16、发生器实际上是一个查表电路,放置21个音乐简谱对应的频率表,根据该表为数控分频模块(speaker)提供所发音符频率的初始值,而此数在数控分频模块入口的停留时间即为此音符的节拍数,不失一般性,以下VDHL程序中仅设置了“欢乐颂”乐曲全部音符所对应的音符频率的初始值,共16个,每个音符停留时间由音乐节拍发生器的时钟频率决定,在此为4Hz信号,这16个值的输出由对应于音符译码电路的4位输入值Index3.0确定,该值中音符的停留时间由音乐节拍发生器中的音符数据决定,该数据重复的次数为该音符的节拍数,如为2则为四二拍,如为4则为四四拍即全音符。ENTITY ToneTaba IS PORT ( In

17、dex : IN STD_LOGIC_VECTOR (3 DOWNTO 0) ; CODE : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) ; HIGH : OUT STD_LOGIC; Tone : OUT STD_LOGIC_VECTOR (12 DOWNTO 0) );ARCHITECTURE one OF ToneTaba ISPROCESS(Index) CASE Index IS WHEN 0000 = Tone=1111111111111 ; CODE; HIGH 在源程序中Index3.0是音乐节拍发生器输出的音符数据; TONE12.0是为数控分频模块提供的音符频率初始值,为方便测试,特设置一个音名代码显示输出CODE3.0和音高指示信号HIGH,可以通过一个数码管或LED来显示乐曲演奏时对应的音符和高音名。音符译码电路Tonetaba模块的仿真输出波形如图4.2(a)所示, 例如当输入Index=9,产生的分频系数便是6921,CODE输出对应该音阶简谱的显示数码2,high输出为高电平,指示音阶为高音,high输出为低电平时则指示音阶为中音,分析可知仿真结果正确无误。将以上设计的音符译码电路To

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

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