VHdl乐曲演奏实验.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
EDA 课程设计 实验报告 专业: 班级: 姓名:LSC 学号: 指导教员: 一、试验名称:乐曲自动演奏器二、试验目的: 使用FPGA 控制蜂鸣器演奏乐曲梁祝中的一段; 初步学会利用结构建模方法设计程序。 三、试验内容: 利用时钟分频进行音调和音长的设定; 利用整个程序,播放梁祝乐曲; 让 LED 灯随着音乐的节拍显示,分高、中、低三种频率显示。 四、试验要求: 将时钟频率分别分成6MHz 和4Hz 两种; 利用功能框图建立整个程序,清晰的播放出梁祝乐曲。 五、试验背景及基本原理: 乐曲演奏基本原理: 乐曲演奏的原理是这样的:组成乐曲的每个音符的频率值(音调)及其持续的时间(音长)是乐曲能连续演奏所需的两个基本数据,因此只要控制输出到扬声器的激励信号频率的高低和持续的时间,就可以使扬声器发出连续的乐曲声。 音调的控制 频率的高低决定了音调的高低。音乐的十二平均率规定:每两个8度音(如简谱中的中音1与高音1)之间的频率相差一倍。在两个8度音之间,又可分为12 个半音,每两个半音的频率比为12√2。 另外,音名A(简谱中的低音6)的频率为440Hz,音名B到C之间、E到F之间为半音,其余为全音[4]。由此可以计算出简谱中从低音1至高音1之间每个音名对应的频率,如表所示: 音名与频率的关系 所有不同频率的信号都是从同一个基准频率分频得到的。由于音阶频率多为 非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。若基准频率过低,则由于分频比太小,四舍五入取整后的误差较大;若基准频率 过高,虽然误差变小,但分频数将变大。实际的设计综合考虑这两方面的因素, 在尽量减小频率误差的前提下取合适的基准频率。本试验中选取6MHz为基准频率。若无6MHz的基准频率,则可以先分频得到6MHz,或换一个新的基准频率。实际上, 只要各个音名间的相对频率关系不变,演奏出的乐曲听起来都不会走调。本试 验需要演奏的是梁祝乐曲,该乐曲各音阶频率及相应的分频比如表2所示。为了 减小输出的偶次谐波分量,最后输出到扬声器的波形应为对称方波,因此在到达 扬声器之前,有一个二分频的分频器。表2中的分频比就是从6MHz频率二分频得 到的3MHz频率基础上计算得出的。由于最大的分频系数为9102,故采用14位二进 制计数器分频可满足需要。在表中,除给出了分频比以外,还给出了对应于各个 音阶频率时计数器不同的预置数。对于不同的分频系数,只要加载不同的预置数 即可。 各音节频率对应的分频比及预置数表 此外,对于乐曲中的休止符,只要将分频系数设为 0,即初始值为 2141=16383 即可,此时扬声器将不会发声。 音长的控制 音符的持续时间必须根据乐曲的速度及每个音符的节拍数来确定。本例演奏的梁祝片段,最短的音符为 4 分音符,如果将全音符的持续时间设为 1s 的话, 则只需要再提供一个 4Hz 的时钟频率即可产生 4 分音符的时长。 由乐谱产生电路控制音乐的音调和音长。控制音调通过设置计数器的预置数来实现,预置不同的数值可以使计数器产生不同频率的信号,从而产生不同的音调。控制音长是通过控制计数器预置数的停留时间来实现的,预置数停留的时间 越长,则该音符演奏的时间越长。每个音符的演奏时间都是 0.25s 的整数倍,对于节拍较长的音符,如 2 分音符,在记谱时将该音名连续记录两次即可。 5.4 音名显示 音名显示电路用来显示乐曲演奏时对应的音符。可以用 3 个数码管,分别显示高、中、低音的音名,实现演奏的动态显示,十分直观。在本试验中,high[3:0]、 med[3:0]、low[3:0]等信号分别用于显示高音、中音、低音音符。为了使演奏能循环进行,需另外设置一个时长计数器,当乐曲演奏完成时,保证能自动从头开始演奏。 六、程序基本流程及实现 程序基本流程: 程序实现 由系统框图(见附录)可以看到本方案分成 8 个模块。 1)48MHz 分频成 12MHz 波形分频器,源代码和顶层模块如下 //48mhz 分成 12mhz 的分频模块 module div_clk12mhz(clk_48mhz,clk_12mhz); input clk_48mhz; output clk_12mhz; reg clk_12mhz; reg [21:0] cnt; always @(posedge clk_48mhz) if(cnt1) cnt=cnt+1; // (48mhz/12mhz=4,cnt[4/2-1=1]) else begincnt=0; clk_12mhz =!clk_12mhz; end Endmodule 2)12MHz 分频成 6MHz 波形分频器,源代码和顶层模块如下: //12mhz 分成 6mhz 的分频模块,提供给 song 模块module div_

您可能关注的文档

文档评论(0)

tianya189 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档