数电实验之--简易乐曲播放器.docVIP

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数电实验之--简易乐曲播放器

【课题名称】 简易乐曲播放器 04102班 040042 10号 陈功 【摘要】 随着EDA技术的进展,基于可编程ASIC的数字电子系统设计的完整方案越来越受到人们的重视。我们知道,组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的2个基本要素,通过EDA工具和VHDL语言来控制这两个基本要素便可以实现一个简易的乐曲播放器了。 【任务要求】 设计制作一个简易乐曲播放器。 1. 播放器内预存3首乐曲; 2. 播放模式:顺序播放、随机播放,并用数码管或LED显示当前播放模式; 顺序播放:按内部给定的顺序依次播放3首乐曲; 随机播放:随机产生一个顺序播放3首乐曲; 3. 用数码管显示当前播放乐曲的顺序号; 4. 设置开始/暂停键,乐曲播放过程中按该键则暂停播放,再按则继续播放; 5. 设置Next和Previous键,按Next键可以听下一首,按Previous键回到本首开始; 6. 选做:用户可以自行设定播放顺序,设置完成后,播放器按该顺序依次播放乐曲; 7. 选做:自拟其它功能。 【设计思路】 对于音调,乐曲的12平均率规定:每2个八度音之间的频率相差1倍。在2个八度音之间,又可分为12个半音,每2个半音的频率比为12√2。另外,音符A的频率为440Hz,音符B到C之间、E到F之间为半音,其余为全音。由此可以计算出简谱中从低音1到高音1之间每个音符的频率。而对于节拍,如果将一拍的长度定为1秒,则1/4拍的时间为1/4秒,为其提供一个4Hz的时钟频率即可产生出1/4拍的效果了。若需要半拍,只需将该音符记录两次就可以了。对于以上设计,实际上本次实验使用的是MAX7000S的实验板,最大时钟频率为1MHz,故用1M除以每个音调对应的频率便得到其分频比率。 【总体框图】 【分块电路设计】 【源程序】 ************顶层文件Songer************ LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY Songer IS PORT (CLK1MHZ :IN STD_LOGIC; --主频1M CAIDENG : OUT STD_LOGIC_VECTOR(6 DOWNTO 0); --彩灯功能 PP : IN STD_LOGIC; --暂停或播放 SHOW : OUT STD_LOGIC; --播放模式显示 NEXTONE : IN STD_LOGIC; --下一首 PREVIOUS : IN STD_LOGIC; --本首重来 SPKOUT: OUT STD_LOGIC; --音频输出 MODE : IN STD_LOGIC; --播放模式 SEG:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); --歌曲序号显示 CAT:OUT STD_LOGIC_VECTOR(5 DOWNTO 0); STOP: IN STD_LOGIC ); END; ARCHITECTURE one OF Songer IS COMPONENT NoteTabs PORT ( clk: IN STD_LOGIC; ToneIndex: OUT INTEGER RANGE 0 TO 15; PP : IN STD_LOGIC; NEXTONE : IN STD_LOGIC; --下一首 PREVIOUS : IN STD_LOGIC; --本首重来 MODE : IN STD_LOGIC; RANDOM: IN STD_LOGIC; SHOW : OUT STD_

文档评论(0)

yurixiang1314 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档