CN107102818A - 一种基于sd卡的高速数据存储方法 - Google Patents
一种基于sd卡的高速数据存储方法 Download PDFInfo
- Publication number
- CN107102818A CN107102818A CN201710157667.6A CN201710157667A CN107102818A CN 107102818 A CN107102818 A CN 107102818A CN 201710157667 A CN201710157667 A CN 201710157667A CN 107102818 A CN107102818 A CN 107102818A
- Authority
- CN
- China
- Prior art keywords
- card
- data
- read
- caching section
- speed
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C21/00—Digital stores in which the information circulates continuously
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2207/00—Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
- G11C2207/22—Control and timing of internal memory operations
- G11C2207/2245—Memory devices with an internal cache buffer
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种基于SD卡的高速数据存储方法。本发明的技术方案将高速数据码流分割成多个依次排列的数据块,将数据块依次写入一个环形缓存中。环形缓存由N个缓存段构成,N个缓存段共用一个写指针,每个缓存段拥有独立的读指针。将数据块依次写入N个缓存段中,当第N个缓存段写完数据时,再继续往第1个缓存段中写数据,依次循环。每一个缓存段写完后,再以较低的速率从该缓存段中读数据并写入对应的SD卡,从而完成数据的降速。当数据采集工作完成后,控制器将打乱的数据遵从原来的排列顺序整合到同一个SD卡中,完成数据的全部存储工作。
Description
技术领域
本发明涉及一种基于SD卡的高速数据存储方法,属于数据存储的技术领域。
背景技术
随着现代社会信息化程度的快速提高,各种移动设备对存储单元的速度与容量的要求越来越高。例如在导航系统中,民用北斗二代的中频信号数据码流达到64Mb/S,北斗一代的中频信号数据码流达到200Mb/S。其他如高清监控、高清数码摄像、高速通信等设备也都需要一个高速的数据存储系统来存放采集到的信息。现在比较通用的固态硬盘等存储介质虽然存储速度相对较高,但是硬盘的数据处理都需要基于计算机系统,计算机系统一般通过主机及硬盘完成信号的转换、处理和存储工作,显然增加了主机的操作,并且不方便携带。广泛应用于手机、数码相机的SD卡作为一种基于半导体快闪记忆器的新一代低成本记忆设备,具有便携性好,控制系统完全依赖于计算机的特点,但是其存储速度一般在50Mb/S以下,存储速度不能满足高速数据码流系统的要求。
中国专利CN202720628U公开了一种基于固态硬盘的高速存储系统。包括硬盘阵列、SATARAID控制器和上位机。该存储系统利用固态硬盘独有的物理特性和环境特性扩大存储系统的应用范围,采用SATARAID控制技术扩展存储容量和速度。该高速存储系统可能较好的实现对高速码流数据的存储,但是该装置光是硬件设施就需要硬盘、控制器、上位机等,成本较高,便携性较差,可能无法很好的适应现有技术新的发展需求。
发明内容
针对现有技术的不足,本发明提供一种基于SD卡的高速数据存储方法。
发明概述:
本发明的存储方法旨在存储高速的数据码流,采用环形缓存以串并转换的方式完成利用低速设备存储高速数据,即将一路高速串行的数据码流转换成多路并行的数据码流,完成数据的降速。
本发明的技术方案将高速数据码流分割成多个依次排列的数据块,将数据块依次写入一个环形缓存中。环形缓存由N个缓存段构成,N个缓存段共用一个写指针,每个缓存段拥有独立的读指针。将数据块依次写入N个缓存段中,当第N个缓存段写完数据时,再继续往第1个缓存段中写数据,依次循环。每一个缓存段写完后,再以较低的速率从该缓存段中读数据并写入对应的SD卡,从而完成数据的降速。当数据采集工作完成后,控制器将打乱的数据遵从原来的排列顺序整合到同一个SD卡中,完成数据的全部存储工作。
术语说明:
FIFO:First Input First Output的缩写,先入先出队列,这是一种传统的按序执行方法,先进入的指令先完成并引退,跟着才执行第二条指令。
本发明的技术方案为:
一种基于SD卡的高速数据存储方法,包括步骤如下:
1)将高速串行信号分割成N个规格为8bit×512的数据块,把N个数据块对应写入N个缓存段中,所述的N个缓存段呈环形首尾相接排列;每个缓存段的位宽为8bit,深度为512;
2)读取环形缓存段中的数据,将N个缓存段中的数据分别写入对应的N个SD卡,完成数据降速;
3)分别读取N个SD卡中的数据;具体过程为,依次读取第1个SD卡中的第一个BLOCK的数据、第2个SD卡中的第一个BLOCK的数据、…、第N个SD卡中的第一个BLOCK的数据;然后进行下一个读取循环,依次读取第1个SD卡中的第二个BLOCK的数据、第2个SD卡中的第二个BLOCK的数据、…、第N个SD卡中的第二个BLOCK的数据,以此类推;通过上述操作把数据按照其在高速串行信号中的排列顺序读取出来,并存入总SD卡中,完成数据的整合存储。在数据的存储过程中将数据分别存储到N个SD卡中,为了便于后期数据的处理和应用,将这些数据按照原来的排列顺序整合到一起。
根据本发明优选的,所述步骤1)中,将N个缓存段中的数据分别写入对应的N个SD卡的步骤中,对SD卡的操作过程包括:初始化和写操作:
A、初始化:
A1、设置SD卡的上电延时至少为74clock;上电时要延时足够长的时间给SD卡一个准备过程,根据不同的卡设置不同的延时时间;
A2、拉低片选信号CS,选中SD卡;所谓片选信号,指的是传统南北桥架构的主板中,地址线和数据线分开的BIOS芯片里的22脚的信号。它是由CPU发出,经北桥,南桥到达。该信号的有无可以初步判断南北桥的及CPU是否开始工作,BIOS资料是否被破坏。
A3、发送CMD0命令,SD卡返回0x01后进入Idle状态;
A4、首先向SD卡发送CMD8命令,如果CMD8返回无错误,则初步判断SD卡为SD2.0卡,循环发送CMD55+ACMD41,直到返回0x00,确定SD2.0卡初始化成功,进入Ready状态;进而发送CMD58命令判断是HCSD还是SCSD;
为了区别SD卡的版本是SD2.0还是SD1.0,或是MMC卡,考虑到协议是向上兼容的,首先发送只有SD2.0支持的命令CMD8,如果CMD8返回无错误,则为SD2.0卡。
A5、向SD卡发送CMD8命令,如果返回错误,则循环发送CMD55+ACMD41;如果循环发送CMD55+ACMD41a次后,无返回错误,则判定SD卡为SD1.0卡,至此SD1.0卡初始化成功;
如果循环发送CMD55+ACMD41 a次后,返回错误,则进一步发送CMD1进行初始化;如果CMD1返回无错误,则判定SD卡为MMC卡;如果CMD1返回错误,则不能识别该SD卡;
A6、拉高片选信号CS,退出初始化操作;
B、写操作:
B1、发送CMD24或CMD25命令,返回0x00;
B2、发送数据开始令牌0xfe+正式数据512Bytes+CRC校验2Bytes;默认开始传输的数据长度为512Bytes,通过CMD16设置数据块的长度;
所述步骤3)中,分别读取N个SD卡中的数据的步骤中,对SD卡的操作过程包括读操作:
C、读操作:
C1、发送CMD17或CMD18读命令,返回0x00;
C2、接收数据开始令牌0xfe或0xfc+正式数据512Bytes+CRC校验2Bytes。读操作即将存储数据的N个SD卡绕总SD卡一圈,依次按顺时针方向从N个SD卡中读取数据,读操作相当于写操作的逆过程,读操作不再有速度的限制。最终,在总SD卡中得到按照数据最初排列顺序排列的数据,完成了数据的整个采集过程。
进一步优选的,所述步骤A5中循环发送CMD55+ACMD41的次数a=3~90。
根据本发明优选的,所述步骤1)中,把N个数据块对应写入N个缓存段使用的指针为写指针,写指针唯一;所述步骤2)中,读取缓存段中的数据使用的指针为读指针,读指针的个数为N个;N个缓存段交替进行数据块写入操作,在同一时刻,只有一个缓存段进行数据块写入操作,写指针循环地向N个缓存段中写入数据块;每个缓存段内写入512×8bit的数据后,读指针开始读取缓存段中的数据,读取缓存段中数据的过程在N个缓存段内同时进行。写指针在系统工作期间不间断地将数据写入环形缓存;读指针的个数由系统的存储速度和存储容量决定,N个读指针可以实现N倍降速。只要缓存段写够512×8bit的数据,就可以开始读取数据并向SD卡存储,不需要等后面的缓存段写够512×8bit的数据。例如,当第一个缓存段写够512×8bit的数据时,开始往第二个缓存段写数据,与此同时,开始读取第一个缓存段的数据,并向SD卡存储。
进一步优选的,把N个数据块对应写入N个缓存段的时钟与读取缓存段中数据的时钟速度比为N:1。为了将读写数据的速度相匹配,将读写数据的时钟设置为N比1。
根据本发明优选的,所述步骤1)之前还包括将输入信号整合成8bit高速串行信号的步骤。通过此步骤将普通的输入信号整合成一组8bit的高速串行的数字信号。在SD卡中的数据是以BLOCK(512x8bit)的形式存储的,如果输入信号是4bit的高速信号,为了便于存储,首先要将4bit的输入信号整合成8bit的串行信号,得到一组8bit的高速串行的数字信号。
根据本发明优选的,所述SD卡和总SD卡均为SDHC卡。假设导航中频信号的频率为200Mb/s,采集数据的时长是5min,则200Mb/s×5min,大概需要6G的存储空间;SDHC卡能满足该方案的存储要求。
根据本发明优选的,将N个缓存段中的数据分别写入对应的N个SD卡的步骤中,选用4bit-SD实现数据的存储过程。SD卡读写包括两种模式:SD模式和SPI模式。其中SD模式又可以分为1bit和4bit两种传输模式。SD卡缺省使用专有的SD模式。
根据本发明优选的,本发明所述基于SD卡的高速数据存储方法基于FPGA实现。FPGA即现场可编程门阵列,通过硬件描述语言(Verilog或VHDL)所完成电路设计,进行控制信号的处理,其功能类似于单片机、ARM等器件,它的特点是以并行运算为主。
进一步优选的,所述步骤2)中,读取环形缓存段中的数据,将N个缓存段中的数据分别写入对应的N个SD卡的具体方法为,将N个缓存段的数据读取端口分别接到N个SD卡控制器的数据输入端口,将N个缓存段中的数据分别写入对应的N个SD卡;所述的SD卡控制器通过FPGA实现。所述的SD卡控制器相当于用电脑读取SD卡时的读卡器。
根据本发明优选的,所述步骤1)中的高速串行信号是指数据码流速度大于300Mb/s的串行信号。
根据本发明优选的,N≥3。N的数目由存储速度决定,SD卡的写入速率约为50Mb/s左右,如果要存一个码流速度为300Mb/s的信号,则N至少为6,如果要存一个码流速度为500Mb/s的信号,N至少为10。
根据本发明优选的,所述缓存段为FIFO。
为了便于数据在PC机上进行后期的操作和处理,除了数据之外需要在SD上写入对应的文件系统数据,即将存入数据的量、数据存储的起始位置、文件名等信息通过FAT表的形式用写命令写入SD卡中。文件系统用到的命令和写文件数据用到的命令相同,先使用单块写命令写文件根目录内容,再使用连续块写命令写文件FAT内容。在写根目录内容之前,需要计算出文件的大小,并将文件大小以及文件的起始簇号写入根目录属性中。
本发明的有益效果为:
1.本发明所述基于SD卡的高速数据存储方法,将多个SD卡扩展成一个虚拟超级存储卡,实现多个SD卡存储速度与存储容量的叠加,实现了低速存储设备对高速码流的存储;既降低了存储系统成本,又提升了存储系统的便携性和灵活性;
2.本发明所述基于SD卡的高速数据存储方法,对数据的存储速度随着SD卡数目的增加而提高;而且具有良好的抗震性和便携性,可以实现户外的应用。
附图说明
图1为本发明所述SD卡和总SD卡的整体框架示意图;
图2为本发明所述SD卡的初始化流程;
图3为本发明所述SD卡的写操作流程图;
图4为本发明所述SD卡的读操作流程图。
具体实施方式
下面结合实施例和说明书附图对本发明做进一步说明,但不限于此。
实施例1
如图1-4所示。
一种基于SD卡的高速数据存储方法,对一路300Mb/s的数据码流进行存储,包括步骤如下:
1)将高速串行信号分割成N个规格为8bit×512的数据块,把N个数据块对应写入N个缓存段中,所述的N个缓存段呈环形首尾相接排列;每个缓存段的位宽为8bit,深度为512;N=6;
2)读取环形缓存段中的数据,将N个缓存段中的数据分别写入对应的N个SD卡,完成数据降速;
3)分别读取N个SD卡中的数据;具体过程为,依次读取第1个SD卡中的第一个BLOCK的数据、第2个SD卡中的第一个BLOCK的数据、…、第N个SD卡中的第一个BLOCK的数据;然后进行下一个读取循环,依次读取第1个SD卡中的第二个BLOCK的数据、第2个SD卡中的第二个BLOCK的数据、…、第N个SD卡中的第二个BLOCK的数据,以此类推;通过上述操作把数据按照其在高速串行信号中的排列顺序读取出来,并存入总SD卡中,完成数据的整合存储。在数据的存储过程中将数据分别存储到N个SD卡中,为了便于后期数据的处理和应用,将这些数据按照原来的排列顺序整合到一起。
将300Mb/s的数据码流转换变成6路并行的50Ms/s的码流(当前SD卡的写入速度能达到50Mb/s),从而实现通过低速设备存储高速数据的工作。
实施例2
如实施例1所述的基于SD卡的高速数据存储方法,对一路200Mb/s的数据码流进行存储,所不同的是,N=4。
实施例3
如实施例1所述的基于SD卡的高速数据存储方法,所不同的是,所述步骤1)中,将N个缓存段中的数据分别写入对应的N个SD卡的步骤中,对SD卡的操作过程包括:初始化和写操作:
A、初始化:
A1、设置SD卡的上电延时为80clock;
A2、拉低片选信号CS,选中SD卡;
A3、发送CMD0命令,SD卡返回0x01后进入Idle状态;
A4、首先向SD卡发送CMD8命令,如果CMD8返回无错误,则初步判断SD卡为SD2.0卡,循环发送CMD55+ACMD41,直到返回0x00,确定SD2.0卡初始化成功,进入Ready状态;进而发送CMD58命令判断是HCSD还是SCSD;
为了区别SD卡的版本是SD2.0还是SD1.0,或是MMC卡,考虑到协议是向上兼容的,首先发送只有SD2.0支持的命令CMD8,如果CMD8返回无错误,则为SD2.0卡。
A5、向SD卡发送CMD8命令,如果返回错误,则循环发送CMD55+ACMD41;如果循环发送CMD55+ACMD41a次后,无返回错误,则判定SD卡为SD1.0卡,至此SD1.0卡初始化成功;a=20;
如果循环发送CMD55+ACMD41a次后,返回错误,则进一步发送CMD1进行初始化;如果CMD1返回无错误,则判定SD卡为MMC卡;如果CMD1返回错误,则不能识别该SD卡;
A6、拉高片选信号CS,退出初始化操作;
B、写操作:
B1、发送CMD24命令,返回0x00;
B2、发送数据开始令牌0xfe+正式数据512Bytes+CRC校验2Bytes;默认开始传输的数据长度为512Bytes,通过CMD16设置数据块的长度;
所述步骤3)中,分别读取N个SD卡中的数据的步骤中,对SD卡的操作过程包括读操作:
C、读操作:
C1、发送CMD17读命令,返回0x00;
C2、接收数据开始令牌0xfe或0xfc+正式数据512Bytes+CRC校验2Bytes。读操作即将存储数据的N个SD卡绕总SD卡一圈,依次按顺时针方向从N个SD卡中读取数据,读操作相当于写操作的逆过程,读操作不再有速度的限制。最终,在总SD卡中得到按照数据最初排列顺序排列的数据,完成了数据的整个采集过程。
实施例4
如实施例3所述的基于SD卡的高速数据存储方法,所不同的是,所述步骤B1发送的为CMD25命令;所述C1发送的为CMD18读命令。
实施例5
如实施例1所述的基于SD卡的高速数据存储方法,所不同的是,所述步骤1)中,把N个数据块对应写入N个缓存段使用的指针为写指针,写指针唯一;所述步骤2)中,读取缓存段中的数据使用的指针为读指针,读指针的个数为N个;N个缓存段交替进行数据块写入操作,在同一时刻,只有一个缓存段进行数据块写入操作,写指针循环地向N个缓存段中写入数据块;每个缓存段内写入512×8bit的数据后,读指针开始读取缓存段中的数据,读取缓存段中数据的过程在N个缓存段内同时进行。即,当第一个缓存段写够512×8bit的数据时,开始往第二个缓存段写数据,与此同时,开始读取第一个缓存段的数据,并向SD卡存储。
写指针在系统工作期间不间断地将数据写入环形缓存;读指针的个数由系统的存储速度和存储容量决定,N个读指针可以实现N倍降速。只要缓存段写够512×8bit的数据,就可以开始读取数据并向SD卡存储,不需要等后面的缓存段写够512×8bit的数据。
实施例6
如实施例5所述的基于SD卡的高速数据存储方法,所不同的是,把N个数据块对应写入N个缓存段的时钟与读取缓存段中数据的时钟速度比为N:1。为了将读写数据的速度相匹配,将读写数据的时钟设置为N比1。
实施例7
如实施例1所述的基于SD卡的高速数据存储方法,所不同的是,所述步骤1)之前还包括将输入信号整合成8bit高速串行信号的步骤。通过此步骤将普通的输入信号整合成一组8bit的高速串行的数字信号。在SD卡中的数据是以BLOCK(512×8bit)的形式存储的,如果输入信号是4bit的高速信号,为了便于存储,首先要将4bit的输入信号整合成8bit的串行信号,得到一组8bit的高速串行的数字信号。
实施例8
如实施例1所述的基于SD卡的高速数据存储方法,所不同的是,所述SD卡和总SD卡均为SDHC卡。假设导航中频信号的频率为200Mb/s,采集数据的时长是5min,则200Mb/s×5min,大概需要6G的存储空间;SDHC卡能满足该方案的存储要求。
实施例9
如实施例1所述的基于SD卡的高速数据存储方法,所不同的是,将N个缓存段中的数据分别写入对应的N个SD卡的步骤中,选用4bit-SD实现数据的存储过程。
实施例10
如实施例1所述的基于SD卡的高速数据存储方法,所不同的是,本发明所述基于SD卡的高速数据存储方法基于FPGA实现。
实施例11
如实施例10所述的基于SD卡的高速数据存储方法,所不同的是,所述步骤2)中,读取环形缓存段中的数据,将N个缓存段中的数据分别写入对应的N个SD卡的具体方法为,将N个缓存段的数据读取端口分别接到N个SD卡控制器的数据输入端口,将N个缓存段中的数据分别写入对应的N个SD卡;所述的SD卡控制器通过FPGA实现。所述的SD卡控制器相当于用电脑读取SD卡时的读卡器。
实施例12
如实施例1所述的基于SD卡的高速数据存储方法,所不同的是,所述步骤1)中的高速串行信号的数据码流速度大于300Mb/s。
实施例13
如实施例1所述的基于SD卡的高速数据存储方法,所不同的是,所述缓存段为FIFO。
经实施例1-13验证,当采用4个SD卡时,数据采集系统的数据采集速率能达到200Mb/s;当采用6个SD卡时,数据采集系统的数据采集速率能达到300Mb/s。而传统的使用SD卡的方案进行数据时,最大的数据采集速率仅为50Mb/s,由此可见,基于SD卡的高速数据存储方法大大的提高了数据存储速率,能很好的满足高速数据码流的存储要求。
Claims (10)
1.一种基于SD卡的高速数据存储方法,其特征在于,包括步骤如下:
1)将高速串行信号分割成N个规格为8bit×512的数据块,把N个数据块对应写入N个缓存段中,所述的N个缓存段呈环形首尾相接排列;每个缓存段的位宽为8bit,深度为512;
2)读取环形缓存段中的数据,将N个缓存段中的数据分别写入对应的N个SD卡,完成数据降速;
3)分别读取N个SD卡中的数据;具体过程为,依次读取第1个SD卡中的第一个BLOCK的数据、第2个SD卡中的第一个BLOCK的数据、…、第N个SD卡中的第一个BLOCK的数据;然后进行下一个读取循环,依次读取第1个SD卡中的第二个BLOCK的数据、第2个SD卡中的第二个BLOCK的数据、…、第N个SD卡中的第二个BLOCK的数据,以此类推;通过上述操作把数据按照其在高速串行信号中的排列顺序读取出来,并存入总SD卡中,完成数据的整合存储。
2.根据权利要求1所述的基于SD卡的高速数据存储方法,其特征在于,所述步骤1)中,将N个缓存段中的数据分别写入对应的N个SD卡的步骤中,对SD卡的操作过程包括:初始化和写操作:
A、初始化:
A1、设置SD卡的上电延时至少为74clock;
A2、拉低片选信号CS,选中SD卡;
A3、发送CMD0命令,SD卡返回0x01后进入Idle状态;
A4、首先向SD卡发送CMD8命令,如果CMD8返回无错误,则初步判断SD卡为SD2.0卡,循环发送CMD55+ACMD41,直到返回0x00,确定SD2.0卡初始化成功,进入Ready状态;进而发送CMD58命令判断是HCSD还是SCSD;
A5、向SD卡发送CMD8命令,如果返回错误,则循环发送CMD55+ACMD41;如果循环发送CMD55+ACMD41a次后,无返回错误,则判定SD卡为SD1.0卡,至此SD1.0卡初始化成功;
如果循环发送CMD55+ACMD41a次后,返回错误,则进一步发送CMD1进行初始化;如果CMD1返回无错误,则判定SD卡为MMC卡;如果CMD1返回错误,则不能识别该SD卡;
A6、拉高片选信号CS,退出初始化操作;
B、写操作:
B1、发送CMD24或CMD25命令,返回0x00;
B2、发送数据开始令牌0xfe+正式数据512Bytes+CRC校验2Bytes;默认开始传输的数据长度为512Bytes,通过CMD16设置数据块的长度;
所述步骤3)中,分别读取N个SD卡中的数据的步骤中,对SD卡的操作过程包括读操作:
C、读操作:
C1、发送CMD17或CMD18读命令,返回0x00;
C2、接收数据开始令牌0xfe或0xfc+正式数据512Bytes+CRC校验2Bytes。
3.根据权利要求1所述的基于SD卡的高速数据存储方法,其特征在于,所述步骤1)中,把N个数据块对应写入N个缓存段使用的指针为写指针,写指针唯一;所述步骤2)中,读取缓存段中的数据使用的指针为读指针,读指针的个数为N个;N个缓存段交替进行数据块写入操作,在同一时刻,只有一个缓存段进行数据块写入操作,写指针循环地向N个缓存段中写入数据块;每个缓存段内写入512×8bit的数据后,读指针开始读取缓存段中的数据,读取缓存段中数据的过程在N个缓存段内同时进行。
4.根据权利要求3所述的基于SD卡的高速数据存储方法,其特征在于,把N个数据块对应写入N个缓存段的时钟与读取缓存段中数据的时钟速度比为N:1。
5.根据权利要求1所述的基于SD卡的高速数据存储方法,其特征在于,所述步骤1)之前还包括将输入信号整合成8bit高速串行信号的步骤。
6.根据权利要求1所述的基于SD卡的高速数据存储方法,其特征在于,所述SD卡和总SD卡均为SDHC卡。
7.根据权利要求1所述的基于SD卡的高速数据存储方法,其特征在于,将N个缓存段中的数据分别写入对应的N个SD卡的步骤中,选用4bit-SD实现数据的存储过程。
8.根据权利要求1所述的基于SD卡的高速数据存储方法,其特征在于,本发明所述基于SD卡的高速数据存储方法基于FPGA实现。
9.根据权利要求8所述的基于SD卡的高速数据存储方法,其特征在于,所述步骤2)中,读取环形缓存段中的数据,将N个缓存段中的数据分别写入对应的N个SD卡的具体方法为,将N个缓存段的数据读取端口分别接到N个SD卡控制器的数据输入端口,将N个缓存段中的数据分别写入对应的N个SD卡;所述的SD卡控制器通过FPGA实现。
10.根据权利要求1所述的基于SD卡的高速数据存储方法,其特征在于,所述缓存段为FIFO。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710157667.6A CN107102818A (zh) | 2017-03-16 | 2017-03-16 | 一种基于sd卡的高速数据存储方法 |
PCT/CN2017/104199 WO2018166179A1 (zh) | 2017-03-16 | 2017-09-29 | 一种基于sd卡的高速数据存储方法 |
US15/772,496 US11126382B2 (en) | 2017-03-16 | 2017-09-29 | SD card-based high-speed data storage method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710157667.6A CN107102818A (zh) | 2017-03-16 | 2017-03-16 | 一种基于sd卡的高速数据存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107102818A true CN107102818A (zh) | 2017-08-29 |
Family
ID=59675859
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710157667.6A Pending CN107102818A (zh) | 2017-03-16 | 2017-03-16 | 一种基于sd卡的高速数据存储方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11126382B2 (zh) |
CN (1) | CN107102818A (zh) |
WO (1) | WO2018166179A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018166179A1 (zh) * | 2017-03-16 | 2018-09-20 | 山东大学 | 一种基于sd卡的高速数据存储方法 |
WO2019120274A1 (zh) * | 2017-12-21 | 2019-06-27 | 上海禾赛光电科技有限公司 | 用于socfpga的数据循环缓冲方法及装置、存储介质、终端 |
CN110096235A (zh) * | 2019-04-30 | 2019-08-06 | 自然资源部第一海洋研究所 | 一种面向自容式应用的数据存储方法及存储系统 |
CN111782132A (zh) * | 2019-04-03 | 2020-10-16 | 北京沃东天骏信息技术有限公司 | 一种数据读写方法、装置及其存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112305961B (zh) * | 2020-10-19 | 2022-04-12 | 武汉大学 | 新型信号探测采集设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593315A (zh) * | 2013-11-20 | 2014-02-19 | 中国船舶重工集团公司第七二四研究所 | 一种基于fpga的直接多块硬盘高速并行读写方法 |
CN104811643A (zh) * | 2015-04-27 | 2015-07-29 | 哈尔滨工程大学 | 基于sd卡阵列的图像数据高速存储系统 |
CN105355223A (zh) * | 2015-10-27 | 2016-02-24 | 肖瑞 | 新型无线音频播放系统及其初始化方法 |
CN105718219A (zh) * | 2016-01-19 | 2016-06-29 | 浙江大学 | 基于usb3.0的高速数据传输存储的方法与模块 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI237261B (en) * | 2004-06-16 | 2005-08-01 | Himax Tech Inc | Method for accessing a single port memory |
DE602005009845D1 (de) * | 2004-10-01 | 2008-10-30 | Matsushita Electric Ind Co Ltd | Speicherkartensteuerung,speicherkarten-laufwerkeinrichtung und computerprogramm |
US8225006B1 (en) * | 2007-08-30 | 2012-07-17 | Virident Systems, Inc. | Methods for data redundancy across three or more storage devices |
US8689042B1 (en) * | 2007-08-30 | 2014-04-01 | Virident Systems, Inc. | Methods for data redundancy across replaceable non-volatile memory storage devices |
KR101297563B1 (ko) * | 2007-11-15 | 2013-08-19 | 삼성전자주식회사 | 스토리지 관리 방법 및 관리 시스템 |
US8566507B2 (en) * | 2009-04-08 | 2013-10-22 | Google Inc. | Data storage device capable of recognizing and controlling multiple types of memory chips |
CN101561888B (zh) * | 2009-05-12 | 2011-07-13 | 苏州国芯科技有限公司 | 一种实时加密sd卡及高速加解密方法 |
KR20150067583A (ko) * | 2013-12-10 | 2015-06-18 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법 |
CN107102818A (zh) * | 2017-03-16 | 2017-08-29 | 山东大学 | 一种基于sd卡的高速数据存储方法 |
-
2017
- 2017-03-16 CN CN201710157667.6A patent/CN107102818A/zh active Pending
- 2017-09-29 WO PCT/CN2017/104199 patent/WO2018166179A1/zh active Application Filing
- 2017-09-29 US US15/772,496 patent/US11126382B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103593315A (zh) * | 2013-11-20 | 2014-02-19 | 中国船舶重工集团公司第七二四研究所 | 一种基于fpga的直接多块硬盘高速并行读写方法 |
CN104811643A (zh) * | 2015-04-27 | 2015-07-29 | 哈尔滨工程大学 | 基于sd卡阵列的图像数据高速存储系统 |
CN105355223A (zh) * | 2015-10-27 | 2016-02-24 | 肖瑞 | 新型无线音频播放系统及其初始化方法 |
CN105718219A (zh) * | 2016-01-19 | 2016-06-29 | 浙江大学 | 基于usb3.0的高速数据传输存储的方法与模块 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018166179A1 (zh) * | 2017-03-16 | 2018-09-20 | 山东大学 | 一种基于sd卡的高速数据存储方法 |
WO2019120274A1 (zh) * | 2017-12-21 | 2019-06-27 | 上海禾赛光电科技有限公司 | 用于socfpga的数据循环缓冲方法及装置、存储介质、终端 |
CN111782132A (zh) * | 2019-04-03 | 2020-10-16 | 北京沃东天骏信息技术有限公司 | 一种数据读写方法、装置及其存储介质 |
CN110096235A (zh) * | 2019-04-30 | 2019-08-06 | 自然资源部第一海洋研究所 | 一种面向自容式应用的数据存储方法及存储系统 |
CN110096235B (zh) * | 2019-04-30 | 2020-06-30 | 自然资源部第一海洋研究所 | 一种面向自容式应用的数据存储方法及存储系统 |
Also Published As
Publication number | Publication date |
---|---|
US11126382B2 (en) | 2021-09-21 |
WO2018166179A1 (zh) | 2018-09-20 |
US20200264811A1 (en) | 2020-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107102818A (zh) | 一种基于sd卡的高速数据存储方法 | |
CN104657284B (zh) | 存储设备的扩展利用区域 | |
CN100361523C (zh) | 一种数字相机实时采集系统 | |
CN100476650C (zh) | 单片机存储系统 | |
CN110069443B (zh) | 一种基于fpga控制的ufs存储阵列系统及数据传输方法 | |
CN105940381A (zh) | 存储器访问期间的数据重排序 | |
CN113590528A (zh) | 基于hp接口的多通道数据采集存储回放卡、系统及方法 | |
CN108536623A (zh) | 多通道NAND Flash控制器及移动存储设备 | |
CN116450552A (zh) | 基于i2c总线异步批量读写寄存器的方法及系统 | |
CN111314641A (zh) | 一种高帧频图像的采集存储显示系统及方法 | |
CN107329929B (zh) | 一种基于SoC FPGA的数据传输系统及数据传输方法 | |
CN107766266A (zh) | 基于FPGA和PCIe的高速数据采集与存储系统 | |
CN216014252U (zh) | 基于hp接口的多通道数据采集存储回放卡及系统 | |
CN2676291Y (zh) | 提升闪存存取效能的装置 | |
CN109491959A (zh) | 一种可编程逻辑器件配置器 | |
CN202584143U (zh) | 一种多接口只读读卡器 | |
CN205983448U (zh) | 用于固态硬盘的控制芯片及固态硬盘 | |
CN104077080B (zh) | 存储器存取方法、存储器存取控制方法、spi闪存装置及其控制器 | |
CN102708075A (zh) | 一种sd卡硬件控制装置及控制方法 | |
CN207586908U (zh) | 一种高速扩容存储模块 | |
CN116149570A (zh) | 一种存储系统、存储系统的控制方法及相关组件 | |
CN103226537B (zh) | 一种实现手机硬件接口的可编程逻辑器件 | |
CN115481078A (zh) | 主从式通讯系统及方法 | |
CN101789803A (zh) | 一种双存储卡手机的设计方法 | |
CN110517720A (zh) | 基于stm32的低成本高速存储测试装置 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170829 |
|
RJ01 | Rejection of invention patent application after publication |