云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 硬件课程设计-基于FPGA的MP3音乐播放器设计

硬件课程设计-基于FPGA的MP3音乐播放器设计

  • 62 次阅读
  • 3 次下载
  • 2025/12/15 15:45:44

二、需求分析和研究思路

2.1需求分析 MP3播放器的功能可以有很多,基本功能就有从SD卡读取文件,通过扬声器播放音乐,通过调节按钮调节音量等。还可以有多个扩展功能,如通过LED显示歌曲的歌曲名、演唱者、播放时间等相关信息,快进后退,暂停等。甚至可以实现一些较高级别的创新功能,如通过语音识别实现MP3的密码保护功能。这是一个发展空间很大的课题,研究者可以根据自己的能力水平和兴趣爱好自由发展。 本次课程设计中,我完成了预置音乐的播放,暂停,音符显示和音量调节功能。

? 预置音乐的播放:把音乐的曲谱写在程序里面,通过对不同音符的发音

频率进行分析,把不同的音符以不同频率的脉冲形式输出,接到扬声器发出声音。 ? 暂停:音乐是通过不断输送的时钟脉冲一个一个连续不断的实现输出的,

使时钟脉冲停止就达到了是音乐播放暂停的功能。

? 音符显示:把音符的简谱代码存放在程序中,在音符频率输出的同时也

通过LDE灯把音符的简谱代码显示出来。

? 音量调节:把输出的声音经过一个集成运算放大电路,通过可调电阻对

音量进行调节。 2.2研究思路

按照EDA开发流程,采用VHDL硬件描述语言开发,从系统的整体出发对硬件演奏电路的功能进行分析并划分为多个功能模块,完成各个功能模块的设计以及实现,最后通过系统结构的整体设计实现预先设置乐曲的播放功能。再把播放功能模块的输出经过一个集成运算放大电路实现音量调节功能。 需要完成的设计如下:

? 找出不同音符的发音频率,寻找最佳待分频频率,计算分频数和分频预

置数,制作乐谱查找表。乐谱查找表里应当有:不同音符的发音频率,该发音频率相对于基准频率的分频系数和分频预置数。

? 预置曲谱。定义一个转换规则,将音乐音符转换为代码预置在程序里。 ? 对预置的曲谱码在乐谱查表码里进行查找,找出相应音符对应频率的分

频预置数。

? 根据查找到的分频预置数对待分频频率进行分频并输出。 ? 通过集成运放电路实现音量调节。 ? 将输出连接到扬声器,播放音乐。 使用Xilinx ISE Design Suite 13.1编写程序和仿真,使用Xilinx PlanAhead 13.1综合布线,综合编译并生成.bit下载文件,使用digilent adept下载到BASYS2实验开发板上进行功能验证。

三、系统设计

3.1系统原理

- 4 -

如果单纯以纯硬件的电路来实现乐曲演奏电路会复杂很多,比较难以实现。本次课程设计采用强大的EDA工具和硬件描述语言来实现乐曲演奏。我们知道,一首乐曲是由很多个音符组成的,而每个音符又包括音符的发音频率和发音持续时间两个基本因素。如何把音符一个一个播放出来,就要看怎么获得音符的发音频率和发音持续时间,并利用这些数值以硬件软件相结合的方式实现乐曲的演奏。 如果我们现在知道每个音符的发音频率,利用程序使FPGA开发板上的某个引脚输出一定频率的脉冲,再连接到扬声器,就可以发出相应音符对应的声音了。然后再控制每个音符的发音持续时间,这样就输出了一个完整的音符。乐曲是由一个又一个的音符组成的,利用时钟信号使音符一个接着一个输出,就完成了一首乐曲的播放。因此,我们需要编写程序来控制FPGA引脚输出不同音符对应的不同的音调和音长。 从FPGA引脚输出的不同频率的信号具有一定的峰值,改变这些峰值的大小可以控制音量的大小。因此,我们需要一个调节音量的外接电路来调节音量。 3.1.1音调控制

声音是发音体震动的次数,在规定的频率数字范围内波动产生的。因此,频率的高低决定了发出声音音调的高低。我们一般使用的数字简谱以可动唱名法为基础,用1、2、3、4、5、6、7代表音阶中的7个基本音级,读音为do、re、mi、fa、sol、la、si,每个音级又有低音、中音和高音三种不同的音级,这些再加上休止符,一共有22个不同音符。查阅相关资料可得到不同的音符的发音频率。 查阅资料得到音符与发音频率之间的对应关系如表3-1所示。

表3-1 数字简谱中的音符与频率的对应关系

音符名 低音1 低音2 低音3 低音4 低音5 低音6 低音7 频率/Hz 261.525 293.664 329.627 349.228 391.995 440 493.883 音符名 中音1 中音2 中音3 中音4 中音5 中音6 中音7 频率/Hz 523.329 587.329 656.255 698.465 783.990 880 987.766 音名符 高音1 高音2 高音3 高音4 高音5 高音6 高音7 频率/Hz 1046.502 1147.659 1318.510 1396.919 1567.981 1760 1975.537 22个不同的音符就有22种不同的频率,这些频率可以由一个基准频率进行分频得到。只要找到一个合适的基准频率,计算得出每个音符的分频数,就可以对基准频率进行分频,得到不同的音符频率。由于各个音符频率大多数为非整数,所以计算得到的分频系数也大多是非整数。我们采用四舍五入的方法,可以获得为整数的分频数。 如何选择基准频率很关键。若基准频率比较小,用他除以音符频率得到的分频系数也就比较小,这样的话进行四舍五入后误差相对而言会比较大。若基准频率偏大,分频系数也就偏大,这会增加系统的负担。综合考虑分频系数的准确性和大小,查阅相关资料可知,基准频率为750 khz是比较合适的。

- 5 -

我们使用的BASYS2开发板自带50 mhz的时钟频率,对50mhz的时钟频率进行分频可得到750 khz的频率信号。由于得到的750 khz的频率信号是脉宽极窄的尖脉冲信号,为了提高扬声器有足够的功率发音,我们对尖脉冲信号再进行二分频,得到对称方波后再输出。因此,在表3-2中,就是以375 khz为基准频率计算了各个音符的分频数和分频预置数。 3.1.2音长控制

音符的持续时间是由乐曲的速度及每个音符的节拍数来确定。想要控制音符的持续时间,就要知道乐曲的速度和每个音符的节拍数。现在一般乐曲中,最小的节拍为1/4拍。若定义1拍的持续时间为1秒,那么1/4拍的持续时间就为1/4秒,即0.25秒。其他的节拍数位1/4拍得整数倍,因此他们的持续时间就为0.25秒的整数倍。若将乐曲中每个音符的持续节拍数写进程序,我们再定义一个4hz的时钟频率,每当时钟上升沿来临时就输出1/4拍音符,若是其他1/4拍整数倍的音符就连续输出整数倍的次数。这样,音符的发音持续时间久得到了控制。

表3-2 各个音符的频率及其对应的分频系数(基准频率375KHz) 频 率 分频 计数 频 率 分频 计数 音符名 音符名 (Hz) 系数 初值 (Hz) 系数 初值 休止符 375000 0 2047 中音4 698.456 537 1510 低音1 261.525 1435 513 中音5 783.990 478 1569 低音2 293.664 1277 770 中音6 880 426 1621 低音3 329.627 1138 909 中音7 987.766 380 1667 低音4 349.228 1022 1025 高音1 1046.502 358 1689 低音5 391.995 957 1090 高音2 1147.659 327 1720 低音6 440 852 1195 高音3 1318.510 284 1763 低音7 493.883 759 1288 高音4 1396.919 268 1799 中音1 523.251 717 1330 高音5 1567.981 239 1808 中音2 587.329 638 1409 高音6 1760 213 1834 中音3 656.255 571 1476 高音7 1975.537 190 1857

3.1.3乐谱发生器

根据一定的规则将乐谱的音符转换为代码预置在程序中,利用一个乐谱码计数器做标注,每1/4拍计数一次,若一个音符占有多个1/4拍,就连续多次计数。计数器指向当前的音符,当4hz时钟频率的上升沿来临时,计数器就加1,指向下一个1/4拍音符。音符转为为代码按照如下规则:休止符转换为代码0,低音1-低音7转换为代码1-7,中音1-中音7转换为代码8-14,高音1-高音7转换为15-21。 3.1.4音量控制

FPGA中没有控制频率峰值大小的功能,因此音量控制电路需要外接一个电路来完成。音量控制电路可以是一个集成运放电路。从本质上来看,集成运放是

- 6 -

一种高性能的多级直接耦合放大电路。尽管集成运放的品种繁多,内部结构各不相同,但是他们的组成原则基本一致。组成主要包括差分输入级、中间放大级、偏置电路和输出级四个部分。差分输入级使运放具有尽可能高的输入电阻及共模抑制比;中间放大级由多级直接耦合放大器组成,以获得足够高的电压增益;输出级可使运放具有一定幅度的输出电压、输出电流和尽可能小的输出电阻。在输出过载时有自动保护作用以免损坏集成块;偏置电路为各级电路提供合适的静态工作点,一般采用恒流源电路为各级提供合适的静态工作点。 本次采用的电路原理图如图3-1所示,使用的芯片是NE5532。这是一个同相放大器。同相放大器具有输入阻抗非常高,输出阻抗很低的特点,广泛用于前置放大级。该电路的缺点是易受干扰和精度低,所以使用的时候输出波形容易失真。这个电路的放大倍数为

AV=1+R2/R1

通过调节滑动变阻器R2可以改变放大倍数。将从FPGA输出的声音信号接到Vin,在从Vout输出,Vout=AV×Vin,通过调节滑动变阻器,改变AV,就达到了调节音量的目的。

图3-1 集成运放电路

3.2系统结构

整个系统的主要功能是实现预置乐谱的播放,按照功能进行细分,又可以把系统分为以下五个模块:时钟分频模块、乐谱发生模块、乐谱码查表模块、数控分频模块和音量调节模块。 3.2.1各功能模块概述

时钟分频模块:在乐谱发生模块和数控分频模块分别用到了4 hz和750 khz的时钟频率。BASYS2开发板内部时钟为50 mhz,因此我们需要一个时钟分频模块对开发板的内部时钟进行分频,经过分频后得到4 hz和750 khz的时钟频率,再分别送到乐谱发生模块和数控分频模块。他的输入为50 mhz时钟频率和reset信号,输出为4 hz和750 khz的时钟频率。 乐谱码发生模块:主要完成乐谱发生器的功能。该模块内存放了乐曲中的音符数据,通过一个4 hz时钟频率将音符数据一个一个地输出到下一个模块,即乐谱码查表模块。他的输入为4 hz的时钟频率,输出为乐谱码。 乐谱码查表模块:该模块从乐谱码发生模块得到当前音符所对应的乐谱码,然后对乐谱码根据表2-3进行查表,找到相应的分频预置数,并送到下一个模块,即数控分频模块。他的输入为乐谱码,输出为音符的分频预置数、简谱代码和高/低音。

- 7 -

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

二、需求分析和研究思路 2.1需求分析 MP3播放器的功能可以有很多,基本功能就有从SD卡读取文件,通过扬声器播放音乐,通过调节按钮调节音量等。还可以有多个扩展功能,如通过LED显示歌曲的歌曲名、演唱者、播放时间等相关信息,快进后退,暂停等。甚至可以实现一些较高级别的创新功能,如通过语音识别实现MP3的密码保护功能。这是一个发展空间很大的课题,研究者可以根据自己的能力水平和兴趣爱好自由发展。 本次课程设计中,我完成了预置音乐的播放,暂停,音符显示和音量调节功能。 ? 预置音乐的播放:把音乐的曲谱写在程序里面,通过对不同音符的发音频率进行分析,把不同的音符以不同频率的脉冲形式输出,接到扬声器发出声音。 ? 暂停:音乐是通过不断输送的时钟脉冲一个一个连续不断的实现输出的,使时钟脉冲停止就达到了是音乐播放暂停的功能。

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com