《乐曲硬件演奏设计报告.docVIP

  1. 1、本文档共11页,可阅读全部内容。
  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文档。上传文档
查看更多
《乐曲硬件演奏设计报告

《EDA技术》课程设计报告 班别: 姓名: 学号: 同组人姓名: 设计题目:硬件乐曲演奏电路 任课教师: 2009年12月 一、设计课题 乐曲硬件演奏电路设计 功能要求:仿照课本P263的实验9-1,设计一乐曲演奏电路,演奏的曲目不限,但起码要有两首歌曲,演奏的歌曲分手动选择和自动循环两种模式。 二、设计目的 学习利用实验6-3的数控分频器设计硬件乐曲演奏电路。 三、设计原理 主系统由三个模块组成,Songer是顶层设计文件,其内部有三个功能模块:TONETABA.VHD、 NOTETABS.VHD、SPEAKERA.VHD。(NOTETABS 类似于弹琴人的手指,TONETABA类似于琴键,SPEAKERA类似于琴弦或音调发声器) 与利用微处理器(CPU或MCU)来实现乐曲演奏相比,以纯硬件完成乐曲演奏电路的逻辑要复杂得多,如果不借助于功能强大的EDA工具和硬件描述语言,仅凭传统的数字逻辑技术,即使最简单的演奏电路也难以实现。本实验设计项目作为“梁祝”乐曲演奏电路的实现。 我们知道,组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的2个基本要素,问题是如何来获取这两个要素所对应的数值以及通过纯硬件的手段来利用这些数值实现所希望乐曲的演奏效果。 音符的频率可以由SPEAKERA元件获得,这是一个数控分频器,由其CLK 12MHz端输入12MHz脉冲信号,为了有利于驱动扬声器,需另加一个D触发器以均衡其占空比,但这时的频率将是原来的1/2。SPEAKERA对CLK输入信号的分频比由预置输入端Tone[10..0]决定。SPKOUT的输出频率将决定每一音符的音调,这样,分频计数器的预置值Tone[10..0]与SPKOUT的输出频率就有了对应关系。如在TONETABA模块中若取Tone[10..0]=1036,将发出音符为中音“3”的信号频率。 音符的持续时间需根据乐曲的速度及每个音符的节拍数来确定,TONETABA模块首先是为SPEAKERA模块提供决定所发音符的分频预置数,而此数停留的时间即为此音符的节拍值。TONETABA模块是乐曲简谱码对应的分频预置数查表电路。设计中所有预置数值的输出由对应于TONETABA的4位输入值Index[3..0]确定,而Index[3..0]的值即ToneIndex[3..0]的输出值与持续时间由模块NOTETABS决定。 在NOTETABS模块中设置了一个8位二进制计数器(计数最大值为256),作为音符数据ROM的地址发生器。这个计数器的计数频率选为4 Hz,即每一计数值的停留时间为0.25s,恰为当全音符设为1s时,四四拍的4分音符持续时间。例如,《梁祝》乐曲的第一个音符低音3(1拍),停留的时间需用4个计数时钟节拍,即1s。相应地,所对应的低音3音符分频预置值为1036,其值在SPKS输出端停留了1s。随着NONETABS模块中的计数器按4Hz的时钟速率作加法计数时,乐曲就开始连续自然地演奏起来了。 关于手动与自动选择歌曲,通过选择不同地址来实现。设置Counter (自由播放的地址),Counter1(第一首歌的播放地址),Counter2(第二首歌的播放地址)。用mux21a_1作为手动模式下歌曲的选择器,输入分别为Counter1和Counter2,用key1控制s1口,当key1=0,则播放第一首歌(y=Counter1)LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; --指明所使用的库中的STD_LOGIC_1164程序包 ENTITY Songer IS --实体 PORT ( CLK12MHZ : IN STD_LOGIC; --音调频率信号 CLK8HZ : IN STD_LOGIC; --节拍频率信号 key : IN STD_LOGIC; --选择播放模式 key1 : IN STD_LOGIC; --手动模式下歌曲的选择 CODE1 : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);-- 简谱码输出显示 HIGH1 : OUT STD_LOGIC; --高8度指示 SPKOUT : OUT STD_LOGIC );--声音输出 END; ARCHITECTURE

文档评论(0)

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

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

1亿VIP精品文档

相关文档