0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【紫光同创国产FPGA教程】【第十二章】SD卡音乐播放例程

FPGA技术专栏 来源:芯驿电子科技 作者:芯驿电子科技 2021-02-19 13:42 次阅读

原创声明:

本原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明出处。

适用于板卡型号:

PGL22G/PGL12G

1. 实验简介

在其他实验中我们已经完成了单独的SD卡读写和音频模块的录音播放,本实验通过搜索SD卡中WAV音乐文件,然后送到音频模块播放,完成一个简单音乐播放器的功能。

2. 实验原理

本实验一个关键是在没有文件系统的情况下,搜索SD卡每个扇区的内容,匹配出WAV文件,这里有一个假设:假设每一个文件都是从一个扇区第一个字节开始而且文件是连续存储的,经过大量实验,发现FAT32文件格式中的文件确实如此。

WAV文件格式

大部分的文件都有文件头,WAV也不例外,我们通过分析SD卡一个扇区的前几个字节,判断这个文件是否为WAV文件。

WAV文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。RIFF是英文Resource Interchange File Format的缩写,每个WAV文件的头四个字节便是“RIFF”,所以本实验就简单的以每个扇区的前4个字节是否为“RIFF”判断该文件是否为WAV文件,紧接着4个字节表示文件的大小,这样我们就可以确定要读取的数据量。WAV文件头大小是88字节,在播放时要把前88个字节的文件头去掉。

pIYBAGAvT8GARd5bAAAiD6yjMRM495.jpgwav文件头格式

3. 程序设计

例程中通过wav_read搜寻SD卡中的WAV文件,并将WAV文件读取出来写入FIFO,最后再从FIFO中将数据输出并写入音频模块。

o4YBAGAvT8KACg4pAAA_gSSPH48458.jpg

由于在前面的例程中已经讲过其他模块的原理及使用这里不再赘述,仅说明wav_read模块。

wav_read模块完成了从SD卡中搜索wav文件,读取wav文件,状态机如下,如果有搜索请求(按键按下),则进入搜索状态“S_FIND”,如果搜索到WAV文件,进入“S_PLAY_WAIT”状态,检查FIFO的剩余空间是否够512个字节,如果有512个字节空间,就进入“S_PLAY”状态读取wav的一个扇区内容。

pIYBAGAvT8KATaHtAAAYIFSrlII757.jpgwav_read模块状态机

在程序设计中,搜寻SD卡里图片的文件头是按每8个扇区地址(4K字节)搜寻一次的形式操作,所以在一次搜寻结束后,下一次搜寻时需要将地址左移3位对齐以保证下一次搜寻的地址和图片在SD卡中存储的地址一致。

o4YBAGAvT8OABPSIAAAMHeG4l6U786.jpg

说明:因为SD卡格式化的时候按最小单元4K格式化,音乐文件的头文件一般都是在SD卡的4K分区的起始位置开始放置。

wav_read模块的管脚说明:

信号名称 方向 说明
clk in 时钟输入
rst in 异步复位输入,高复位
ready out 空闲状态指示
find in 搜索播放请求
sd_init_done in sd卡初始化完成
state_code out 状态码0,表示sd还在初始化1,sd卡初始化完成,等待按键按下2,正在搜索WAV文件3,找到WAV文件,正在播放
sd_sec_read out sd卡读请求
sd_sec_read_addr out sd卡读请求扇区地址
sd_sec_read_data in sd卡读到的数据
sd_sec_read_data_valid in sd卡读数据有效
sd_sec_read_end in sd卡读请求完成
fifo_wr_cnt in fifo写端口已经使用量
wav_data_wr_en out wav文件写使能
wav_data out wav文件的音频数据

4. 实验现象

1)格式化sd卡(fat32格式),sd卡必须是2.0以上的版本(容量大于4G

pIYBAGAvT8OAV3zLAABd35d-dXU664.jpg

2)我们已经在demo的目录下为大家准备了一下的2个wav文件,把wav格式文件放到sd卡中,注意:这里的wav文件是立体声双声道,48K采样率,16bit的音频文件。

o4YBAGAvT8SADlH5AABZPsG6HyE098.jpg

3)将准备好的sd卡注入开发板的sd卡槽(sd卡不能带电插拔),音频模块接开发板J9扩展口,上电,下载实验程序,等待LED1灭、LED2、LED3、LED4亮(4'b0001)时,按下KEY2,这个时候等待LED1亮、LED2灭、LED3、LED4亮(4'b0010),表示正在搜索wav文件,如果找到LED1、LED2灭、LED3、LED4亮,这时候就可以听到音乐了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1625

    文章

    21644

    浏览量

    601419
  • 音频
    +关注

    关注

    29

    文章

    2831

    浏览量

    81287
  • SD
    SD
    +关注

    关注

    1

    文章

    161

    浏览量

    33626
  • 开发板
    +关注

    关注

    25

    文章

    4920

    浏览量

    97109
  • 紫光同创
    +关注

    关注

    5

    文章

    80

    浏览量

    27477
收藏 人收藏

    评论

    相关推荐

    紫光同创国产FPGA教程】【第八SD读写实验

    SD是现在嵌入式设备重要的存储模块,内部集成了nand flash控制器,方便了主机的的管理。本实验主要是练习对sd的扇区进行读写,通常sd
    的头像 发表于 02-05 11:35 8268次阅读
    【<b class='flag-5'>紫光</b><b class='flag-5'>同创</b><b class='flag-5'>国产</b><b class='flag-5'>FPGA</b>教程】【第八<b class='flag-5'>章</b>】<b class='flag-5'>SD</b><b class='flag-5'>卡</b>读写实验

    紫光同创国产FPGA教程】【第十四章】SD读取BMP图片显示例程

    SD读写,HDMI视频显示等例程,本实验将SD卡里的BMP图片读出,写入到外部存储器,再通过HDMI、LCD等显示。 本实验如果通过液晶屏显示,需要有液晶屏模块。 2. 实验原理 在
    的头像 发表于 02-20 13:44 7864次阅读
    【<b class='flag-5'>紫光</b><b class='flag-5'>同创</b><b class='flag-5'>国产</b><b class='flag-5'>FPGA</b>教程】【<b class='flag-5'>第十</b>四章】<b class='flag-5'>SD</b><b class='flag-5'>卡</b>读取BMP图片显示<b class='flag-5'>例程</b>

    2024新品|紫光同创盘古系列FPGA开发板套件,100%国产化方案

    专业厂商紫光同创生态合作伙伴,小眼睛科技一直深耕FPGA产品和解决方案,基于紫光同创器件,推出100%
    发表于 12-28 14:18

    国产FPGA介绍-紫光同创

    紫光同创紫光集团旗下紫光国微的子公司,成立于2013年,有十余年可编程逻辑器件研发经历,布局覆盖高中低端FPGA产品。 早在2015年,
    发表于 01-24 10:45

    紫光同创FPGA有哪些型号

    请问紫光同创FPGA有哪些型号?分别用于什么场景?
    发表于 01-24 10:48

    数据采集光盘实例第六第十二章

    数据采集光盘实例第六第十二章
    发表于 06-28 21:17

    明德扬视频分享点拨FPGA课程---第十二章  学习自检方法

    第十二章学习自检方法1. 波形对比方法http://yunpan.cn/cjZTiDA9pY56x访问密码 c359
    发表于 11-13 11:01

    至芯科技之altera 系列FPGA教程 第十二篇 功能仿真

    至芯科技之altera 系列FPGA教程 第十二篇 功能仿真
    发表于 08-11 03:30

    紫光同创简介

    本帖最后由 DamonXZ 于 2018-5-26 23:56 编辑 紫光同创紫光集团旗下公司,注册资金1.5亿元,总投资5亿元,是是国家高新技术企业,已通过ISO9001-2015
    发表于 05-26 10:58

    正点原子开拓者FPGA开发板资料连载第四十二章 音乐播放器实验

    ://www.openedv.com/thread-13912-1-1.html第四十二章 音乐播放器实验在 “音频环回实验”中,我们成功地用WM8978实现了音频环回,将WM8978输入的音频数据通过WM8978输出。本章我们
    发表于 08-24 11:25

    紫光同创FPGA开发套件,高性能国产FPGA方案

    紫光同创FPGA开发套件,高性能国产FPGA方案,100%国产化,全系列产品,方案可定制,满足多
    发表于 11-16 17:25

    国家金卡工程第十二次全国工作会在京召开

    国家金卡工程第十二次全国工作会在京召开 【RFID中国网独家报道】2009年12月23日,由国家金卡工程协调领导小组办公室主办的“国家金卡工程第十二次全国IC/RFID应用
    发表于 12-25 11:12 645次阅读

    【正点原子Linux连载】第十二章官方SDK移植试验-摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    【正点原子Linux连载】第十二章官方SDK移植试验-摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0
    发表于 11-23 17:51 11次下载
    【正点原子Linux连载】<b class='flag-5'>第十二章</b>官方SDK移植试验-摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    如何利用Arduino UNO和SD制作音乐播放

    前面用ATtiny85制作SD音乐播放器,本次主要利用Arduino UNO 和SD制作
    的头像 发表于 04-13 16:45 7725次阅读
    如何利用Arduino UNO和<b class='flag-5'>SD</b><b class='flag-5'>卡</b>制作<b class='flag-5'>音乐</b><b class='flag-5'>播放</b>器

    紫光同创助力国产FPGA高校生态建设

    11月,紫光同创受邀参加西南地区“国产FPGA产学研融合研讨会”和中山大学第二届集成电路工艺与测试实验教学研讨会,与高校老师深入探讨国产
    的头像 发表于 11-07 17:09 374次阅读