基于FPGA的音乐播放器设计报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

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

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功