乐曲演奏硬件电路设计报告精选.docVIP

  1. 1、本文档共22页,可阅读全部内容。
  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开发平台上利用VHDL语言设计数控分频器电路,利用数控分频的原理设计硬件演奏电路,并定制LPM-ROM存储音乐数据,以“梁祝”乐曲为例,将音乐数据存储到LPM-ROM,就达到了以纯硬件的手段来实现乐曲的演奏效果。设计设计 该系统主要由三个部分组成,顶层设计文件,其内部有三个功能模块:TONETABA.VHD、NOTATABS.VHD、和SPEAKERA.VHD。首先定制TONETABA.VHD、模块一类似于弹琴人的手指,模块二类似于琴键,模块三类似于琴弦或音调发生器。模块中的音符数据ROM“music”。然后根据给出的乘法器逻辑原理图及其模块的VHDL描述在 QuartusⅡ上完成设计。最后完成编译,综合,仿真,管脚锁定,编程下载。 音符的频率可由Speakera获得,这是一个数控分频器。由其clk端输入一个具有较高频率的信号,通过Speakera分频后由SPKOUT输出,由于直接数控分频器出来的输出信号是脉宽极窄的脉冲式信号,为了有利于驱动扬声器,需要另加一个D触发器以均衡器占空比,但这是的频率将是原来的1/2。Speakera对clk输入信号的分频比由11位预置数Tone[10..0]决定。SPKOUT输出频率将决定每一个音符的音调,这样,分频计数器的预置值Tone[10..0]与SPKOUT的输出频率就有了对应关系。 音频的持续时间需根据乐曲的速度及每个音符的节拍数来确定,模块ToneTaba的功能首先是为Speakera提供决定所发音符的分频预置数,而次数在Speakera输入口停留的时间即为此音符的节拍值。模块ToneTaba是乐曲简谱码对应的预置数,共13个,每一音符的停留时间由音乐节拍和音调发生器模块NoteTabs的clk的输入频率决定,在此喂4Hz。这13个值的输出由对应于ToneTaba的4位输入值Index[3..0]确定,而Index[3..0]最多有16种可选值。输向ToneTaba中的Index[3..0]的值ToneIndex[3..0]的输出值与持续时间由模块NoteTabs决定。 在NoteTabs中设置了一个8位二进制计数器计数最大值为138),作为音符数据ROM的地址发生器。这个计数器的技术频率选为4Hz,即每一个计数值的停留时间为0.25秒,恰为当全音符设为1秒时,四四拍的4分音符持续时间。 顶层电路VHDL程序设计 LIBRARY IEEE; -- 硬件演奏电路顶层设计 USE IEEE.STD_LOGIC_1164.ALL; ENTITY Songer IS PORT ( CLK12MHZ : IN STD_LOGIC; --音调频率信号 CLK8HZ : IN STD_LOGIC; --节拍频率用于控制音长(节拍)的时钟频率;END; ARCHITECTURE one OF Songer IS COMPONENT NoteTabs --元件u1例换化 PORT ( clk : IN STD_LOGIC; ToneIndex : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) ); END COMPONENT; COMPONENT ToneTaba --元件u2例换化 PORT ( Index : IN STD_LOGIC_VECTOR (3 DOWNTO 0) ; CODE : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) ; HIGH : OUT STD_LOGIC; Tone : OUT STD_LOGIC_VECTOR (10 DOWNTO 0) ); END COMPONENT; COMPONENT Speakera --元件u3例换化 PORT ( clk : IN STD_LOGIC; Tone : IN STD_LOGIC_VECTOR (10 DOWNTO 0); SpkS : OUT STD_LOGIC ); END COMPONENT; SIGNAL Tone : STD_LOGIC_VECTOR (10 DOWNTO 0); SIGNAL ToneIndex : STD_LOGIC_VECTOR (3 DOWNTO 0); BEGIN u1 : NoteTabs PORT MAP (clk=CLK8HZ, ToneIndex=ToneIndex);--参数传递映射语句 u2 : ToneTaba PORT MAP(Index=ToneIndex,Tone=Tone,CODE=COD

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档