简易电子琴的设计解析.pptVIP

  1. 1、本文档共23页,可阅读全部内容。
  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文档。上传文档
查看更多
Page ? * 简易电子琴的设计 巩固和运用所学课程,理论联系实际,提高分析、解决实际问题的独立工作能力。 通过对一个简易的八音符电子琴的设计,加深对VHDL数字系统设计方面的了解,熟悉VHDL数字系统设计制作与调试的方法。 小组成员比较喜欢音乐,本学期的单片机和VHDL的学习提供给我们这样一个能自己动手制作简易电子琴的机会。 背景: 主要设计内容: 设计一个简易的八音符电子琴, 它可通过按键输入来控制音响。 演奏时可以选择是手动演奏(由键盘输入) 还是自动演奏已存入的乐曲。 前车之鉴: 电子琴的设计包括七个模块: 弹奏模块 分频模块 自动演奏模块 查表及显示模块 存储模块 七段数码管显示模块 点阵的显示模块 设计规划: 根据设计要求,采用自顶向下的设计方法,系统的整体组装设计原理图如图所示,它由乐曲自动演奏模块、音调发生模块和数控分频模块三部分组成。 自动演奏模块: 接收32MHz的时钟信号,产生8位发声控制输入信号 输出index_auto。作为节拍。将要自动演奏的歌曲预先写为index_auto的格式, 将index_auto输出。这里需要用到计数器,此计数器的长度由演奏的歌曲长度而定。 自动演奏模块 ENTITY AUTO IS PORT ( CLK : IN STD_LOGIC; AUTO : IN STD_LOGIC; CLK2 : BUFFER STD_LOGIC; INDEX2 : IN STD_LOGIC_VECTOR(7 DOWNTO 0); INDEX0 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END AUTO; ARCHITECTURE BEHAVIORAL OF AUTO IS SIGNAL COUNT0: INTEGER RANGE 0 TO 31; BEGIN PULSE0 :PROCESS(CLK,AUTO) VARIABLE COUNT :INTEGER RANGE 0 TO 8; BEGIN IF AUTO =1 THEN COUNT = 0;CLK2=0; ELSIF(CLKEVENT AND CLK =1)THEN COUNT =COUNT +1; IF COUNT =4 THEN CLK2 =1; ELSIF COUNT =8 THEN CLK2=0; COUNT:=0; END IF ; END IF ; END PROCESS; MUSIC:PROCESS(CLK2) BEGIN IF (CLK2EVENT AND CLK2=1)THEN IF (COUNT0=31)THEN COUNT0=0; ELSE COUNT0=COUNT0+1; END IF ; END IF ; END PROCESS; COM1:PROCESS(COUNT0,AUTO,INDEX2) BEGIN IF AUTO =0 THEN CASE COUNT0 IS WHEN 0=INDEX0 --3 WHEN 1=INDEX0 --3 …… WHEN 30=INDEX0 --2 WHEN 31=INDEX0 --2 WHEN OTHERS =NULL; END CASE; ELSE INDEX0=INDEX2; END IF; END PROCESS; END BEHAVIORAL; 弹奏模块设计: 弹奏模块:根据按键动作index, 相应产生指示音调的高低音选项以及音调code。 弹奏模块: ENTITY TONE IS PORT (INDEX: IN STD_LOGIC_VECTOR(7 DOWNTO 0); CODE: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); HIGH: OUT STD_LOGIC; TONE0: OUT INTEGER RANGE 0 TO 2047); END TONE; ARCHITECTURE ART OF TONE IS BEGIN SEARCH : PROCESS(INDEX) BEGIN CASE INDEX IS WHENT

您可能关注的文档

文档评论(0)

三沙市的姑娘 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档