自动奏乐器.doc

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

自动奏乐器 ? 一、设计要求 1.开机能自动奏一个乐曲,可以反复演奏; 2.速度可变。 1 1 5 5 6 6 5 – 4 4 3 3 2 2 1 – 5 5 4 4 3 3 2 – 5 5 4 4 3 3 2 – 3.附加:显示乐谱。 二、题目分析与模块划分 自动奏乐器的设计原理是通过蜂鸣器以及各个音阶的频率的转化而发出1234567个音符,再通过数据选择器对音符的选择而演奏出的乐曲。 自动奏乐器主要有两个部分组成:分频器和十六选一的数据选择器。 分频器:每个音阶的分频器由五个十进制同步计数器74160及T触发器组成。选频时考虑到,频率太大会使用很多的器件,频率太小也会时分出的音频效果不佳。经过老师的建议,我选择了12M的频率进行分频。我的题目中一共有五个音符:123456,频率经过五个74160的分频和T触发器的翻转,由输出端输出。 十六选一的数据选择器:乐曲中,总计有16拍音符,需要一个十六选一的数据选择器将分频器分出来的音符按照乐曲的顺序排列后,输出给外接的蜂鸣器。考虑到让音频清晰的输出,所以数据选择器输出之前,接了T触发器进行翻转。 三、系统单元电路设计: 1、分频器的单元设计: 我的题目一共有5个音阶需要分频:分别为1、2、3、4、5、6。 因为选择的是12M的频率进行分频,蜂鸣器发出1、2、3、4、5、6这些音分别需要261.63HZ、293.66HZ、392.00HZ、440.00HZ、493.88HZ的频率。考虑到为了使分频出的波形完整,音频清晰的输出,所以数据选择器输出之前,接了T触发器进行翻转,使其经过一个上升沿进行翻转。周期扩展了2倍,频率减小为原来的1/2。经过计算需要将五个音阶分别按照22932(0——22932)、20432(0——20431)、15306(0——15305)、13636(0——13635)、12149(0 ——12148)实行分频。各音阶分频器连接图及波形图如下: 以6这个音阶进行说明,通过计算,将12M进行13635分频得到这个音阶,但 输出的波形仿真图出现竞争冒险,经过老师的帮助,在个位的输出端加了两个OUTPUT输出来消除竞争冒险。这个方法还在音阶5的总输出口进行了应用。 这样能够得到需要的音阶。 其他音阶均是通过相同原理得到。 2、十六选一数据选择器的设计: 乐谱是由16个音节组成,需要两个74151(八选一数据选择器)组成。应用一个74161十六进制数据选择器通过脉冲的输入,控制74151进行乐曲的输出。74161的时钟信号端给时钟脉冲使其能循环输出,通过控制脉冲信号频率可以改变其输出速度。 四、总电路图 五、系统设计结果及分析: 经过软件的仿真正确后,进行了硬件的仿真来进一步来证明电路的正确性。将设计的电路下载好及正确的连接好电路之后:系统各个模块之间能够实现预期的乐曲演奏、自动重复、速度可变的要求,达到要求。 模拟仿真: 五、学习心得: 经过两个星期的EDA课程设计及学习,从对EDA的操纵界面的完全陌生到现在的基本熟练操纵,我们收获的不仅仅是知道了MAX+PLUSII软件的使用方法,更重要的收获是通过两周的思考、分析、发问、设计、修正、动手连接实验从而真正的体会到了数字电路各个项目功能的奥妙所在。 刚抽到题目时的不知从何下手,和自己题目相近的同学讨论对策,不停反复的请求老师的帮助,实际芯片的连接与测试,每个过程都是设计的关键所在。芯片的选择,改建与非门、与门、非门的选择,能够很大程度的改善电路的性能与复杂程度,并且能够简化电路图的连接、选择适当精简个数的器件。 冒险竞争是我这个课题出现的最让人头痛的一个问题,经过老师外加额外输出端的办法,对电路进行了改善。这个问题也让我了解到了:实际的数字电路的设计与软件仿真电路的测试,到真正硬件的实现是后很大的差异的。这要求我们通过训练逐渐掌握设计电路、改善电路、解决实际问题的技能。 通过思考、发问、自己解惑并动手、改进的过程,才能真正的完成课题。 附录 程序如下: 1.乐曲自动演奏notetabs模块程序: library ieee; use ieee.std_logic_1164.all; entity notetabs is port( CLK:in std_logic; toneindex2:out std_logic_vector(3 downto 0)); end notetabs; architecture one of notetabs is signal counter:integer range 0 to 138; begin cnt8:process(clk) begin if counter=138 then counter=0; elsif clkevent and clk=1then cou

文档评论(0)

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

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

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档