实验六音乐播放器设计.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验六音乐播放器设计

南昌大学实验报告学生姓名: 学 号: 专业班级: 实验类型: □验证 □综合 ■设计 □创新 实验日期: 2010 实验六 乐曲播放器设计实验目的1) 使用层次化设计方法,实现乐曲播放器的设计。乐曲选取《梁祝》中化蝶部分。2) 学会建立.mif格式文件以及如何定制LPM_ROM元件;3) 学会读音乐简谱。 4) 熟悉实验设备和软件,掌握实验操作。 实验内容和要求使用数控分频器设计硬件乐曲演奏电路,乐曲选取《梁祝》中化蝶部分。三、设计思想主系统由3个模块组成,顶层文件名为SONG.vhd,其内部有三个功能模块:NOTETABS.vhd(类似于人的手指)、TONETABA.vhd(类似于琴键)SPEAKERA.vhd(类似于琴弦或音调发生器)。 图1、RTL Viewer得到的演奏电路结构图工作原理:(1)音符的频率可以由上图中的SPEAKERA获得,这是一个数控分频器。由期CLK端输入一具有较高频率(6MHZ)的信号,通过SPEAKERA分频后由SPKOUT输出,由于直接从数控分频器中出来的输出信号是脉宽极窄的脉冲式信号,为了有利于驱动扬声器,需另加一个D触发器以均衡其占空比,但这时的频率将是原来的1/2.SPEAKER对CLK输入信号的分频比由11位预置数TONE决定。SPKOUT的输出频率将决定每一音符的音调,这样,分频计数器的预置值TONE与SPKOUT的输出频率就有了对应关系。例如在TONETABA模块中若取TONE=1036,将发出音符为“3”音的信号频率。实际上,只要各个音符间的相对频率关系不变,演奏出的乐曲听起来都不会"走调"。在TONETABA模块我用了如下代码以保持各个音符间的相对频率关系不变:CASE INDEX ISWHEN "0000" => TONE<="11111111111";CODE<="0000";HIGH<='0';--2047WHEN "0001" => TONE<="01100000101";CODE<="0001";HIGH<='0';--773WHEN "0010" => TONE<="01110010000";CODE<="0010";HIGH<='0';--912WHEN "0011" => TONE<="10000001100";CODE<="0011";HIGH<='0';--1036WHEN "0101" => TONE<="10010101101";CODE<="0101";HIGH<='0';--1197WHEN "0110" => TONE<="10101011100";CODE<="0110";HIGH<='0';--1290WHEN "0111" => TONE<="10101011100";CODE<="0111";HIGH<='0';--1372WHEN "1000" => TONE<="10110000010";CODE<="0001";HIGH<='1';--1410WHEN "1001" => TONE<="10111001000";CODE<="0010";HIGH<='1';--1480WHEN "1010" => TONE<="11000000110";CODE<="0011";HIGH<='1';--1542WHEN "1100" => TONE<="11001010110";CODE<="0101";HIGH<='1';--1622WHEN "1101" => TONE<="11010000100";CODE<="0110";HIGH<='1';--1668WHEN "1111" => TONE<="11011000000";CODE<="0001";HIGH<='1';--1728WHEN OTHERS =>NULL; --INDEX为0001时,CODE=1,HIGH-0表示低音1,TONE=773分频比为COUNT11-TONE=2047-773=1274-- INDEX为1000时,CODE=1,HIGH-1表示中音1,TONE=1410分频比为COUNT11-TONE=2047-1410=637-- INDEX为1111时,CODE=1,HIGH-1表示高音1,TONE=1728分频比为COUNT11-TONE=2047-1728=3191247=2*637=2*2*319表示每两个八度音之间的频率相差一倍(2)音符的持续时间需根据乐曲的速度 及每个音符的节拍数来确定 ,模块TONETABA RA的功能首先是SPEAKERA提供决定所发音符的分频预置数,而此数在SPEAKERA输入口停留的时间即为此音符的节拍值。模块TONETABA是乐曲简谱码对应的

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档