本實(shí)用新型涉及大容量及高速率數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及一種基于FPGA可擴(kuò)展的NAND FLASH存儲(chǔ)芯片陣列控制器。
背景技術(shù):
隨著電子信息技術(shù)的飛速發(fā)展和信息產(chǎn)業(yè)對(duì)數(shù)據(jù)存儲(chǔ)要求越來越高,社會(huì)各個(gè)行業(yè)對(duì)大容量數(shù)據(jù)存儲(chǔ)系統(tǒng)的需求越來越大,推動(dòng)著大容量數(shù)據(jù)存儲(chǔ)技術(shù)向前發(fā)展。數(shù)據(jù)存儲(chǔ)技術(shù)的發(fā)展主要是由存儲(chǔ)介質(zhì)的發(fā)展和數(shù)據(jù)傳輸接口的發(fā)展兩方面構(gòu)成。上世紀(jì)九十年代記錄設(shè)備廠商開始研制大容量固態(tài)存儲(chǔ)器并投入商用,受集成度及價(jià)格的限制,如今大容量固態(tài)存儲(chǔ)器已經(jīng)很少采用SRAM芯片作為主存儲(chǔ)介質(zhì),而基于閃存技術(shù)的NAND FLASH存儲(chǔ)芯片由于其價(jià)格低、密度高以及效率高的優(yōu)勢(shì)已經(jīng)占據(jù)了主流地位。采用NAND Flash存儲(chǔ)芯片作為存儲(chǔ)介質(zhì)的固態(tài)盤,比傳統(tǒng)的存儲(chǔ)設(shè)備更能承受溫度的變化、機(jī)械的振動(dòng)和沖擊,同時(shí)具有耗電少、存儲(chǔ)密度提升快、可靠性更高的優(yōu)點(diǎn),易于實(shí)現(xiàn)高速度大容量的存儲(chǔ)。同時(shí),隨著PCIe,RapidIO和RocketIO一些高速總線的出現(xiàn),大容量存儲(chǔ)系統(tǒng)的數(shù)據(jù)存取帶寬也不斷提升。NAND FLASH存儲(chǔ)芯片結(jié)構(gòu)每比特成本低,具有更高的性能,并且能像磁盤一樣可以通過接口輕松升級(jí)。另外,NAND FLASH存儲(chǔ)芯片的存儲(chǔ)容量每年會(huì)提高三到四倍,而封裝尺寸在減少,單片讀寫速率較低,可以采用多片NAND FLASH存儲(chǔ)芯片形成陣列結(jié)構(gòu)提高數(shù)據(jù)速率和存儲(chǔ)容量。
在本實(shí)用新型發(fā)明之前,為提高數(shù)據(jù)存儲(chǔ)速率而采用比較流行的基于NAND FLASH存儲(chǔ)芯片的高速數(shù)據(jù)傳輸與存儲(chǔ)技術(shù),主要是采用了流水線存儲(chǔ)操作方式以及數(shù)據(jù)總線并行擴(kuò)展的技術(shù),其速度可達(dá)幾百M(fèi)B/S甚至可達(dá)幾GB/S,容量也可達(dá)T兆級(jí)別。
但是,NAND FLASH存儲(chǔ)芯片的控制邏輯比較復(fù)雜,對(duì)時(shí)序要求也十分嚴(yán)格,直接操作NAND FLASH存儲(chǔ)芯片難度大,因此需要設(shè)計(jì)專用的控制器來對(duì)NAND FLASH存儲(chǔ)芯片進(jìn)行基本的讀寫擦除操作。目前,對(duì)NAND FLASH存儲(chǔ)芯片的控制已經(jīng)從單通道發(fā)展到多通道了,存取速度進(jìn)一步提高,大多數(shù)多通道的讀寫都是通過增加控制器的個(gè)數(shù)來實(shí)現(xiàn)的,這種設(shè)計(jì)方法雖然也能夠并行操作多片NAND FLASH存儲(chǔ)芯片,但是會(huì)帶來比較復(fù)雜的同步問題。
技術(shù)實(shí)現(xiàn)要素:
本實(shí)用新型的目的就在于克服上述缺陷,研制一種基于FPGA可擴(kuò)展的NAND FLASH存儲(chǔ)芯片陣列控制器。
本實(shí)用新型采用的技術(shù)方案是:
一種基于FPGA可擴(kuò)展的NAND FLASH存儲(chǔ)芯片陣列控制器,其主要技術(shù)特征在于:所述的整個(gè)系統(tǒng)由主機(jī)控制模塊和NAND FLASH存儲(chǔ)芯片控制器模塊組成,并行控制多片NAND FLASH存儲(chǔ)芯片,所述NAND FLASH存儲(chǔ)芯片陣列控制器包括一個(gè)邏輯控制模塊、兩個(gè)數(shù)據(jù)緩沖區(qū)模塊、寄存器組以及接口模塊;所述NAND FLASH存儲(chǔ)芯片控制器模塊用于連接主機(jī)模塊和NAND FLASH存儲(chǔ)芯片;所述邏輯控制模塊用于產(chǎn)生和NAND FLASH存儲(chǔ)芯片相吻合的操作時(shí)序;所述兩個(gè)數(shù)據(jù)緩沖區(qū)模塊用于數(shù)據(jù)的緩存以及實(shí)現(xiàn)乒乓操作;所述寄存器組用于存放NAND FLASH存儲(chǔ)芯片的內(nèi)設(shè)命令、狀態(tài)、地址和配置參數(shù);所述主機(jī)控制模塊包括用于產(chǎn)生訪問NAND FLASH存儲(chǔ)芯片的命令和數(shù)據(jù)給控制器,連接由控制器反饋的狀態(tài)信號(hào)和數(shù)據(jù)信息;所述接口模塊用于映射為一個(gè)類似SRAM的無粘結(jié)接口。
所述主機(jī)控制模塊用于產(chǎn)生訪問NAND FLASH的命令和數(shù)據(jù)給控制器并且接收由控制器反饋的狀態(tài)信號(hào)和數(shù)據(jù)信息。
所述NAND FLASH存儲(chǔ)芯片控制器模塊用于連接主機(jī)模塊和NAND FLASH存儲(chǔ)芯片,接收主機(jī)發(fā)送的命令和數(shù)據(jù)并且并行地操控多片NAND FLASH存儲(chǔ)芯片,同時(shí)反饋狀態(tài)信號(hào)給主機(jī)。
所述邏輯控制模塊用于產(chǎn)生和NAND FLASH存儲(chǔ)芯片相吻合的操作時(shí)序,包括讀寫、擦除、讀ID以及復(fù)位操作的時(shí)序。
所述兩個(gè)數(shù)據(jù)緩沖區(qū)模塊用于數(shù)據(jù)的緩存以及實(shí)現(xiàn)乒乓操作。
所述寄存器組用于存放NAND FLASH存儲(chǔ)芯片的內(nèi)設(shè)命令、狀態(tài)、地址和配置參數(shù)。
所述接口模塊用于映射為一個(gè)類似SRAM的無粘結(jié)接口。
本實(shí)用新型的有益效果是,本實(shí)用新型基于FPGA可擴(kuò)展的NAND FLASH存儲(chǔ)芯片陣列控制器的設(shè)計(jì)由主機(jī)控制模塊產(chǎn)生訪問NAND FLASH存儲(chǔ)芯片陣列的命令和數(shù)據(jù)信息給控制器,NAND FLASH存儲(chǔ)芯片陣列控制器接收主機(jī)發(fā)送的命令和數(shù)據(jù),并且對(duì)NAND FLASH存儲(chǔ)芯片陣列做相應(yīng)的操控,同時(shí)反饋狀態(tài)信號(hào)給主機(jī)。本實(shí)用新型實(shí)現(xiàn)了單個(gè)控制器并行操作多片NAND FLASH存儲(chǔ)芯片,解決了多個(gè)控制器操作的同步問題,同時(shí)加入了流水線技術(shù)和乒乓操作,進(jìn)一步提高了數(shù)據(jù)存取速度,實(shí)現(xiàn)對(duì)NAND FLASH存儲(chǔ)芯片陣列的控制。
附圖說明
圖1——本實(shí)用新型系統(tǒng)框架示意圖。
圖2——本實(shí)用新型主狀態(tài)轉(zhuǎn)移示意圖。
圖3——本實(shí)用新型頁(yè)編程狀態(tài)轉(zhuǎn)移示意圖。
圖4——本實(shí)用新型頁(yè)讀狀態(tài)轉(zhuǎn)移示意圖。
圖5——本實(shí)用新型塊擦除狀態(tài)轉(zhuǎn)移示意圖。
圖6——本實(shí)用新型讀ID狀態(tài)轉(zhuǎn)移示意圖。
圖7——本實(shí)用新型復(fù)位狀態(tài)轉(zhuǎn)移示意圖。
具體實(shí)施方式
下面將結(jié)合本實(shí)用新型實(shí)施例中的附圖,對(duì)本實(shí)用新型實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述。
本實(shí)用新型的技術(shù)思路是:
以單個(gè)NAND FLASH存儲(chǔ)芯片控制器為核心,并行操作多片NAND FLASH存儲(chǔ)芯片,避免了多個(gè)控制器所產(chǎn)生的同步問題,同時(shí)加入了雙緩沖和流水線技術(shù),有效地提高了數(shù)據(jù)的存取速率,完成對(duì)NAND FLASH存儲(chǔ)芯片陣列的操作,實(shí)現(xiàn)了對(duì)高速大容量數(shù)據(jù)的存儲(chǔ)。
下面具體說明本實(shí)用新型。
如圖1所示,基于FPGA可擴(kuò)展的NAND FLASH存儲(chǔ)芯片陣列控制器的設(shè)計(jì)整體結(jié)構(gòu)圖,包括主機(jī)控制模塊1和NAND FLASH存儲(chǔ)芯片陣列控制器模塊2。NAND FLASH存儲(chǔ)芯片陣列控制器模塊2與NAND FLASH存儲(chǔ)芯片陣列之間的控制信號(hào)、狀態(tài)信號(hào)均擴(kuò)展為4位,數(shù)據(jù)線端口擴(kuò)展成32位,實(shí)現(xiàn)了四片NAND FLASH存儲(chǔ)芯片并行工作,由于只用了一個(gè)NAND FLASH存儲(chǔ)芯片陣列控制器,故在主機(jī)與控制器部分所有控制信號(hào)均為1位,數(shù)據(jù)線擴(kuò)展成32位。本實(shí)用新型以FPGA中的CYCLONE V作為核心控制單元,是利用Verilog HDL語(yǔ)言設(shè)計(jì)出來的。其中核心部分NAND FLASH存儲(chǔ)芯片陣列控制器模塊2是由一個(gè)邏輯控制模塊21、兩個(gè)數(shù)據(jù)緩沖區(qū)22(A和B)、寄存器組23以及標(biāo)準(zhǔn)SRAM接口模塊24組成。邏輯控制模塊21是NAND FLASH存儲(chǔ)芯片陣列控制器模塊2的關(guān)鍵,將在下面用狀態(tài)轉(zhuǎn)移圖對(duì)其進(jìn)行具體描述,兩個(gè)數(shù)據(jù)緩沖區(qū)大小都是8K個(gè)字節(jié)和32位的I/O端口,采用雙緩存技術(shù)能夠有效地提高數(shù)據(jù)傳輸速率。具體實(shí)現(xiàn)步驟:當(dāng)主機(jī)發(fā)出頁(yè)編程命令后,NAND FLASH存儲(chǔ)芯片陣列控制器模塊2將地址寄存器的最低位置“0”,表示主機(jī)向數(shù)據(jù)緩沖區(qū)A進(jìn)行編程操作,一旦8K字節(jié)的數(shù)據(jù)寫完之后,即數(shù)據(jù)緩沖區(qū)A被寫滿,NAND FLASH存儲(chǔ)芯片陣列控制器模塊2立刻進(jìn)行轉(zhuǎn)換將地址寄存器的最低位置“1”,這時(shí)主機(jī)就對(duì)數(shù)據(jù)緩沖區(qū)B進(jìn)行操作。這樣NAND FLASH存儲(chǔ)芯片就使用數(shù)據(jù)緩沖區(qū)A來進(jìn)行編程操作;當(dāng)數(shù)據(jù)緩沖區(qū)B被寫滿并且NAND FLASH存儲(chǔ)芯片完成頁(yè)編程操作后,經(jīng)過數(shù)據(jù)緩沖區(qū)的再次轉(zhuǎn)換,將數(shù)據(jù)緩沖區(qū)A再次給主機(jī)操作,NAND FLASH存儲(chǔ)芯片使用數(shù)據(jù)緩沖區(qū)B,如此反復(fù)實(shí)現(xiàn)了乒乓操作,非常適合數(shù)據(jù)流水線處理和實(shí)現(xiàn)數(shù)據(jù)的無縫緩沖,有利于提高數(shù)據(jù)的存取速率。寄存器組23包括配置寄存器、狀態(tài)寄存器、命令寄存器和地址寄存器。配置寄存器用來設(shè)置NAND FLASH存儲(chǔ)芯片的配置包括時(shí)序參數(shù)、數(shù)據(jù)位寬和頁(yè)的大小,狀態(tài)寄存器用來檢測(cè)NAND FLASH存儲(chǔ)芯片的狀態(tài),在讀操作之前或者編程操作之后檢測(cè)R/B#信號(hào),命令寄存器用來發(fā)送NNAD FLASH存儲(chǔ)芯片的操作命令,地址寄存器用來向NAND FLASH存儲(chǔ)芯片發(fā)送地址信號(hào)。
本實(shí)用新型應(yīng)用過程簡(jiǎn)要說明如下。
圖2是NAND FLASH存儲(chǔ)芯片陣列控制器系統(tǒng)的主狀態(tài)轉(zhuǎn)移圖,主要由六個(gè)狀態(tài)組成,分別是空閑狀態(tài)31,編程狀態(tài)32,讀狀態(tài)33、擦除狀態(tài)34、讀ID狀態(tài)32和復(fù)位狀態(tài)36。具體流程:在系統(tǒng)完成復(fù)位狀態(tài)36之后,主狀態(tài)將進(jìn)入空閑狀態(tài)31等待使能信號(hào)的到來從而進(jìn)入下一個(gè)狀態(tài)。當(dāng)接收到使能信號(hào)后,狀態(tài)具體的轉(zhuǎn)移是由命令碼的值(cmd_code)決定的。如果命令碼cmd_code=A1,那么狀態(tài)跳轉(zhuǎn)到編程狀態(tài)32并且執(zhí)行相應(yīng)的子狀態(tài),在該狀態(tài)完成之后發(fā)出完成標(biāo)志done信號(hào)給主狀態(tài),這時(shí)主狀態(tài)會(huì)進(jìn)入空閑狀態(tài)31并且等待下一個(gè)使能信號(hào)的到來。如果命令碼cmd_code=A2、A3、A4或者A5,流程和命令碼cmd_code=A1執(zhí)行類似。
圖3是NAND FLASH存儲(chǔ)芯片控制器的頁(yè)編程狀態(tài)轉(zhuǎn)移圖。具體流程:40表示狀態(tài)間的跳轉(zhuǎn),41表示切換編程緩沖區(qū),用來做數(shù)據(jù)的緩存,42表示主機(jī)發(fā)送一頁(yè)數(shù)據(jù)8K個(gè)字節(jié)給數(shù)據(jù)緩沖區(qū),43表示發(fā)出命令80H給NAND FLASH存儲(chǔ)芯片控制器表示開始頁(yè)編程操作,圖上44是由于NAND FLASH存儲(chǔ)芯片讀寫的最小單位是頁(yè),所以只要三個(gè)字節(jié)的地址來表示需要編程的塊地址和頁(yè)地址;之后NAND FLASH存儲(chǔ)芯片控制器需要把數(shù)據(jù)緩沖區(qū)里的數(shù)據(jù)寫到NAND FLASH存儲(chǔ)芯片的寄存器里。45表示NAND FLASH存儲(chǔ)芯片控制器發(fā)出命令字10H,46表示執(zhí)行完步驟45后,NAND FLASH存儲(chǔ)芯片將會(huì)自動(dòng)編程,47表示狀態(tài)信號(hào)R/B#將進(jìn)入低電平并且在這個(gè)過程中R/B#信號(hào)一直保持低電平。48表示在編程操作完成后,狀態(tài)信號(hào)R/B#進(jìn)入高電平。49表示通過狀態(tài)寄存器的值來檢測(cè)操作是否成功完成。
圖4是NAND FLASH存儲(chǔ)芯片控制器的讀頁(yè)狀態(tài)轉(zhuǎn)移圖。具體流程:
51表示NAND FLASH存儲(chǔ)芯片控制器進(jìn)入讀頁(yè)進(jìn)程,52表示主機(jī)發(fā)送命令字OOH給NAND FLASH存儲(chǔ)芯片控制器開始讀頁(yè)操作,53表示主機(jī)向NAND FLASH存儲(chǔ)芯片控制器發(fā)出三個(gè)字節(jié)的地址,54表示主機(jī)向NAND FLASH存儲(chǔ)芯片控制器發(fā)送命令字30H,隨后NAND FLASH存儲(chǔ)芯片控制器進(jìn)行內(nèi)部處理,并且進(jìn)入步驟55,即狀態(tài)信號(hào)R/B#變?yōu)榈碗娖?,在此過程中NAND FLASH存儲(chǔ)芯片控制器從NAND FLASH存儲(chǔ)芯片中將一頁(yè)數(shù)據(jù)加載到數(shù)據(jù)緩沖區(qū)里,一旦狀態(tài)信號(hào)R/B#變?yōu)楦唠娖街蠹床襟E56,表明控制器已經(jīng)將整頁(yè)數(shù)據(jù)全部讀進(jìn)數(shù)據(jù)緩沖區(qū)里,57表示緩存去區(qū)里的數(shù)據(jù)可以被主機(jī)取走,58表示等待所有數(shù)據(jù)被主機(jī)讀完,59表示狀態(tài)間的跳轉(zhuǎn)。
圖5是NAND FLASH存儲(chǔ)芯片控制器的塊擦除狀態(tài)轉(zhuǎn)移圖。對(duì)于NAND FLASH存儲(chǔ)芯片來說,在寫入數(shù)據(jù)之前必須進(jìn)行塊擦除操作。具體流程:首先,61表示NAND FLASH存儲(chǔ)芯片控制器接收到主機(jī)發(fā)送的命令字60H,表示開始對(duì)NAND FLASH存儲(chǔ)芯片進(jìn)行塊擦除操作。62表示主機(jī)發(fā)出三個(gè)字節(jié)的地址來決定具體待擦除的塊,之后執(zhí)行步驟63,表示NAND FLASH存儲(chǔ)芯片控制器內(nèi)部發(fā)出命令字DOH,即真正的擦除操作開始,隨后進(jìn)入步驟64,狀態(tài)信號(hào)R/B#變?yōu)榈碗娖?,表明塊擦除操作正在進(jìn)行中,65表示狀態(tài)信號(hào)R/B#變?yōu)楦唠娖?,說明擦除操作完成,66表示狀態(tài)間的跳轉(zhuǎn)。
圖6是NAND FLASH存儲(chǔ)芯片控制器的讀ID狀態(tài)轉(zhuǎn)移圖。具體流程:71表示主機(jī)向NAND FLASH存儲(chǔ)芯片控制器發(fā)送命令字90H,即開始進(jìn)行讀ID操作,72表示主機(jī)向NAND FLASH存儲(chǔ)芯片控制器寫入待讀取ID的地址,隨后執(zhí)行步驟73,表示讀出4個(gè)字節(jié)的數(shù)據(jù)即為NAND FLASH存儲(chǔ)芯片的標(biāo)識(shí)信息,74表示狀態(tài)間的跳轉(zhuǎn)。
圖7是NAND FLASH存儲(chǔ)芯片控制器的復(fù)位狀態(tài)轉(zhuǎn)移圖。具體流程:81表示當(dāng)NAND FLASH存儲(chǔ)芯片控制器接收到主機(jī)發(fā)送的命令字FOH后要開始進(jìn)行復(fù)位操作,隨后NAND FLASH存儲(chǔ)芯片控制器內(nèi)部發(fā)出命令字FFH給NAND FLASH存儲(chǔ)芯片,82表示在執(zhí)行完步驟81后,狀態(tài)信號(hào)R/B#進(jìn)入低電平,表明復(fù)位操作正在進(jìn)行,83表示等到狀態(tài)信號(hào)R/B#變?yōu)楦唠娖街?,說明操作完成。