《基于FPGA的音乐播放器设计报告》由会员分享,可在线阅读,更多相关《基于FPGA的音乐播放器设计报告(21页珍藏版)》请在金锄头文库上搜索。
1、中国地质大学(武汉)中国地质大学(武汉)基于基于 FPGAFPGA 的音乐播放器设计的音乐播放器设计专 业 班 级 小组成员 指导老师 2015.062015.06目录目录一、 实现功能.2二、 成员及任务分工.2三、详细设计及原理.31.系统硬件结构设计 .32.程序流程 .4四、 具体实现.51.SD 卡文件系统的初始化.52.按键选歌模式 .63.自动播放模式 .74.快进、快退、播放/暂停功能 .75.LCD 显示歌曲名及歌词模块.86.LED 显示功能.107.数码管显示当前曲目、总歌曲数和时间功能 .11五、碰到的问题及解决过程.121.问题一 .122.问题二 .123. 问题三
2、 .134. 问题四 .13六、运行效果.13七、设计小结.22一、一、实现功能实现功能1. 支持SD卡文件读取功能;2. 支持WAV格式音频功能;3. 支持歌词同步显示功能;3. 支持歌曲名称显示功能;4. 支持“播放/暂停”控制功能;5. 支持歌曲选择功能;6. 支持LED灯显示音量功能;7. 支持返回功能;8. 支持硬启动从ROM启动;9.支持数码管显示总歌曲数和第几首歌曲功能;10.支持数码管显示歌曲的播放进度功能;11. 支持LED灯指示拨码开关 07 状态功能;12. 支持前 6 首歌曲直接选择功能。2、成员及任务分工成员及任务分工 姓名姓名所做任务所做任务熟悉 Nios II 系
3、统开发流程,看懂原工程文件。了解 SD 卡 FAT 文件系统大致的读写流程;格式化 SD 卡为FAT16 格式并将.wav 和.lrc 文件复制到 SD 卡根目录下。到实验室去测试原工程文件的硬件设置和软件功能。测试软件功能,明确各个按键对应的功能。一起讨论如何更改原来的功能,并添加新功能。完成实验任务,分工书写课程设计报告。三、详细设计及原理三、详细设计及原理1. 1.系统硬件结构设计系统硬件结构设计本设计采用DE2 开发板,充分利用NiosII 软核的特性,结合自定义用户组件、自定义用户外设。在FPGA 中使用软核处理器的优势在于灵活高效,硬核实现没有灵活性,通常无法使用最新的技术。而应用
4、Nios II 软核处理器,开发者能够完全定制CPU 和外设,获得恰好满足需求的处理器,充分利用了Nios II 处理器灵活和高效的特性。通过DE2 开发板上的SD 卡插槽,读取SD 卡上的音频数据后,送到音频编/解码器,对音质进行相关处理后输出,进行音乐的播放 SD 卡音乐播放是由NiosII 处理器通过软件完成的。该音乐播放器主要分两种播放模式: 按键选歌模式和自动播放模式。根据系统所划分的功能,处理器、音频设备、存储器、输入、输出和交互接口都必须选用硬件设备实现。其中硬件部分如处理器用Altera公司的Nios II软核来实现,MP3 音乐文件存储于外部的SD卡中,DE2 开发板上有 4
5、 个为用户预留的按钮可以用来输入,作为MP3 播放器的功能键,输出可以使用开发板上的输出口来接音频设备,用户与开发板的交互可以使用开发板上RS-232 串行口和JTAG口。整个系统分为四个部分:CPU模块(包括外围配置芯片、扩展芯片等) 、存储器(SD卡)模块、LCD显示模块、GPIO接口模块。图 1 mp3 播放器硬件整体框图2. 2.程序流程程序流程图 2 程序流程图对于MP3 播放器来说,它应该在板子加电时自动加载到SRAM,然后到一个约定的地方读取音乐数据就可以了。本系统会播放几个音乐文件,所以MP3 播放器就需要通过一个机制来管理或定位这些音乐文件,也就是通过一个文件系统管理功能的程
6、序,让这个文件系统软件和MP3 播放器配合使用。音乐文件的存放应该配合MP3 音乐的播放,音乐文件的播放和显示通过文件系统获得相应的播放音乐文件的地址和相关信息,存储也应该符合系统文件的定义来存放。也就是说文件系统是存放音乐和播放音乐的一个中间层,是音乐文件播放和音乐文件存放的一个默认标准,所以文件系统的结构定义是文件读取和存储的关键。4、具体实现具体实现1.SD1.SD卡文件系统的初始化卡文件系统的初始化 调用函数SD_card_init();(1)SD卡简介及FAT16 文件系统构成介绍:SD卡(Secure Digital Memory Card)是一种基于半导体快闪记忆器的新一代记忆设
7、备,不需要额外的电源来保持其上记忆的信息。而且它是一体化固体介质,没有任何移动部分,所以不用担心机械运动的损坏。SD卡的结构能保证数字文件传送的安全性,也很容易重新格式化,所以有着广泛的应用领域,它被广泛地于便携式装置上使用,例如数码相机、个人数码助理(PDA)和多媒体播放器等。(2)FAT16 文件系统构成 MBR区装有用于启动系统的代码和有关文件系统的重要信息; 在主引导扇区的末尾处含有分区表,分区表用于标识每个分区开始和结束的表项,最多可以有 4 个分区, 每个分区可以包含不同的文件系统。分区引导扇区记录各个分区启动的引导程序。FAT表记录SD存储卡以簇为单位进行记录的存储空间的信息,簇
8、的大小根据实际系统的电子盘特性设定。根目录区记录文件名和目录名。 用户数据区用于存放用户数据及子目录。 SD卡格式化时,系统采用了FAT16 文件格式。主引导区位于整个SD卡的 0柱面 0 磁头,1 扇区存放引导程序用于启动和引导操作系统,同时存放SD卡的主分区表,记录卡的分区信息。在总共 512 字节的主引导记录中,MBR 的引导程序占了其中的 446 个字节(相对于扇区首地址的偏移量 0H1BDH) ,随后的64 字节(偏移量 1BEH1FDH)为DPT(Disk Partition Table,硬盘分区表) ,最后的两个字节“55 AA” (偏移量 1FEH1FFH)是分区有效的结束标志
9、。FAT16 文件系统最多支持 4 个分区项,对应于 4 个分区表。在DPT部分共 64 字节中,以 16 字节为分区表项单位描述一个分区的属性。在本系统能够SD卡只作为一种存储介质使用,且整个系统作为一个分区处理。2. 2.按键选歌模式按键选歌模式(1)进入按键选歌当swit0 为 0,即无拨码开关置为1时,LCD提示“Press key3 to choose a song” ,按下KEY3 后,LCD先显示歌曲总数和歌词总数,继而显示当前所选歌名。LCD_Init(); LCD_Show_Text(title0);lcd_write_cmd(LCD_16207_0_BASE,0xC0);L
10、CD_Show_Text(title1);while(1)/检测进入选歌界面key=IORD(BUTTON_PIO_BASE,0); key3=keyif(key3)break;(2)歌曲选择功能上一首 / 下一首功能分别由按键KEY2 和按键KEY1 实现,播放至最后一首歌时按KEY1 按键则将播放第一首歌曲;直接选歌功能由拨码开关SW1015 实现,可选择第 16 首歌曲。a代表当前为第几首歌,num_music为歌曲总数。key=IORD(BUTTON_PIO_BASE,0); key=key key3=keykey2=keykey1=keyswit2=IORD(SWITCH_PIO_B
11、ASE,0);swit2=swit2switch(swit2)case 0x0400: a=0; break;case 0x0800: a=1; break;case 0x1000: a=2; break;case 0x2000: a=3; break;case 0x4000: a=4; break;case 0x8000: a=5; break; default: if(key1)a=(a+1)%num_music; else if(key2)a=(a+num_music-1)%num_music; break;后一首 a=(a+1)%num_music; 前一首 a=(a+num_musi
12、c-1)%num_music;(3)确认选歌按下KEY3 按键,确认当前所选歌曲,开始播放音乐。if(key3)break;3. 3.自动播放模式自动播放模式(1)循环播放模式else if(swi0)/连续播放 a=(a+1)%num_music; time(0,a+1,num_music);当开关swi0拨动到1位置时,为循环播放模式,播放下一首歌曲。(2)单曲循环模式else if(swi1)/循环播放a+=0;time(0,a+1,num_music); /显示时间 当开关swi1拨动到1位置时,为单曲循环模式,循环播放当前歌曲。(3)随机播放模式else if(swi2)/随机播放a=(num_lyrics+Tmp1+Tmp2+musica.m_name0)%num_music;time(0,a+1,num_music); /显示时间 当开关swi2拨动到1位置时,为随机播放模式,随机播放歌曲。4. 4.快进、快退、播放快进、快退、播放/ /暂停功能暂停功能(1)快进if(swi4)/快进b=(b+4)%cluster_num;time(b*clupsec_num,a+1,num_music); /显示时间 usleep(2000