FPGA实现SD卡音乐播放

来源:互联网 发布:mysql字符串长度 编辑:程序博客网 时间:2024/06/15 07:08

1

   

前面我们已经学习了 SD 卡的数据读写和 WM8731 语音录放的功能, 那这章我们把这两部分结合起来做一个音乐播放器吧! 本实验把存储在 SD 卡的音频文件(.wav)读取后传输到WM8731 中进行播放, 在学习 FPGA 之余, 再用自己设计的 FPGA 音乐播放器听听美妙的音乐,来放松放松自己!


2

用户需要准备一张 micro SD 卡(SD HC), 另外我们需要往这个 SD卡里存入几首我们想听的 wav 格式的音乐。

1.wav 音乐格式

注意这里的.wav 音乐文件格式需要为 16 位,采样频率为 48kHz 的,这跟 WM8731 的寄存器设置有关。关于音乐文件,用户可以从网上下载 wav 格式的音乐, 再通过软件转化成 16 位,采样频率为 48Khz 格式的 wav 文件。

2. SD 卡音乐存放

因为跟我们开发板配套使用的是 Micro SD 卡, 我们的电脑没有这种专门的读写 Micro SD 卡的接口,但不要紧,现在 Micro SD 转 USB 的读卡器到处都是。以下为我们做实验使用的转 USB Micro SD 读卡器。

电脑插入 SD 卡之后首先格式化一下 SD 卡, 这里选择文件系统为 FAT32(默认) , 分配单元大小设置为 32KB。


格式化图片.png

格式化完成后我们把这两首歌拷贝到 SD 卡的根目录, 这里向 SD 卡的根目录存放两首音乐文件后如下:


image.png


我们再用 winhex 工具来查看一下这两首歌曲在 SD 卡的 Sec 地址, 在 winhex 里选择菜单 tool->open disk, 再选择 逻辑卷/分区 下的 RM1 SD 卡。


image.png


找到 SD 卡根目录下的两个音乐文件并记录这两文件在 SD 卡里的扇区地址,这个地址就是我们在下面 verilog 程序里编写读 SD 卡程序的时候的起始 Sec 地址。


image.png


在 Winhex 窗口我们可以看到 SD 卡的根目录地址为 32768, 歌曲“孙楠-I Believe.wav”在 SD 卡的 SEC 偏移地址为 117032,歌曲“金玟岐-岁月神偷.wav”在 SD 卡的 SEC 偏移地址为 32800。这样歌曲“大海.wav”在 SD 卡的绝对地址 149800(32768+117032) 。我们的程序只要从 SD 的 SEC 地址149800 开始读数据就可以了。


注意: SD卡格式化的时候选择不同的分配单元大小,音乐文件在SD卡的地址也会不同。在WINHEX显示文件的地址有时显示的就是文件在SD卡的绝对地址,不是根目录的偏移地址,这样的话计算的时候就不需要再加上SD卡的根目录地址了。



原创粉丝点击