本發(fā)明涉及一種基于sd卡的高速數(shù)據(jù)存儲(chǔ)方法,屬于數(shù)據(jù)存儲(chǔ)的技術(shù)領(lǐng)域。
背景技術(shù):
隨著現(xiàn)代社會(huì)信息化程度的快速提高,各種移動(dòng)設(shè)備對(duì)存儲(chǔ)單元的速度與容量的要求越來(lái)越高。例如在導(dǎo)航系統(tǒng)中,民用北斗二代的中頻信號(hào)數(shù)據(jù)碼流達(dá)到64mb/s,北斗一代的中頻信號(hào)數(shù)據(jù)碼流達(dá)到200mb/s。其他如高清監(jiān)控、高清數(shù)碼攝像、高速通信等設(shè)備也都需要一個(gè)高速的數(shù)據(jù)存儲(chǔ)系統(tǒng)來(lái)存放采集到的信息?,F(xiàn)在比較通用的固態(tài)硬盤等存儲(chǔ)介質(zhì)雖然存儲(chǔ)速度相對(duì)較高,但是硬盤的數(shù)據(jù)處理都需要基于計(jì)算機(jī)系統(tǒng),計(jì)算機(jī)系統(tǒng)一般通過(guò)主機(jī)及硬盤完成信號(hào)的轉(zhuǎn)換、處理和存儲(chǔ)工作,顯然增加了主機(jī)的操作,并且不方便攜帶。廣泛應(yīng)用于手機(jī)、數(shù)碼相機(jī)的sd卡作為一種基于半導(dǎo)體快閃記憶器的新一代低成本記憶設(shè)備,具有便攜性好,控制系統(tǒng)完全依賴于計(jì)算機(jī)的特點(diǎn),但是其存儲(chǔ)速度一般在50mb/s以下,存儲(chǔ)速度不能滿足高速數(shù)據(jù)碼流系統(tǒng)的要求。
中國(guó)專利cn202720628u公開(kāi)了一種基于固態(tài)硬盤的高速存儲(chǔ)系統(tǒng)。包括硬盤陣列、sataraid控制器和上位機(jī)。該存儲(chǔ)系統(tǒng)利用固態(tài)硬盤獨(dú)有的物理特性和環(huán)境特性擴(kuò)大存儲(chǔ)系統(tǒng)的應(yīng)用范圍,采用sataraid控制技術(shù)擴(kuò)展存儲(chǔ)容量和速度。該高速存儲(chǔ)系統(tǒng)可能較好的實(shí)現(xiàn)對(duì)高速碼流數(shù)據(jù)的存儲(chǔ),但是該裝置光是硬件設(shè)施就需要硬盤、控制器、上位機(jī)等,成本較高,便攜性較差,可能無(wú)法很好的適應(yīng)現(xiàn)有技術(shù)新的發(fā)展需求。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明提供一種基于sd卡的高速數(shù)據(jù)存儲(chǔ)方法。
發(fā)明概述:
本發(fā)明的存儲(chǔ)方法旨在存儲(chǔ)高速的數(shù)據(jù)碼流,采用環(huán)形緩存以串并轉(zhuǎn)換的方式完成利用低速設(shè)備存儲(chǔ)高速數(shù)據(jù),即將一路高速串行的數(shù)據(jù)碼流轉(zhuǎn)換成多路并行的數(shù)據(jù)碼流,完成數(shù)據(jù)的降速。
本發(fā)明的技術(shù)方案將高速數(shù)據(jù)碼流分割成多個(gè)依次排列的數(shù)據(jù)塊,將數(shù)據(jù)塊依次寫入一個(gè)環(huán)形緩存中。環(huán)形緩存由n個(gè)緩存段構(gòu)成,n個(gè)緩存段共用一個(gè)寫指針,每個(gè)緩存段擁有獨(dú)立的讀指針。將數(shù)據(jù)塊依次寫入n個(gè)緩存段中,當(dāng)?shù)趎個(gè)緩存段寫完數(shù)據(jù)時(shí),再繼續(xù)往第1個(gè)緩存段中寫數(shù)據(jù),依次循環(huán)。每一個(gè)緩存段寫完后,再以較低的速率從該緩存段中讀數(shù)據(jù)并寫入對(duì)應(yīng)的sd卡,從而完成數(shù)據(jù)的降速。當(dāng)數(shù)據(jù)采集工作完成后,控制器將打亂的數(shù)據(jù)遵從原來(lái)的排列順序整合到同一個(gè)sd卡中,完成數(shù)據(jù)的全部存儲(chǔ)工作。
術(shù)語(yǔ)說(shuō)明:
fifo:firstinputfirstoutput的縮寫,先入先出隊(duì)列,這是一種傳統(tǒng)的按序執(zhí)行方法,先進(jìn)入的指令先完成并引退,跟著才執(zhí)行第二條指令。
本發(fā)明的技術(shù)方案為:
一種基于sd卡的高速數(shù)據(jù)存儲(chǔ)方法,包括步驟如下:
1)將高速串行信號(hào)分割成n個(gè)規(guī)格為8bit×512的數(shù)據(jù)塊,把n個(gè)數(shù)據(jù)塊對(duì)應(yīng)寫入n個(gè)緩存段中,所述的n個(gè)緩存段呈環(huán)形首尾相接排列;每個(gè)緩存段的位寬為8bit,深度為512;
2)讀取環(huán)形緩存段中的數(shù)據(jù),將n個(gè)緩存段中的數(shù)據(jù)分別寫入對(duì)應(yīng)的n個(gè)sd卡,完成數(shù)據(jù)降速;
3)分別讀取n個(gè)sd卡中的數(shù)據(jù);具體過(guò)程為,依次讀取第1個(gè)sd卡中的第一個(gè)block的數(shù)據(jù)、第2個(gè)sd卡中的第一個(gè)block的數(shù)據(jù)、…、第n個(gè)sd卡中的第一個(gè)block的數(shù)據(jù);然后進(jìn)行下一個(gè)讀取循環(huán),依次讀取第1個(gè)sd卡中的第二個(gè)block的數(shù)據(jù)、第2個(gè)sd卡中的第二個(gè)block的數(shù)據(jù)、…、第n個(gè)sd卡中的第二個(gè)block的數(shù)據(jù),以此類推;通過(guò)上述操作把數(shù)據(jù)按照其在高速串行信號(hào)中的排列順序讀取出來(lái),并存入總sd卡中,完成數(shù)據(jù)的整合存儲(chǔ)。在數(shù)據(jù)的存儲(chǔ)過(guò)程中將數(shù)據(jù)分別存儲(chǔ)到n個(gè)sd卡中,為了便于后期數(shù)據(jù)的處理和應(yīng)用,將這些數(shù)據(jù)按照原來(lái)的排列順序整合到一起。
根據(jù)本發(fā)明優(yōu)選的,所述步驟1)中,將n個(gè)緩存段中的數(shù)據(jù)分別寫入對(duì)應(yīng)的n個(gè)sd卡的步驟中,對(duì)sd卡的操作過(guò)程包括:初始化和寫操作:
a、初始化:
a1、設(shè)置sd卡的上電延時(shí)至少為74clock;上電時(shí)要延時(shí)足夠長(zhǎng)的時(shí)間給sd卡一個(gè)準(zhǔn)備過(guò)程,根據(jù)不同的卡設(shè)置不同的延時(shí)時(shí)間;
a2、拉低片選信號(hào)cs,選中sd卡;所謂片選信號(hào),指的是傳統(tǒng)南北橋架構(gòu)的主板中,地址線和數(shù)據(jù)線分開(kāi)的bios芯片里的22腳的信號(hào)。它是由cpu發(fā)出,經(jīng)北橋,南橋到達(dá)。該信號(hào)的有無(wú)可以初步判斷南北橋的及cpu是否開(kāi)始工作,bios資料是否被破壞。
a3、發(fā)送cmd0命令,sd卡返回0x01后進(jìn)入idle狀態(tài);
a4、首先向sd卡發(fā)送cmd8命令,如果cmd8返回?zé)o錯(cuò)誤,則初步判斷sd卡為sd2.0卡,循環(huán)發(fā)送cmd55+acmd41,直到返回0x00,確定sd2.0卡初始化成功,進(jìn)入ready狀態(tài);進(jìn)而發(fā)送cmd58命令判斷是hcsd還是scsd;
為了區(qū)別sd卡的版本是sd2.0還是sd1.0,或是mmc卡,考慮到協(xié)議是向上兼容的,首先發(fā)送只有sd2.0支持的命令cmd8,如果cmd8返回?zé)o錯(cuò)誤,則為sd2.0卡。
a5、向sd卡發(fā)送cmd8命令,如果返回錯(cuò)誤,則循環(huán)發(fā)送cmd55+acmd41;如果循環(huán)發(fā)送cmd55+acmd41a次后,無(wú)返回錯(cuò)誤,則判定sd卡為sd1.0卡,至此sd1.0卡初始化成功;
如果循環(huán)發(fā)送cmd55+acmd41a次后,返回錯(cuò)誤,則進(jìn)一步發(fā)送cmd1進(jìn)行初始化;如果cmd1返回?zé)o錯(cuò)誤,則判定sd卡為mmc卡;如果cmd1返回錯(cuò)誤,則不能識(shí)別該sd卡;
a6、拉高片選信號(hào)cs,退出初始化操作;
b、寫操作:
b1、發(fā)送cmd24或cmd25命令,返回0x00;
b2、發(fā)送數(shù)據(jù)開(kāi)始令牌0xfe+正式數(shù)據(jù)512bytes+crc校驗(yàn)2bytes;默認(rèn)開(kāi)始傳輸?shù)臄?shù)據(jù)長(zhǎng)度為512bytes,通過(guò)cmd16設(shè)置數(shù)據(jù)塊的長(zhǎng)度;
所述步驟3)中,分別讀取n個(gè)sd卡中的數(shù)據(jù)的步驟中,對(duì)sd卡的操作過(guò)程包括讀操作:
c、讀操作:
c1、發(fā)送cmd17或cmd18讀命令,返回0x00;
c2、接收數(shù)據(jù)開(kāi)始令牌0xfe或0xfc+正式數(shù)據(jù)512bytes+crc校驗(yàn)2bytes。讀操作即將存儲(chǔ)數(shù)據(jù)的n個(gè)sd卡繞總sd卡一圈,依次按順時(shí)針?lè)较驈膎個(gè)sd卡中讀取數(shù)據(jù),讀操作相當(dāng)于寫操作的逆過(guò)程,讀操作不再有速度的限制。最終,在總sd卡中得到按照數(shù)據(jù)最初排列順序排列的數(shù)據(jù),完成了數(shù)據(jù)的整個(gè)采集過(guò)程。
進(jìn)一步優(yōu)選的,所述步驟a5中循環(huán)發(fā)送cmd55+acmd41的次數(shù)a=3~90。
根據(jù)本發(fā)明優(yōu)選的,所述步驟1)中,把n個(gè)數(shù)據(jù)塊對(duì)應(yīng)寫入n個(gè)緩存段使用的指針為寫指針,寫指針唯一;所述步驟2)中,讀取緩存段中的數(shù)據(jù)使用的指針為讀指針,讀指針的個(gè)數(shù)為n個(gè);n個(gè)緩存段交替進(jìn)行數(shù)據(jù)塊寫入操作,在同一時(shí)刻,只有一個(gè)緩存段進(jìn)行數(shù)據(jù)塊寫入操作,寫指針循環(huán)地向n個(gè)緩存段中寫入數(shù)據(jù)塊;每個(gè)緩存段內(nèi)寫入512×8bit的數(shù)據(jù)后,讀指針開(kāi)始讀取緩存段中的數(shù)據(jù),讀取緩存段中數(shù)據(jù)的過(guò)程在n個(gè)緩存段內(nèi)同時(shí)進(jìn)行。寫指針在系統(tǒng)工作期間不間斷地將數(shù)據(jù)寫入環(huán)形緩存;讀指針的個(gè)數(shù)由系統(tǒng)的存儲(chǔ)速度和存儲(chǔ)容量決定,n個(gè)讀指針可以實(shí)現(xiàn)n倍降速。只要緩存段寫夠512×8bit的數(shù)據(jù),就可以開(kāi)始讀取數(shù)據(jù)并向sd卡存儲(chǔ),不需要等后面的緩存段寫夠512×8bit的數(shù)據(jù)。例如,當(dāng)?shù)谝粋€(gè)緩存段寫夠512×8bit的數(shù)據(jù)時(shí),開(kāi)始往第二個(gè)緩存段寫數(shù)據(jù),與此同時(shí),開(kāi)始讀取第一個(gè)緩存段的數(shù)據(jù),并向sd卡存儲(chǔ)。
進(jìn)一步優(yōu)選的,把n個(gè)數(shù)據(jù)塊對(duì)應(yīng)寫入n個(gè)緩存段的時(shí)鐘與讀取緩存段中數(shù)據(jù)的時(shí)鐘速度比為n:1。為了將讀寫數(shù)據(jù)的速度相匹配,將讀寫數(shù)據(jù)的時(shí)鐘設(shè)置為n比1。
根據(jù)本發(fā)明優(yōu)選的,所述步驟1)之前還包括將輸入信號(hào)整合成8bit高速串行信號(hào)的步驟。通過(guò)此步驟將普通的輸入信號(hào)整合成一組8bit的高速串行的數(shù)字信號(hào)。在sd卡中的數(shù)據(jù)是以block(512x8bit)的形式存儲(chǔ)的,如果輸入信號(hào)是4bit的高速信號(hào),為了便于存儲(chǔ),首先要將4bit的輸入信號(hào)整合成8bit的串行信號(hào),得到一組8bit的高速串行的數(shù)字信號(hào)。
根據(jù)本發(fā)明優(yōu)選的,所述sd卡和總sd卡均為sdhc卡。假設(shè)導(dǎo)航中頻信號(hào)的頻率為200mb/s,采集數(shù)據(jù)的時(shí)長(zhǎng)是5min,則200mb/s×5min,大概需要6g的存儲(chǔ)空間;sdhc卡能滿足該方案的存儲(chǔ)要求。
根據(jù)本發(fā)明優(yōu)選的,將n個(gè)緩存段中的數(shù)據(jù)分別寫入對(duì)應(yīng)的n個(gè)sd卡的步驟中,選用4bit-sd實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)過(guò)程。sd卡讀寫包括兩種模式:sd模式和spi模式。其中sd模式又可以分為1bit和4bit兩種傳輸模式。sd卡缺省使用專有的sd模式。
根據(jù)本發(fā)明優(yōu)選的,本發(fā)明所述基于sd卡的高速數(shù)據(jù)存儲(chǔ)方法基于fpga實(shí)現(xiàn)。fpga即現(xiàn)場(chǎng)可編程門陣列,通過(guò)硬件描述語(yǔ)言(verilog或vhdl)所完成電路設(shè)計(jì),進(jìn)行控制信號(hào)的處理,其功能類似于單片機(jī)、arm等器件,它的特點(diǎn)是以并行運(yùn)算為主。
進(jìn)一步優(yōu)選的,所述步驟2)中,讀取環(huán)形緩存段中的數(shù)據(jù),將n個(gè)緩存段中的數(shù)據(jù)分別寫入對(duì)應(yīng)的n個(gè)sd卡的具體方法為,將n個(gè)緩存段的數(shù)據(jù)讀取端口分別接到n個(gè)sd卡控制器的數(shù)據(jù)輸入端口,將n個(gè)緩存段中的數(shù)據(jù)分別寫入對(duì)應(yīng)的n個(gè)sd卡;所述的sd卡控制器通過(guò)fpga實(shí)現(xiàn)。所述的sd卡控制器相當(dāng)于用電腦讀取sd卡時(shí)的讀卡器。
根據(jù)本發(fā)明優(yōu)選的,所述步驟1)中的高速串行信號(hào)是指數(shù)據(jù)碼流速度大于300mb/s的串行信號(hào)。
根據(jù)本發(fā)明優(yōu)選的,n≥3。n的數(shù)目由存儲(chǔ)速度決定,sd卡的寫入速率約為50mb/s左右,如果要存一個(gè)碼流速度為300mb/s的信號(hào),則n至少為6,如果要存一個(gè)碼流速度為500mb/s的信號(hào),n至少為10。
根據(jù)本發(fā)明優(yōu)選的,所述緩存段為fifo。
為了便于數(shù)據(jù)在pc機(jī)上進(jìn)行后期的操作和處理,除了數(shù)據(jù)之外需要在sd上寫入對(duì)應(yīng)的文件系統(tǒng)數(shù)據(jù),即將存入數(shù)據(jù)的量、數(shù)據(jù)存儲(chǔ)的起始位置、文件名等信息通過(guò)fat表的形式用寫命令寫入sd卡中。文件系統(tǒng)用到的命令和寫文件數(shù)據(jù)用到的命令相同,先使用單塊寫命令寫文件根目錄內(nèi)容,再使用連續(xù)塊寫命令寫文件fat內(nèi)容。在寫根目錄內(nèi)容之前,需要計(jì)算出文件的大小,并將文件大小以及文件的起始簇號(hào)寫入根目錄屬性中。
本發(fā)明的有益效果為:
1.本發(fā)明所述基于sd卡的高速數(shù)據(jù)存儲(chǔ)方法,將多個(gè)sd卡擴(kuò)展成一個(gè)虛擬超級(jí)存儲(chǔ)卡,實(shí)現(xiàn)多個(gè)sd卡存儲(chǔ)速度與存儲(chǔ)容量的疊加,實(shí)現(xiàn)了低速存儲(chǔ)設(shè)備對(duì)高速碼流的存儲(chǔ);既降低了存儲(chǔ)系統(tǒng)成本,又提升了存儲(chǔ)系統(tǒng)的便攜性和靈活性;
2.本發(fā)明所述基于sd卡的高速數(shù)據(jù)存儲(chǔ)方法,對(duì)數(shù)據(jù)的存儲(chǔ)速度隨著sd卡數(shù)目的增加而提高;而且具有良好的抗震性和便攜性,可以實(shí)現(xiàn)戶外的應(yīng)用。
附圖說(shuō)明
圖1為本發(fā)明所述sd卡和總sd卡的整體框架示意圖;
圖2為本發(fā)明所述sd卡的初始化流程;
圖3為本發(fā)明所述sd卡的寫操作流程圖;
圖4為本發(fā)明所述sd卡的讀操作流程圖。
具體實(shí)施方式
下面結(jié)合實(shí)施例和說(shuō)明書附圖對(duì)本發(fā)明做進(jìn)一步說(shuō)明,但不限于此。
實(shí)施例1
如圖1-4所示。
一種基于sd卡的高速數(shù)據(jù)存儲(chǔ)方法,對(duì)一路300mb/s的數(shù)據(jù)碼流進(jìn)行存儲(chǔ),包括步驟如下:
1)將高速串行信號(hào)分割成n個(gè)規(guī)格為8bit×512的數(shù)據(jù)塊,把n個(gè)數(shù)據(jù)塊對(duì)應(yīng)寫入n個(gè)緩存段中,所述的n個(gè)緩存段呈環(huán)形首尾相接排列;每個(gè)緩存段的位寬為8bit,深度為512;n=6;
2)讀取環(huán)形緩存段中的數(shù)據(jù),將n個(gè)緩存段中的數(shù)據(jù)分別寫入對(duì)應(yīng)的n個(gè)sd卡,完成數(shù)據(jù)降速;
3)分別讀取n個(gè)sd卡中的數(shù)據(jù);具體過(guò)程為,依次讀取第1個(gè)sd卡中的第一個(gè)block的數(shù)據(jù)、第2個(gè)sd卡中的第一個(gè)block的數(shù)據(jù)、…、第n個(gè)sd卡中的第一個(gè)block的數(shù)據(jù);然后進(jìn)行下一個(gè)讀取循環(huán),依次讀取第1個(gè)sd卡中的第二個(gè)block的數(shù)據(jù)、第2個(gè)sd卡中的第二個(gè)block的數(shù)據(jù)、…、第n個(gè)sd卡中的第二個(gè)block的數(shù)據(jù),以此類推;通過(guò)上述操作把數(shù)據(jù)按照其在高速串行信號(hào)中的排列順序讀取出來(lái),并存入總sd卡中,完成數(shù)據(jù)的整合存儲(chǔ)。在數(shù)據(jù)的存儲(chǔ)過(guò)程中將數(shù)據(jù)分別存儲(chǔ)到n個(gè)sd卡中,為了便于后期數(shù)據(jù)的處理和應(yīng)用,將這些數(shù)據(jù)按照原來(lái)的排列順序整合到一起。
將300mb/s的數(shù)據(jù)碼流轉(zhuǎn)換變成6路并行的50ms/s的碼流(當(dāng)前sd卡的寫入速度能達(dá)到50mb/s),從而實(shí)現(xiàn)通過(guò)低速設(shè)備存儲(chǔ)高速數(shù)據(jù)的工作。
實(shí)施例2
如實(shí)施例1所述的基于sd卡的高速數(shù)據(jù)存儲(chǔ)方法,對(duì)一路200mb/s的數(shù)據(jù)碼流進(jìn)行存儲(chǔ),所不同的是,n=4。
實(shí)施例3
如實(shí)施例1所述的基于sd卡的高速數(shù)據(jù)存儲(chǔ)方法,所不同的是,所述步驟1)中,將n個(gè)緩存段中的數(shù)據(jù)分別寫入對(duì)應(yīng)的n個(gè)sd卡的步驟中,對(duì)sd卡的操作過(guò)程包括:初始化和寫操作:
a、初始化:
a1、設(shè)置sd卡的上電延時(shí)為80clock;
a2、拉低片選信號(hào)cs,選中sd卡;
a3、發(fā)送cmd0命令,sd卡返回0x01后進(jìn)入idle狀態(tài);
a4、首先向sd卡發(fā)送cmd8命令,如果cmd8返回?zé)o錯(cuò)誤,則初步判斷sd卡為sd2.0卡,循環(huán)發(fā)送cmd55+acmd41,直到返回0x00,確定sd2.0卡初始化成功,進(jìn)入ready狀態(tài);進(jìn)而發(fā)送cmd58命令判斷是hcsd還是scsd;
為了區(qū)別sd卡的版本是sd2.0還是sd1.0,或是mmc卡,考慮到協(xié)議是向上兼容的,首先發(fā)送只有sd2.0支持的命令cmd8,如果cmd8返回?zé)o錯(cuò)誤,則為sd2.0卡。
a5、向sd卡發(fā)送cmd8命令,如果返回錯(cuò)誤,則循環(huán)發(fā)送cmd55+acmd41;如果循環(huán)發(fā)送cmd55+acmd41a次后,無(wú)返回錯(cuò)誤,則判定sd卡為sd1.0卡,至此sd1.0卡初始化成功;a=20;
如果循環(huán)發(fā)送cmd55+acmd41a次后,返回錯(cuò)誤,則進(jìn)一步發(fā)送cmd1進(jìn)行初始化;如果cmd1返回?zé)o錯(cuò)誤,則判定sd卡為mmc卡;如果cmd1返回錯(cuò)誤,則不能識(shí)別該sd卡;
a6、拉高片選信號(hào)cs,退出初始化操作;
b、寫操作:
b1、發(fā)送cmd24命令,返回0x00;
b2、發(fā)送數(shù)據(jù)開(kāi)始令牌0xfe+正式數(shù)據(jù)512bytes+crc校驗(yàn)2bytes;默認(rèn)開(kāi)始傳輸?shù)臄?shù)據(jù)長(zhǎng)度為512bytes,通過(guò)cmd16設(shè)置數(shù)據(jù)塊的長(zhǎng)度;
所述步驟3)中,分別讀取n個(gè)sd卡中的數(shù)據(jù)的步驟中,對(duì)sd卡的操作過(guò)程包括讀操作:
c、讀操作:
c1、發(fā)送cmd17讀命令,返回0x00;
c2、接收數(shù)據(jù)開(kāi)始令牌0xfe或0xfc+正式數(shù)據(jù)512bytes+crc校驗(yàn)2bytes。讀操作即將存儲(chǔ)數(shù)據(jù)的n個(gè)sd卡繞總sd卡一圈,依次按順時(shí)針?lè)较驈膎個(gè)sd卡中讀取數(shù)據(jù),讀操作相當(dāng)于寫操作的逆過(guò)程,讀操作不再有速度的限制。最終,在總sd卡中得到按照數(shù)據(jù)最初排列順序排列的數(shù)據(jù),完成了數(shù)據(jù)的整個(gè)采集過(guò)程。
實(shí)施例4
如實(shí)施例3所述的基于sd卡的高速數(shù)據(jù)存儲(chǔ)方法,所不同的是,所述步驟b1發(fā)送的為cmd25命令;所述c1發(fā)送的為cmd18讀命令。
實(shí)施例5
如實(shí)施例1所述的基于sd卡的高速數(shù)據(jù)存儲(chǔ)方法,所不同的是,所述步驟1)中,把n個(gè)數(shù)據(jù)塊對(duì)應(yīng)寫入n個(gè)緩存段使用的指針為寫指針,寫指針唯一;所述步驟2)中,讀取緩存段中的數(shù)據(jù)使用的指針為讀指針,讀指針的個(gè)數(shù)為n個(gè);n個(gè)緩存段交替進(jìn)行數(shù)據(jù)塊寫入操作,在同一時(shí)刻,只有一個(gè)緩存段進(jìn)行數(shù)據(jù)塊寫入操作,寫指針循環(huán)地向n個(gè)緩存段中寫入數(shù)據(jù)塊;每個(gè)緩存段內(nèi)寫入512×8bit的數(shù)據(jù)后,讀指針開(kāi)始讀取緩存段中的數(shù)據(jù),讀取緩存段中數(shù)據(jù)的過(guò)程在n個(gè)緩存段內(nèi)同時(shí)進(jìn)行。即,當(dāng)?shù)谝粋€(gè)緩存段寫夠512×8bit的數(shù)據(jù)時(shí),開(kāi)始往第二個(gè)緩存段寫數(shù)據(jù),與此同時(shí),開(kāi)始讀取第一個(gè)緩存段的數(shù)據(jù),并向sd卡存儲(chǔ)。
寫指針在系統(tǒng)工作期間不間斷地將數(shù)據(jù)寫入環(huán)形緩存;讀指針的個(gè)數(shù)由系統(tǒng)的存儲(chǔ)速度和存儲(chǔ)容量決定,n個(gè)讀指針可以實(shí)現(xiàn)n倍降速。只要緩存段寫夠512×8bit的數(shù)據(jù),就可以開(kāi)始讀取數(shù)據(jù)并向sd卡存儲(chǔ),不需要等后面的緩存段寫夠512×8bit的數(shù)據(jù)。
實(shí)施例6
如實(shí)施例5所述的基于sd卡的高速數(shù)據(jù)存儲(chǔ)方法,所不同的是,把n個(gè)數(shù)據(jù)塊對(duì)應(yīng)寫入n個(gè)緩存段的時(shí)鐘與讀取緩存段中數(shù)據(jù)的時(shí)鐘速度比為n:1。為了將讀寫數(shù)據(jù)的速度相匹配,將讀寫數(shù)據(jù)的時(shí)鐘設(shè)置為n比1。
實(shí)施例7
如實(shí)施例1所述的基于sd卡的高速數(shù)據(jù)存儲(chǔ)方法,所不同的是,所述步驟1)之前還包括將輸入信號(hào)整合成8bit高速串行信號(hào)的步驟。通過(guò)此步驟將普通的輸入信號(hào)整合成一組8bit的高速串行的數(shù)字信號(hào)。在sd卡中的數(shù)據(jù)是以block(512×8bit)的形式存儲(chǔ)的,如果輸入信號(hào)是4bit的高速信號(hào),為了便于存儲(chǔ),首先要將4bit的輸入信號(hào)整合成8bit的串行信號(hào),得到一組8bit的高速串行的數(shù)字信號(hào)。
實(shí)施例8
如實(shí)施例1所述的基于sd卡的高速數(shù)據(jù)存儲(chǔ)方法,所不同的是,所述sd卡和總sd卡均為sdhc卡。假設(shè)導(dǎo)航中頻信號(hào)的頻率為200mb/s,采集數(shù)據(jù)的時(shí)長(zhǎng)是5min,則200mb/s×5min,大概需要6g的存儲(chǔ)空間;sdhc卡能滿足該方案的存儲(chǔ)要求。
實(shí)施例9
如實(shí)施例1所述的基于sd卡的高速數(shù)據(jù)存儲(chǔ)方法,所不同的是,將n個(gè)緩存段中的數(shù)據(jù)分別寫入對(duì)應(yīng)的n個(gè)sd卡的步驟中,選用4bit-sd實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)過(guò)程。
實(shí)施例10
如實(shí)施例1所述的基于sd卡的高速數(shù)據(jù)存儲(chǔ)方法,所不同的是,本發(fā)明所述基于sd卡的高速數(shù)據(jù)存儲(chǔ)方法基于fpga實(shí)現(xiàn)。
實(shí)施例11
如實(shí)施例10所述的基于sd卡的高速數(shù)據(jù)存儲(chǔ)方法,所不同的是,所述步驟2)中,讀取環(huán)形緩存段中的數(shù)據(jù),將n個(gè)緩存段中的數(shù)據(jù)分別寫入對(duì)應(yīng)的n個(gè)sd卡的具體方法為,將n個(gè)緩存段的數(shù)據(jù)讀取端口分別接到n個(gè)sd卡控制器的數(shù)據(jù)輸入端口,將n個(gè)緩存段中的數(shù)據(jù)分別寫入對(duì)應(yīng)的n個(gè)sd卡;所述的sd卡控制器通過(guò)fpga實(shí)現(xiàn)。所述的sd卡控制器相當(dāng)于用電腦讀取sd卡時(shí)的讀卡器。
實(shí)施例12
如實(shí)施例1所述的基于sd卡的高速數(shù)據(jù)存儲(chǔ)方法,所不同的是,所述步驟1)中的高速串行信號(hào)的數(shù)據(jù)碼流速度大于300mb/s。
實(shí)施例13
如實(shí)施例1所述的基于sd卡的高速數(shù)據(jù)存儲(chǔ)方法,所不同的是,所述緩存段為fifo。
經(jīng)實(shí)施例1-13驗(yàn)證,當(dāng)采用4個(gè)sd卡時(shí),數(shù)據(jù)采集系統(tǒng)的數(shù)據(jù)采集速率能達(dá)到200mb/s;當(dāng)采用6個(gè)sd卡時(shí),數(shù)據(jù)采集系統(tǒng)的數(shù)據(jù)采集速率能達(dá)到300mb/s。而傳統(tǒng)的使用sd卡的方案進(jìn)行數(shù)據(jù)時(shí),最大的數(shù)據(jù)采集速率僅為50mb/s,由此可見(jiàn),基于sd卡的高速數(shù)據(jù)存儲(chǔ)方法大大的提高了數(shù)據(jù)存儲(chǔ)速率,能很好的滿足高速數(shù)據(jù)碼流的存儲(chǔ)要求。