閆夢(mèng)婷,安軍社,江源源
(1.中國(guó)科學(xué)院空間科學(xué)與應(yīng)用研究中心 北京100190;2.中國(guó)科學(xué)院大學(xué) 北京100190)
實(shí)現(xiàn)流水存儲(chǔ)及壞塊處理的Flash控制器設(shè)計(jì)
閆夢(mèng)婷1,2,安軍社1,江源源1
(1.中國(guó)科學(xué)院空間科學(xué)與應(yīng)用研究中心 北京100190;2.中國(guó)科學(xué)院大學(xué) 北京100190)
實(shí)現(xiàn)了一種適用于航天設(shè)備的大容量存儲(chǔ)方案。給出一個(gè)基于FPGA實(shí)現(xiàn)的Flash控制器設(shè)計(jì),該控制器可以完成航天應(yīng)用的大容量數(shù)據(jù)存取工作。其中存儲(chǔ)操作中設(shè)計(jì)了流水編程機(jī)制,實(shí)現(xiàn)了疊裝芯片內(nèi)部的流水編程操作,大幅度提高系統(tǒng)的整體存儲(chǔ)速率,實(shí)現(xiàn)了高速存儲(chǔ)的目的。同時(shí),提出了一種完備的壞塊處理機(jī)制,可以屏蔽對(duì)已知壞塊的使用,并且在新的壞塊產(chǎn)生時(shí)確保存取操作正常執(zhí)行,使得大容量存儲(chǔ)系統(tǒng)的存儲(chǔ)數(shù)據(jù)無(wú)誤差、無(wú)丟失,讀出正常有序的數(shù)據(jù)。經(jīng)板級(jí)驗(yàn)證,該方案的整體可以實(shí)現(xiàn)的最高存儲(chǔ)速率可達(dá)100 Mbps,壞塊處理機(jī)制可保證數(shù)據(jù)的正確性、完整性和連續(xù)性。
大容量;固態(tài)存儲(chǔ);NAND Flash控制器;壞塊處理;流水存儲(chǔ);FPGA應(yīng)用
隨著航天領(lǐng)域?qū)虘B(tài)存儲(chǔ)器(Solid State Recorder)研制工作的不斷發(fā)展,NAND Flash以其高密度、大容量、高數(shù)據(jù)存儲(chǔ)速率以及更多的擦除次數(shù)等特點(diǎn)得到了大量的使用,逐步開始成為存儲(chǔ)介質(zhì)的主流選擇。但是,NAND Flash由于其制造工藝和航天器的特殊使用環(huán)境等因素,會(huì)在存在壞塊,并在使用過(guò)程中產(chǎn)生新的壞塊,對(duì)壞塊的處理是NAND Flash實(shí)際應(yīng)用中必須要解決的問(wèn)題。大量的Flash使用實(shí)例中已經(jīng)出現(xiàn)了常見的壞塊處理方法,主要是在使用前建立壞塊信息表,根據(jù)壞塊信息表來(lái)檢索出可以使用的有效塊,避免對(duì)壞塊進(jìn)行誤操作。根據(jù)壞塊信息表存儲(chǔ)的方式可以分為兩類:1)建立存儲(chǔ)區(qū),將有效塊的地址存儲(chǔ)在存儲(chǔ)區(qū)內(nèi),每次將有效塊地址從存儲(chǔ)器中取出后進(jìn)行使用。2)建立與Flash塊地址空間大小一致的狀態(tài)寄存區(qū),在狀態(tài)寄存區(qū)里對(duì)應(yīng)的位標(biāo)記出對(duì)應(yīng)的Flash塊地址是否為有效塊,提取塊地址時(shí),對(duì)狀態(tài)寄存區(qū)里的標(biāo)記進(jìn)行判斷。這兩種方法的存儲(chǔ)區(qū)域可以使用實(shí)現(xiàn)Flash控制器的FPGA建立片內(nèi)RAM來(lái)實(shí)現(xiàn),也可以使用Flash的某一塊的指定的頁(yè)空間來(lái)作為存儲(chǔ)區(qū)域。后者可以節(jié)約FPGA使用資源,但讀取以及修改壞塊信息的時(shí)間周期過(guò)長(zhǎng),不易于高速系統(tǒng)選用[1]。另外,還有基于FAT文件系統(tǒng)處理壞塊方法,該方法在文件系統(tǒng)層解決壞塊問(wèn)題,對(duì)軟件、操作等存在一定難度,以硬件系統(tǒng)作為主要實(shí)現(xiàn)平臺(tái)的系統(tǒng)一般不選用該方法[2]。
但是,上述常用的壞塊處理方法只是以塊為單位進(jìn)行壞塊處理,檢測(cè)已存在的壞塊情況,并避免已確定的使用壞塊,沒有提出當(dāng)壞塊產(chǎn)生時(shí)保證數(shù)據(jù)完整的處理機(jī)制。因此,文中介紹了該Flash控制器實(shí)現(xiàn)的一種壞塊處理機(jī)制,在實(shí)現(xiàn)了高速流水存儲(chǔ)方式的基礎(chǔ)上,能夠保證數(shù)據(jù)完整性,提高了整個(gè)固態(tài)存儲(chǔ)器的性能,滿足實(shí)際應(yīng)用的高速存儲(chǔ)、無(wú)數(shù)據(jù)丟失的要求。
本設(shè)計(jì)中的NAND Flash控制器內(nèi)部分為初始化、擦除、編程、讀取、標(biāo)記以及主控制器6個(gè)模塊[3]。如圖1所示,系統(tǒng)上電后自動(dòng)進(jìn)入初始化模塊,F(xiàn)lash廠家將初始?jí)膲K信息存放在每一塊首頁(yè)的第2 048和2 049字節(jié),初始化模塊的任務(wù)是讀取所有的Flash塊的壞塊標(biāo)記字節(jié)以及Spare區(qū)域的用戶使用信息,生成完備的塊信息表,后續(xù)存儲(chǔ)系統(tǒng)的全部工作都將根據(jù)塊信息表提供的信息來(lái)執(zhí)行。本設(shè)計(jì)為達(dá)到存儲(chǔ)系統(tǒng)對(duì)高速率的要求,必須減少讀取塊信息表所需的時(shí)鐘周期,因此選擇在FPGA建立RAM區(qū)用來(lái)存放壞塊信息表。
圖1 控制器主要工作流程圖
編程和讀取操作的基本單位為頁(yè),每次編程讀取操作可以一次性存儲(chǔ)、讀取一頁(yè)容量的數(shù)據(jù)[3]。編程操作模塊中,為了提高存儲(chǔ)系統(tǒng)的整體編程速率,利用了流水操作的方法對(duì)編程操作進(jìn)行了改進(jìn),并且嵌入了完備的壞塊處理機(jī)制用于處理編程操作中產(chǎn)生壞塊的數(shù)據(jù)丟失問(wèn)題,編程模塊將在下文詳述。讀取模塊會(huì)在接收到讀取指令后,按照順序從Flash中將數(shù)據(jù)讀出發(fā)送給接收器件。Flash存儲(chǔ)單元在執(zhí)行數(shù)據(jù)寫入之前需要進(jìn)行擦除操作,擦除模塊完成以塊為單位的擦除操作,擦除操作執(zhí)行時(shí)也會(huì)產(chǎn)生新的壞塊,此時(shí)需要啟用標(biāo)記模塊對(duì)壞塊進(jìn)行標(biāo)記。每次執(zhí)行擦除操作實(shí)際上是將把整塊Flash的全部字節(jié)單元恢復(fù)為“FF”,即把所有的位全部恢復(fù)為“1”。編程操作則是將字節(jié)單元中相應(yīng)的位從“1”置為“0”,以此將每個(gè)字節(jié)編程為相應(yīng)的十六進(jìn)制數(shù)。而壞塊的常見情況是無(wú)法將字節(jié)單元里的‘1'值置為‘0',或者無(wú)法將“0”的位恢復(fù)為“1”,因此對(duì)壞塊進(jìn)行編程操作,將導(dǎo)致存入數(shù)據(jù)與實(shí)際編程成功的數(shù)據(jù)不一致,讀出錯(cuò)誤數(shù)據(jù),故而對(duì)Flash的使用要避免使用壞塊。
初始化模塊的作用是檢索Flash所有塊的第0頁(yè)的第2 048、2 049單元,判斷該塊是否為壞塊,以及讀取本設(shè)計(jì)使用的Spare區(qū)信息存儲(chǔ)單元里的使用信息,并在FPGA中開辟空間作為塊信息表的存儲(chǔ)區(qū)。本設(shè)計(jì)為了保證Flash控制器的正常運(yùn)作,將為每一個(gè)塊建立5個(gè)字節(jié)的塊信息,存儲(chǔ)完備的塊信息表以供后續(xù)操作使用。其中,物理塊地址表示該塊在Flash單片芯片中的實(shí)際物理地址,需要用物理地址對(duì)Flash的操作進(jìn)行尋址。塊類型是將在使用過(guò)程中可能出現(xiàn)的八種塊進(jìn)行了分類標(biāo)記,8種塊類型圖2中所示,分別是:未寫塊、正常寫滿塊、正常寫未寫滿塊、頁(yè)寫失敗塊、替代寫滿塊、替代未寫滿塊、替代頁(yè)寫失敗塊以及初始?jí)膲K。邏輯塊地址,表示該塊在該次數(shù)據(jù)存儲(chǔ)操作中的實(shí)際使用的塊計(jì)數(shù)。數(shù)據(jù)的讀取操作將根據(jù)邏輯塊地址來(lái)進(jìn)行,以此保證數(shù)據(jù)的連續(xù)性。尾頁(yè)地址是該塊最后一個(gè)存儲(chǔ)數(shù)據(jù)的頁(yè)的地址,數(shù)據(jù)讀取時(shí)將根據(jù)尾頁(yè)地址進(jìn)行讀取,對(duì)該塊的尾頁(yè)地址之后的頁(yè)將不進(jìn)行讀取操作。
圖2 塊信息及塊分類示意圖
初始化的重要性在于,檢索Spare區(qū)域的使用信息建立起來(lái)的塊信息表記錄了Flash芯片所有的信息,對(duì)Flash的全部使用都將根據(jù)塊信息表來(lái)進(jìn)行。編程操作所需的地址將根據(jù)塊信息表判斷一個(gè)物理地址所指向的塊是否為有效塊,是否可以執(zhí)行正常的編程操作;讀取操作根據(jù)塊信息表的邏輯塊地址和尾頁(yè)地址來(lái)檢索出需要進(jìn)行讀取操作的塊和頁(yè),并且以此來(lái)調(diào)整數(shù)據(jù)讀取的順序,保證數(shù)據(jù)的連續(xù)性。擦除操作也將根據(jù)塊信息表來(lái)決定是否要對(duì)該物理地址塊進(jìn)行擦除操作,F(xiàn)lash需要避免對(duì)其壞塊進(jìn)行擦除操作,一旦對(duì)壞塊執(zhí)行擦除操作,會(huì)將壞塊的第0頁(yè)的2 048和2 049字節(jié)的壞塊標(biāo)記信息恢復(fù)為 “FF”,將壞塊誤標(biāo)記為可操作的有效塊,在后續(xù)的使用中造成錯(cuò)誤操作等現(xiàn)象。一旦在使用過(guò)程中產(chǎn)生了新的壞塊,需要立即修改塊信息表中的對(duì)應(yīng)塊信息,以保證后續(xù)操作的正確性。
3.1流水編程機(jī)制
根據(jù)Flash的工作要求,當(dāng)需要對(duì)某一片F(xiàn)lash某一頁(yè)進(jìn)行編程操作時(shí),需要向Flash芯片的操作如下:1)發(fā)送起始指令和地址,2)發(fā)送2 048字節(jié)數(shù)據(jù)和Spare區(qū)的若干字節(jié)使用信息,3)發(fā)送結(jié)束指令。實(shí)際上,每一片F(xiàn)lash都有一個(gè)數(shù)據(jù)緩存區(qū)可以用于緩存一頁(yè)最大容量的數(shù)據(jù),當(dāng)接收到結(jié)束指令后,F(xiàn)lash會(huì)將緩存區(qū)的數(shù)據(jù)按順序固化到當(dāng)前物理地址指向的頁(yè)中。根據(jù)Flash廠家提供的數(shù)據(jù),可以得出以下數(shù)據(jù):1)從緩存區(qū)固化到頁(yè)所需時(shí)間區(qū)間為[300~700]μs。2)如果系統(tǒng)時(shí)鐘選用16 MHz的時(shí)鐘,完成一頁(yè)數(shù)據(jù)編程操作的所需時(shí)間區(qū)間為[430~800]μs。此外還需要讀取反饋狀態(tài)的時(shí)間,無(wú)法保證在實(shí)際使用中編程操作的整體速率達(dá)到100 Mbps的要求,因此本設(shè)計(jì)提出流水編程機(jī)制。
本設(shè)計(jì)利用8片F(xiàn)lash單片疊裝的特點(diǎn),采取流水方式進(jìn)行編程操作,每次對(duì)8個(gè)單片F(xiàn)lash的同一邏輯塊地址的同一頁(yè)進(jìn)行編程操作,并將此稱為一個(gè)流水級(jí)。CE0~CE7為8個(gè)單片F(xiàn)lash對(duì)應(yīng)的片選使能信號(hào),CE0為低電平時(shí),IO口以及其他共用的信號(hào)對(duì)應(yīng)操作第0片F(xiàn)lash,同樣的,其他CE信號(hào)使能時(shí)各個(gè)共用信號(hào)口對(duì)應(yīng)相應(yīng)的單片F(xiàn)lash。為了敘述簡(jiǎn)便,我們將8片F(xiàn)lash單片分別定義為CE0~CE7。流水編程的具體實(shí)現(xiàn)步驟為:1)依次對(duì)CE0到CE7加載數(shù)據(jù),CE0加載完成后,立即對(duì)CE1進(jìn)行加載,直到CE7加載完成,使各個(gè)單片F(xiàn)lash的固化時(shí)間得到復(fù)用。2)一個(gè)流水級(jí)的加載工作全部完成之后,進(jìn)行檢查工作。依次檢查CE0到CE7的RB信號(hào),當(dāng)RB信號(hào)為高時(shí),意味著該單片F(xiàn)lash已經(jīng)完成之前操作處于空閑狀態(tài),此時(shí)才可以對(duì)Flash發(fā)送70 h指令去讀取編程操作狀態(tài)。如果RB信號(hào)為低,則表示該片F(xiàn)lash的固化工作仍未完成,則等待RB變低后再進(jìn)行狀態(tài)讀取。
具體流程如圖3所示。實(shí)際上,當(dāng)CE7開始自主固化編程時(shí),距離CE0開始固化已經(jīng)過(guò)去的時(shí)間為910 μs(130 μs*7),即使出現(xiàn)最長(zhǎng)固化編程時(shí)間的情況,也完全可以確保CE0已經(jīng)完成了固化工作。若Flash的固化操作都以典型值固化成功,則計(jì)算出當(dāng)CE7開始固化數(shù)據(jù)時(shí),RB0到RB3都已經(jīng)變成高電平表示CE0到CE3都已經(jīng)完成了固化工作,檢查前4片F(xiàn)lash編程操作是否成功的操作可以依次立即執(zhí)行,而CE4 到CE7則仍需要等待一段時(shí)間,直到相應(yīng)的RB信號(hào)變?yōu)楦唠娖讲拍軋?zhí)行狀態(tài)判斷的操作。如圖3所示,固化時(shí)間得到了復(fù)用,利用流水編程機(jī)制,可以大幅提高整體存儲(chǔ)速率。如果8個(gè)Flash單片的頁(yè)編程操作都成功,則稱這一級(jí)流水編程成功;若有某一個(gè)Flash單片的頁(yè)編程操作失敗則稱該流水級(jí)編程失敗,開始調(diào)用壞塊替代機(jī)制。
3.2壞塊替代機(jī)制
Flash在使用過(guò)程中有可能會(huì)產(chǎn)生新的壞塊,編程操作和擦除操作都會(huì)導(dǎo)致壞塊產(chǎn)生,其中擦除操作產(chǎn)生的壞塊只需要對(duì)該壞塊進(jìn)行標(biāo)記,并及時(shí)更新塊信息表即可,因此本設(shè)計(jì)的控制器將擦除產(chǎn)生的壞塊處理操作設(shè)計(jì)在擦除模塊中。但是編程操作產(chǎn)生的壞塊涉及到數(shù)據(jù)的完整性,在一級(jí)流水編程操作完成后,對(duì)某一頁(yè)發(fā)送狀態(tài)檢測(cè)指令檢測(cè)到編程失敗,表示當(dāng)前頁(yè)的數(shù)據(jù)沒有正常寫入Flash,我們稱該頁(yè)為編程失敗頁(yè)。當(dāng)出現(xiàn)編程失敗頁(yè)的時(shí)候,無(wú)法確保該頁(yè)的數(shù)據(jù)編程完成,不能作為有效數(shù)據(jù)頁(yè)供后續(xù)的讀取操作直接訪問(wèn),即加載到該頁(yè)的2 048字節(jié)的數(shù)據(jù)因頁(yè)編程失敗而丟失。編程失敗頁(yè)所在的塊就是新產(chǎn)生的壞塊,該頁(yè)物理地址之后的頁(yè)也不能再執(zhí)行編程操作。為了保證已寫入的數(shù)據(jù)正常讀出,編程失敗頁(yè)的數(shù)據(jù)不丟失,同時(shí)實(shí)現(xiàn)讀取數(shù)據(jù)的連續(xù)性和完整性,需要做更多復(fù)雜的處理,針對(duì)Flash工作特點(diǎn)和本設(shè)計(jì)的流水編程機(jī)制,下面介紹本設(shè)計(jì)采用的壞塊處理機(jī)制。
壞塊處理機(jī)制涉及到數(shù)據(jù)備份、Flash編程操作地址以及數(shù)據(jù)讀取順序3個(gè)方面,下面將對(duì)這3方面進(jìn)行詳述。為了保證在任何一次壞塊產(chǎn)生時(shí)都不丟失數(shù)據(jù),則需要進(jìn)行數(shù)據(jù)備份,即在FPGA實(shí)現(xiàn)的控制器內(nèi)部例化出一級(jí)流水?dāng)?shù)據(jù)量的存儲(chǔ)空間用于數(shù)據(jù)備份,這8個(gè)2 048字節(jié)的SRAM地址空間由CE0~CE7信號(hào)組合進(jìn)行片選。當(dāng)執(zhí)行某一級(jí)流水級(jí)的數(shù)據(jù)寫入工作時(shí),同時(shí)將2 048字節(jié)的數(shù)據(jù)寫入到對(duì)應(yīng)的數(shù)據(jù)備份存儲(chǔ)空間中,一旦檢測(cè)到頁(yè)編程失敗,立即在替代塊中的同一頁(yè)地址作為替代頁(yè)的物理地址,將發(fā)生頁(yè)編程失敗的第n片F(xiàn)lash對(duì)應(yīng)的數(shù)據(jù)備份空間里的數(shù)據(jù)寫入到替代塊的替代頁(yè)中。
圖4 壞塊產(chǎn)生存儲(chǔ)示意圖
8片疊裝式的芯片在編程操作時(shí)執(zhí)行并行拓展式操作。一旦編程操作中產(chǎn)生了新的壞塊,要從緩存的地址中提取新的可以使用的替代塊,對(duì)替代塊標(biāo)記的仍然是當(dāng)前使用的邏輯塊地址。讀取數(shù)據(jù)時(shí),根據(jù)初始化信息表中的塊類型,當(dāng)開始讀取的一個(gè)流水級(jí)的邏輯塊含有壞塊時(shí),正常讀取壞塊中的已寫成功的頁(yè)中的數(shù)據(jù),當(dāng)讀取完已寫尾頁(yè)地址指向的頁(yè),下一輪將開始讀取緊接著壞塊地址的替代塊的替代頁(yè)中的數(shù)據(jù),未發(fā)生壞塊的其他塊按正常讀取進(jìn)行操作。如圖4所示,為方便說(shuō)明,將一頁(yè)的2 048字節(jié)數(shù)據(jù)作為一個(gè)包來(lái)表示,物理塊地址n之前都未發(fā)生頁(yè)編程失敗,直到物理塊地址n的CE3單片F(xiàn)lash的第n頁(yè)發(fā)生了頁(yè)編程失敗,于是將第n+3包數(shù)據(jù)再次編程到替代塊中,可見替代塊的物理塊地址為n+1(假設(shè)該塊為有效塊),邏輯塊地址仍為n,并且后續(xù)的編程操作將用替代塊代替壞塊繼續(xù)進(jìn)行,這樣設(shè)計(jì)可以保證數(shù)據(jù)的連續(xù)性和完整性。
為了便于觀察,圖5給出了一個(gè)流水級(jí)編程的仿真波形,并且模擬了檢測(cè)出壞塊后的替代編程的波形。如圖5所示,CE從“00000001”開始選中第一片F(xiàn)lash,對(duì)某個(gè)地址進(jìn)行頁(yè)編程工作,完成之后CE變?yōu)椤?0000010”,開始對(duì)第二片F(xiàn)lash進(jìn)行頁(yè)編程,直到最后一片F(xiàn)lash頁(yè)編程完成,開始發(fā)送檢測(cè)指令。測(cè)試平臺(tái)將第二片設(shè)定為編程失敗頁(yè),圖5中可以看出,檢測(cè)到第二片的頁(yè)編程失敗后,error_w信號(hào)變?yōu)楦?,并?duì)下一個(gè)可用塊該頁(yè)地址進(jìn)行替代編程,可以看出替代編程的數(shù)據(jù)仍是之前頁(yè)編程的數(shù)據(jù)。
圖5 壞塊處理機(jī)制仿真波形
通過(guò)包含CPU和數(shù)據(jù)源等配合的板級(jí)測(cè)試,在頻率為16 MHz的系統(tǒng)時(shí)鐘下,驗(yàn)證本設(shè)計(jì)的數(shù)據(jù)存儲(chǔ)速率最高可達(dá)100 Mbps,數(shù)據(jù)讀取速率最大達(dá)到13 Mbps,產(chǎn)生壞塊時(shí)能夠執(zhí)行替代機(jī)制保證數(shù)據(jù)的完整性和連續(xù)性,已成功在某航天型號(hào)任務(wù)中的作為大容量數(shù)據(jù)存儲(chǔ)器使用。
文中在常用的壞塊處理機(jī)制的基礎(chǔ)上,提出了恢復(fù)數(shù)據(jù)精確到頁(yè)的壞塊處理機(jī)制,并且利用流水操作機(jī)制,大幅提高了Flash的寫入速率,利用邏輯塊計(jì)數(shù)索引讀取操作的頁(yè),以此保證了數(shù)據(jù)的連續(xù)性。流水編程機(jī)制和壞塊替代機(jī)制的提出和使用,使得本設(shè)計(jì)的Flash控制器成功滿足某航天型號(hào)任務(wù)的實(shí)際使用需求,并且對(duì)Flash的實(shí)際使用中性能的改善,提供了參考機(jī)制。
[1]張勝勇,高世杰.基于FPGA的NAND Flash壞塊處理方法[J].計(jì)算機(jī)工程,2010,36(6):239-243.
[2]王立峰,胡善清.基于閃存的高速海量存儲(chǔ)模塊設(shè)計(jì)[J].計(jì)算機(jī)工程.2011,37(7):255-257.
[3]NAND Flash Applications Design Guide.[EB/OL].(2004-05-19).[2013-10-21].http://pdf1.alldatasheet.com/datasheet-pdf/ view/85039/SAMSUNG/K9W4G08U1M.html.
[4]Takeuchi K.Novel co-design of NAND Flash memory and high-speed solid-state drives[J].VLSI circuit,2009,44(4): 1224-1227.
[5]Nguyen Q,Yuknis W,Pursley S,et al.A high performance command and data handling system for NASA's Lunar Reconnaissance Orbiter[C].//AIAA Space 2008 Conference& Exposition.Washington:AIAA 2008.
[6]Shibata N,Maejima H,Isobe K,et al.70nm 16Gb 16-Level-Cell NAND Flash Memory[J].IEEE Journal of Solid-State Circuits,2008,43(4):929-937.
[7]Takeuchi K.Novel co-design of NAND Flash memory and high-speed solid-state drives[J].VLSI circuit,2009,44(4): 1224-1227.
[8]邢開宇,曹曉曼,方火能.基于FPGA和NAND FLASH的存儲(chǔ)器ECC設(shè)計(jì)與實(shí)現(xiàn)[J].電子科技,2012,25(10):69-73.
[9]潘立陽(yáng),朱鈞 .FLASH存儲(chǔ)器技術(shù)與發(fā)展[J].微電子學(xué). 2002,32(1):1-6.
[10]Virtex-5 FPGA Configuration User Guide[EB/OL].(2012-10-19)[2013-10-21]http://www.xilinx.com/support/ documentation/user_guides/ug191.pdf.
Design of a NAND Flash controller with high-speed pipelining program and invalid block handle method
YAN Meng-ting1,2,AN Jun-she1,JIANG Yuan-yuan1
(1.Center for Space science and Applied Research Chinese Academy of Science,Beijing 100190,China;2.University of Chinese Academy Sciences,Beijing 100190,China)
A design about Solid State Recorder used in aerospace field is presented.A Flash controller based on FPGA is designed.The controller can finish regular recording work in aerospace field.In storage operation,a pipelining-programming method is presented.It is operated inside of the chip to improve the overall system storage speed,and it can achieve a highspeed storage purpose.A complete bad block handling mechanism is presented.It can shield using known bad blocks.And it ensures storage operation is executed and the data is correct and complete when new bad blocks occur.The result show that the maximum storage rate of the program can achieve up to 100 Mbps.The bad block handling mechanism can ensure accuracy,completeness and continuity of data.
large capacity;solid state recorder;NAND flash controller;invalid block handle;pipelining program;FPGA application
TN431
A
1674-6236(2016)16-0050-04
2015-08-21稿件編號(hào):201508117
閆夢(mèng)婷(1989—),女,廣西桂林人,博士研究生。研究方向:星載高速總線的系統(tǒng)架構(gòu)研究及性能分析,高性能星載存儲(chǔ)系統(tǒng)。