本發明涉及NAND Flash控制器領域,特別涉及一種NAND Flash控制器的控制方法和裝置。
背景技術:
隨著電子信息社會的飛速發展,數據存儲需求量呈現出爆炸式的增長,非易失性存儲器NAND Flash閃存具有高容量、高密度、高性能等特點,因此應用愈來愈廣泛。要完成對NAND Flash閃存顆粒的正確讀、寫、擦除操作,需要硬件控制器按照時序接口和操作命令對存儲器進行操作。
不同NAND Flash顆粒廠商的接口不同,為了統一NAND Flash接口,國際上將其統一為兩種類型的接口,一種為ONFI接口,另一種為Toggle接口。每種接口類型又有ONFI2.x和ONFI3.x以及ONFI4.x,Toggle1.0、Toggle2.0不同版本。對這些不同版本接口類型的NAND顆粒都能完成讀取、編程、擦除等操作,NAND Flash控制器需要包含所有接口時序控制,才能保證訪問不同廠商不同版本接口類型的NAND存儲器顆粒。
由于對NAND Flash顆粒的操作包括編程、讀取、擦除操作,且不同接口協議下操作時序不同。因此對NAND Flash的控制需要包含所有各種類型的編程、讀取、擦除時序,且在不同的NAND Flash顆粒廠商(鎂光、三星、東芝、海力士...)之間,對于相同的訪問操作也會有不同的訪問流程。NAND Flash需要完全覆蓋所有的不同類型顆粒的讀、寫、擦除操作及不同操作時序不同的產生,所以還需要添加許多額外的邏輯控制電路完成。如圖3所示,不同的接口且每種接口對應的編程、讀取、擦除操作時序不同,都需要在控制器中增加控制電路完成相應地時序控制。
為了滿足上述所述的各種接口類型的不同NAND Flash顆粒操作,且需要滿足不同顆粒廠商的不同接口操作。按照現有的技術,根據不同的操作時序需要增加控制邏輯電路,且不同廠商不同類型的控制又需要增加額外的硬件邏輯電路,則導致硬件電路非常復雜,且隨著NAND Flash顆粒時序的更新,控制器就需要重新定義邏輯電路滿足更新的顆粒時序,硬件成本非常高且可移植性非常差。
隨著NAND Flash顆粒的不斷發展及功能時序的不斷增加,使得這類控制器對硬件電路的復雜度越來越高,邏輯開銷也很大,不利于維護與移植。這些缺點大大增加了NAND Flash控制器芯片產品的研發時間和成本。
技術實現要素:
本發明所要解決的技術問題是提供一種NAND Flash控制器的控制方法和裝置,使得NAND Flash控制器能夠滿足現有的各種廠商的各種類型的NAND Flash接口顆粒,并完成不同接口類型(異步、ONFI或者Toggle)NAND Flash存儲器顆粒地正確讀取、編程、擦除操作,也能靈活地適應未來NAND Flash顆粒發展出現的新的時序特征。
為解決上述技術問題,本發明采用的技術方案是:
一種NAND Flash控制器的控制方法,包括以下步驟:
步驟1:定義一系列功能寄存器組,用于操作NAND Flash顆粒接口;所述寄存器組包括通過ARM CPU定義NAND Flash控制器中操作NAND Flash顆粒的具體時序接口;
步驟2:解析步驟1中的寄存器組,得到相應操作執行指令、訪問NAND Flash顆粒操作時序控制;
步驟3:將解析后的執行指令送至物理實現層,物理實現層實施具體的執行指令,包括組合不同類型接口的不同操作的時序組,執行所述步驟2中的執行指令,驅動NAND flash接口,控制NAND Flash顆粒。
進一步的,所述寄存器組還包括:
選擇NAND Flash訪問接口是異步、ONFI還是Toggle類型,以及不同類型的不同版本的選擇;
定義NAND Flash控制器中ECC模塊對NAND Flash閃存顆粒操作時糾錯能力的配置;
定義編程數據寄存器接口,用于提供NAND Flash控制器向NAND Flash顆粒所要編程的數據;
定義NAND Flash控制器操作NAND Flash顆粒的具體時序指令,包括CE使能哪一顆NAND Flash存儲顆粒定義、CLE訪問命令定義、ALE訪問NAND Flash顆粒地址定義、WE寫顆粒時序定義、RE讀顆粒時序定義以及ONFI和Toggle類型驅動數據讀寫采樣的DQS信號定義。
一種NAND Flash控制器的控制裝置,包括依次相連的定義層模塊、解析層模塊、物理實現層模塊、NAND Flash接口模塊,所有模塊均采用全數字邏輯電路實現;
所述定義層模塊:用于定義NAND Flash控制器操作NAND Flash顆粒的具體時序指令,配置NAND Flash接口寄存器、ECC糾錯能力寄存器、通道數寄存器、等待時間寄存器、編程數據寄存器、CE寄存器、CLE寄存器、ALE寄存器、WE寄存器、RE寄存器、CLK寄存器、DQS寄存器;
所述解析層模塊:用于解析定義層模塊定義的一系列NAND Flash控制器寄存器組,將解析后的指令傳送至物理實現層模塊;所述解析層模塊由命令譯碼器電路完成對不同的定義寄存器信號解析操作;
所述物理實現層模塊:用于實現譯碼出來的具體寄存器指令,并根據配置的寄存器接口實現訪問NAND Flash顆粒的具體時序,傳送至NAND Flash接口模塊;
所述NAND Flash接口模塊:用于將組合好后訪問顆粒時序提供至NAND Flash存儲器,按照標準的操作時序驅動NAND Flash顆粒,完成NAND Flash存儲器的讀取,編程,擦除操作。
進一步的,所述物理實現層模塊包括ECC編解碼驅動電路、控制狀態機電路、底層接口時序實現電路;
所述ECC編解碼驅動電路,用于接收解析層命令譯碼器電路對定義的ECC糾錯能力寄存器,根據配置糾錯能力值,ECC編解碼驅動電路根據不同的糾錯能力值,調整校驗碼長度提供至LDPC編解碼模塊;
所述控制狀態機電路,用于根據解析寄存器組合的一系列指令,不同的操作指令分別傳送給控制狀態機電路,一系列不同時序控制信號由控制狀態機電路的不同子狀態機控制實現,完成不同時序功能的狀態控制。
所述底層接口時序實現電路,從頂層控制產生時序的各個子狀態機,將各個子狀態機產生的時序信號按照NAND Flash接口時序進行組合,完成訪問NAND Flash顆粒的所有時序產生。
與現有技術相比,本發明的有益技術效果是:滿足目前市場上所有廠商及類型的NAND Flash顆粒操作時序,具體地,采用定義的NAND Flash控制器能夠采用ARM CPU對不同接口不同類型的顆粒時序進行配置,大大縮減了硬件邏輯電路開銷,且能夠適應各種廠商顆粒各種接口時序而不用每次增加邏輯硬件電路,具備很強的靈活性和可移植性。
附圖說明
圖1是本發明硬件電路框圖。
圖2是NAND Flash接口圖。
圖3是NAND Flash控制器控制顆粒方案。
圖4是ARM CPU定義的多通道NAND Flash控制器框圖。
圖5是命令鎖存時序。
圖6是地址鎖存時序。
圖7是異步寫數據至NAND Flash時序。
圖8是ONFI2.0從NAND Flash讀數據時序。
圖9是Toggle2.0接口類型從NAND Flash顆粒讀數據時序。
圖10是Toggle2.0接口類型寫數據至NAND Flash時序。
圖11是本發明實施的NAND Flash控制器編程操作流程圖。
圖12是本發明實施的NAND Flash控制器讀取操作流程圖。
圖13是本發明實施的NAND Flash控制器擦除操作流程圖。
圖14是本發明實施的NAND Flash控制器異步接口寫數據波形圖。
圖15是本發明實施的NAND Flash控制器ONFI3.0接口讀數據波形圖。
具體實施方式
下面結合附圖和具體實施方式對本發明作進一步詳細的說明。本發明主要用于控制NAND Flash顆粒,實現對不同廠商的NAND Flash顆粒按照不同NAND Flash接口時序的讀取、編程、擦除操作。
NAND Flash的接口時序包括異步接口、ONFI接口、Toggle接口,其中ONFI接口又分為ONFI2.x和ONFI3.x以及ONFI4.x不同版本,Toggle接口分為Toggle1.0和Toggle2.0,如圖1所示,不同接口的時序有部分差異,ONFI3.x之后版本時序與Toggle時序已經保持一致。NAND Flash接口訪問包括對以下指令的配置,每個指令對應一個寄存器,這些訪問接口時序的寄存器組實現NAND Flash不同時序的顆粒訪問。解析層執行解析所定義的NAND Flash控制器相關寄存器指令,翻譯其寄存器指令將具體的指令控制信號傳送至物理實現層,由物理實現層對具體指令的執行及對應時序的產生,產生不同的時序控制信號傳送至NAND Flash接口模塊,完成操作NAND Flash顆粒所需所有時序的組合。NAND Flash接口連接NAND Flash顆粒,將配置的接口時序組下發到NAND Flash存儲器顆粒,完成對NAND Flash存儲器的編程、讀取、擦除操作;包括:
通過ARM CPU定義NAND Flash控制器中操作NAND Flash顆粒的時序接口;
選擇NAND Flash訪問接口是ONFI還是Toggle類型,以及不同類型的不同版本如ONFI2.x,ONFI3.x以及ONFI4.x或者Toggle1.0、Toggle2.0的選擇;
定義NAND Flash控制器中ECC(Error Correcting Code)模塊對NAND Flash閃存顆粒操作時糾錯能力的配置。本發明的NAND Flash控制器能夠實現64bit/page、70bit/page、48bit/page不同檔位能力的糾錯;
定義編程數據寄存器接口為NAND Flash控制器提供向NAND Flash顆粒所要編程的數據;
定義NAND Flash控制器操作NAND Flash顆粒的具體時序指令,包括CE使能哪一顆NAND Flash存儲顆粒定義、CLE具體訪問NAND Flash顆粒命令定義、ALE訪問NAND Flash顆粒地址定義。以及ONFI和Toggle類型驅動數據讀寫采樣的DQS信號定義等。NAND Flash控制器控制寄存器如表1所示。
表1定義的寄存器
2、解析配置定義層所配置的寄存器組,解析層采用命令譯碼器電路解析一系列寄存器組,翻譯成NAND Flash控制器中具體控制信號指令,包括NAND Flash接口選擇、NAND Flash控制器所要驅動NAND Flash顆粒的不同操作時序協議的控制信號、NAND Flash控制器往顆粒編程的數據,經過解析層的命令譯碼器電路譯碼后的具體操作命令傳送至物理實現層的ECC編解碼驅動模塊、控制子狀態機模塊、底層接口時序實現模塊。
3、將定義的寄存器解析后送至物理實現層,物理實現層對具體的解析后的指令實施,執行寄存器組,產生所定義的操作NAND Flash顆粒時序組合,驅動NAND flash接口,完成對NAND Flash顆粒的控制。
本發明實施的NAND Flash控制器在按照配置操作時序之前,首先需要在配置定義層配置NAND Flash接口寄存器,如圖3所示,需要配置操作NAND Flash不同接口類型,可選的類型有異步接口,Toggle1.0,Toggle2.0,ONFI2.x,ONFI3.x。以及需要配置ECC糾錯能力,NAND Flash控制器才能控制ECC編解碼電路的糾錯能力驅動。由于本發明的NAND Flash控制器方法和裝置用于控制多通道的NAND Flash存儲器顆粒,最多可以同時或者分時操作8個通道的NAND Flash存儲器,如圖4所示,因此在NAND Flash控制器中設置操作通道數的寄存器配置,使得NAND Flash控制器靈活地控制操作1個通道或多個通道的存儲器,采用多通道的NAND Flash控制器大大增加了訪問速度和存儲容量。
本發明實施的NAND Flash控制器編程操作流程如圖11所示,具體為:選擇CE,即NAND Flash控制器選擇所要訪問的那顆NAND Flash顆粒,配置CE寄存器,所配置的值即選擇哪個CE;發送80h,80h命令為對NAND Flash顆粒進行編程操作的指令,配置CLE寄存器,其值為80h;發送地址,即操作NAND Flash顆粒存儲陣列的具體地址,配置ALE寄存器,包括Die地址、plan地址、Page地址、Block地址;配置編程數據寄存器,選擇所要往NAND Flash顆粒編程的數據;發送10h命令,配置CLE命令寄存器;配置等待時間寄存器,等待拉低WaitRBHigh。配置這些寄存器組合通過本發明的NAND Flash控制器裝置最終產生如圖10所述時序圖提供給NAND Flash存儲器顆粒,從而完成對存儲器的編程操作。
本發明實施的NAND Flash控制器讀取操作流程如圖12所示,根據需要配置NAND Flash接口寄存器,例如配置NAND Flash接口為Toggle2.0接口類型,讀取操作配置具體為:選擇CE,配置CE寄存器,所配置的值即選擇哪個CE;發送00h,配置CLE寄存器,其值為00h;發送地址,配置ALE寄存器,包括Die地址、plan地址、Page地址、Block地址;發送30h命令,配置CLE寄存器為30h;配置等待時間寄存器,等待拉低WaitRBHigh;讀取狀態并判斷Rdy是否等于1,若等于1,則讀出數據至接口。配置這些寄存器組合通過本發明的NAND Flash控制器裝置最終產生如圖9所述時序圖提供給NAND Flash存儲器顆粒,從而完成對存儲器的讀取操作。
本發明實施的NAND Flash控制器擦除操作流程如圖13所示,具體為:選擇CE,配置CE寄存器,所配置的值即選擇哪個CE,發送60h,配置CLE寄存器,其值為60h;發送地址,即擦除NAND Flash顆粒的塊地址配置,配置ALE寄存器,即Block地址;配置等待時間寄存器,等待拉低WaitRBHgh。
本發明提供的一種NAND Flash控制器的控制裝置,包括定義層模塊、解析層模塊、物理實現層模塊,NAND Flash接口模塊,所述所有模塊均采用全數字邏輯電路實現,如圖1所示。
所述定義層模塊:用于實現定義NAND Flash控制器操作NAND Flash顆粒的具體時序指令,配置NAND Flash接口寄存器、ECC糾錯能力寄存器、通道數寄存器、等待時間寄存器、編程數據寄存器、CE寄存器、CLE寄存器、ALE寄存器、WE寄存器、RE寄存器、CLK寄存器、DQS寄存器。這一系列寄存器組合,完成NAND Flash控制器需要控制參數及控制NAND Flash顆粒操作時序。所述定義層模塊與解析層模塊相連。
所述解析層模塊:用于解析定義層定義的一系列NAND Flash控制器寄存器組,將解析后的指令傳送至物理實現層模塊。
所述解析層模塊由命令譯碼器電路完成對不同的定義寄存器具體控制信號解析操作。
所述物理實現層模塊:用于實現譯碼出來的具體寄存器指令,送至不同的模塊,根據配置的寄存器接口實現訪問NAND Flash顆粒的具體時序,傳送至NAND Flash接口模塊。
所述物理實現層模塊包括ECC編解碼驅動電路、控制狀態機電路、底層接口時序實現電路。所述ECC編解碼驅動電路用于接收命令譯碼器電路對定義的ECC糾錯能力寄存器,根據配置糾錯能力值,ECC編解碼驅動電路根據不同的糾錯能力值,調整校驗碼長度提供至LDPC編解碼模塊。所述控制狀態機電路用于根據解析寄存器組合的一系列指令,不同的操作指令分別傳送給控制狀態機電路,該電路實現不同時序功能的狀態控制。控制狀態機電路根據不同時序接口信號,通過一系列子狀態機電路產生所配置的一系列訪問NAND Flash顆粒時序控制信號。控制狀態機狀態機電路將所分別產生的一系列訪問NAND Flash操作的時序信號一一送至底層接口時序實現電路,底層接口時序實現電路模塊按照指令進行CE、ALE、CLE、DQS、CLK、WE、RE不同命令操作時序的組合形成訪問NAND Flash接口的整體時序,傳送至NAND Flash接口模塊,例如配置Toggle2.0接口類型,并且配置操作NAND Flash顆粒的命令CLE為讀取,則最終通過物理實現層產生的時序圖如圖9所示。按照該時序完成NAND Flash顆粒的數據讀取操作。
所述NAND Flash接口模塊將組合好后訪問顆粒時序提供至NAND Flash存儲器,按照標準的操作時序驅動NAND Flash顆粒,完成NAND Flash存儲器的讀取、編程、擦除操作。