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
    +关注

    关注

    1599

    文章

    21278

    浏览量

    592839
  • 音频
    +关注

    关注

    28

    文章

    2595

    浏览量

    79951
  • SD
    SD
    +关注

    关注

    1

    文章

    135

    浏览量

    33300
  • 开发板
    +关注

    关注

    25

    文章

    4401

    浏览量

    93777
  • 紫光同创
    +关注

    关注

    4

    文章

    68

    浏览量

    27242
收藏 人收藏

    评论

    相关推荐

    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

    UNIX线程控制

    UNIX环境高级编程(3) 第十二章
    发表于 10-12 10:02

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

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

    如何去使用嵌入式SQL呢

    文章目录 第十二章 使用嵌入式SQL(四)SQL游标`DECLARE`游标声明OPEN游标声明`FETCH`游标声明CLOSE游标声明 第十二章 使用嵌入式SQL(四)SQL游标游标是指向数据的指针
    发表于 12-15 09:01

    紫光同创国产FPGA教程】【PGC1/2KG第一】控制LED灯实验例程

    适用于板卡型号: 紫光同创PGC1/2KG开发平台(盘古1K/2K) 一:盘古1K/2K开发板(紫光同创PGC2KG开发平台)简介 盘古1/2K 开发板是一套基于
    发表于 08-08 11:49

    紫光同创PGL22G开发板|盘古22K开发板,国产FPGA开发板,接口丰富,高性价比

    盘古22K开发板是基于紫光同创Logos系列PGL22G芯片设计的一款FPGA开发板,全面实现国产化方案,板载资源丰富,高容量、高带宽,外围接口丰富,不仅适用于高校教学,还可以用于实验
    发表于 09-21 18:16

    基于紫光同创PGL50H-6IFBG484的光端机方案

    基于紫光同创PGL50H-6IFBG484的光端机方案展示#小眼睛FPGA#紫光同创#国产
    发表于 11-02 17:44

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

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

    【正点原子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