SD卡音乐播放器

上传人:汽*** 文档编号:561712768 上传时间:2023-01-07 格式:DOC 页数:50 大小:1.37MB
返回 下载 相关 举报
SD卡音乐播放器_第1页
第1页 / 共50页
SD卡音乐播放器_第2页
第2页 / 共50页
SD卡音乐播放器_第3页
第3页 / 共50页
SD卡音乐播放器_第4页
第4页 / 共50页
SD卡音乐播放器_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《SD卡音乐播放器》由会员分享,可在线阅读,更多相关《SD卡音乐播放器(50页珍藏版)》请在金锄头文库上搜索。

1、基于FPGA的SD卡音乐播放器设计 实习项目: 基于FPGA的SD卡音乐播放器设计课程名称: 电子系统设计实习日期: 班 级: 学 号: 姓 名: 目 录一、实习系统简介- 1 -SD 卡操作简介- 3 -1.1简介- 3 -1.2功能介绍- 4 -1.3SD总线模式- 4 -二、SD 卡接口描述- 7 -2.1 SD 模式引脚- 7 -2.2 SPI 模式引脚- 7 -2.3 寄存器- 8 -2.4 SD 卡总线拓扑- 8 -2.5 电气接口上电- 9 -2.6 寄存器- 9 -三、SD 卡协议- 11 -3.1 SD总线协议- 11 -3.2 协议功能描述- 14 -3.3 卡识别模式-

2、14 -3.4 数据传输模式- 15 -四、音频模块- 16 -1.内部结构- 17 -2.引脚定义- 17 -3.典型操作时序- 18 -4.音频输入原理图- 18 -5.MIC输出原理图- 19 -五、 实习用到主要程序- 20 -1.音频驱动程序- 20 -2.SD卡驱动程序- 28 -3.主程序- 36 -六、实习心得- 49 -一、实习系统简介许多商业媒体/音频播放器使用一个大的外部存储设备,比如一个SD卡或CF卡,来存储音乐或视频文件。这样的设备还包括高质量的DAC设备可以产生良好的音频质量。DE-2- 70板提供的硬件和软件需要SD卡访问和专业的音频性能,这样它可以使用DE-2-

3、70板设计先进的多媒体产品。在此演示中,我们展示了如何实现一个SD卡音乐播放器在DE-2-70板运行,音乐文件存储在SD卡和DE-2-70板可以通过它播放音乐文件通过cd品质的音频DAC电路。我们使用Nios II处理器读音乐中存储的数据SD卡和使用沃尔夫森WM8731音频编解码器播放音乐。图1.1显示了硬件框图。这个系统需要一个50MHZ时钟提供DE-2-70板。锁相环生成一个100 - mhz时钟为NIOS II处理器和其他控制器提供时钟。音频芯片是由音频控制器一个用户定义的SOPC组件。这个音频控制器需要一个输入时钟运行在18.432 MHZ。在这个设计中,时钟是由锁相环块组成。音频控制

4、器需要音频芯片工作在主模式,所以串行位(井底油嘴)和左/右通道钟(LRCK)提供音频芯片。这个7段显示控制的SEG7控制器也是一个用户定义的SOPC组件。两个PIO针连接到I2C总线。I2C协议是由软件实现。四个PIO针连接到SD卡套接字。SD比特模式是用于访问SD卡,由软件实现。所有的其他组件在SOPC框图是内置组件SOPC的组成成分。图1.1方框图的SD音乐播放器 图2显示了这个演示的软件堆栈。SD比特模块实现了比特模式协议对阅读记忆原始数据的SD卡。FAT16的块实现FAT16文件系统读波文件存储在SD卡。在这个块,只有实现阅读功能。波自由块实现波文件解码函数接从波文件收音频信号。I2C

5、块实现了I2C协议配置音频芯片。实现显示功能的SEG7块显示运行时间。音频块实现了音频FIFO检查功能和音频信号发送/接收功能。图2。软件堆栈的SD音乐播放器音频芯片应该配置在发送之前音频信号的音频芯片。主要程序使用I2C协议配置音频芯片工作在主模式中,音频接口作为与16位每通道I2S采样率根据波文件内容。在音频循环,主程序读取512字节的音频数据从SD卡,然后写数据DAC FIFO的音频控制器。在写数据到FIFO,程序确保先进先出不完整。该设计还混合了音频信号从麦克风在和输出的卡拉ok风格效果,使用到旁路和SITETONE功能音频芯片。最后,用户可以获得SD音乐播放器的状态从2 x16液晶模

6、块、7段显示器和发光二极管。顶部和底部排液晶模块将显示文件音乐的名字和音乐音量波,7段显示器将显示音乐文件已打开多久了。LED将指示音频信号的强度。SD 卡操作简介1.1简介SD卡是基于flash 的存储卡。 SD卡和MMC卡的区别在于初始化过程不同SD卡的通信协议包括 SD和SPI 两类。SD卡使用卡内智能控制模块进行 FLASH 操作控制,包括协议、安全算法、数据存取、ECC算法、缺陷处理和分析、电源管理、时钟管理1.2功能介绍1) 主机无关的FLASH 内存擦除和编程 读或写数据,主机只要发送一个带地址的命令,然后等待命令完成,主机无需关心具体操作的完成。当采用新型的FLASH时,主机代

7、码无需更新。 2) 缺陷管理 3) 错误恢复 4) 电源管理Flash每个扇区有大约10万次的写寿命,读没有限制。 擦除操作可以加速写操作,因为在写之前会进行擦除。1.3SD总线模式当主机定义了 SD 卡不支持的电压范围时,SD 卡将处于非活动状态,将忽略所有的总线传输。要退出非活动状态唯一的方法就是重新上电。 (1)S D卡获取和识别 SD卡总线采用的是单主多从结构,总线上所有卡共用时钟和电源线。主机依次分别访问每个卡,每个卡的CID寄存器中已预编程了一个唯一的卡标识号,用来区分不同的卡。 主机通过READ_CID 命令读取CID寄存器。CID寄存器在 SD卡生产过程中的测试和格式化时被编程

8、,主机只能读取该号。 DAT3线上内置的上拉电阻用来侦测卡。在数据传输时电阻断开(使用 ACMD42)。(2) 卡状态 卡状态分别存放在下面两个区域: 卡状态(Card Status),存放在一个32位状态寄存器,在卡响应主机命令时作为数据传送给主机。 SD状态(SD_Status),当主机使用SD_STATUS(ACMD13)命令时,512位以一个数据块的方式发送给主机。SD_STATUS还包括了和BUS_WIDTH、安全相关位和扩展位等扩展状态位。 (3)内存组织数据读写的基本单元是一个字节,可以按要求组织成不同的块。Block:块大小可以固定,也可以改变,允许的块大小是实际大小等信息存储

9、在 CSD 寄存器。 Sector:和擦除命令相关,由几个块组成。Sector 的大小对每个设备是固定的,大小信息存储在CSD寄存器。 WP Group:写保护单位。大小包括几个group,写保护由一位决定,对每个设备大小是固定的,存储在CSD 寄存器。(4) 读写操作Single Block Mode:主机根据事先定义的长度读写一个数据块。由发送模块产生一个16位的 CRC 校验码,接受端根据校验码进行检验。读操作的块长度受设备 sector 大小 (512 bytes)的限制,但是可以最小为一个字节。不对齐的访问是不允许的,每个数据块必须位于单个物理sector 内。写操作的大小必须为se

10、ctor 大小,起始地址必须与sector 边界对齐。 Multiple Block Mode:主机可以读写多个数据块(相同长度),根据命令中的地址读取或写入连续的内存地址。操作通过一个停止传输命令结束。写操作必须地址对齐。(5) 数据擦除 SD 卡数据擦除的最小单位是 sector。为了加速擦除操作,多个 sector 可以同时擦除。为了方便选择,第一个指令包含起始地址,第二个指令包含结束地址,在地址范围内的所有sector 将被擦除。 (6) 写保护 两种写保护方式可供选择,永久保护和临时保护,两种方式都可以通过PROGRAM_CSD指令进行设置。永久保护位一旦设置将无法清除。 3.10

11、拷贝位 通过CSD寄存器中的拷贝位(copy bit)设置SD卡中的数据是原始数据还是拷贝数据。拷贝位一旦设置将无法清除,在测试和格式化时使用。(7) CSD 寄存器 所有SD卡的配置信息存储在CSD寄存器。通过SEND_CSD读取,PROGRAM_CSD修改二、SD 卡接口描述 引脚和寄存器 连主机通过 9个引脚和 SD卡相2.1 SD 模式引脚有DAT0使用扩展数据线(DAT1-DAT3)上电后为输入,SET_BUS_WIDTH命令执行后作为数据线。即使只,所有数据线都和外部上拉电阻连接,否则DAT1 & DAT2(如果未被使用)的振荡输入将引起非期望的高电流损耗。 上电后,数据线输入50

12、K(+/-20K)欧姆的上拉(用来进行卡侦测和SPI 模式选择)。用户可以在常规数据传输时,通过SET_CLR_CARD_DETECT (ACMD42)命令分离上拉。2.2 SPI 模式引脚2.3 寄存器主机通过重新上电来重置(reset)卡。卡有它自身检测上电的电路,当上电后卡状态切换到 idle 状态。也可以通过 GO_IDLE (CMD0)指令来重置。2.4 SD 卡总线拓扑 SD总线有6根通信线和三根电源供应线: CMD命令线是双向信号线。主机和卡通过push pull 模式工作。 DAT0-3数据线是双向信号线。主机和卡通过push pull 模式工作。 CLK时钟是从主机到卡的信号

13、。CLK通过push pull 模式操作。 VDDVDD是所有卡的电源供应线。 VSS1:2VSS是2根地线。在初始化的时候,向每个卡分别发送命令,允许应用检测卡并给物理槽(physical slot)分配逻辑地址。数据通常分别传输给每个卡。然后,为了方便处理卡堆栈,初始化后所有命令同时发送给所有卡,在命令数据包中包含了操作地址。 SD总线允许动态配置数据线数目。上电后默认SD卡只用DAT0作为数据传输线。初始化后,主机可以改变总线宽度。这个特性使得在硬件开销和系统性能间取得平衡。2.5 电气接口上电上电后,包括热插入,卡进入idle状态。在该状态SD卡忽略所有总线操作直到接收到ACMD41

14、命令。ACMD41命令是一个特殊的同步命令,用来协商操作电压范围,并轮询所有的卡。除了操作电压信息,ACMD41的响应还包括一个忙标志,表明卡还在power-up 过程工作,还没有准备好识别操作,即告诉主机卡还没有就绪。主机等待(继续轮询)直到忙标志清除。单个卡的最大上电时间不能操作1秒。 上电后,主机开始时钟并在CMD 线上发送初始化序列,初始化序列由连续的逻辑“1组成。序列长度为最大 1 毫秒,74 个时钟或 supply-ramp-up 时间。额外的 10 个时钟(64 个时钟后卡已准备就绪)用来实现同步。 每个总线控制器必须能执行ACMD41和CMD1。CMD1要求MMC卡发送操作条件

15、。在任何情况下,ACMD41或CMD1必须通过各自的CMD线分别发送给每个卡。2.6 寄存器 2.6.1 OCR(Operating Conditions Register)32 位的操作条件寄存器存储了 VDD电压范围。SD 卡操作电压范围为 23.6V。然而从内存中访问数据的电压是2.73.6V。OCR显示了卡数据访问电压范围,结构如下表所示。OCR结构如下图所示。如果第32位(busy bit)置位,表明卡上电过程已结束2.6.2 CID(Card ntification) CID寄存器长度为16个字节的卡唯一标识号,该号在卡生产厂家编程后无法修改。SD和MMC卡的CID寄存器结构不一样。三、SD 卡协议 3.1 SD总线协议 SD总线通信是基于命令和数据位流方式的,由一个起始位开始,以一个停止位结束:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号