一種nandflash控制器及其應用的製作方法
2023-07-05 05:04:16 2
專利名稱:一種nand flash控制器及其應用的製作方法
技術領域:
本發明涉及存儲控制器領域,特別涉及一種NAND FLASH控制器及其應用。
背景技術:
快閃記憶體(FLASH)是一種電可擦除的非易失性半導體存儲器。由於快閃記憶體的存儲密度 大、功耗低、掉電數據不丟失以及抗震性好,在嵌入式設備領域已經非常普及。近年來,隨著 快閃記憶體的存儲密度進一步增加,單片存儲容量達到8G字節以上,所以在很多場合已經開始逐 步取代傳統磁碟。這也對快閃記憶體控制器的性能提出了更高的要求,為了更好的滿足計算機系 統對存儲性能的要求,迫切需要設計更高速的快閃記憶體控制器。常見的快閃記憶體有兩種或非型(NOR)、與非型(NAND)。與非型快閃記憶體(NANDFLASH)的容 量更大,價格更低,多用於大容量數據存儲,比如U盤、數位相機存儲卡等。NAND FLASH芯 片的外部接口與NOR FLASH不同,本發明所述的NAND FLASH控制器僅可用於NAND FLASH。 後文中「快閃記憶體」一詞也僅指NAND FLASH。NAND FLASH的基本操作有讀、寫、擦除。寫操作也被稱為編程操作。讀和寫操作 的基本單位是頁,擦除操作的基本單位是塊。目前市面常見的NAND FLASH的頁大小為2K 字節或4K字節,每個塊包含64個頁或128個頁。NAND FLASH的外部接口的地址線和數據 線是復用的,不能直接尋址。對NAND FLASH的讀、寫和擦除操作是通過發送命令的方式完 成的,一條命令包含多個步驟,以讀操作為例,包括如下步驟發送頁讀命令字一,發送地址 信息,發送頁讀命令字二,等待NAND FLASH晶片將數據準備好,數據讀出。NAND FLASH的這 種接口方式在一定程度上限制了系統的性能。另外,不同廠家生產的NAND FLASH晶片的命 令集不完全相同,即使同一廠家的不同型號的NAND FLASH的命令集也不完全相同,這就要 求NAND FLASH控制器具有兼容各種命令的能力。傳統的NAND FLASH控制器的實現方式有兩種,即軟體方式和硬體方式。軟體方式 通過微處理器上運行的驅動程序來發送命令,優點在於靈活性高、兼容性好,但是性能會受 到一定影響。硬體方式通過硬體邏輯來完成命令的發送,性能較好,但是由於各個廠家的閃 存晶片命令集的不兼容,並且NAND FLASH控制器很難在硬體上實現所有的命令,所以其兼 容性受限。
發明內容
本發明目的在於提供一種NAND FLASH控制器,該NAND FLASH控制器能夠將NAND FLASH晶片與微處理器系統連接,使得微處理器系統可以對NAND FLASH晶片進行訪問。該 NAND FLASH控制器還可以減少微處理器被中斷的次數,在一定程度上提高系統性能。另外, 該 NANDFLASH控制器還提供對各種NAND FLASH晶片的兼容性。本發明涉及一種NAND FLASH控制器,包括總線接口邏輯、功能寄存器組、主控邏 輯、多用通路、快閃記憶體接口邏輯。
所述總線接口邏輯用於與系統總線連接。所述功能寄存器組用於接收系統總線發送來的控制參數。所述主控邏輯用於根據所述功能寄存器組所存放的控制參數來控制所述快閃記憶體接 口邏輯產生快閃記憶體晶片所需的操作時序。所述多用通路用於連接所述總線接口邏輯和所述快閃記憶體接口邏輯,以使微處理器能 夠與所述快閃記憶體晶片進行命令字、地址和數據的傳送;所述快閃記憶體接口邏輯在主控邏輯和/或多用通路的控制下,產生對快閃記憶體晶片的操作 時序,包括產生片選信號。其中,所述的功能寄存器組包括片選寄存器、潛伏命令寄存器、數據計數寄存器, 所述片選寄存器用於存放當前片選值,片選值指示了哪個快閃記憶體晶片當前被選中,所述潛伏 命令寄存器用於存放下一條將要發送到快閃記憶體的命令字,該命令字由所述主控邏輯在本次寫 操作的數據傳送步驟之後發送給快閃記憶體,不需要系統總線經由所述多用通路來傳送,所述數 據計數寄存器用來預設本次操作預計將傳入到快閃記憶體的數據量,一旦數據傳送數量達到預 設的字節數,所述的主控邏輯將向快閃記憶體晶片發送潛伏命令寄存器中的命令字。所述的主控邏輯包括中斷生成器。所述中斷生成器根據快閃記憶體的忙閒信號來產生中 斷信號,該中斷信號用來通知系統總線上的微處理器進行後續操作。本發明所述NAND FLASH控制器不使用硬體產生對快閃記憶體晶片的各種操作命令,而是 由上層的驅動軟體來控制命令的組織和發送,這樣只需要簡單修改驅動軟體即可方便地與 各種不同的快閃記憶體晶片的命令集保持兼容。所述NAND FLASH控制器通過所述潛伏命令寄存 器和數據計數寄存器,減少了對微處理器的中斷,並且同時支持非整頁的數據讀寫操作。應用本發明所述NAND FLASH控制器對快閃記憶體晶片進行讀寫操作時,數據的傳輸既可 以由微處理器來執行,也可以由直接內存訪問控制器(DMAC)來執行。使用DMAC來執行數 據傳輸的方式稱為DMA方式。在非DMA方式下,命令、地址和數據都由微處理器來發送或接收,微處理器通過總 線接口邏輯,經由多用通路和快閃記憶體接口邏輯與快閃記憶體晶片進行交互。在DMA方式下,命令、地址由微處理器發送,數據由DMAC來傳送。在DMA方式下, 執行快閃記憶體晶片寫入操作時,為了能夠減少微處理器被中斷的次數,可以通過使用所述潛伏 命令寄存器和數據計數寄存器來讓NANDFLASH控制器自動執行緊隨數據之後的命令字。由 於快閃記憶體的頁讀操作過程的數據階段之後沒有後續命令字,所以頁讀操作不需要使用所述潛 伏命令寄存器。當快閃記憶體晶片由忙碌狀態轉到空閒狀態時,所述中斷發生器可以產生中斷信號。該 中斷信號可以通知微處理器進行後續操作。本發明的技術效果體現在本發明利用硬體功能部件,採用微處理器運行的驅動軟體來組織和發送所需命 令,彌補了軟體帶來的性能損失,兼顧了硬體性能。使系統靈活性高、兼容性好。通過所述 的潛伏命令寄存器和數據計數寄存器來實現後續命令的自動執行,不需要微處理器幹預, 減少了處理器開銷,提高了性能;
圖1為本發明的NAND FLASH控制器的一種實施實例的結構示意圖;圖2為本發明的功能寄存器組的構成;圖3為本發明的應用實例;圖4為本發明的實施實例提供的通過NAND FLASH控制器從快閃記憶體讀取數據的流程圖;圖5為本發明的實施實例提供的通過NAND FLASH控制器採用DMA方式向快閃記憶體寫 入數據的流程圖。
具體實施例方式圖1所示為本發明的NAND FLASH控制器的一種具體實施實例的結構示意圖,該 NAND FLASH控制器101的具體實施由硬體來完成。如圖1所示,NAND FLASH控制器101包括總線接口邏輯102、功能寄存器組103、 主控邏輯104、多用通路105、快閃記憶體接口邏輯106。所述總線接口邏輯102用於與系統總線109連接。所述功能寄存器組103用於接收並存儲系統總線109發送來的信息。所述主控邏輯104用於根據所述功能寄存器組103所存放的信息來控制所述快閃記憶體 接口邏輯106的工作。所述多用通路105連接所述總線接口邏輯102和所述快閃記憶體接口邏輯106,用來傳送 快閃記憶體107讀寫所需的命令字、地址和數據。所述快閃記憶體接口邏輯106在主控邏輯104和/或多用通路105的控制下,產生對閃 存晶片107的操作時序,包括產生片選信號108。所述的功能寄存器組103包括片選寄存器201、潛伏命令寄存器202、數據計數寄 存器203。如圖2所示,本實例中的寄存器位寬都為32位。所述片選寄存器201用於存放當前片選值,片選值決定了哪個片選信號108有效, 即哪個快閃記憶體晶片107當前被選中。本實例中,利用片選寄存器201的低8位存放片選值。每 一位對應一個片選信號,一共可以控制8個片選信號。本實例中,片選值為「1」有效。例如, 如果片選值為「00000001」,則對應於第0位的片選信號有效;如果片選值為「00010000」,則 對應於第4位的片選信號有效。不允許多個片選信號同時有效。所述潛伏命令寄存器202用於存放下一條需要發送到快閃記憶體107的命令字,該命令 字由所述主控邏輯104在本次讀寫操作的數據傳送步驟之後發送給快閃記憶體,不需要系統總線 109經由所述多用通路105來傳送。本實例中,利用潛伏命令寄存器202中的低8位(第0 位到第7位)來存放命令字。利用潛伏命令寄存器202中的第8位來存放使能值,該使能 值決定了潛伏命令寄存器202當前是否啟用。如果該使能值為「0」,則表示潛伏命令寄存器 202當前被禁用。如果該使能值為「1」,則表示潛伏命令寄存器202當前啟用。所述數據計數寄存器203用來存放一個計數值,該計數值對寫入到快閃記憶體的數據進 行遞減計數,每寫入一個字節的數據該計數值減一。該計數值在寫操作之前應被設置為本 次寫操作預計將寫入到快閃記憶體的數據的字節數,一旦數據傳送字節數達到預設的字節數,也 即計數值減為0時,所述的主控邏輯104將向快閃記憶體晶片107發送潛伏命令寄存器202中的命 令字。本實例中,利用數據計數寄存器的低16位(第0位到第15位)來存放計數值。本
6實施實例中,該計數值僅用於對寫入操作進行計數。所述的主控邏輯104包括中斷生成器1041。所述中斷生成器1041根據快閃記憶體107 的忙閒信號來產生中斷信號,該中斷信號用來通知系統總線109上的微處理器執行後續相 關操作。本發明所述NAND FLASH控制器101不通過硬體產生對快閃記憶體晶片的各種操作命令, 而是由上層的驅動軟體來控制命令的組織和發送,這樣只需要簡單修改驅動軟體即可方便 地與各種不同的快閃記憶體晶片的命令集保持兼容。所述NAND FLASH控制器101通過所述潛伏 命令寄存器202和數據計數寄存器203,減少了對微處理器的中斷,並且同時支持非整頁的 數據讀寫操作。圖3所示為本發明的NAND FLASH控制器101的一種應用實例,用以說明NAND FLASH控制器101的使用方法。如圖3所示,所述NAND FLASH控制器101通過系統總線109 與一個包含微處理器302和直接內存訪問控制器(DMAC) 303的微處理器系統301連接。該 微處理器系統301至少還包括RAM 302。NAND FLASH控制器101通過系統總線109接收 微處理器302發來的相關命令和配置,並轉換為對快閃記憶體107的相應操作。數據的傳輸在RAM 和NAND FLASH控制器之間進行。數據的傳輸既可以由微處理器302來執行,也可以由直接 內存訪問控制303來執行。使用直接內存訪問控制器303來執行數據傳輸的方式稱為DMA 方式。在不使用DMA方式時,命令、地址和數據都由微處理器302來執行發送或接收,微 處理器302通過總線接口邏輯109,經由多用通路105和快閃記憶體接口邏輯106與快閃記憶體晶片107 進行交互。在DMA方式下,命令、地址由微處理器發送,而數據由DMAC來傳送。在DMA方式 下,執行快閃記憶體晶片寫入操作時,為了能夠減少微處理器被中斷的次數,可以通過使用所述潛 伏命令寄存器202和數據計數寄存器203來讓NAND FLASH控制器101自動執行緊隨數據 之後的命令字。由於快閃記憶體的頁讀操作過程的數據階段之後沒有後續命令字,所以頁讀操作不需要 使用所述潛伏命令寄存器202。當快閃記憶體晶片由忙碌狀態轉到空閒狀態時,所述中斷發生器可以產生中斷信號。該 中斷信號可以通知微處理器進行後續操作,通常為查詢快閃記憶體狀態或者讀取數據。圖4所示為本發明的實施實例提供的通過NAND FLASH控制器從快閃記憶體讀取數據的 流程圖,具體步驟如下步驟401,微處理器通過總線接口邏輯,向片選寄存器寫入片選值,選中對應的閃 存晶片;步驟402,微處理器通過總線接口邏輯,經由多用通路和快閃記憶體接口邏輯向快閃記憶體晶片 發送頁讀命令字一;步驟403,微處理器通過總線接口邏輯,經由多用通路和快閃記憶體接口邏輯向快閃記憶體晶片 發送地址信息;步驟404,微處理器通過總線接口邏輯,經由多用通路和快閃記憶體接口邏輯向快閃記憶體晶片 發送頁讀命令字二;步驟405,快閃記憶體晶片進入忙碌狀態,將相應頁地址處的頁數據從存儲介質讀到內部
7頁面寄存器;步驟406,一頁數據讀出到內部頁面寄存器後,快閃記憶體晶片轉入空閒狀態,快閃記憶體接口 邏輯捕獲這一狀態變化,傳遞到主控邏輯,由主控邏輯中的中斷發生器產生中斷信號;步驟407,微處理器捕獲到中斷信號後通過總線接口邏輯,經由多用通路和快閃記憶體接 口邏輯從快閃記憶體讀取所需數量的數據到RAM中。在該步驟中,微處理器也可以啟動DMAC來讀 取數據到RAM中;步驟408,微處理器通過總線接口邏輯,向片選寄存器寫入0,取消對快閃記憶體晶片的 選中。另外,在步驟405至步驟406期間,以及在DMAC傳輸數據期間微處理器不需要參 與,從而可以使有限的微處理器資源可以用於處理其他事務。圖5所示為本發明的實施實例提供的通過NAND FLASH控制器通過DMA方式向閃 存寫入數據的流程圖,具體步驟如下步驟501,微處理器通過總線接口邏輯,向片選寄存器寫入片選值,選中對應的閃 存晶片;步驟502,微處理器通過總線接口邏輯,經由多用通路和快閃記憶體接口邏輯向快閃記憶體晶片 發送頁編程命令字一;步驟503,微處理器通過總線接口邏輯,經由多用通路和快閃記憶體接口邏輯向快閃記憶體晶片 發送地址信息;步驟504,微處理器通過總線接口邏輯,向潛伏命令寄存器中寫入頁編程命令字 二,並向數據計數寄存器中寫入即將要傳輸的數據字節數;步驟505,微處理器啟動DMAC向快閃記憶體傳送數據;步驟506,DMAC通過總線接口邏輯,經由多用通路和快閃記憶體接口邏輯向快閃記憶體寫入一 定數量的數據,數據量應等於數據計數寄存器的值。每寫入一個字節,數據計數寄存器的值 減一,直到減為零;步驟507,數據寫入完成後,即數據計數寄存器的值減為零時,由主控邏輯將已經 存放在潛伏命令寄存器中的頁編程命令字二發送給快閃記憶體;步驟508,快閃記憶體晶片轉入忙碌狀態,將數據從內部頁寄存器寫入到存儲介質;步驟509,數據從內部頁寄存器寫入到存儲介質完成後,快閃記憶體晶片轉入空閒狀態, 快閃記憶體接口邏輯捕獲這一狀態變化,傳遞到主控邏輯,由主控邏輯中的中斷發生器產生中斷 信號;步驟510,微處理器捕獲到中斷信號後通過總線接口邏輯,經由多用通路和快閃記憶體接 口邏輯讀取快閃記憶體狀態,用以判斷寫入是否成功;步驟511,微處理器通過總線接口邏輯,向片選寄存器寫入0,取消對快閃記憶體晶片的 選中。另外,在步驟506至步驟509期間,微處理器不需要參與,從而可以使有限的微處 理器資源可以用於處理其他事務。以上通過優選的具體實施例對本發明做了說明性描述,本發明提出的NAND FLASH 控制器可以通過ASIC、FPGA或CPLD等來實現。本領域的技術人員可以根據需要增加讀寫 緩衝區等,並且可以根據需要設置寄存器各欄位的位置和位寬。另外,針對不同的快閃記憶體晶片
8及不同的命令集,其流程也可能有所不同。所以,本發明可以有多種變化,這些變化都不能 認為是脫離本發明的設計思想,都應包含在本發明的範圍內。
權利要求
一種NAND FLASH控制器,包括總線接口邏輯(102)、功能寄存器組(103)、主控邏輯(104)、多用通路(105)和快閃記憶體接口邏輯(106),其特徵在於,所述總線接口邏輯(102)用於將NAND FLASH控制器通過系統總線(109)連接到微處理器系統(301),使NAND FLASH控制器能夠與微處理器系統(301)進行通訊;所述功能寄存器組(103)通過總線接口邏輯(102)接收並存儲微處理器系統(301)發送來的控制參數,用於提供給主控邏輯(104)來控制快閃記憶體晶片的工作;所述多用通路(105)用於連接所述總線接口邏輯(102)和所述快閃記憶體接口邏輯(106),以使微處理器系統(301)能夠與所述快閃記憶體晶片直接進行命令字、地址和數據的傳送;所述快閃記憶體接口邏輯(106)與快閃記憶體晶片連接,根據主控邏輯(104)和/或多用通路(105)發送的信息產生對快閃記憶體晶片的操作時序,實現對快閃記憶體晶片的操作。
2.根據權利要求1所述的一種NANDFLASH控制器,其特徵在於,所述控制參數包括片 選值,用於指示當前被選中的快閃記憶體晶片,主控邏輯(104)根據該片選值,通過快閃記憶體接口邏輯 (106)選中相應的快閃記憶體晶片(107),其中,該片選值存儲於所述功能寄存器組(103)的片選 寄存器中。
3.根據權利要求1或2所述的一種NANDFLASH控制器,其特徵在於,所述控制參數還 包括發送到快閃記憶體晶片的命令字二和用於記錄傳入到快閃記憶體的數據量的計數值,其中,該命令 字二由所述主控邏輯(104)在本次寫操作的數據傳送完成之後發送給快閃記憶體,用於啟動所述 快閃記憶體晶片開始工作;該計數值用於預設將傳入到快閃記憶體的數據量,每傳輸一個字節,該計數值 自動減一,直到減為零即數據傳送數量達到預設的字節數,其中,所述命令字二和計數值分 別存儲於所述功能寄存器組(103)的潛伏命令寄存器和數據計數寄存器中。
4.根據權利要求1-3之一所述的一種NANDFLASH控制器,其特徵在於,所述的主控邏 輯(104)包括中斷生成器(1041),該中斷生成器(1041)根據快閃記憶體(107)的忙閒信號來產生 中斷信號,用於通知微處理器系統(301)快閃記憶體晶片已進入就緒狀態,可以進行後續操作。
5.根據權利要求1-4之一所述的一種NANDFLASH控制器,其特徵在於,所述的微處理 器系統(301)包括微處理器(302)、RAM(304)和直接內存訪問控制器(303)。
6.根據權利要求5所述的一種NANDFLASH控制器,其特徵在於,所述的命令、地址和數 據均由微處理器(302)來執行發送或接收,微處理器(302)通過總線接口邏輯(109),經由 多用通路(105)和快閃記憶體接口邏輯(106)與快閃記憶體晶片(107)進行交互。
7.根據權利要求5所述的一種NANDFLASH控制器,其特徵在於,所述的命令、地址由微 處理器(302)發送,而數據由直接內存訪問控制器(303)來傳送。
8.根據權利要求1-7之一所述的一種NANDFLASH控制器,其特徵在於,執行快閃記憶體晶片 寫入操作時,通過使用所述潛伏命令寄存器和數據計數寄存器讓NAND FLASH控制器自動執 行緊隨數據之後的命令字,以減少微處理器被中斷的次數。
9.應用上述權利要求1-8之一所述的NANDFLASH控制器進行快閃記憶體讀取數據的方法,具 體步驟如下(1)微處理器系統(301)通過總線接口邏輯(102),向片選寄存器寫入片選值,選中對 應的快閃記憶體晶片(107),並經由多用通路(105)和快閃記憶體接口邏輯(106)向所述快閃記憶體晶片(107) 分別發送頁讀命令字一、地址信息和頁讀命令字二 ;(2)所述快閃記憶體晶片(107)進入忙碌狀態,將相應頁地址處的頁數據從存儲介質讀到內部頁面寄存器;(3)一頁數據讀出到內部頁面寄存器後,所述快閃記憶體晶片(107)轉入空閒狀態,所述主控 邏輯(104)中的中斷發生器產生中斷信號;(4)微處理器系統(301)捕獲到中斷信號後通過總線接口邏輯(102),經由多用通路 (105)和快閃記憶體接口邏輯(106)從快閃記憶體讀取所需數量的數據到微處理器系統(301)的RAM中, 或者通過微處理器系統(301)中的直接內存訪問控制器(303)來讀取數據到RAM中;(5)微處理器系統(301)通過總線接口邏輯(102),向片選寄存器寫入0,取消對快閃記憶體芯 片(107)的選中,完成對快閃記憶體數據的讀取。
10.應用上述權利要求1-8之一所述的NAND FLASH控制器向快閃記憶體寫入數據的方法,包 括如下具體步驟(1)微處理器系統(301)通過總線接口邏輯(102),向片選寄存器寫入片選值,選中對 應的快閃記憶體晶片(107),經由多用通路(105)和快閃記憶體接口邏輯(106)向所述快閃記憶體晶片(107)分 別發送頁編程命令字一、地址信息,並向潛伏命令寄存器中寫入頁編程命令字二,向數據計 數寄存器中寫入即將要傳輸的數據字節數;(2)微處理器啟動微處理器系統(301)的直接內存訪問控制器(303)向快閃記憶體傳送數據;(3)直接內存訪問控制器(303)通過總線接口邏輯(102),經由多用通路(105)和快閃記憶體 接口邏輯(107)向快閃記憶體晶片(107)寫入一定數量的數據,數據量應等於數據計數寄存器的 值,每寫入一個字節,數據計數寄存器中的計數值自動減一,直到減為零;(4)數據寫入完成後,即數據計數寄存器的值減為零時,由主控邏輯(104)將潛伏命令 寄存器中的頁編程命令字二發送給快閃記憶體晶片(107);(5)快閃記憶體晶片(107)轉入忙碌狀態,將已暫存於內部頁寄存器的數據寫入到存儲介質;(6)數據從內部頁寄存器寫入到存儲介質完成後,快閃記憶體晶片(107)轉入空閒狀態,快閃記憶體 接口邏輯捕(106)獲這一狀態變化,傳遞到主控邏輯(104),由主控邏輯(104)中的中斷發 生器(1041)產生中斷信號;(7)微處理器系統(301)捕獲到中斷信號後通過總線接口邏輯(104),經由多用通路 (105)和快閃記憶體接口邏輯(106)讀取快閃記憶體狀態,用以判斷寫入是否成功。(8)微處理器系統(301)通過總線接口邏輯(104),向片選寄存器寫入0,取消對快閃記憶體芯 片(107)的選中,完成向快閃記憶體晶片(107)寫入數據。
全文摘要
本發明公開了一種NAND FLASH控制器,包括總線接口邏輯、功能寄存器組、主控邏輯、多用通路和快閃記憶體接口邏輯,所述總線接口邏輯用於將控制器通過系統總線連接到微處理器系統;所述功能寄存器組通過總線接口邏輯接收並存儲微處理器系統發送來的控制參數;所述多用通路用於連接所述總線接口邏輯和所述快閃記憶體接口邏輯,以使微處理器系統能夠與所述快閃記憶體晶片進行直接通訊;所述快閃記憶體接口邏輯與快閃記憶體晶片連接,根據主控邏輯和/或多用通路發送的信息產生對快閃記憶體晶片的操作時序,實現對快閃記憶體晶片的控制操作,本發明通過所述的潛伏命令寄存器和數據計數寄存器來實現後續命令的自動執行,不需要微處理器幹預,減少了處理器開銷,提高了性能。
文檔編號G11C16/06GK101958152SQ201010513438
公開日2011年1月26日 申請日期2010年10月19日 優先權日2010年10月19日
發明者馮丹, 劉景寧, 王柳崢, 申風有, 秦亦, 童薇, 胡洋 申請人:華中科技大學