新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于SoPC的SD卡控制器IP核的设计

基于SoPC的SD卡控制器IP核的设计

作者: 时间:2011-07-08 来源:网络 收藏

4 文件系统移植
 读写操作均以扇区为单位,SD卡仅相当于一块容量较大的Flash,移植文件系统可方便地与PC机或其他电子产品数据交换以及后期分析处理。μC/FS是一种为其提供基本的硬件访问功能即可应用于任何存储介质的FAT文件系统,其使用标准ANSI C编写可应用于几乎任何CPU。μC/FS具有以下特点[4]:(1)支持DOS/Windows环境下的FAT12,FAT16 和FAT32。(2)支持多个存储器共同工作,可以同时访问多个存储器。(3)多操作系统支持,可以很方便地移植到几乎任何操作系统。(4)可以很容易地集成使用SPI模式的MMC/SD卡通用设备驱动等。基于以上的特点,μC/FS 非常适用于嵌入式系统。


4.1 μC/FS文件系统结构分析
 μC/FS 采取分层工作方式,每一层负责不同的功能,由高层的数据抽象到底层的硬件实体分工明确,其系统结构层次划分如图2所示。

基于SoPC的SD卡控制器IP核的设计

4.2 文件系统实现
 在完成SD卡及其软件驱动并实现SD卡基础读写的基础上,按照μC/FS文件系统的接口函数编写设备驱动程序并对系统参数做相应设置即可实现SD卡文件操作。μC/FS文件系统的接口函数主要通过一个结构体(FS__device_type)进行描述,该结构体包含了驱动设备的名称以及4个基本的驱动设备挂接函数的函数指针:
typedef struct {
FS_FARCHARPTR name;
int (*dev_status)(FS_u32 Unit);
int(*dev_read)(FS_u32 Unit, FS_u32 Sector, void *pBuffer);
int(*dev_write)(FS_u32 Unit,FS_u32 Sector,void *pBuffer);
int(*dev_ioctl)( FS_u32 Unit, FS_i32 Cmd, FS_i32 Aux,
void *pBuffer);
} FS__device_type;
其中,dev_status()函数主要实现FAT表状态信息的读取,并表明该SD设备可以使用;dev_read()函数实现对SD卡进行文件系统块数据的读取;dev_write()函数实现对SD卡进行文件系统块数据的写入;dev_ioctl()函数则主要实现文件操作的相关指令,包括文件格式化、数据cache回写等操作。


5 仿真与验证
 对SD卡的仿真验证工作主要从时序仿真和软件驱动读写SD卡进行文件操作验证两方面进行。


5.1 SD卡控制器的时序仿真
 在 中创建波形激励文件后,得到的时序仿真结果如图3所示。在仿真图中可以看出,控制器在初始化过程中,首先将CMD0(0x40)、参数(0x00000000)和命令校验位(0x95)通过SPITrans模块进行并/串转后发送到SD卡的CMD线进行复位,等收到SD卡DAT线上发送回来的回执(0x01)后,接着发送CMD1(0x41)、参数(0x00000000)和命令校验位(0xFF)到SD卡进行初始化。由此可见,SD卡控制器设计符合SD卡协议标准。

基于SoPC的SD卡控制器IP核的设计

5.2文件操作验证
通过调用μC/FS 文件系统提供的API函数,如:FS_Fopen()打开文件、FS_FRead()读文件、FS_FWrite()写文件等编写测试程序如下:
void main(void)
{
char *device="sd:"
const char *WriteMsg="test sd card writen";
FS_Init(); /*初始化文件系统*/
show_free(device); /*显示SD卡空间信息*/
write_file("test.txt",WriteMsg); /*写入文件test.txt*/
show_directory(device); /*显示根目录文件信息*/
dump_file("test.txt"); /*读test.txt文件内容*/

}
 选用4 GB容量的SDHC卡,在PC机上将其格式化为FAT文件系统并创建文件夹HELLO和文件WORD.DOC。SD卡在线运行调试结果如图4所示。由运行结果可知,初始化成功并识别此SD卡为SDHC (Secure Digital High Capacity)卡,卡容量为964 256(总簇数)×8(每簇扇区数)×512(每扇区字节数)≈3.7 GB。创建test.txt文件成功后读取根目录(有文件目录hello、文件word.doc和文件test.txt),读取文件test.txt内容为test sd card write与写入一致。运行结果表明文件操作正确可靠。

基于SoPC的SD卡控制器IP核的设计

通过对SD卡物理层协议和μC/FS 文件系统的研究,成功设计了具有Avalon总线接口的SD卡控制器,并通过时序仿真、软件驱动的方式进行仿真和调试,验证了SD卡控制器的工作情况,在此基础上实现了SD卡中的文件操作,使SOPC设计能与PC机或各种电子产品方便地进行数据交换。本设计已成功应用在基于SOPC架构的多用途无线防盗监控系统中。


上一页 1 2 下一页

关键词: 控制器 IP核 Quartus II

评论


相关推荐

技术专区

关闭