官术网_书友最值得收藏!

4.2 NandFlash器件原理

4.2.1 NandFlash存儲(chǔ)單元組織

下面以三星公司的K9F2G08U0M NandFlash為例來講述NandFlash原理。該NandFlash的輸入輸出端口如表4-1所示。

表4-1 K9F2G08U0M輸入輸出端口描述

K9F2G08U0M的功能方框圖如圖4-1所示。

圖4-1 K9F2G08U0M的功能方框圖

K9F2G08U0M的存儲(chǔ)器組織如圖4-2所示。K9F2G08U0M是一個(gè)2Gbits的閃存,每2K+64字節(jié)被組織成為一個(gè)頁,每64個(gè)頁被組織成為一個(gè)塊,整個(gè)器件共有2048個(gè)塊,共2112Mbits。讀操作每次至少讀取一個(gè)字節(jié),而擦除操作每次擦除一個(gè)塊。

圖4-2 K9F2G08U0M的存儲(chǔ)器組織

NandFlash的地址分為行地址和列地址,行地址選擇指定的頁,列地址選擇指定的頁內(nèi)字節(jié)。每一個(gè)頁有2K+64字節(jié),因此,需要12比特的地址進(jìn)行尋址。NandFlash的地址通過I/O[7:0]送入器件,先送入列地址,再送入行地址,29比特地址需要5周期才能送完,每個(gè)周期送入的地址位如圖4-3所示。

圖4-3 K9F2G08U0M的地址周期

4.2.2 NandFlash壞塊與壞塊管理

NandFlash壞塊在出廠的時(shí)候可能已存在。在芯片出廠時(shí),NandFlash已經(jīng)被擦除,擦除后所有字節(jié)都是0xFF。對(duì)于壞塊,在出廠時(shí),其第一頁或第二頁的第2048列的內(nèi)容為非0xFF。這些信息可以用來初始化壞塊描述表。壞塊描述表由軟件來維護(hù),NandFlash的第一個(gè)塊,即地址0開始的塊,在出廠時(shí)保證是正確的,且保證至少最初1000次擦除/編程操作都是正確的。壞塊描述表可以放在地址0開始的塊中。壞塊描述表對(duì)于NandFlash的管理十分重要,在實(shí)際系統(tǒng)設(shè)計(jì)中,還應(yīng)該對(duì)其采取適當(dāng)?shù)膫浞荽胧?/p>

在初始化壞塊描述表之前若對(duì)NandFlash進(jìn)行了不恰當(dāng)?shù)膶懖僮骰虿脸僮鳎赡軐?dǎo)致壞塊信息被破壞并不可恢復(fù)。在后續(xù)的使用中,NandFlash會(huì)新增壞塊,壞塊信息被破壞的塊及新增的壞塊可以在寫操作失敗、塊擦除失敗來發(fā)現(xiàn),新發(fā)現(xiàn)的壞塊通過軟件添加到壞塊描述表中。

在NandFlash的使用中,可能會(huì)出現(xiàn)個(gè)別比特反轉(zhuǎn)的情況,即某一個(gè)比特在寫入時(shí)被寫入了0,但是因?yàn)閮?chǔ)存單元的問題導(dǎo)致在后來某個(gè)時(shí)間讀取到的該比特的值為0。為了解決這一問題,有些NandFlash控制器專門設(shè)計(jì)了硬件前向糾錯(cuò)機(jī)制。常見的前向糾錯(cuò)機(jī)制能夠糾錯(cuò)一個(gè)比特,檢錯(cuò)多個(gè)比特。當(dāng)發(fā)生超過一個(gè)比特以上的錯(cuò)誤無法糾正時(shí),軟件必須作出適當(dāng)?shù)奶幚怼G跋蚣m檢錯(cuò)機(jī)制都是針對(duì)頁進(jìn)行的,在進(jìn)行整頁寫操作時(shí),2048個(gè)字節(jié)被寫入一個(gè)頁的前2048個(gè)字節(jié),糾檢錯(cuò)機(jī)制產(chǎn)生的校驗(yàn)比特被存儲(chǔ)在2048字節(jié)后面的64個(gè)字節(jié)空間。在進(jìn)行整頁讀取時(shí),將一個(gè)頁2048個(gè)字節(jié)讀出并由糾檢錯(cuò)機(jī)制計(jì)算出新的校驗(yàn)比特,如果新的校驗(yàn)比特與存儲(chǔ)在2048字節(jié)后面的64個(gè)字節(jié)空間的校驗(yàn)比特不同,則讀取的數(shù)據(jù)出錯(cuò)。若能夠糾錯(cuò),則數(shù)據(jù)仍然能夠使用,若不能夠糾錯(cuò),則只能報(bào)告頁面錯(cuò)誤。

在一般的嵌入式系統(tǒng)中,常常根據(jù)運(yùn)行時(shí)的需要產(chǎn)生頁面失敗(Page Fault)中斷,將一個(gè)頁加載到SDRAM即內(nèi)存中,對(duì)于能夠糾正的錯(cuò)誤,系統(tǒng)能夠繼續(xù)正常工作,一般將數(shù)據(jù)轉(zhuǎn)存到另外一個(gè)塊中;若錯(cuò)誤不可糾正,則錯(cuò)誤就是致命(Fatal Error)的,系統(tǒng)將不能夠再正常工作。

主站蜘蛛池模板: 金沙县| 江川县| 皮山县| 京山县| 诸城市| 高唐县| 清丰县| 孝昌县| 南安市| 宁化县| 桐城市| 南安市| 建湖县| 福建省| 拉萨市| 吕梁市| SHOW| 金寨县| 灵石县| 温泉县| 龙门县| 集贤县| 威宁| 扶绥县| 闻喜县| 岑巩县| 嘉善县| 郁南县| 太谷县| 宿松县| 荔波县| 万全县| 桐乡市| 玉林市| 崇礼县| 兰西县| 阆中市| 林甸县| 获嘉县| 海口市| 合作市|