一種基於頁操作的可編程Nandflash控制器的製作方法
2023-04-23 04:06:36
專利名稱:一種基於頁操作的可編程Nandflash控制器的製作方法
技術領域:
本發明所涉及的是一種片上系統的基於頁操作的可編程Nandflash控制器,特別適用於採用MLC類型的Nandflash。
背景技術:
對於Nandflash控制器,尤其是MLC類型的Nandflash控制器,受Nandflash Spare空間大小的限制和BCH解碼複雜度與數據長度直接相關,截至目前,基本上都是以 512位元組(8位Nandf lash)或256半字(16位Nandf lash)為單位進行處理。隨著製造工藝水平的提升,Nandflash的容量是越來越大,其對應的頁容量大小也越來越大,比如4KB和 8KB等,甚至更大。這就存在一個問題,CPU處理器每次要訪問Nandflash的數據時,也必須以 512Byte或256HWord為單元進行訪問操作。如圖1所示,假如要對Nandflash編程一個 2KByte的頁數據,CPU處理器需要和Nandflash控制器之間進行9次交互操作,極大地影響了系統的訪問效率。此外,近年來片上系統CPU處理器的頻率越來越快,已經有IGHz以上的嵌入式處理器,由於Nandflash的接口頻率沒有太大變化,因此Nandflash控制器的頻率一般在 133MHz左右,他們之間的頻率差距在逐漸增大,如果CPU處理器和Nandf Iash控制器之間的時鐘關係是異步的,那麼直接由CPU處理器通過Nandflash控制器來訪問外部Nandflash 將浪費更多CPU處理器的資源,也直接影響了系統的訪問效率。從上面的分析可以看出,只有同時解決好Nandflash解碼塊單位偏小和CPU處理器與Nandflash控制器之間頻率不平衡的問題,才能有效地提高系統訪問Nandflash的速度,同時又沒有佔用較多的CPU處理器資源。
發明內容
有鑑於此,本發明基於頁操作的可編程Nandflash控制器以增加較少的硬體資源,採用可編程方式,解決了上面所述的問題。本發明在CPU處理器和Nandflash控制器之間定義一組描述符,CPU處理器把參考圖1中需要完成的操作通過描述符方式一次性地指示給Nandflash控制器,由Nandflash控制器自已去解析每個描述符,實現圖1對 Nandflash頁編程操作,在完成編程後通知CPU處理器。如圖2所示,在Nandflash控制器和CPU處理器之間增加一塊小容量的高速異步SRAM,高速異步SRAM和CPU處理器之間是以CPU處理器的頻率進行訪問操作,高速異步 SRAM和Nandflash控制器之間以Nandflash控制器的頻率進行訪問操作,高速異步SRAM的作用是存儲Nandflash操作的描述符。為解析描述符,Nandflash控制器內部需要一個描述符控制器和SDMA,完成描述符的解析並實現如圖1的頁編程操作。採用高速異步SRAM後,CPU處理器要對Nandflash進行操作時,面對就是一個高速的內部SRAM,而不是較慢的外部Nandf lash,因此CPU處理器就能夠以處理器的工作頻率很快地完成對Nandflash操作所需要描述符的編程,完成編程後使能Nandflash控制器即可, CPU處理器就可以去執行別的系統任務。而Nandflash控制器接收到CPU處理器的指示後, 描述符控制器就會去訪問高速異步SRAM並解析描述符,調度Nandflash控制器的SDMA,完成對外部Nandf Iash的訪問操作。參考圖1,Nandflash控制器只有在全部完成對外部Nandflash的頁編程後才會提中斷給CPU處理器,而且對Nandflash的整個編程過程全部由NandfIash控制器完成,執行效率能夠有較大的提高,與傳統的做法相比具有非常明顯的優勢。參考圖2,本發明具有的一個特徵是向下兼容性,CPU處理器仍然能夠通過寄存器控制邏輯,按照原來的方式完成如圖1的頁編程操作,不影響已有的軟體系統體系。本發明還具有的一個特徵是有很強的靈活性和擴展性,由於採用軟體編程方式, 可以建立一個或多個頁的訪問操作,能夠適應不同類型的Nandflash。
圖1為頁大小為2KB的Nandflash的頁編程過程的示意圖;圖2為本發明基於頁操作的可編程Nandflash控制器的結構示意圖;圖3為本發明描述符的格式說明圖;圖4為對Nandflash編程時的描述符編程過程示意圖;圖5為對Nandflash讀取時的描述符編程過程示意圖;圖6為對頁大小512位元組的Nandflash進行編程時的所建立的描述符。
具體實施例方式為使本發明的目的、技術方案和優點更加清楚,以下舉實施例對本發明進一步說明。本發明的描述符具有的格式如圖3所示,本發明共定義了 5類描述符,每個描述符佔用8位元組空間,包括5個域保留域,方便以後擴展應用;類型域,指示該描述符的操作類型,本發明定義了 5種操作類型,包括NAND_REGS、 NAND_SDMA、NAND_NXTP、NAND_ECCD 和 NAND_DEND。標誌位域,結合類型域完成具體的操作;地址域,主要用來指示訪問Nandflash控制器寄存器的地址;數據域,主要用來指示訪問Nandflash控制器寄存器的數據、SDMA訪問的系統地址等。圖4和圖5分別給出了基於本發明的可編程描述符,對Nandflash進行編程和讀取時描述符的建立過程。對於編程操作,參考圖4,首先完成對Nandflash控制器相關寄存器的配置,比如 ECC類型和ECC模塊的復位等;然後設置訪問外部Nandflash的地址;接著啟動控制器的 SDMA傳輸數據到Nandfash的主數據空間(Main Data Space),如果數據塊不是頁的最後一個數據塊,把ECC的狀態結果寫到系統空間,如果數據塊是頁的最後一個數據塊,則控制器會把存在系統空間的ECC狀態寫到Nandflash的從數據空間(Spare Data Space);完成全部頁數據中數據塊的傳輸後,進行編程命令操作和編程狀態確認;最後判斷描述符是否結束,如果是最後一個描述符,則結束操作並通知CPU,否則繼續執行下一個頁數據的描述符操作。對於讀取操作,與編程過程略有不同,是一個相反的過程,需要先從Nandflash中讀取一個頁的ECC狀態並存到系統空間,在每個512數據塊操作時,控制器會自動從系統空間讀取其ECC狀態並配置到對應的寄存器。圖6是給出了對512位元組頁大小Nandflash編程的描述符,參考圖6,描述如下第0行調用Nandflash控制器寄存器配置的描述符(NAND_REGQ,地址域是寄存器地址的偏移量,數據域是寄存器的配置值,也就是寫0x01000000到地址0x00的寄存器(寄存器為NFC0NF),配置ECC類型;第1行,寫0x0000080到地址0x08的寄存器(寄存器為NFCMD),也就是往 Nandflash發起80h編程命令;第2到5行,連續寫4個0x00000000到地址OxOC的寄存器(寄存器為NFADDR), 也就是往Nandflash發起4個地址命令,如圖1的地址周期;第6行,寫OxOOOOOOFO到地址0x04的寄存器(寄存器為NFC0NT),復位控制器內部的ECC模塊;第7行,寫0x00000040到地址0x04的寄存器(寄存器為NFC0NT),設置ECCL0CK 信號為有效,指示ECC模塊進行編碼;第8到11行,調用配置SDMA寄存器的描述符(NAND_SDMA),讓SDMA從系統地址 0x40000000 傳輸 512 字節數據到 Nandflash 的 Main Data 空間;第12到13行,調用配置SDMA寄存器的描述符(NAND_SDMA),讓SDMA把ECC的狀態結果(NFMECC0/1/2)寫回到系統地址0x41000008 ;第14行,寫0x000000C0到地址0x04的寄存器(寄存器為NFC0NT),設置ECCL0CK 信號為無效,指示ECC模塊結束編碼;第15到21行,讓SDMA從系統地址0x41000000傳輸16位元組數據到Nandflash的 Spare Data 空間,其中 0x41000000 到 0x41000007 為系統信息,0x41000008 到 0x4100000F 為前面SDMA寫回的ECC狀態結果;第22行,寫0x0000010到地址0x08的寄存器(寄存器為NFCMD),也就是往 Nandflash發起IOh編程命令,由於Nandflash編程需要一段時間,因此這裡需要設置標誌位FLAG[2],Nandflash控制器檢測到此標誌位,會自動判斷foiB的狀態,直到foiB不忙才會執行下一個描述符;第23行,寫0x0000070到地址0x08的寄存器(寄存器為NFCMD),也就是往 Nandflash發起70h狀態查詢命令;第M行,是編程狀態結果確認描述符; 第25行,是調用NAND_DEND描述符,即結束描述符。CPU處理器建立好描述符後,使能Nandflash控制器,Nandflash控制器會依次解析上次描述符,實現對外部Nandflash完成512位元組編程的全部過程,結束後提中斷給CPU 處理器。以上介紹是基於本發明的一個具體實施例,其中的可編程描述符方式和高速異步SRAM,可適應於不同片上系統的處理器和Nandflash,並不限定於具體的處理器結構和 Nandflash。採用同種方式應用於不同的片上系統進行Nandflash操作不超出本發明的提供以及保護範圍。
權利要求
1.一種基於頁操作的可編程Nandflash控制器,在CPU處理器和Nandflash控制器之間增加一塊高速異步SRAM,Nandflash控制器內部添加一個描述符控制器和SDMA,其特徵在於通過所述的高速異步SRAM,在CPU處理器和Nandflash控制器之間定義一組描述符,CPU處理器把需要完成的操作通過描述符方式一次性地指示給Nandflash控制器,由 Nandflash控制器自己去解析每個描述符,並在操作結束後通知CPU處理器。
2.根據權利要求1所述的一種基於頁操作的可編程Nandflash控制器,其特徵在於 所述高速異步SRAM,和CPU處理器對接的訪問速度是CPU處理器的工作頻率,和Nandflash控制器對接的訪問速度是Nandflash控制器的工作頻率。
3.根據權利要求1所述的基於頁操作的可編程Nandflash控制器,其特徵在於所述的描述符由5類描述符構成,包括NAND_REGS、NAND_SDMA、NAND_NXTP、NAND_ECCD 禾口 NAND_DEND。每個描述符由5個域組成,包括保留域、類型域、標誌位域、地址域和數據域。
4.根據權利要求1所述的基於頁操作的可編程Nandflash控制器,其特徵在於 向下兼容性,CPU處理器仍然能夠通過所述可編程Nandflash控制器的寄存器控制邏輯,按照原來的方式完成操作,不影響已有的軟體系統體系。
5.根據權利要求2所述的基於頁操作的可編程Nandflash控制器,其特徵在於 所述高速異步SRAM是指通用的高速異步SRAM,並不限定於某個具體大小的高速異步SRAM。
6.根據權利要求3所述的基於頁操作的可編程Nandflash控制器,其特徵在於採用描述符機制的軟體編程方式,可以建立一個或多個頁的訪問操作,適應不同類型的 Nandflash0
全文摘要
本發明提出了一種適用於片上系統的基於頁操作的可編程Nandflash控制器。在可編程Nandflash控制器和CPU處理器之間增加一塊高速異步SRAM,並定義一組描述符,採用軟體可編程方式,以Nandflash的頁為單位進行訪問操作,相對於傳統的Nandflash控制器,不僅減少了CPU處理器和Nandflash控制器之間的交互次數,而且能夠提高系統訪問Nandflash的速度。
文檔編號G06F12/02GK102169466SQ20101020667
公開日2011年8月31日 申請日期2010年6月22日 優先權日2010年6月22日
發明者劉春暉, 李興仁, 林錦麟, 金榮偉 申請人:上海盈方微電子有限公司