nand flash是flash儲存器的其中一種,nand flash其內部採用非線性巨集單元模式以及為固態大容量記憶體的實現提供了廉價有效的解決方案。nand flash儲存器具有容量較大和改寫速度快等優點適用於大量資料的儲存,因而在業界得到了越來越廣泛的應用。nand結構能提供極高的單元密度,可以達到高儲存密度,並且寫入和擦除的速度也很快。本篇文章儲存晶元**商宇芯電子介紹關於nand flash 的儲存結構以及nand flash的介面控制設計。
nand flash 的儲存結構
大多數的nand flash都大同小異,所不同的只是該nand flash晶元的容量大小和讀寫速度等基本特性。
塊block 是 nand flash 的擦除操作的基本/最小單位。頁是讀寫操作的基本單位。
每乙個頁,對應還有一塊區域,叫做空閒區域/冗餘區域,而在 linux系統中﹐一般叫做oob(out of band)[2]。這個區域最初基於nand flash 的硬體特性﹐資料在讀寫時候相對容易出錯﹐所以為了保證資料的正確性,必須要有對應的檢測和糾錯機制,此機制被叫做edc /ecc。所以設計了多餘的區域﹐用於放置資料的校驗值。oob的讀寫操作一般是隨著頁的操作一起完成的,即讀寫頁的時候,對應地就讀寫了oob。oob的主要用途:標記是否是壞塊﹐儲存ecc資料﹐儲存一些和檔案系統相關的資料。
nand flash的介面控制設計
由於nand flash只有8個i/o引腳,而且是復用的,既可以傳資料﹐也可以傳位址、命令。設計命令鎖存使能(command latch enable,cle)和位址鎖存使能( ad-dress latch enable,ale),就是先要發乙個cle(或ale)命令,告訴nand flash 的控制器一聲,下面要傳的圖1nand flash控制電路是命令(或位址)。這樣nand flash內部才能根據傳入的內容﹐進行對應的動作。相對於並口的nor flash 的48或52個引腳來說,大大減小了引腳數目,這樣封裝後的晶元體積小。同時減少了晶元介面﹐使用此晶元的相關的外圍電路會更簡化,避免了繁瑣的硬體連線。
nand flash的介面控制電路如圖1所示
基於Nios的nandFlash控制(一)
今天開始對實驗室之前的工程進行修改,之前的工程在flash時序上有些問題,讀寫誤位元速率較高。由於nios帶的flash控制器只適用與一種nor flash,並沒有nandflash的介面,所以目前的方案是編乙個verilog模組做flash的介面,將具體時序進行封裝,cpu只需給此模組發指令即可進...
基於Nios的nandFlash控制(三)
今天把之前的錯位問題解決了,出錯是因為時序錯誤,重複寫了乙個數。這個問題解決後又發現了兩個小問題,乙個是每次讀出來的頭四個位元組全是ffffffff,並且最後乙個位元組沒有讀出來。經過反覆改,反覆採數,找到了原因並解決。全是時序問題,操作雙口時並沒有按4096這個大小操作,造成多讀了幾個數把開頭的前...
NAND Flash控制器功能
nand flash控制器通常提供損耗均衡,糾錯碼 ecc 和壞塊管理功能。其實現方式可以用軟體,硬體或兩者的組合來實現。通常,nand flash控制器位於主機和nand快閃儲存器裝置之間,並控制對裝置的訪問。正是因為如此,為了簡化nand flash控制器設計,emmc基於此而來,將nand f...