音乐播放器设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《音乐播放器设计》

设计报告

题目:音乐播放器设计

学院:电子信息与电气工程学院专业:电子信息工程

班级:

姓名:

学号:

2016 年6月30日

音乐播放器设计

一、设计要求

1、至少能演奏两首乐曲,曲目不限“梁祝”除外,同时用

数码管或2004液晶屏显示当前乐曲名称及编号。

2、具有播放、暂停、选曲及演奏模式切换(单曲循环、顺

序播放)等功能。

二、音乐播放器设计背景及其研究意义

现代EDA技术代表了当今电子设计技术的最新发展方向, 它的基本特征是采用硬件描述语言进行电路与系统的设计, 具有系统级仿真和综合能力.FPGA 和EDA使设计方法发生了质的变化.把以前"电路设计+硬件搭试+调试焊接"转化为"功能设计+软件模拟+仿真下载".随着电脑普及,互联网飞速发展,这些技术使得各种电子产品迅速的进入了我们的生活,每一个产品的诞生都离不开EDA技术,从彩色电视机,智能冰箱,再到个人随身用的音乐播放器都需要EDA技术提供支持.人们生活水平逐步提高,顺应电子技术的发展趋势,可利用EDA开发平台,采用可编程逻辑器件FPGA使硬件的功能可通过编程来实现音乐播放器,Quartus2软件是进行FPGA设计的操作平台, 其功能强大,界面友好,使用便捷.Quartus2软件集成了Altera公司的可编程逻辑器件开发流程中所涉及的几

乎所有的工具和第三方软件接口,主要能够实现设计输入、综合、布局布线、时序分析、仿真、编程和配置,系统级设计、软件开发、时序逼近、调试和工程更改管理的功能。因此, 基于FPGA的电路设计过程更加灵活且通用性更好。

关键词:音乐播放器,VerilogHDL,Quartus2,FPGA,LMP

三、设计思路

1、利用VHDL硬件描述语言结合FPGA器件设计一个音乐播放器 ,为其他电路的设计提供一定借鉴作用。

2 、了解音乐播放器的原理,运用刚刚学过的数电知识设计并制作音乐播放器,而且通过音乐播放器的制作进一步了解各种在制作中用到的中小规模集成电路的作用及其使用方法。通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法,从而实现理论与实践相结合.

四、基本原理

1、为了便于理解,首先介绍一下硬件电路的发声原理.我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制FPGA某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音.而乐曲中的每一音符对应着一个确定的频率,因此,要想

FPGA发出不用音符的音调,实际上只要控制它输出相应音符的频率即可.乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在扬声器上连续地发出各个音符的音调.而要准确地演奏出一首乐曲,仅仅让扬声器能够发声是不够的,还必须准确地控制乐曲的节奏,即每个音符的持续时间.由此可见,乐曲中每个音符的发音频率及其持续的时间是乐曲能够连续演奏的两个关键因素。

2、音调的控制频率的高低决定了音调的高低.音乐的十二平均率规定:每两个八度音(如简谱中的中音1和高音1)之间的频率相差一倍.在两个八度音之间又分为十二个半音.另外,音名A(简谱中的低音6)的频率为440Hz,音名B到C之间、E到F之间为半音,其余为全音.由此可以计算出简谱中从低音1到高音1之间每个音名对应的频率,所有不同频率的信号都是从同一个基准频率分频得到的.由于音阶频率多为非整数,而分频系数又不能为小数,因此必须将计算得到的分频数四舍五入取整.若基准频率过低,则由于分频比太小,四舍五入取整后的误差较大,若基准频率过高,虽然误差较小,但分频数将变大.实际的设计应综合考虑这两方面的因素,在尽量减小频率误差的前提下取合适的基准频率.因此,要想FPGA发出不同音符的音调,实

际上只要控制它输出相应音符的频率即可.综合考虑各因素,本文中选取4MHZ作为CLK的分频计数器的输入分频信号。乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在扬声器上连续地发出各个音符的音调。分频信号乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在扬声器上连续地发出各个音符的音调.

简谱中的音名与频率的关系

音名频率/Hz 音名频率/Hz 音名频率/Hz 低音1 261.6 中音1 523.3 高音1 1045.5 低音2 293.7 中音2 587.3 高音2 1174.7 低音3 329.6 中音3 659.3 高音3 1318.5 低音4 349.2 中音4 698.5 高音4 1396.9 低音5 392 中音5 784 高音5 1568

低音6 440 中音6 880 高音6 1760

低音7 493.9 中音7 987.8 高音7 1975.5 3、音长的控制

音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定.因此,在想控制音符的音长,就必须知道乐曲的速度和每个音符所对应的节拍数,在这个设计中所播放的乐曲的最短的音符为四分音符,如果将全

音符的持续时间设为1s的话,那么一拍所应该持续的时间为0.25秒,则只需要再提供一个4HZ的时钟频率即可产生四分音符的时长.要想让系统知道现在应该播放哪个音符,而这个音符持续的时间应该是多少,就必须编写乐曲文件,在乐曲文件中音符是按地址存放的,当系统工作时就按4Hz的频率依次读取简谱,当系统读到某个音符的简谱时就对应发这个音符的音调,持续时间为0.25秒,而如果在曲谱文件中这个音符为三拍音长,那又该如何控制呢?其实只要将该音符连续书写三遍,这时系统读乐曲文件的时候就会连续读到三次,也就会发三个0.25秒的音长,这时我们听上去就会持续了三拍的时间,通过这样一个简单的操作就可以控制音乐的音长了.

五、设计内容及步骤

1、系统原理图

2、分频模块

由于开发板系统时钟为20MHz,而在设计中所需时钟为1KHz所以需通过分频得到所需时钟,通过软件自带工具建立模块如下:

3、蜂鸣器模块

module buzzer(CLK,C,SPEAKER);

input CLK;

input [1:3]C;

output SPEAKER;

integer N;//定义变量N用于蜂鸣器计时

相关文档
最新文档