CN108268414A - 基于spi模式的sd卡驱动器及其控制方法 - Google Patents

基于spi模式的sd卡驱动器及其控制方法 Download PDF

Info

Publication number
CN108268414A
CN108268414A CN201810250038.2A CN201810250038A CN108268414A CN 108268414 A CN108268414 A CN 108268414A CN 201810250038 A CN201810250038 A CN 201810250038A CN 108268414 A CN108268414 A CN 108268414A
Authority
CN
China
Prior art keywords
card
data
wishbone
read
write
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810250038.2A
Other languages
English (en)
Other versions
CN108268414B (zh
Inventor
魏榕山
欧阳魁
王景玺
张鑫刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fuzhou University
Original Assignee
Fuzhou University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuzhou University filed Critical Fuzhou University
Priority to CN201810250038.2A priority Critical patent/CN108268414B/zh
Publication of CN108268414A publication Critical patent/CN108268414A/zh
Application granted granted Critical
Publication of CN108268414B publication Critical patent/CN108268414B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • G06F13/4081Live connection to bus, e.g. hot-plugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)

Abstract

本发明涉及一种基于SPI模式的SD卡驱动器及其控制方法。包括SD卡控制器模块、Fifo缓存模块、FAT32文件系统模块,所述SD卡控制器模块通过SPI总线与SD卡连接,SD卡控制器模块还通过Wishbone总线与FAT32文件系统模块连接,FAT32文件系统模块还与所述Fifo缓存模块连接。本发明具有数据传输速度可调节、硬件资源消耗小和可热插拔的优点,输入输出数据经过同步Fifo缓存,使得本SD卡驱动器可以兼容不同数据吞吐速率的音视频等数据处理器,采用模块化功能划分,提高了设计的可移植性和可维护性,挂载FAT32文件系统可以实现在装有Windows操作系统的上位机中对待处理数据文件的修改和拷贝。

Description

基于SPI模式的SD卡驱动器及其控制方法
技术领域
本发明涉及一种基于SPI模式的SD卡驱动器及其控制方法。
背景技术
目前,SD卡驱动器实现方法主要有用SOPC架构,依靠封装在FPGA器件中的嵌入式软核处理器(例如Altera的FPGA器件中Nios II处理器)实现SD卡驱动器,但无法直接应用在VLSI设计中。
采用C语言开发SD卡驱动器由于得到众多嵌入式芯片厂商的技术支持所以应用起来非常简单方便,主要用于嵌入式系统中,在目前的ARM系列处理器中都有很广泛的应用,甚至在FPGA的嵌入式软核Nios II也使用较多,但是其技术实现通常是黑盒,无法根据实际需求移植和修改以应用在VLSI设计中,同时速度也受到了处理器性能的限制不易调节,而且需要购买相应的嵌入式处理器和配套的调试软件导致外围电路复杂且成本较高。
4位SD总线通讯模式相对于SPI通讯模式的SD卡驱动器数据传输速率高,但是传输协议复杂,用硬件描述语言实现时逻辑资源消耗大。基于SPI模式的SD卡驱动器采用模块化功能划分优化系统架构,使得SPI模式的SD卡驱动器性能大幅度提高的同时减小逻辑资源消耗,能够满足使SD卡作为数据存储器直接应用于音频、视频、图像处理等VLSI设计中,发挥SD卡体型小、数据存储量大、数据传输速率快等优秀特点,为高性能数字IC设计和验证领域中急需的更贴近设计应用环境、可直观演示、高传输速率、易刷新等实验数据存储需求提供新的解决方案。
发明内容
本发明的目的在于提供一种基于SPI模式的SD卡驱动器及其控制方法,该SD卡驱动器数据传输速度可调节、硬件资源消耗小和可热插拔的优点,输入输出数据经过同步Fifo缓存,使得本SD卡驱动器可以兼容不同数据吞吐速率的音视频等数据处理器,采用模块化功能划分,提高了设计的可移植性和可维护性,挂载FAT32文件系统可以实现在装有Windows 操作系统的上位机中对待处理数据文件的修改和拷贝。
为实现上述目的,本发明的技术方案是:一种基于SPI模式的SD卡驱动器,包括SD卡控制器模块、Fifo缓存模块、FAT32文件系统模块,所述SD卡控制器模块通过SPI总线与SD卡连接,SD卡控制器模块还通过Wishbone总线与FAT32文件系统模块连接,FAT32文件系统模块还与所述Fifo缓存模块连接。
在本发明一实施例中,所述SD卡控制器模块包括Wishbone总线从机、SPI主机控制器、SD初始化控制器、命令发送响应控制器、读写数据控制器、数据传输控制器、读写数据缓存器、SPI主机接口,Wishbone总线从机与SPI主机控制器、读写数据缓存器连接,SPI主机控制器还与读写数据控制器、SD初始化控制器、数据传输控制器连接,SD初始化控制器经命令发送响应控制器与读写数据控制器连接,数据传输控制器经SPI主机接口与读写数据缓存器连接,SPI主机接口还与SD卡连接。
在本发明一实施例中,所述Wishbone总线从机包括Wishbone从机控制器、Wishbone从机接口,Wishbone从机控制器与SPI主机控制器连接,Wishbone从机接口与读写数据缓存器连接,Wishbone从机控制器、Wishbone从机接口经Wishbone总线主机与FAT32文件系统模块连接。
本发明还提供了一种基于上述所述的基于SPI模式的SD卡驱动器的控制方法,实现如下:
(1)Fifo缓存模块的读、写入控制逻辑功能:
FAT32文件系统模块从SD卡控制器模块取出1024+512个字节的数据并同时写入到Fifo缓存模块中,此时Fifo缓存模块中无数据读出;停止写入数据到Fifo缓存模块,开始从Fifo缓存模块中读出512个字节的数据,FAT32文件系统模块在从SD卡控制器模块取出512个字节的数据同时写入到Fifo缓存模块中,此时Fifo缓存模块中有数据读出;
(2)FAT32文件系统模块和Wishbone总线读取SD卡中文件功能:
FAT32文件系统模块根据SD卡驱动器当前执行的功能和SD卡反馈的卡片信息向Wishbone总线主机发送命令参数,Wishbone总线主机将命令参数拆分成4个字节,Wishbone总线主机将命令字的第1个字节通过address地址接口发送到Wishbone总线从机,命令字的第2、3、4、5 字节为命令参数通过data_o数据接口发送到Wishbone总线从机;Wishbone总线从机根据address地址接口接收到的信息判断当前由Wishbone总线从机通过data_o数据接口发送到Wishbone总线主机的数据是SD卡控制器模块传输过来的SD卡反馈的卡片信息或者是SD卡各个扇区读出的存储数据;
Wishbone总线主机的Wishbone主机接口通过操作结束方式信号来了解SD卡控制器模块中的Wishbone从机接口的工作状态;操作结束方式信号为高电平时表示SD卡控制器模块中的Wishbone从机接口向Wishbone主机接口数据传输正常,反之则表示数据传输不正常;
Wishbone总线主机通过Wishbone总线接口信号中的地址信号控制Wishbone从机接口的数据传输状态和类型,通过Wishbone总线接口信号中的选通信号和写使能信号控制Wishbone从机接口数据传输的起始和终止;
(3)SD卡控制器模块基于SPI通讯模式下的包括SD卡的复位、初始化、读单块、写单块、读多块、写多块操作功能:
1)Wishbone总线从机
Wishbone从机接口负责与SD卡控制器模块中各个模块进行数据和命令交互,并将SD卡控制器模块的状态作为响应传递回Wishbone总线主机;当处于数据读取状态时,Wishbone从机控制器通过判断主机地址类型,选择从SPI主机控制器读取数据并传输给wishbone主机接口或者将数据从读写数据Fifo缓存模块中取出并传输给wishbone主机接口;当处于数据写入状态时,Wishbone从机控制器将数据从Wishbone主机接口中取出并传输给读写数据缓存器;
2)SPI主机控制器
系统上电复位后首先由SPI主机控制器通过控制寄存器和状态寄存器向SD卡初始化控制器模块发送使能信号,使SD卡完成初始化;SPI主机控制器在接收到SD卡完成初始化的反馈信号后,向读写数据控制器发送读或写请求;
3)SD初始化控制器
SD初始化控制器在接收到SPI主机控制器发送的使能信号后开始工作,产生复位命令CMD0,通过命令发送响应控制器发送给SD卡,在有效时间内收到正确的响应,复位完成;然后产生初始化命令CMD1,通过命令发送响应控制器发送给SD卡,在有效时间内收到正确的响应,初始化完成,SD卡进入SPI模式;
4)命令发送响应控制器
命令发送响应控制器在接收到SPI主机控制器发送的使能信号后开始工作;将命令拼接成SD卡协议中规定的6字节格式,发送给SD卡;对于收到的反馈,判断是否是SD卡的响应以及是否响应超时;
5)读写数据控制器
读写数据控制器在接收到SPI主机发送的读或写使能信号后开始进入相应的状态;若收到写使能信号,产生单块写命令CMD24,通过命令发送响应控制器发送给SD卡;若在有效时间内收到正确的响应,则产生数据起始令牌,与512字节数据、2字节的CRC一起写入读写数据缓存器;若在有效时间内收到的响应最后五位为00101,则SD卡成功接收数据;在SD卡忙状态时判断SD卡是否写超时,超过250ms仍处于忙状态则写错误;若收到读使能信号,产生单块读命令CMD17,通过命令发送响应控制器发送给SD卡;若在有效时间内收到正确的响应,则开始接收数据起始令牌;若在100ms内未收到数据起始令牌,则读超时,读SD卡错误;若接收到数据起始令牌,则将之后接收到的512字节数据写入读写数据缓存器;
6)数据传输控制器
数据传输控制器是控制读写数据缓存器的模块;若收到命令发送响应控制器的使能信号时,接收命令发送响应控制器发送的6字节命令,并逐一发送给SPI主机接口;若收到读写数据控制器的写使能信号,则读取读写数据缓存器Tx_FIFO中的512字节数据并将其发送给SPI主机接口;在数据传输的开始之前以及结束之后,发送8位高电平信号给SPI主机接口,维持时钟并且保持MOSI为高;在接收数据及响应时,通过Fifo缓存模块内数据状态标志位信号来控制数据的接收过程;
7)读写数据缓存器
读写数据缓存器是缓存读写数据的存储器,负责存储要写入SD卡的512字节数据以及从SD卡读出的512字节数据;
8)SPI主机接口
SPI主机接口是与SD卡直接通信的模块;通过两个移位寄存器,将读写数据缓存器输出的并行数据转换为串行数据传输给SD卡,将SD卡输出的串行数据转换为并行数据存入读写数据缓存器;同时给SD卡提供时钟信号。
在本发明一实施例中,所述卡片信息,即:从根目录数据中解析出当前文件占用的字节数;用启动区中的数据计算出根目录和FAT1的起始地址,用根目录起始地址对应的内容得到第一个簇在数据区的地址;用FAT1起始地址对应的内容得到第二个簇在数据区的地址和第三个簇在FAT1中的地址。
相较于现有技术,本发明具有以下有益效果:本发明具有数据传输速度可调节、硬件资源消耗小和可热插拔的优点,输入输出数据经过同步Fifo缓存,使得本SD卡驱动器设计可以兼容不同数据吞吐速率的音视频等数据处理器。采用模块化功能划分,提高了设计的可移植性和可维护性,挂载FAT32文件系统可以实现在装有Windows 操作系统的上位机中对待处理数据文件的修改和拷贝,进而将这些数据应用于Matlab等专业数据分析、处理软件平台,对正在开发的高性能数字IC做更细致和深入的研究,是VLSI设计研发和调试中一种极为方便的数据读取和保存的重要IP核。SPI总线在芯片中只占用四根管脚用来控制以及数据传输,节约了芯片的管脚数目,同时为产品PCB布局上节省了空间。
附图说明
图1是本发明SD卡驱动器系统框图。
图2是本发明读、写入控制逻辑下Fifo缓存内数据量变化趋势图。
图3是本发明FAT32文件系统和Wishbone总线模块示意图。
图4是本发明SD卡控制器示意图。
具体实施方式
下面结合附图,对本发明的技术方案进行具体说明。
本发明的一种基于SPI模式的SD卡驱动器,包括SD卡控制器模块、Fifo缓存模块、FAT32文件系统模块,所述SD卡控制器模块通过SPI总线与SD卡连接,SD卡控制器模块还通过Wishbone总线与FAT32文件系统模块连接,FAT32文件系统模块还与所述Fifo缓存模块连接。
在本发明一实施例中,所述SD卡控制器模块包括Wishbone总线从机、SPI主机控制器、SD初始化控制器、命令发送响应控制器、读写数据控制器、数据传输控制器、读写数据缓存器、SPI主机接口,Wishbone总线从机与SPI主机控制器、读写数据缓存器连接,SPI主机控制器还与读写数据控制器、SD初始化控制器、数据传输控制器连接,SD初始化控制器经命令发送响应控制器与读写数据控制器连接,数据传输控制器经SPI主机接口与读写数据缓存器连接,SPI主机接口还与SD卡连接。
在本发明一实施例中,所述Wishbone总线从机包括Wishbone从机控制器、Wishbone从机接口,Wishbone从机控制器与SPI主机控制器连接,Wishbone从机接口与读写数据缓存器连接,Wishbone从机控制器、Wishbone从机接口经Wishbone总线主机与FAT32文件系统模块连接。
以下为本发明的具体实施过程。
本发明应用于高性能数字IC设计和验证领域,当从SD卡中读取数据时,输出数据经过同步Fifo缓存,使得本SD卡驱动器设计可以兼容不同数据吞吐速率的音视频等数据处理器。本文设计的SD卡驱动器采用技术方案如下所述:
本SD卡驱动器由SD卡控制器挂载FAT32文件系统构成;使用Wishbone总线作为片上总线,其中FAT32文件系统模块作为Wishbone总线上的主机设备,SD卡控制器模块作为Wishbone总线上的从机设备;SD卡驱动器输入和输出数据经过宽度为8位,深度为2048的Fifo缓存。SD卡驱动器系统框图如图1所示。由三个部分构成,分别为Fifo缓存,FAT32文件系统和Wishbone总线,SD卡控制器。
SD卡驱动器中各模块之间连接关系如下所述:
SD卡驱动器输出的数据经过宽度为8位,深度为2048的Fifo缓存,使得本SD卡驱动器可以兼容不同数据吞吐速率的音视频等数据处理器;FAT32文件系统模块通过Wishbone总线访问SD卡控制器模块,SD卡控制器模块将FAT32文件系统模块经由Wishbone总线主机发出的扇区读、写等指令转换为地址信号与SD卡进行数据块交互的命令;SD卡控制器模块通过SPI总线连接SD卡,在SPI通信模式下完成对符合SD卡3.0版本规范的不同存储容量的SD卡进行初始化和SD卡中文件读写等操作。
SD卡驱动器中各模块功能如下所述:
1、Fifo缓存
SD卡驱动器中Fifo缓存为SCFIFO(读、写使用同一个时钟);存储器宽度为8位,深度为2048;rst下降沿复位清空Fifo缓存;使用Normal mode的Rdreq读请求信号作为读取Fifo的请求信号(高有效),读取数据在Rdreq置位后的第二个时钟周期有效;Wrreq写请求信号作为写入Fifo的请求信号(高有效);usedw数据数量寄存器显示Fifo缓存中存储数据的数量。Fifo缓存的读、写入控制逻辑采用两段式摩尔状态机实现,状态在IDLE(空闲,state置0),FILL(填充,state置1)之间跳转。在读、写入控制逻辑下Fifo缓存内数据量变化趋势图如图2所示。
Fifo缓存的读、写入控制逻辑功能如下所述:
FAT32文件系统从SD卡控制器模块取出1024+512个字节的数据并同时写入到Fifo缓存中,此时Fifo中无数据读出;停止写入数据到Fifo缓存,开始从Fifo缓存中读出512个字节的数据;FAT32文件系统在从SD卡控制器模块取出512个字节的数据同时写入到Fifo缓存中,此时Fifo中有数据读出。
2、FAT32文件系统和Wishbone总线
为在装有Windows 操作系统的上位机中方便的创建、读取和修改SD 卡中数据,数据通常以文件的形式存储在SD 卡中,因此在使用SD卡作为数据存储设备的数字集成电路设计和验证中配以文件系统可以方便地读取装有Windows 操作系统的上位机传入的文件中数据。本SD 卡驱动器设计中采用FAT32 文件系统以适应较大容量的SD 卡。Wishbone总线由Wishbone总线主机模块和Wishbone总线从机模块,FAT32文件系统和Wishbone总线模块设计如图3所示。
以SD卡中仅存有一个文件,读取这个文件中数据为例说明FAT32文件系统和Wishbone总线功能如下所述:
FAT32文件系统根据SD卡驱动器当前执行的功能(读取、写入等功能)和SD卡反馈的卡片信息(从根目录数据中解析出当前文件占用的字节数;用启动区中的数据计算出根目录和FAT1的起始地址,用根目录起始地址对应的内容得到第一个簇在数据区的地址;用FAT1起始地址对应的内容得到第二个簇在数据区的地址和第三个簇在FAT1中的地址)向Wishbone总线主机发送命令参数。(注:FAT1每一个地址对应的内容是当前簇号在数据区的地址和下一个簇号在FAT1中的地址);发送到Wishbone总线主机模块,Wishbone总线主机模块将命令参数拆分成4个字节,Wishbone总线主机模块将命令字的第1个字节通过address地址接口发送到Wishbone总线从机模块,命令字的第2、3、4、5 字节为命令参数通过data_o数据接口发送到Wishbone总线从机模块;Wishbone总线从机模块根据address地址接口接收到的信息判断当前由Wishbone总线从机通过data_o数据接口发送到Wishbone总线主机的数据是SD卡控制器传输过来的SD卡反馈的卡片信息或者是SD卡各个扇区读出的存储数据,例如当地址译码为读单块数据时,则Wishbone总线从机连续发送读单块数据命令给SD卡控制器,并记录文件数据当前读出的字节数,直到读出的字节数大于等于文件占用的字节数。
Wishbone主机接口通过操作结束方式信号来了解SD卡控制器中的Wishbone从机接口的工作状态。操作结束方式信号为高电平时表示SD卡控制器中的Wishbone从机接口向Wishbone主机接口数据传输正常,反之则表示数据传输不正常。
Wishbone主机通过Wishbone总线接口信号中的地址信号控制Wishbone从机接口的数据传输状态和类型(接收数据或者发送数据状态),通过Wishbone总线接口信号中的选通信号和写使能信号控制Wishbone从机接口数据传输的起始和终止。
3、SD卡控制器
SD卡控制器由8个模块组成,Wishbone总线从机、SPI主机控制器、SD初始化控制器、命令发送响应控制器、读写数据控制器、数据传输控制器、读写数据缓存器、SPI主机接口。各部分之间通过控制寄存器、状态寄存器和数据线协调工作和传输数据。
本系统设计中的SD卡控制器模块为SD卡提供运行时钟并且支持基于SPI通讯模式下的SD卡、Micro SD卡、MMC卡、TF卡等的复位、初始化、读单块、写单块、读多块、写多块操作。SD卡控制器如图4所示。
1)Wishbone总线从机
Wishbone从机接口负责与SD卡控制器中各个模块进行数据和命令交互,并将SD卡主机模块的状态(是否应答及传输状态)作为响应传递回Wishbone主机。
当处于数据读取状态时,Wishbone从机控制器通过判断主机地址类型,选择从SPI主机控制器读取数据并传输给wishbone主机接口或者将数据从读写数据Fifo缓存器中取出并传输给wishbone主机接口;当处于数据写入状态时,Wishbone从机将数据从Wishbone主机接口中取出并传输给读写数据缓存器。
Wishbone总线从机由Wishbone从机接口、Wishbone从机控制器构成,从机接口负责地址和数据的读取和写入,从机控制器负责通过地址判断传输给主机数据来源(SD卡反馈的卡片信息或者SD卡各个扇区读出的存储数据)。本设计中Wishbone总线采用“点到点”连接方式。因为CYC_O信号用于多主设备的仲裁请求,所以在 “点到点”连接方式中缺省。由于每次操作中数据全部有效,所以本设计中不设置SEL_O信号。
2)SPI主机控制器
SPI主机控制器的控制逻辑由有限状态机实现。SPI主机控制器根据地址类型和传输模式将SD卡响应经Wishbone总线从机发送到Wishbone总线主机。每个模块都设计了使能信号和反馈信号,SPI主机控制器通过检测其余模块的反馈信号决定下一步状态,通过控制其余模块的使能信号决定其工作状态。系统上电复位后首先由SPI主机控制器通过控制寄存器和状态寄存器向SD卡初始化控制器模块发送使能信号,使SD卡完成初始化。SPI主机在接收到SD卡完成初始化的反馈信号后,向读写数据控制器发送读或写请求。
3)SD初始化控制器
SD初始化控制器在接收到SPI主机发送的使能信号后开始工作,产生复位命令CMD0,通过命令发送响应控制器发送给SD卡,在有效时间内收到正确的响应01h,复位完成。然后产生初始化命令CMD1,通过命令发送响应控制器发送给SD卡,在有效时间内收到正确的响应00h,初始化完成,SD卡进入SPI模式。
4)命令发送响应控制器
命令发送响应控制器在接收到SPI主机控制器发送的使能信号后开始工作。将命令拼接成SD卡协议中规定的6字节格式,发送给SD卡。对于收到的反馈,判断是否是SD卡的响应以及是否响应超时。
5)读写数据控制器
读写数据控制器在接收到SPI主机发送的读或写使能信号后开始进入相应的状态。若收到写使能信号,产生单块写命令CMD24,通过命令发送响应控制器发送给SD卡。若在有效时间内收到正确的响应00h,则产生数据起始令牌FEh,与512字节数据、2字节的CRC一起写入读写数据缓存器。若在有效时间内收到的响应最后五位为00101,则SD卡成功接收数据。在SD卡忙状态时判断SD卡是否写超时,超过250ms仍处于忙状态则写错误。若收到读使能信号,产生单块读命令CMD17(第1个字节的最高位始终为0——起始位;次高位为1——表示命令是由主机向SD 卡发送的命令,后六位是命令索引;命令字的第2、3、4、5 字节为命令参数,若是读单块命令,则命令参数是扇区地址;最后一个字节是CRC校验字节),通过命令发送响应控制器发送给SD卡。若在有效时间内收到正确的响应00h,则开始接收数据起始令牌FEh。若在100ms内未收到数据起始令牌,则读超时,读SD卡错误。若接收到数据起始令牌,则将之后接收到的512字节数据写入读写数据缓存器。
6)数据传输控制器
数据传输控制器是控制读写数据缓存器的模块。若收到命令发送响应控制器的使能信号时,接收命令发送响应控制器发送的6字节命令,并逐一发送给SPI主机接口。若收到读写数据控制器的写使能信号,则读取写数据Fifo缓存器Tx_FIFO中的512字节数据并将其发送给SPI主机接口。在数据传输的开始之前以及结束之后,发送8位高电平信号给SPI主机接口,维持时钟并且保持MOSI为高。在接收数据及响应时,通过Fifo内数据状态标志位信号来控制数据的接收过程。
7)读写数据Fifo缓存器
读写数据缓存器是缓存读写数据的存储器,负责存储要写入SD卡的512字节数据以及从SD卡读出的512字节数据。本设计中设计了一个一次可以存储64个8位数据,即128字节的异步FIFO。并且还设计了Wishbone从机与FIFO之间的控制器,实现了将要写入SD卡的数据直接从Wishbone从机存入FIFO,以及将SD卡读出的数据直接传递给Wishbone从机。
8)SPI主机接口
SPI主机接口是与SD卡直接通信的模块。由于SPI通信是串行通信,所以需要进行串并转换。通过两个移位寄存器,将写数据缓存器输出的并行数据转换为串行数据传输给SD卡,将SD卡输出的串行数据转换为并行数据存入读数据缓存器。同时给SD卡提供时钟信号。基于SPI模式的SD卡驱动器,SD卡命令字发送后会跟随对应的SD卡响应,用于指示命令或数据传输是否成功,有效地弥补了普通SPI总线缺乏应答机制以确认是否接收到数据的原理缺陷。
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。

Claims (5)

1.一种基于SPI模式的SD卡驱动器,其特征在于,包括SD卡控制器模块、Fifo缓存模块、FAT32文件系统模块,所述SD卡控制器模块通过SPI总线与SD卡连接,SD卡控制器模块还通过Wishbone总线与FAT32文件系统模块连接,FAT32文件系统模块还与所述Fifo缓存模块连接。
2.根据权利要求1所述的基于SPI模式的SD卡驱动器,其特征在于,所述SD卡控制器模块包括Wishbone总线从机、SPI主机控制器、SD初始化控制器、命令发送响应控制器、读写数据控制器、数据传输控制器、读写数据缓存器、SPI主机接口,Wishbone总线从机与SPI主机控制器、读写数据缓存器连接,SPI主机控制器还与读写数据控制器、SD初始化控制器、数据传输控制器连接,SD初始化控制器经命令发送响应控制器与读写数据控制器连接,数据传输控制器经SPI主机接口与读写数据缓存器连接,SPI主机接口还与SD卡连接。
3.根据权利要求2所述的基于SPI模式的SD卡驱动器,其特征在于,所述Wishbone总线从机包括Wishbone从机控制器、Wishbone从机接口,Wishbone从机控制器与SPI主机控制器连接,Wishbone从机接口与读写数据缓存器连接,Wishbone从机控制器、Wishbone从机接口经Wishbone总线主机与FAT32文件系统模块连接。
4.一种基于权利要求3所述的基于SPI模式的SD卡驱动器的控制方法,其特征在于:实现如下:
(1)Fifo缓存模块的读、写入控制逻辑功能:
FAT32文件系统模块从SD卡控制器模块取出1024+512个字节的数据并同时写入到Fifo缓存模块中,此时Fifo缓存模块中无数据读出;停止写入数据到Fifo缓存模块,开始从Fifo缓存模块中读出512个字节的数据,FAT32文件系统模块在从SD卡控制器模块取出512个字节的数据同时写入到Fifo缓存模块中,此时Fifo缓存模块中有数据读出;
(2)FAT32文件系统模块和Wishbone总线读取SD卡中文件功能:
FAT32文件系统模块根据SD卡驱动器当前执行的功能和SD卡反馈的卡片信息向Wishbone总线主机发送命令参数,Wishbone总线主机将命令参数拆分成4个字节,Wishbone总线主机将命令字的第1个字节通过address地址接口发送到Wishbone总线从机,命令字的第2、3、4、5 字节为命令参数通过data_o数据接口发送到Wishbone总线从机;Wishbone总线从机根据address地址接口接收到的信息判断当前由Wishbone总线从机通过data_o数据接口发送到Wishbone总线主机的数据是SD卡控制器模块传输过来的SD卡反馈的卡片信息或者是SD卡各个扇区读出的存储数据;
Wishbone总线主机的Wishbone主机接口通过操作结束方式信号来了解SD卡控制器模块中的Wishbone从机接口的工作状态;操作结束方式信号为高电平时表示SD卡控制器模块中的Wishbone从机接口向Wishbone主机接口数据传输正常,反之则表示数据传输不正常;
Wishbone总线主机通过Wishbone总线接口信号中的地址信号控制Wishbone从机接口的数据传输状态和类型,通过Wishbone总线接口信号中的选通信号和写使能信号控制Wishbone从机接口数据传输的起始和终止;
(3)SD卡控制器模块基于SPI通讯模式下的包括SD卡的复位、初始化、读单块、写单块、读多块、写多块操作功能:
1)Wishbone总线从机
Wishbone从机接口负责与SD卡控制器模块中各个模块进行数据和命令交互,并将SD卡控制器模块的状态作为响应传递回Wishbone总线主机;当处于数据读取状态时,Wishbone从机控制器通过判断主机地址类型,选择从SPI主机控制器读取数据并传输给wishbone主机接口或者将数据从读写数据Fifo缓存模块中取出并传输给wishbone主机接口;当处于数据写入状态时,Wishbone从机控制器将数据从Wishbone主机接口中取出并传输给读写数据缓存器;
2)SPI主机控制器
系统上电复位后首先由SPI主机控制器通过控制寄存器和状态寄存器向SD卡初始化控制器模块发送使能信号,使SD卡完成初始化;SPI主机控制器在接收到SD卡完成初始化的反馈信号后,向读写数据控制器发送读或写请求;
3)SD初始化控制器
SD初始化控制器在接收到SPI主机控制器发送的使能信号后开始工作,产生复位命令CMD0,通过命令发送响应控制器发送给SD卡,在有效时间内收到正确的响应,复位完成;然后产生初始化命令CMD1,通过命令发送响应控制器发送给SD卡,在有效时间内收到正确的响应,初始化完成,SD卡进入SPI模式;
4)命令发送响应控制器
命令发送响应控制器在接收到SPI主机控制器发送的使能信号后开始工作;将命令拼接成SD卡协议中规定的6字节格式,发送给SD卡;对于收到的反馈,判断是否是SD卡的响应以及是否响应超时;
5)读写数据控制器
读写数据控制器在接收到SPI主机发送的读或写使能信号后开始进入相应的状态;若收到写使能信号,产生单块写命令CMD24,通过命令发送响应控制器发送给SD卡;若在有效时间内收到正确的响应,则产生数据起始令牌,与512字节数据、2字节的CRC一起写入读写数据缓存器;若在有效时间内收到的响应最后五位为00101,则SD卡成功接收数据;在SD卡忙状态时判断SD卡是否写超时,超过250ms仍处于忙状态则写错误;若收到读使能信号,产生单块读命令CMD17,通过命令发送响应控制器发送给SD卡;若在有效时间内收到正确的响应,则开始接收数据起始令牌;若在100ms内未收到数据起始令牌,则读超时,读SD卡错误;若接收到数据起始令牌,则将之后接收到的512字节数据写入读写数据缓存器;
6)数据传输控制器
数据传输控制器是控制读写数据缓存器的模块;若收到命令发送响应控制器的使能信号时,接收命令发送响应控制器发送的6字节命令,并逐一发送给SPI主机接口;若收到读写数据控制器的写使能信号,则读取读写数据缓存器Tx_FIFO中的512字节数据并将其发送给SPI主机接口;在数据传输的开始之前以及结束之后,发送8位高电平信号给SPI主机接口,维持时钟并且保持MOSI为高;在接收数据及响应时,通过Fifo缓存模块内数据状态标志位信号来控制数据的接收过程;
7)读写数据缓存器
读写数据缓存器是缓存读写数据的存储器,负责存储要写入SD卡的512字节数据以及从SD卡读出的512字节数据;
8)SPI主机接口
SPI主机接口是与SD卡直接通信的模块;通过两个移位寄存器,将读写数据缓存器输出的并行数据转换为串行数据传输给SD卡,将SD卡输出的串行数据转换为并行数据存入读写数据缓存器;同时给SD卡提供时钟信号。
5.根据权利要求4所述的基于SPI模式的SD卡驱动器的控制方法,其特征在于:所述卡片信息,即:从根目录数据中解析出当前文件占用的字节数;用启动区中的数据计算出根目录和FAT1的起始地址,用根目录起始地址对应的内容得到第一个簇在数据区的地址;用FAT1起始地址对应的内容得到第二个簇在数据区的地址和第三个簇在FAT1中的地址。
CN201810250038.2A 2018-03-26 2018-03-26 基于spi模式的sd卡驱动器及其控制方法 Active CN108268414B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810250038.2A CN108268414B (zh) 2018-03-26 2018-03-26 基于spi模式的sd卡驱动器及其控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810250038.2A CN108268414B (zh) 2018-03-26 2018-03-26 基于spi模式的sd卡驱动器及其控制方法

Publications (2)

Publication Number Publication Date
CN108268414A true CN108268414A (zh) 2018-07-10
CN108268414B CN108268414B (zh) 2023-07-21

Family

ID=62777361

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810250038.2A Active CN108268414B (zh) 2018-03-26 2018-03-26 基于spi模式的sd卡驱动器及其控制方法

Country Status (1)

Country Link
CN (1) CN108268414B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110990310A (zh) * 2019-12-19 2020-04-10 山东方寸微电子科技有限公司 一种设备端sd控制器、控制方法及电子设备
CN112083880A (zh) * 2020-08-20 2020-12-15 厦门市美亚柏科信息安全研究所有限公司 一种手机系统文件在线修改方法、装置及存储介质
CN112231729A (zh) * 2020-10-23 2021-01-15 山东超越数控电子股份有限公司 一种基于SoC芯片的SD安全模块和传输方法
CN113419985A (zh) * 2021-06-15 2021-09-21 珠海市一微半导体有限公司 Spi系统自动读取数据的控制方法及spi系统
TWI747176B (zh) * 2019-03-13 2021-11-21 瑞典商安訊士有限公司 串列周邊介面主機、其中之方法及包含串列周邊介面主機之系統
CN114036096A (zh) * 2021-11-04 2022-02-11 珠海一微半导体股份有限公司 一种基于总线接口的读控制器
CN116795452A (zh) * 2023-07-20 2023-09-22 龙芯中科(北京)信息技术有限公司 驱动程序兼容性的确定方法、装置及设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006038663A1 (en) * 2004-10-01 2006-04-13 Matsushita Electric Industrial Co., Ltd. Memory card controller, memory card drive device, and computer program
CN102646202A (zh) * 2011-02-18 2012-08-22 上海三旗通信科技股份有限公司 一种模拟spi方式的双sd卡功能
CN102708075A (zh) * 2012-05-15 2012-10-03 山东大学 一种sd卡硬件控制装置及控制方法
CN104282054A (zh) * 2014-08-06 2015-01-14 上海交通大学 基于sopc技术的mvb总线解码与随车记录系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006038663A1 (en) * 2004-10-01 2006-04-13 Matsushita Electric Industrial Co., Ltd. Memory card controller, memory card drive device, and computer program
CN102646202A (zh) * 2011-02-18 2012-08-22 上海三旗通信科技股份有限公司 一种模拟spi方式的双sd卡功能
CN102708075A (zh) * 2012-05-15 2012-10-03 山东大学 一种sd卡硬件控制装置及控制方法
CN104282054A (zh) * 2014-08-06 2015-01-14 上海交通大学 基于sopc技术的mvb总线解码与随车记录系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
朱大锐;张团善;高文;: "ATmega128L单片机的Micro SD卡读写", 单片机与嵌入式系统应用, no. 05, pages 37 - 39 *
李敏;侯亚玲;刘颖;: "基于SD卡的FAT32文件系统设计与实现", 物联网技术, no. 07, pages 102 - 104 *
白昊: "光幕立靶目标信号采集及存储研究", 中国优秀硕士学位论文全文数据库(工程科技Ⅱ辑), no. 02, pages 032 - 44 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI747176B (zh) * 2019-03-13 2021-11-21 瑞典商安訊士有限公司 串列周邊介面主機、其中之方法及包含串列周邊介面主機之系統
CN110990310A (zh) * 2019-12-19 2020-04-10 山东方寸微电子科技有限公司 一种设备端sd控制器、控制方法及电子设备
CN112083880A (zh) * 2020-08-20 2020-12-15 厦门市美亚柏科信息安全研究所有限公司 一种手机系统文件在线修改方法、装置及存储介质
CN112083880B (zh) * 2020-08-20 2023-05-16 厦门市美亚柏科信息安全研究所有限公司 一种手机系统文件在线修改方法、装置及存储介质
CN112231729A (zh) * 2020-10-23 2021-01-15 山东超越数控电子股份有限公司 一种基于SoC芯片的SD安全模块和传输方法
CN113419985A (zh) * 2021-06-15 2021-09-21 珠海市一微半导体有限公司 Spi系统自动读取数据的控制方法及spi系统
CN114036096A (zh) * 2021-11-04 2022-02-11 珠海一微半导体股份有限公司 一种基于总线接口的读控制器
CN114036096B (zh) * 2021-11-04 2024-05-03 珠海一微半导体股份有限公司 一种基于总线接口的读控制器
CN116795452A (zh) * 2023-07-20 2023-09-22 龙芯中科(北京)信息技术有限公司 驱动程序兼容性的确定方法、装置及设备
CN116795452B (zh) * 2023-07-20 2024-04-02 龙芯中科(北京)信息技术有限公司 驱动程序兼容性的确定方法、装置及设备

Also Published As

Publication number Publication date
CN108268414B (zh) 2023-07-21

Similar Documents

Publication Publication Date Title
CN108268414A (zh) 基于spi模式的sd卡驱动器及其控制方法
JP4799417B2 (ja) ホストコントローラ
US7058748B1 (en) ATA device control via a packet-based interface
US5600793A (en) Method and system of bi-directional parallel port data transfer between data processing systems
US6157975A (en) Apparatus and method for providing an interface to a compound Universal Serial Bus controller
KR100245818B1 (ko) 트랜잭션 및 수신지 id를 가진 공유 버스 시스템
US6928505B1 (en) USB device controller
US5430847A (en) Method and system for extending system buses to external devices
US20120290763A1 (en) Method and system of complete mutual access of multiple-processors
JP3705663B2 (ja) デバイスのブリッジ方法及び装置
CN112256601A (zh) 数据存取控制方法、嵌入式存储系统及嵌入式设备
CN111931442B (zh) Fpga内嵌flash控制器及电子装置
JPH02289017A (ja) コンピユータシステム内でデータ転送方法
CN101162448A (zh) 一种usb高速数据隧道的硬件传输方法
CN112783818A (zh) 一种多核嵌入式系统的在线升级方法及系统
CN112256615B (zh) Usb转换接口装置
CN112131176B (zh) 一种基于pcie的fpga快速局部重构方法
CN208077160U (zh) 基于spi模式的sd卡驱动器
US20070131767A1 (en) System and method for media card communication
CN113886297A (zh) 一种基于dma的spi并发通讯se装置及方法
CN212647461U (zh) 一种基于pci总线的同步或异步串行通讯控制电路
US7302508B2 (en) Apparatus and method for high speed data transfer
US20040186949A1 (en) XIP system and method for serial memory
CN103995675A (zh) 硬盘读写装置的控制方法及装置
KR20080109591A (ko) 전자장치 및 그 데이터 송수신방법과, 슬레이브 장치 및복수의 장치 간의 통신방법

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant