基于FPGA音乐流水灯控制系统的设计.docVIP

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

基于FPGA的音乐流水灯控制系统的设计 FPGA是现场可编程门阵列的简称,它既有门阵列器件的高度集成和通用性,又有可编程逻辑器件用户可编程的灵活性。通过FPGA实现音乐流水灯的控制,实质上就是将不同音阶与特定频率的方波信号对应起来,以方波信号驱动蜂鸣器发出音乐,再根据不同音阶来控制流水灯的闪烁。与借助微处理器实现乐曲演奏相比,以纯硬件方式完成乐曲演奏电路更直观。EDA工具和硬件描述语言发挥了强大功能,提供了设计可能性。 1总体设计方案 音乐流水灯主要是点缀公共场合的装饰品,音乐的播放和流水灯有节奏地闪烁,同时达到听觉和视觉的完美结合,成为构成其必不可少的条件。要了解如何产生不同音阶的音乐,首先要对乐音的特性有所了解。乐音实际上是有固定频率的信号。在乐曲的构成中,乐音的频率和持续的时间是其构成的要素。音阶的频率可以通过高频时钟进行分频得到。音频的高低可以通过外部的LED灯的闪烁来显示,这样在音乐和流水灯的配合下可以使人产生强烈的节奏感。再辅以LCD来显示音阶的高低长短,不懂乐理知识的人便可以直观的看到不同音调对应的音阶。 总体设计要求如下: (1)分频主要是通过一个可控分频器实现的。采用时钟的频率越高,分频系数越大,分频后的音阶频率就越准确。但同时由于分频系数大使用的计数单元增加,从而耗费更多的硬件逻辑单元,因此可以采取一个较为适中的时钟频率12MHz。 (2)经过分频后的信号是一个脉宽极窄的时钟信号,必须对其进行脉冲宽度调整,增大占空比,才能有效地驱动蜂鸣器。在脉冲宽度调整时会对此信号再次二分频,所以在计算时,以乐音音阶的二倍频率去求取在特定时钟信号下的分频系数,以便在调整占空比后得到正确的音阶频率。 (3)乐曲的频率变化多端,对应的分频系数也不断变化,因此需要将播放的乐曲的分频系数事先存放在ROM中便于读取。如果将分频系数直接作为存储码存放在寄存器中,势必会占有更大的容量。因此在这里选取索引值来作为存储码以减小容量。 (4)开发平台上的LED灯数量有限,可以选用有规律的闪烁,例如从左到右依次点亮、渐亮、渐灭等;也可以用灯闪烁的多少来表示频率的大小。本设计选用第二种。 图1为音乐流水灯控制系统的总统原理框图。可以看到该系统包含乐曲播放控制模块,流水灯控制模块和LCD显示模块3个模块。其中乐曲播放控制模块分为乐谱播放控制模块,音阶分频模块和音阶频率产生模块。 2模块设计 2.1乐曲播放控制模块 乐曲播放控制模块的主要功能是在一定的时钟信号驱动下将事先存储在ROM里的乐谱所对应的索引值依次输出,控制分频,并产生相应的分频信号频率,以此来控制蜂鸣器的发声。 2.1.1音阶分频器的设计 为了能够在播放乐曲的同时显示当前音阶,用LED的位数来指示当前音阶的高低音。程序中的音阶分频系数通过索引值来进行选取,即在音乐播放过程中由乐谱存储电路传递来的当前音阶的索引值。 2.1.2音阶频率产生的设计 音阶频率产生电路在获取上面的音阶索引值对应的分频系数后,通过可控计数器进行分频。分频电路中的计数器进行减1计数,计数器的进位信号即为分频信号。因为此信号的脉冲宽度极小,所以需要调整占空比才使外部驱动电路提供足够的驱动蜂鸣器的功率,而具体是对分频信号再进行二分频实现的。 2.1.3乐谱播放控制模块设计 音乐播放就是通过外部的8 Hz时钟驱动,内部以计数器进行计数、产生地址,送到ROM单元中作为存储器地址,将对应地址的数据--音阶索引值输出。 在本设计中,每个音的发出由另一个8 Hz的时钟信号来控制。乐谱中的4分音符由4个时钟信号来驱动。每个时钟下,其对应的音阶输出以索引值的形式存储在ROM中。文中ROM的地址线为10位,数据线宽度为4位。ROM里存储的数据即各音节的索引值,根据乐谱转换的需要,16个索引值即可满足乐曲曲谱编写的需求,所以设置了4位数据线。地址线的宽度主要取决于乐曲的长度。本设计中用到了约520个4 bit单元,为了留有一定裕度,将数据线宽度定义为10位,即1 024个4 bit单元。其中不同的音阶对应的索引值如表1所示。 按照乐谱,将音阶对应的索引值连续地存储到ROM中。例如,乐谱上一个4分音符的中音3,在ROM存储器中对应的索引值是10,并且连续放置4次,而一个8分音符5也就是半拍的5,则是将对应索引值5在ROM中连续存放两次。播放时在播放时钟(8 Hz)的驱动下,索引值不断地从ROM输出。索引值送到音阶分频模块中,转换为计数初值输出,再送到音阶分频产生模块中,作为计数初值,产生音阶频率输出驱动蜂鸣器。这样,就能在蜂鸣器上发出要播放的乐曲了。确定了乐谱后,即ROM的存储内容后,就可以定制ROM,将其初始化文件指定为.mif文件即可。 2.2流水灯控制模块设计 由于此设计是基于DE2.70开发板之上的,因此将对应的音阶输出,应用LE

文档评论(0)

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

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

1亿VIP精品文档

相关文档