基于FPGA的音乐播放器
基于FPGA的MP3音乐播放器设计

现了 以下几个方面 的功能 : ① 循环播放系统 内预存 曲 目; ②播 放
列表 : 可 以建 立 自 己 的播 放 列 表 , 建 立 后 MP 3将 会 循 环 播 放 选 中 的 几 首 歌 曲 。如 只 选 择 一 首 歌 曲 ,则 可 以 实 现 重 复 播 放 的 功 能; ③播放模式选择 : 系统内贮存有“ 普通” 、 “ 流行” 、 “ 古典 ” 、 “ 摇 滚” 等模 式 可 供 选 择 , 以数字编号代 替 , 选 择 后 相 应 数 字 显 示 在
K e y wo r d s : F P GA, MP 3 , t h e c o n t r o l l e r , t o n e f r e q u e n c y
本文基于 F P G A 实 现 的 MP 3音 乐 播 放 器 的设 计 , 它 主 要 实
块、 按 键 消抖 模 块 、 控制模块 、 音乐乐谱存储模 块 、 发 生 模 块 和 显 示模块等等。其中 , 分频设计是基础 , 而 控 制 模 块 和 发 生 模 块 的
数码 管上 ; ④可 实现快进 、 快退 、 暂停等 功能 ; ⑤ 可 以进 行 “ 上一
曲” 、 “ 下一 曲” 曲 目的 自由 选 择 。
1 系统 硬 件 组成
系 统 硬 件 设 计 主 要 由 5部 分 组 成 : 输入模块 ( 时钟 、 按键 ) 、
F P G A、 输 出模 块 ( 喇叭 、 数码管显示 ) 。 本 设 计 以基 于 Al t e r a公 司 C y c l o n e系列 的 E P 1 C 2 QC 8作 为 核 心 芯 片 , 自主 设 计 制 作 的开 发 电路板 , 在 配 套 以 部 分 系 统 所 需 的外 围 电路 板 , 作 为 MP 3音 乐 播 放 器 的硬 件 主体 。 如 图 1所 示 为 系 统 硬 件 设 计 框 图 。
基于FPGA音乐播放器设计

参 考 文献 : 【 1 1 张庆 玲 , 杨 勇. F P G A 原 理 与 实践 [ M】 . 北京: 北 京航 空航 天 大 学 出版 社 . 2 0 0 6
[ 2 ] 刘睿 强. F P G A应 用技 术及 实践[ M ] . 北京: 北 京理 工大 学
出版 社 . 2 01 1
[ 3 】 袁 海林. 基于F P G A的具有存储功 能的 电子琴的设计 I J 1 .
中国科技信 g - 。 2 0 0 7 , ( 1 9 ) [ 4 ] 郑亚民. 可编程逻辑器件开发软件 Q u a a u s l I [ M] . 北京: 国
防 工 业 出版 社 . 2 0 0 6
机 械 与 自动 化
2 0 1 3 . N 0. 1 1 J o u r n a l o f He n a n S c i e n c e a n d ’ 。 。 。 。 。 T 。 。 。 e 。 ’ ’ c 。 。 。 h 。 。 。 。 ’ n ‘ 。 o 。 。 。 。 l 。 。 o 。 。 — g y —
计数 器是数字 系统 中应 用较 多的基本逻 辑器件 l 2 1 3 】 。 它的
综合分析 。其仿真结果如 图 2所示。
基本功能是实现计数操作 , 它也可用与分频 、 定 时、 产生节拍脉 冲和脉 冲序列等 。分频器是将不 同频段 的声音信号 区分开来 ,
分别给于放大 , 送到相应频段的扬声器 中再进行重放。
图 l 数控 果
作者简介 :
付莉 ( 1 9 8 5 年一 ) , 女, 汉族 , 毕业 于桂林 电子科技大学 , 助
教, 研究方向 : F P G A 及嵌 入 式 系统 设 计 。
基于FPGA的音乐播放器的设计-毕业设计论文

第三章
3.1
为了便于理解,首先介绍一下硬件电路的发声原理.我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制 某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音.而乐曲中的每一音符对应着一个确定的频率,因此,要想 发出不用音符的音调,实际上只要控制它输出相应音符的频率即可.乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在扬声器上连续地发出各个音符的音调.而要准确地演奏出一首乐曲,仅仅让扬声器能够发声是不够的,还必须准确地控制乐曲的节奏,即每个音符的持续时间.由此可见,乐曲中每个音符的发音频率及其持续的时间是乐曲能够连续演奏的两个关键因素.
课程设计
课程名称:可编程数字片上系统实训
设计题目:基于FPGA的音乐播放器设计
院系:电气信息学院
指导教师:谷雷
专业:通信工程
学号:122700109
姓名:尚斌成
长春建筑学院
2015年12月31日
摘 要
在 开发环境下,采用 硬件描述语言设计了一个可以在 芯片上实现的音乐播放器.通过将音乐播放器电路设计进行模块化分解,层次化设计,分成几个单独的结构体,每个结构体实现部分功能,经顶层文件将各单独结构体进行综合,最后将设计代码结合 模块制作的 文件下载到 实验箱进行功能验证,实现乐曲播放.由于音乐播放器的通用性及 语言的可移植性, 因此本音乐播放器可直接应用于各种不同系列的 芯片的设计中.
而简易电子琴,工作原理与乐曲演奏一样,只是将固定预置乐曲变成了手动按键输入,节拍时间取决于按键的停留时间,如果合适,同样能播放出完整的歌曲来.
3.1.1
频率的高低决定了音调的高低.音乐的十二平均率规定:每两个八度音(如简谱中的中音1和高音1)之间的频率相差一倍.在两个八度音之间又分为十二个半音.另外,音名A(简谱中的低音6)的频率为440Hz,音名B到C之间、E到F之间为半音,其余为全音.由此可以计算出简谱中从低音1到高音1之间每个音名对应的频率,所有不同频率的信号都是从同一个基准频率分频得到的.由于音阶频率多为非整数,而分频系数又不能为小数,因此必须将计算得到的分频数四舍五入取整.若基准频率过低,则由于分频比太小,四舍五入取整后的误差较大,若基准频率过高,虽然误差较小,但分频数将变大.实际的设计应综合考虑这两方面的因素,在尽量减小频率误差的前提下取合适的基准频率.因此,要想 发出不同音符的音调,实际上只要控制它输出相应音符的频率即可.综合考虑各因素,本文中选取12MHZ作为CLK的分频计数器的输入分频信号.乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频率,就可以在扬声器上连续地发出各个音符的音调.
基于FPGA的音乐播放器

基于FPGA的音乐播放器姓名:陆波学号:09090323指导老师:周爱军•音乐硬件演奏电路基本原理•硬件电路的发声原理,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制FPGA芯片某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。
乐曲中的每一音符对应着一个确定的频率,要想FPGA发出不同音符的音调,实际上只要控制它输出相应音符的频率即可。
乐曲都是由一连串的音符组成,因此按照乐曲的乐谱依次输出这些音符所对应的频,就可以在扬声器上连续地发出各个音符的音调。
而要准确地演奏出一首乐曲,仅仅让扬声器能够发生是不够的,还必须准确地控制乐曲的节奏,即乐曲中每个音符的发生频率及其持续时间是乐曲能够连续演奏的两个关键因素。
•音调的控制:频率的高低决定了音调的高低。
通过查阅资料,得到下面的音符名与频率的关系表:音符名频率/hz音符名频率/hz音符名频率/hz 低音1262中音1523高音11046低音2294中音2587高音21175低音3330中音3659高音31318低音4349中音4698高音41397低音5392中音5784高音51568低音6440中音6880高音61760低音7494中音7988高音71976•分频比预置数的计算:•分频比就是从6Mhz基准频率通过二分频得到的3Mhz频率基础上计算得到的。
对于乐曲中的休止符,只需将其分频系数设为0,将分频预置数设为16383即可。
例如:低音3的频率为330hz,分频比为3M/330hz=3000000/330=9091,则其分频预置数为:16383-9091=7292。
其他的音符对应的分频比和分频比预置数均按此法计算可得到。
依次计算出低、中、高3X7=21个音的预置数。
•各音阶对应的预置数如右表:音符名预置数音符名预置数音符名预置数低音14933中音110647高音113515低音26179中音211272高音213830低音37292中音311831高音314107低音47787中音412085高音414236低音58730中音512556高音514470低音69565中音612974高音614678低音710310中音713347高音714858•音长的控制:•音符的持续时间必须根据乐曲的速度及每个音符的节拍数来确定。
基于FPGA的音乐播放器的设计

目录引言 (1)1 VHDL及QUARTUSII软件简介 (2)1.1EDA简介 (2)1.2硬件描述语言VHDL (2)1.3软件介绍 (3)2 简易音乐演奏器设计 (5)2.1硬件电路设计 (5)2.2软件代码设计 (6)2.2.1音符储存单元 (6)2.2.2选择播放模式及手动模块单元 (6)2.2.3分频模块单元 (8)2.2.4预置数模块单元 (9)2.2.5音频发声模块单元 (10)3引脚锁定及下载 (10)3.1引脚锁定 (10)3.2结果分析 (11)4设计总结 (11)参考文献 (116)附录 (16)引言VHDL语言是一种用于电路设计的高级语言。
它在80年代的后期出现。
最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。
随着EDA技术的高速发展,电子系统的设计技术和工具发生了深刻的变化,大规模可编程逻辑器件CPLD/FPGA的出现,给设计人员带来了诸多方便。
利用它进行产品开发,不仅成本低、周期短、可靠性高,而且具有完全的知识产权。
突出了其作为硬件描述语言的良好的可读性、可移植性和易读性等优点。
本文基于FPGA开发系统,在QuartusII 7.2软件平台上,完成了简易乐曲演奏器设计和与仿真,并下载到试验箱进行硬件实现。
首先,本文介绍了QuartusII 7.2软件的基本使用方法和VHDL硬件描述语言的特点,采用VHDL 硬件描述语言描述简易信号发生器,完成对电路的功能仿真。
在设计过程中,重点探讨了简易乐曲演奏设计思路和功能模块划分。
然后,初步探讨了电路逻辑综合的原理,该软件对简易乐曲演奏器进行了逻辑综合。
最后,使用EDA实验开发系统进行电路的下载和验证。
验证结果表明设计的简易乐曲演奏器完成了预期的功能。
本设计是采用VHDL来实现的简易乐曲演奏器。
它能实现自动播放和手动播放。
1 VHDL及QuartusII软件简介1.1 EDA简介EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。
fpga音乐播放器课程设计

fpga音乐播放器课程设计一、课程目标知识目标:1. 让学生掌握FPGA基础知识,理解FPGA的内部结构和编程原理;2. 帮助学生了解音乐播放器的原理,掌握数字信号处理基础知识;3. 使学生能够运用Verilog或VHDL等硬件描述语言设计简单的FPGA音乐播放器。
技能目标:1. 培养学生动手实践能力,能够独立完成FPGA音乐播放器的设计、编程、调试与验证;2. 提高学生团队协作能力,能够在小组合作中发挥个人优势,共同完成项目任务;3. 培养学生解决问题和分析问题的能力,能够针对实际问题提出合理的解决方案。
情感态度价值观目标:1. 激发学生对电子设计和硬件编程的兴趣,培养良好的学习习惯;2. 培养学生勇于尝试、敢于创新的精神,增强自信心;3. 培养学生具备良好的沟通能力和团队协作精神,提高综合素质。
分析课程性质、学生特点和教学要求,本课程将目标分解为以下具体学习成果:1. 掌握FPGA基本原理,能够描述FPGA内部结构和编程方法;2. 学会使用硬件描述语言Verilog或VHDL编写简单的FPGA程序;3. 理解音乐播放器的基本原理,能够运用数字信号处理知识设计音乐播放器;4. 完成一个简易的FPGA音乐播放器设计项目,具备实际操作和调试能力;5. 在项目实践中,提高团队协作、沟通表达和问题解决能力。
二、教学内容1. FPGA基本原理及编程方法:包括FPGA内部结构、工作原理、硬件描述语言(Verilog/VHDL)基础、编程流程等;2. 数字信号处理基础知识:涉及采样定理、量化、编码、数字信号表示等基本概念;3. 音乐播放器原理:介绍音乐播放器的基本工作流程,包括音频信号的采集、处理、存储和播放;4. FPGA音乐播放器设计:结合教材章节内容,设计以下教学大纲:a. FPGA硬件设计:选用合适的FPGA开发板,了解硬件资源分配,设计FPGA硬件电路;b. 音频信号处理:学习音频信号的采样、量化、编码等处理方法,编写相应程序;c. 音乐播放器程序设计:运用Verilog或VHDL编写音乐播放器程序,实现音频信号播放功能;d. 系统调试与验证:对设计好的音乐播放器进行功能测试、性能优化和调试;5. 项目实践:根据教学进度,安排以下教学内容:a. 分组讨论:学生分组讨论设计方案,明确项目任务分工;b. 设计与编程:各组学生根据分工,完成FPGA音乐播放器的设计和编程;c. 调试与展示:学生调试音乐播放器,展示项目成果,分享设计经验;d. 评价与反馈:教师对各组项目成果进行评价,给予反馈和建议。
基于FPGA的音乐播放控制电路设计

音乐播放器控制电路课程设计报告班级:学号:姓名:指导老师:一、设计目的将《断桥残雪》简谱按照要求进行编码并将其写入只读存储器ROM之中,然后通过设计的电路读出ROM的内容,进行解码后驱动蜂鸣器播放。
二、开发环境采用Altera Quartus II 9.0软件设计环境。
它提供了全面的逻辑设计能力,包括电路图、文本和波形的设计输入以及编译、逻辑综合、仿真和定时分析以及器件编程等诸多功能。
特别是在原理图输入等方面,Altera Quartus II 9.0被公认为是最易使用、人机界面最友好开发软件。
并采用FPGALP-2900开发装置硬件实现,给人们带来极大的方便。
三、设计过程概述1、数字简谱简介数字简谱用不同的点和线段配合8个阿拉伯数字0~7构成音符,记录表示千变万化的音乐曲子及其基本音乐元素。
乐音是由三个要素决定的:频率决定了乐音的音高,频谱决定过了乐音的音色,音形标志着演奏方式。
乐曲的基本元素是:音的高低(音高)、音的长短(时值)、音的力度和音质(音色)。
音的高低和长短不同决定了乐曲的不同,因此构成了音乐的最重要的基础元素。
音乐用1、2、3、4、5、6、7分别表示同一调式7个不同的音高:多、来、米、法、索、拉、西。
这七个数字上、下标注的点表示音调升高8度音程或降低8度音程。
数字0为休止符,表示停止发音。
数字下或数字上的线段表示因的持续时间的长短。
没有线段的数字为4分音符,器时值为音长的基本度量单元,成为一拍。
数字下面标注的线段表示时间减短,没增加一条线段,表示时值减少一半,音符相应的成为8分音、16分音……数字后面的线段称为延长线,表示前一个音符的市场的增加,每条延长线的时值增量为1拍。
音长是一个相对的时间概念,一拍的时间长度没有限制,可以是1s,也可以是2s或是0.5s,。
若将4分音符的时长定为1s,其他音符的时值长度以其为基本参照度量,半拍为0.5s,2拍为2s,以此类推。
2、音高与频率关系20Hz至20KHz的音频脉冲信号控制蜂鸣器,可以使其根据控制信号的频率发出不同的音调。
基于FPGA的音乐播放器的设计

基于FPGA的音乐播放器的设计作者:陈嘉来源:《中国新通信》 2018年第19期【摘要】本文主要从FPGA 概述角度出发,阐述了基于FPGA 音乐播放器电路设计原理,论述了基于FPGA 音乐播放器算法模块设计,最后对音乐播放器系统实现进行叙述,并从不同角度进行详细分析,从而为基于FPGA 的音乐音乐播放器设计研究提供参考。
【关键词】电路原理电子产品系统设计引言随着科学技术不断创新与发展,电子产品生命周期逐渐被缩短,大部分电子产品在半年内便会被新产品所替代,因此要进一步对电子产品开发周期实施缩短,由此便应用到可编程逻辑器件,不仅能够有效缩短产品开发周期,同时随着集成电路制作技术水平不断提升,可编程逻辑器件整体设计技术水平得到有效提升,从而应用到各类电子产品开发当中。
一、FPGA 概述分析FPGA 主要指一种现场可编程门阵列,其主要以CPLD、GAL、PLA 等编程器为基础,通过不断发展和创新产生,属于半定制电路之一,属于专用集成电路领域中的一种,其优势在于填补定制电路存在的缺陷,并且可以解决可编程器件门电路数有限问题。
在实际应用过程中,其主要利用逻辑单元陈列,其中包括内部连线、输入输出模块以及可配置逻辑模块CLB,通过小型查找表来实施组合逻辑,每一个D 触发器输入端都连接着查找表,然后利用触发器来实现I/O 和逻辑电路驱动,同时利用向内部静态储存单元在实现编程数据加载,从而最终实现整个FPGA 功能。
二、基于FPGA 音乐播放器电路设计原理作为一种基本逻辑器件,计数器应用比较广泛,尤其是在数字系统当中应用比较频繁,其主要应用功能是通过计算操作来发挥自身效果,其在应用过程中可以和定时、分频产生脉冲序列和节拍脉冲,分频器能够将频段不同的声音信号进行划分,同时单独将不同声音信号方法,然后将其输送到一定频段扬声器当中,并通过重放方式来实现播放目的,由此可见,播放电路基本原理主要是将声音信号进行单独方法,并通过放大方式来达到一定播放效果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于FPGA的音乐播放器
尝试利用FPGA开发板板载资源以及外搭的功率放大电路制作一台音乐播放器,能够播放通过计算机拷贝在SD卡(或MMC卡、TF卡)的根目录中的某一个WAV文件。
一、基本要求:制作音乐播放器(50分)
(1)除了外置的音频功率放大器之外,本系统的主体部分(单片机)应基于STI51开发板,音乐来源于SD卡(或MMC卡、TF卡)(10分)
(2)制作一个音频功率放大器,能够实现音频信号的功率放大功能,并能成驱动普通扬声器或耳机。
(10分)
(3)能够播放单声道、8位,采样率为1.5K(或更高)的WAV文件。
实际播放时,歌声、伴奏声能依稀可辨。
(30分)
二、提高要求:提高音乐播放器的音质(50分)
(1)能够播放单声道、8位,采样率为2.5K或更高的WAV文件。
实际播放时,歌声、伴奏声清晰可辨。
(20分)
(2)音频功率放大器从FPGA开发板取电,使用USB即可完成系统所有器件的供电。
(10分)
(3)改造一切可以改造的部分以提高播放器的音质。
(20分)
(提示:可以利用Adobe Audition软件编辑WAV文件并改变音频位数与采样率;可以利用Ultraedit软件以二进制方式查看WAV文件;WAV文件数据区的每一个字节顺次送入D/A中即可实现WAV文件的播放。
)
起草人:刘文浩
2010-11-25,04:43
若具备一定的基础,以下内容可以忽略。
下面的内容是利用单片机制作音乐播放器的步骤。
题目分析
1 系统开发步骤
本题目对于刚学习完单片机尚未上手的同学来说可能难度较大,刚开始就着手制作一个以SD卡(或MMC卡、TF卡)为存储介质的音乐播放器并且要想尽办法提高播放音乐的音质具有较大难度,且容易让制作者失去继续制作下去的信心。
建议在制作过程中循序渐进,一步一步逐步深入逐渐实现以下功能:
第一步:能够播放存储在单片机程序(ROM)中的音乐。
(参考时间:4天)
第二步:通过串口调试助手向单片机发送WAV文件,使单片机能够播放计算机发出的WAV文件数据流。
(参考时间:3天)
第三步:能够播放通过计算机拷贝在SD卡(MMC卡、TF卡)的根目录中的第一个WAV文件。
(参考时间:12天)
第四步:尽可能的提高播放的音乐的音质。
(参考时间:-_- )
当然了如果做此题的同学感兴趣则可以继续下去完成以下功能:
第五步:播放通过计算机拷贝在SD卡(MMC卡、TF卡)中的所有文件并支持歌曲名称显示、上一首下一首歌切换功能。
(参考时间:12天)
第六步:播放通过计算机拷贝在普通U盘的根目录中的第一个WAV文件。
(参考时间:30天)
注:以上的参考时间为一个具有三个人的团队每天正常奋斗1~2小时(队友之间不吵架^_^、各种开发调试工具齐全好用,含硬件制作、软件编写及其调试)的情况下衡量的。
仅仅用来表示各个步骤开发的相对难度,仅供参考。
2 相关概念、知识、技术、开发工具
下面我将把每个步骤可能会用到的相关的知识、技术罗列出来并在必要的地方加以简单介绍,以方便摸不到头脑的同学找到方向。
注意以下内容仅供参考,列表中的内容不限于此。
Step 1 播放存放在单片机程序(ROM)中的音乐。
相关知识或技术:声音的本质、声音采集与播放技术、功率放大电路、51单片机存储器结构、TLC5620相关知识、Keil仿真、音频文件基本概念(如采样率、位深度、声道等)、WAV文件结构……
相关提示:附件中的Welcome.h与WinStart.h分别包含女声朗读的“欢迎下次光临,欢迎光临”的声音以及Windows XP经典启动声音的数据,将这些数据分别依次以大约5.8k/s(Welcome.h)和2k/s(WinStart.h)的速率送入STI51开发板的DAC中即可成功实现对应声音的播放功能。
这两个头文件的生成程序可以参考附件中提供的“将wav文件转换为数组”程序。
该程序可以实现将WAV文件读取出来并生成音乐信息的头文件的功能。
任意采样率的wav文件可以用Adobe公司的Audition软件生成:打开音频文件之后,全选(Ctrl+A)想要转换的音频文件,按F11即可出现采样类型转换的窗口,如下图所示。
华中科技大学校内Audition下载:
ftp://softdown:******************.18.16/kind_16/class_64/Adobe_CS3_WMZ_All.iso
Step 2 通过串口调试助手向单片机发送WAV文件,使单片机能够播放计算机发出的WAV文件数据流。
相关知识或技术(之前罗列过的不再重复出现,除非有更深层次的需要,下同):WAV文件结构、UART相关知识、串口调试助手的使用……
相关提示:可以使用UltraEdit查看以二进制形式查看任意文件,所以wav文件也可以通过ultraedit查看。
华中科技大学校内UltraEdit下载:
ftp://softdown:******************.18.11:2010/kind_13/class_25/UltraEdit-
32_12.10_SC.rar
附件中还提供了一个可以以设定的波特率发送文件功能的串口调试程序,可以帮助实现文件发送的功能。
Step 3 能够播放通过计算机拷贝在SD卡(MMC卡、TF卡)的根目录中的第一个WAV文件。
相关知识或技术:SD卡基本常识、电平转换、SPI总线、文件存储方式、文件系统(入门级)……
➢SD卡驱动程序。
鉴于SD卡的官方DataSheet内容有100多页全英文,对单片机初学者而言可能具有一定的难度,在附件中提供了一个可以使用的SD卡的驱动程序,可以实现读取SD卡的某一地址的某个数据的功能。
另外附件中有傻瓜式的SD卡驱动程序使用说明。
建议时间不是很充足的团队参考或直接使用附件中提供的SD卡SPI驱动,但是务必完整阅读所有源代码(不到200行,工作量极小),这可能会节省大量的调试时间,避免系统出现问题时无从下手。
➢SD卡参考电路(只画出部分电路,仅限于SPI模式)
Step 4 尽可能的提高播放的音乐的音质。
相关知识或技术:嵌入式系统性能优化、功率放大器失真度、电源抑制比、功率放大器信噪比……
相关提示:
从数字电路角度可以考虑将系统核心部分采用汇编语言、更换晶振、优化执行算法、建立合适的缓存机制、精简驱动命令、减少中断数量甚至不用任何中断等方法提高播放速度来提高单片机所能播放的音乐的最大采样率来提高音质。
也可以通过Keil仿真找到影响播放音乐音质的根本因素。
建议先在SD卡中存储一个波形为正弦波的wav文件,播放此正弦波时,通过用示波器、函数发生器等设备来找到影响音质的原因,可以更快的找到影响音质的原因。
从模拟电路(后级的音频功放)角度可以发挥的部分更多,在此不再列举。
整个制作过程中可能会用到的开发软件、仪器:
基地四宝(稳压源、信号源、示波器、万用表)、单片机开发工具一套、PC上的C语言IDE软件、WinHex、音频信号源(如电脑、iPod等)、UltraEdit、Adobe Audition、串口调试助手……
最终效果
笔者曾与2009年第三届炬力杯时按照上述步骤制作过一台音乐播放器,在基地的STI51开发板上最终实现了以5.7K采样率播放ROM中的音乐、3.8K采样率播放串口发来的音乐、3.3K采样率播放SD卡中的音乐的功能。
若采用更换晶振等超频的方法,最高实现了8位、12.7K采样率音乐的播放功能。
感兴趣的同学可以尝试突破这个记录,让基地51单片机的功能发挥到极致。
我还想说
➢如果手头没有SD卡,在购买SD卡时,一定要注意购买SD卡而非SDHC 卡。
SD卡与SDHC卡在SPI方式读写的协议是不同的。
当然了一般的小于4GB的MMC卡、TF卡也可以。
➢注意SD卡供电电压为3.3V,若采用5V电压供电则SD卡可能瞬间烧毁,务必注意。
➢建议同学们遇到问题时翻阅一下SD卡的官方DataSheet,相信会有很多收获的。