專利名稱:能夠降低控制器緩存資源的cf卡的快速數(shù)據(jù)讀寫控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種CF卡的數(shù)據(jù)讀寫控制方法。
背景技術(shù):
CF卡作為一種非易失的固態(tài)數(shù)據(jù)存儲裝置,在數(shù)據(jù)存儲方面有著諸多優(yōu)點(diǎn)(l) 容量大,單片容量可達(dá)32GB,理論上最大為128GB ;(2)數(shù)據(jù)傳輸速率高,在Ultra DMA 4、 Ultra DMA 5禾P Ultra DMA 6模式下,數(shù)據(jù)傳輸?shù)姆逯邓俣确謩e為66MB/s, 100MB/s和 132MB/s ; (3)體積小,CF-I型CF卡的體積為42. 8mmX36. 4mmX3. 3mm。目前,CF卡主要應(yīng) 用在高速大容量的數(shù)據(jù)存儲,如高速相機(jī)、工控領(lǐng)域等。在這些應(yīng)用中,均要求對CF卡實(shí)現(xiàn) 最高的讀/寫速率,以達(dá)到高速數(shù)據(jù)存儲的目的。 CF卡的讀/寫是以扇區(qū)為單位,l扇區(qū)包含512Bytes。外部控制器對CF卡進(jìn)行讀 寫操作時,每次申請讀寫的扇區(qū)數(shù)為1 256扇區(qū)。申請的扇區(qū)數(shù)越多,CF卡的數(shù)據(jù)總線 利用率就越高,讀寫速度也就越快。為了達(dá)到最高的數(shù)據(jù)傳輸(讀/寫)速率,外部控制器 每次申請的扇區(qū)數(shù)為256個。 外部控制器在寫CF卡時,首先要把待寫入CF卡的數(shù)據(jù)放在數(shù)據(jù)緩沖區(qū)內(nèi),等數(shù)據(jù) 緩沖區(qū)中的數(shù)據(jù)大于或等于256扇區(qū)(128kB)時,向CF卡申請寫256扇區(qū)。當(dāng)CF卡給出 允許寫信號后,外部控制器把緩沖區(qū)中的數(shù)據(jù)全部寫入CF卡中。寫完后即可進(jìn)行下一次申 請。 讀CF卡和寫CF卡類似,當(dāng)外部緩沖器的空間大于或等于128kB時,控制器向CF 卡申請讀256扇區(qū)數(shù)據(jù),當(dāng)CF卡給出允許讀信號后,控制器將256扇區(qū)數(shù)據(jù)讀到緩存區(qū)內(nèi) 做后續(xù)處理。 以FPGA控制CF卡的數(shù)據(jù)傳輸為例,CF卡寫操作的流程圖如
圖1所示,其中的數(shù) 據(jù)緩沖器用FPGA內(nèi)部的FIFO。讀CF卡的流程和寫CF卡的流程類似。當(dāng)向CF卡申請寫 256扇區(qū)時,主控制器必須為寫操作預(yù)留容量128kB(256扇區(qū))的FIFO。在讀操作時為了 達(dá)到最大的讀取速度,同樣要預(yù)留128kB的FIFO。這樣需要FPGA至少要提供256kB的存儲 資源。對于價(jià)格昂貴的高端FPGA,其內(nèi)部的存儲資源可以達(dá)到或超過256kB。但價(jià)格相對 便宜的低端FPGA,其內(nèi)部存儲資源一般在幾kBytes到幾十kBytes之間,無法達(dá)到最高讀寫 速度時所要求的256kB。減少每次向CF卡申請的扇區(qū)數(shù)會降低對存儲資源的要求,但這樣 會降低對CF卡的讀寫速度。雖然可以在低端FPGA(或其他控制器)的外部擴(kuò)展一定存儲 器,使總存儲容量大于或等于256kB,但是勢必會提高設(shè)計(jì)成本,延長設(shè)計(jì)周期,同時也會使 控制邏輯變得復(fù)雜。
發(fā)明內(nèi)容
本發(fā)明是為了解決CF卡進(jìn)行高速數(shù)據(jù)讀寫時對控制器緩存資源的要求高的問 題,從而提出一種能夠降低控制器緩存資源的CF卡的快速數(shù)據(jù)讀寫控制方法。
步驟一、外部控制器檢測數(shù)據(jù)讀寫指令;
步驟二、外部控制器判斷檢測到的數(shù)據(jù)讀寫指令是否是向CF卡寫入數(shù)據(jù)的指令,
如果判斷結(jié)果為是,則執(zhí)行步驟二二 ;否則執(zhí)行步驟二一 ; 步驟二一、外部控制器判斷檢測到的數(shù)據(jù)讀寫指令是否是讀取CF卡內(nèi)的數(shù)據(jù)的
指令,如果判斷結(jié)果為是,則執(zhí)行步驟二一一 ;如果判斷結(jié)果為否,則返回執(zhí)行步驟一 ; 步驟二一一、外部控制器向CF卡申請讀取256扇區(qū)數(shù)據(jù); 步驟二一二、初始化變量N,使N = 0 ; 步驟二一三、外部控制器讀取數(shù)據(jù)緩存器剩余空間; 步驟二一四、外部控制器判斷數(shù)據(jù)緩存器剩余空間是否大于1扇區(qū);如果判斷結(jié) 果為是,則執(zhí)行步驟二一五,如果判斷結(jié)果為否,則返回執(zhí)行步驟二一三;
是,則執(zhí)行
存器中;
驟二一九
果否,則返
否,則執(zhí)行
區(qū); 步驟二二六、判斷變量N是否大于或等于256,如果判斷結(jié)果為是,則執(zhí)行步驟 二二七;如果判斷結(jié)果為否,則執(zhí)行步驟二二二 ; 步驟二二七、外部控制器是否給出停止信號,如果是,則返回執(zhí)行步驟一;如果否, 則執(zhí)行步驟二二。 所述外部控制器為FPGA ;數(shù)據(jù)緩存器為FPGA內(nèi)部的FIF0。 結(jié)合圖l,對比現(xiàn)有CF卡的數(shù)據(jù)傳輸控制方法,說明本發(fā)明的工作原理 分析圖1中所示的CF卡寫操作控制流程,雖然每次向CF卡申請寫256扇區(qū)的數(shù)
步驟二一五、外部控制器讀取CF卡狀態(tài);
步驟二一六、判斷CF卡的狀態(tài)是否準(zhǔn)備好發(fā)送1個扇區(qū)的數(shù)據(jù);如果判斷結(jié)果為
步驟二一七;如果判斷結(jié)果為否,則返回執(zhí)行步驟二一五; 步驟二一七、使N = N+l ,外部控制器讀取CF卡的第N個扇區(qū)的數(shù)據(jù)并寫入數(shù)據(jù)緩
步驟二一八、判斷變量N的值是否大于或等于256,如果判斷結(jié)果為是,則執(zhí)行步
如果判斷結(jié)果為否,則返回執(zhí)行步驟二一三; 步驟二一九、外部控制器是否給出停止讀取信號;如果是,則返回執(zhí)行步驟一 ;如
回執(zhí)行步驟二一一; 步驟二二、外部控制器向CF卡申請寫256扇區(qū)的數(shù)據(jù); 步驟二二一、初始化變量N,使N = 0 ;
步驟二二二、外部控制器將1扇區(qū)的數(shù)據(jù)送入數(shù)據(jù)緩存器中; 步驟二二三、外部控制器讀取CF卡狀態(tài);
步驟二二四、CF卡是否準(zhǔn)備好接收1扇區(qū)數(shù)據(jù);如果是,則執(zhí)行步驟二二五;如果 步驟二二三;
步驟二二五、使N = N+l,外部控制器將數(shù)據(jù)緩存器中的數(shù)據(jù)寫入CF卡的第N個扇據(jù),當(dāng)CF卡允許外部控制器進(jìn)行寫操作后,控制器實(shí)際上每次只向CF卡寫入1扇區(qū)數(shù)據(jù), 當(dāng)寫完1扇區(qū)數(shù)據(jù)后有一段時間不向CF中寫數(shù)據(jù),在這段時間中需要判斷CF卡是否可以 接收下一扇區(qū)數(shù)據(jù)。當(dāng)CF卡可以接收下一扇區(qū)數(shù)據(jù)后,主控制器會向CF卡再次寫入l扇 區(qū)數(shù)據(jù)。如此循環(huán),直到將申請的256扇區(qū)數(shù)據(jù)全部寫完。之后控制器可繼續(xù)向CF卡申請 寫256扇區(qū)的數(shù)據(jù)。 從上述分析中可以看出,進(jìn)行每次向CF卡申請寫256扇區(qū)數(shù)據(jù),但這256扇區(qū)數(shù) 據(jù)并不是一次寫完,而實(shí)際上是分256次寫完。根據(jù)上述這個特點(diǎn),提出了改進(jìn)的CF卡讀 寫控制方法,改進(jìn)的讀寫方法如圖2所示。 在改進(jìn)的方法中,為了不影響讀寫速度,每次仍舊向CF卡申請256扇區(qū)的數(shù)據(jù)。但 每次不是等到FIFO中的數(shù)據(jù)量到256扇區(qū)時才開始寫CF卡,而是當(dāng)FIFO中的數(shù)據(jù)量到1 扇區(qū)時,就開始寫CF卡。寫完1扇區(qū)數(shù)據(jù)后,先判斷FIFO中的數(shù)據(jù)量是否再次到1扇區(qū), 當(dāng)所述數(shù)據(jù)量到達(dá)1扇區(qū)后,同樣判斷CF卡是否可接收1扇區(qū)數(shù)據(jù),然后將FIFO中的1扇 區(qū)數(shù)據(jù)寫入CF卡中。如此循環(huán),當(dāng)申請的256扇區(qū)數(shù)據(jù)全部寫入CF卡后,控制器可以向CF 卡提出下一次申請。 和傳統(tǒng)的CF卡讀寫控制方法相比,改進(jìn)的方法把對存儲資源的要求從原來的 256kB降低到lkB,很大程度上減少了對控制器存儲資源的要求,使得內(nèi)部存儲資源較少的 控制器同樣可以實(shí)現(xiàn)與CF卡之間的高速數(shù)據(jù)傳輸。
權(quán)利要求
能夠降低控制器緩存資源的CF卡的快速數(shù)據(jù)讀寫控制方法,其特征是它的具體過程為步驟一、外部控制器檢測數(shù)據(jù)讀寫指令;步驟二、外部控制器判斷檢測到的數(shù)據(jù)讀寫指令是否是向CF卡寫入數(shù)據(jù)的指令,如果判斷結(jié)果為是,則執(zhí)行步驟二二;否則執(zhí)行步驟二一;步驟二一、外部控制器判斷檢測到的數(shù)據(jù)讀寫指令是否是讀取CF卡內(nèi)的數(shù)據(jù)的指令,如果判斷結(jié)果為是,則執(zhí)行步驟二一一;如果判斷結(jié)果為否,則返回執(zhí)行步驟一;步驟二一一、外部控制器向CF卡申請讀取256扇區(qū)數(shù)據(jù);步驟二一二、初始化變量N,使N=0;步驟二一三、外部控制器讀取數(shù)據(jù)緩存器剩余空間;步驟二一四、外部控制器判斷數(shù)據(jù)緩存器剩余空間是否大于1扇區(qū);如果判斷結(jié)果為是,則執(zhí)行步驟二一五,如果判斷結(jié)果為否,則返回執(zhí)行步驟二一三;步驟二一五、外部控制器讀取CF卡狀態(tài);步驟二一六、判斷CF卡的狀態(tài)是否準(zhǔn)備好發(fā)送1個扇區(qū)的數(shù)據(jù);如果判斷結(jié)果為是,則執(zhí)行步驟二一七;如果判斷結(jié)果為否,則返回執(zhí)行步驟二一五;步驟二一七、使N=N+1,外部控制器讀取CF卡的第N個扇區(qū)的數(shù)據(jù)并寫入數(shù)據(jù)緩存器中;步驟二一八、判斷變量N的值是否大于或等于256,如果判斷結(jié)果為是,則執(zhí)行步驟二一九;如果判斷結(jié)果為否,則返回執(zhí)行步驟二一三;步驟二一九、外部控制器是否給出停止讀取信號;如果是,則返回執(zhí)行步驟一;如果否,則返回執(zhí)行步驟二一一;步驟二二、外部控制器向CF卡申請寫256扇區(qū)的數(shù)據(jù);步驟二二一、初始化變量N,使N=0;步驟二二二、外部控制器將1扇區(qū)的數(shù)據(jù)送入數(shù)據(jù)緩存器中;步驟二二三、外部控制器讀取CF卡狀態(tài);步驟二二四、CF卡是否準(zhǔn)備好接收1扇區(qū)數(shù)據(jù);如果是,則執(zhí)行步驟二二五;如果否,則執(zhí)行步驟二二三;步驟二二五、使N=N+1,外部控制器將數(shù)據(jù)緩存器中的數(shù)據(jù)寫入CF卡的第N個扇區(qū);步驟二二六、判斷變量N是否大于或等于256,如果判斷結(jié)果為是,則執(zhí)行步驟二二七;如果判斷結(jié)果為否,則執(zhí)行步驟二二二;步驟二二七、外部控制器是否給出停止信號,如果是,則返回執(zhí)行步驟一;如果否,則執(zhí)行步驟二二。
2. 根據(jù)權(quán)利要求1所述的能夠降低控制器緩存資源的CF卡的快速數(shù)據(jù)讀寫控制方法, 其特征在于外部控制器為FPGA ;數(shù)據(jù)緩存器為FPGA內(nèi)部的FIFO緩存器。
全文摘要
能夠降低控制器緩存資源的CF卡的快速數(shù)據(jù)讀寫控制方法,它涉及一種CF卡的數(shù)據(jù)讀寫控制方法。它解決了CF卡進(jìn)行高速數(shù)據(jù)讀寫時對控制器緩存資源的要求高的問題。其方法的寫操作在向CF卡申請寫256扇區(qū)數(shù)據(jù)后,每當(dāng)數(shù)據(jù)緩存器中的數(shù)據(jù)量達(dá)到1扇區(qū)時,就開始寫CF卡,直到申請到的CF卡內(nèi)的256個扇區(qū)寫滿后結(jié)束一次寫操作;本方法的讀操作在向CF卡申請讀256扇區(qū)數(shù)據(jù)后,每次從CF卡中讀取1扇區(qū)的數(shù)據(jù)存入數(shù)據(jù)緩存器,直至CF卡內(nèi)的256扇區(qū)的數(shù)據(jù)全部讀完后結(jié)束一次讀操作。本發(fā)明適用于快速數(shù)據(jù)讀寫的場合,如高速相機(jī)、工控等領(lǐng)域。
文檔編號G06F3/08GK101751235SQ200910309970
公開日2010年6月23日 申請日期2009年11月19日 優(yōu)先權(quán)日2009年11月19日
發(fā)明者喬立巖, 付寧, 吳江偉, 彭喜元, 徐紅偉, 梁軍 申請人:哈爾濱工業(yè)大學(xué)