2010《EDA技术基础》【设计】实验总结报告模板及要求.doc

2010《EDA技术基础》【设计】实验总结报告模板及要求.doc

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

EDA技术基础 音乐播放器 设计性实验 2008112020346郭斌 电子信息科学与技术 物电学院0803班 一、任务解析: 以前用51单片机制作了一个可演奏的电子琴,学习了EDA技术之后,感觉FPGA与单片机有许多类似的地方。于是,启发我用FPGA做一个可随意演奏的音乐播放器。设计低、中、高21个音,几乎能够实现一般歌曲的演奏。要实现该功能,就必须考虑到一首歌曲的产生应该考虑的两个因素:音符的产生频率和音的节拍(即声音持续的时间)。只要控制输出到扬声器的激励信号频率的高低和持续的时间,就可以使扬声器发声产生优美的歌曲。 方案论证: 音调的控制: 频率的高低决定了音调的高低。通过查阅资料,得到下面的音符名与频率的关系表: 音符名 频率/hz 音符名 频率/hz 音符名 频率/hz 低音1 262 中音1 523 高音1 1046 低音2 294 中音2 587 高音2 1175 低音3 330 中音3 659 高音3 1318 低音4 349 中音4 698 高音4 1397 低音5 392 中音5 784 高音5 1568 低音6 440 中音6 880 高音6 1760 低音7 494 中音7 988 高音7 1976 分频比预置数的计算: 分频比就是从6Mhz基准频率通过二分频得到的3Mhz频率基础上计算得到的。对于乐曲中的休止符,只需将其分频系数设为0,将分频预置数设为16383即可。例如:低音3的频率为330hz,分频比为3M/330hz=3000000/330=9091,则其分频预置数为:16383-9091=7292。其他的音符对应的分频比和分频比预置数均按此法计算可得到。依次计算出低、中、高3X7=21个音的预置数。 各音阶对应的预置数如下表: 音符名 预置数 音符名 预置数 音符名 预置数 低音1 4933 中音1 10647 高音1 13515 低音2 6179 中音2 11272 高音2 13830 低音3 7292 中音3 11831 高音3 14107 低音4 7787 中音4 12085 高音4 14236 低音5 8730 中音5 12556 高音5 14470 低音6 9565 中音6 12974 高音6 14678 低音7 10310 中音7 13347 高音7 14858 音长的控制: 音符的持续时间必须根据乐曲的速度及每个音符的节拍数来确定。本试验中,设定最短的音符为4分音符,若将全音符的持续时间设为1s的话,则需要提供一个4Hz的时钟频率即可产生4分音符的时间,每1/4个节拍的时间为0.25s,一个完整的节拍为1s。 以上即为音乐播放器的原理框图。控制音调通过设置计数器的预置数来实现,预置不同的数可以使计数器产生不同频率的信号,从而产生不同的音调。控制音长则是通过控制计数器预置数的停留时间来实现的,预置数停留的时间越长,则该音符演奏的时间越长。每个音符的演奏时间都是0.25s的整数倍,对于节拍较长的音符,例如2分音符,占了2/4个节拍,在记谱的时候将其连续记录2次即可。 实验步骤: 分频产生6Mz的基准频率: module div_clk6mhz(clk24m,clk6m); input clk24m; output clk6m; reg clk6m; reg cnt; always @(posedge clk24m) if(cnt1)cnt=cnt+1; //(24m/6m=4分频,cnt[4/2-1=1]即可) else begin cnt=0;clk6m=!clk6m;end endmodule 由于此分频电路简单,就不在这里给出仿真波形了。 分频产生4hz的节拍控制频率: module div_clk4hz(clk24m,clk4); input clk24m; output clk4; reg clk4; reg [21:0]cnt; always @(posedge clk24m) if(cnt2999999)cnt=cnt+1;//(24m/4hz=6000000,cnt[6000000/2-1=2999999]) else begin cnt=0;clk4=!clk4;end endmodule 此分频电路也很简单,就不在这里给出仿真波形了。 乐曲产生模块: 核心模块就在这里,这里:(1)首先罗列了低、中、高21个音的分频比预置数(还有休止符的预置数16383),通过6Mhz的基准频率,在其上升沿的时候,计数器累加,当计满到16383之后就取反speaker(speaker=~speaker非阻塞赋值),产生对应音符的频

文档评论(0)

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

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

1亿VIP精品文档

相关文档